From d0f00f3f1ea297ee10627ceb516d0d4c818a268a Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Thu, 14 Aug 2025 13:20:01 -0600 Subject: [PATCH] Add xHE-AAC option --- .../FileLiberator/DownloadOptions.Factory.cs | 12 +-- Source/FileLiberator/DownloadOptions.cs | 2 +- .../Controls/Settings/Audio.axaml | 71 ++++++++------- .../Controls/Settings/Audio.axaml.cs | 14 +++ .../ViewModels/Settings/AudioSettingsVM.cs | 25 ++++-- .../Configuration.HelpText.cs | 23 ++--- .../Configuration.PersistentSettings.cs | 5 +- .../Dialogs/SettingsDialog.AudioSettings.cs | 36 ++++++-- .../Dialogs/SettingsDialog.Designer.cs | 87 ++++++++++--------- 9 files changed, 171 insertions(+), 104 deletions(-) diff --git a/Source/FileLiberator/DownloadOptions.Factory.cs b/Source/FileLiberator/DownloadOptions.Factory.cs index af58d360..d560886c 100644 --- a/Source/FileLiberator/DownloadOptions.Factory.cs +++ b/Source/FileLiberator/DownloadOptions.Factory.cs @@ -18,9 +18,6 @@ namespace FileLiberator; public partial class DownloadOptions { - private const string Ec3Codec = "ec+3"; - private const string Ac4Codec = "ac-4"; - /// /// Initiate an audiobook download from the audible api. /// @@ -71,8 +68,10 @@ public partial class DownloadOptions token.ThrowIfCancellationRequested(); try { - //try to request a widevine content license using the user's spatial audio settings - var codecChoice = config.SpatialAudioCodec is Configuration.SpatialCodec.AC_4 ? Ac4Codec : Ec3Codec; + //try to request a widevine content license using the user's audio settings + var aacCodecChoice = config.Request_xHE_AAC ? Codecs.xHE_AAC : Codecs.AAC_LC; + //Always use the ec+3 codec if converting to mp3 + var spatialCodecChoice = config.SpatialAudioCodec is Configuration.SpatialCodec.AC_4 && !config.DecryptToLossy ? Codecs.AC_4 : Codecs.EC_3; var contentLic = await api.GetDownloadLicenseAsync( @@ -81,7 +80,8 @@ public partial class DownloadOptions ChapterTitlesType.Tree, DrmType.Widevine, config.RequestSpatial, - codecChoice); + aacCodecChoice, + spatialCodecChoice); if (contentLic.DrmType is not DrmType.Widevine) return new LicenseInfo(contentLic); diff --git a/Source/FileLiberator/DownloadOptions.cs b/Source/FileLiberator/DownloadOptions.cs index a276e6ad..0b761f6a 100644 --- a/Source/FileLiberator/DownloadOptions.cs +++ b/Source/FileLiberator/DownloadOptions.cs @@ -74,7 +74,7 @@ namespace FileLiberator //If DrmType is not Adrm or Widevine, the delivered file is an unencrypted mp3. OutputFormat = licInfo.DrmType is not AudibleApi.Common.DrmType.Adrm and not AudibleApi.Common.DrmType.Widevine || - (config.AllowLibationFixup && config.DecryptToLossy && licInfo.ContentMetadata.ContentReference.Codec != Ac4Codec) + (config.AllowLibationFixup && config.DecryptToLossy && licInfo.ContentMetadata.ContentReference.Codec != AudibleApi.Codecs.AC_4) ? OutputFormat.Mp3 : OutputFormat.M4b; diff --git a/Source/LibationAvalonia/Controls/Settings/Audio.axaml b/Source/LibationAvalonia/Controls/Settings/Audio.axaml index e99477ae..54d77e86 100644 --- a/Source/LibationAvalonia/Controls/Settings/Audio.axaml +++ b/Source/LibationAvalonia/Controls/Settings/Audio.axaml @@ -47,52 +47,57 @@ SelectedItem="{CompiledBinding FileDownloadQuality}"/> - - - + + IsChecked="{CompiledBinding UseWidevine, Mode=TwoWay}"> - + + + + + + - - - - - - - - - - - - - - - + ColumnDefinitions="Auto,Auto" + VerticalAlignment="Top" + ToolTip.Tip="{CompiledBinding SpatialAudioCodecTip}"> + + + + + + + + + + + + + + - - - - - diff --git a/Source/LibationAvalonia/Controls/Settings/Audio.axaml.cs b/Source/LibationAvalonia/Controls/Settings/Audio.axaml.cs index a7f1d601..63758b69 100644 --- a/Source/LibationAvalonia/Controls/Settings/Audio.axaml.cs +++ b/Source/LibationAvalonia/Controls/Settings/Audio.axaml.cs @@ -5,6 +5,7 @@ using LibationAvalonia.ViewModels.Settings; using LibationFileManager; using LibationFileManager.Templates; using LibationUiBase.Forms; +using ReactiveUI; using System.Linq; using System.Threading.Tasks; @@ -23,6 +24,15 @@ namespace LibationAvalonia.Controls.Settings } } + private void SpatialCodec_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (_viewModel.SpatialAudioCodec.Value is Configuration.SpatialCodec.AC_4 && _viewModel.DecryptToLossy) + { + _viewModel.SpatialAudioCodec = _viewModel.SpatialAudioCodecs[0]; + _viewModel.RaisePropertyChanged(nameof(AudioSettingsVM.SpatialAudioCodec)); + } + } + private async void UseWidevine_IsCheckedChanged(object sender, Avalonia.Interactivity.RoutedEventArgs e) { if (sender is CheckBox cbox && cbox.IsChecked is true) @@ -59,6 +69,10 @@ namespace LibationAvalonia.Controls.Settings _viewModel.UseWidevine = false; } } + else + { + _viewModel.Request_xHE_AAC = _viewModel.RequestSpatial = false; + } } public async void EditChapterTitleTemplateButton_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e) diff --git a/Source/LibationAvalonia/ViewModels/Settings/AudioSettingsVM.cs b/Source/LibationAvalonia/ViewModels/Settings/AudioSettingsVM.cs index 17fb37e9..ee1d5a90 100644 --- a/Source/LibationAvalonia/ViewModels/Settings/AudioSettingsVM.cs +++ b/Source/LibationAvalonia/ViewModels/Settings/AudioSettingsVM.cs @@ -54,7 +54,6 @@ namespace LibationAvalonia.ViewModels.Settings StripAudibleBrandAudio = config.StripAudibleBrandAudio; StripUnabridged = config.StripUnabridged; _chapterTitleTemplate = config.ChapterTitleTemplate; - DecryptToLossy = config.DecryptToLossy; MoveMoovToBeginning = config.MoveMoovToBeginning; LameTargetBitrate = config.LameTargetBitrate; LameDownsampleMono = config.LameDownsampleMono; @@ -69,6 +68,8 @@ namespace LibationAvalonia.ViewModels.Settings SelectedEncoderQuality = config.LameEncoderQuality; UseWidevine = config.UseWidevine; RequestSpatial = config.RequestSpatial; + Request_xHE_AAC = config.Request_xHE_AAC; + DecryptToLossy = config.DecryptToLossy; } public void SaveSettings(Configuration config) @@ -100,6 +101,7 @@ namespace LibationAvalonia.ViewModels.Settings config.SpatialAudioCodec = SpatialAudioCodec?.Value ?? config.SpatialAudioCodec; config.UseWidevine = UseWidevine; config.RequestSpatial = RequestSpatial; + config.Request_xHE_AAC = Request_xHE_AAC; } public AvaloniaList> DownloadQualities { get; } = new([ @@ -114,9 +116,10 @@ namespace LibationAvalonia.ViewModels.Settings public string FileDownloadQualityText { get; } = Configuration.GetDescription(nameof(Configuration.FileDownloadQuality)); public string UseWidevineText { get; } = Configuration.GetDescription(nameof(Configuration.UseWidevine)); public string UseWidevineTip { get; } = Configuration.GetHelpText(nameof(Configuration.UseWidevine)); + public string Request_xHE_AACText { get; } = Configuration.GetDescription(nameof(Configuration.Request_xHE_AAC)); + public string Request_xHE_AACTip { get; } = Configuration.GetHelpText(nameof(Configuration.Request_xHE_AAC)); public string RequestSpatialText { get; } = Configuration.GetDescription(nameof(Configuration.RequestSpatial)); public string RequestSpatialTip { get; } = Configuration.GetHelpText(nameof(Configuration.RequestSpatial)); - public string SpatialAudioCodecText { get; } = Configuration.GetDescription(nameof(Configuration.SpatialAudioCodec)); public string SpatialAudioCodecTip { get; } = Configuration.GetHelpText(nameof(Configuration.SpatialAudioCodec)); public string CreateCueSheetText { get; } = Configuration.GetDescription(nameof(Configuration.CreateCueSheet)); public string CombineNestedChapterTitlesText { get; } = Configuration.GetDescription(nameof(Configuration.CombineNestedChapterTitles)); @@ -140,10 +143,9 @@ namespace LibationAvalonia.ViewModels.Settings public string RetainAaxFileTip => Configuration.GetHelpText(nameof(RetainAaxFile)); public bool DownloadClipsBookmarks { get => _downloadClipsBookmarks; set => this.RaiseAndSetIfChanged(ref _downloadClipsBookmarks, value); } - - private bool _useWidevine; - private bool _requestSpatial; + private bool _useWidevine, _requestSpatial, _request_xHE_AAC; public bool UseWidevine { get => _useWidevine; set => this.RaiseAndSetIfChanged(ref _useWidevine, value); } + public bool Request_xHE_AAC { get => _request_xHE_AAC; set => this.RaiseAndSetIfChanged(ref _request_xHE_AAC, value); } public bool RequestSpatial { get => _requestSpatial; set => this.RaiseAndSetIfChanged(ref _requestSpatial, value); } public EnumDisplay FileDownloadQuality { get; set; } @@ -155,7 +157,18 @@ namespace LibationAvalonia.ViewModels.Settings public string StripAudibleBrandAudioTip => Configuration.GetHelpText(nameof(StripAudibleBrandAudio)); public bool StripUnabridged { get; set; } public string StripUnabridgedTip => Configuration.GetHelpText(nameof(StripUnabridged)); - public bool DecryptToLossy { get => _decryptToLossy; set => this.RaiseAndSetIfChanged(ref _decryptToLossy, value); } + public bool DecryptToLossy { + get => _decryptToLossy; + set + { + this.RaiseAndSetIfChanged(ref _decryptToLossy, value); + if (DecryptToLossy && SpatialAudioCodec.Value is Configuration.SpatialCodec.AC_4) + { + SpatialAudioCodec = SpatialAudioCodecs[0]; + this.RaisePropertyChanged(nameof(SpatialAudioCodec)); + } + } + } public string DecryptToLossyTip => Configuration.GetHelpText(nameof(DecryptToLossy)); public bool MoveMoovToBeginning { get; set; } diff --git a/Source/LibationFileManager/Configuration.HelpText.cs b/Source/LibationFileManager/Configuration.HelpText.cs index 52a59810..5f41c7dc 100644 --- a/Source/LibationFileManager/Configuration.HelpText.cs +++ b/Source/LibationFileManager/Configuration.HelpText.cs @@ -89,23 +89,26 @@ namespace LibationFileManager AC-4 cannot be converted to MP3. """ }, - {nameof(UseWidevine), """ + {nameof(UseWidevine), """ Some audiobooks are only delivered in the highest available quality with special, third-party content - protection. Enabling this option will make Libation - request audiobooks with Widevine DRM, which may - yield higher quality audiobook files. If they are - higher quality, however, they will also be encoded - with a somewhat uncommon codec (xHE-AAC USAC) - which you may have difficulty playing. - - This must be enable to download spatial audiobooks. + protection. Enabling this option will allows you to + request audiobooks in the xHE-AAC codec and in + spatial (Dolby Atmos) audio formats. + """ }, + {nameof(Request_xHE_AAC), """ + If selected, Libation will request audiobooks in the + xHE-AAC codec. This codec is generally better quality + than AAC-LC codec (which is what you'll get if this + option isn't enabled), but it isn't as commonly + supported by media players, so you may have some + difficulty playing these audiobooks. """ }, {nameof(RequestSpatial), """ If selected, Libation will request audiobooks in the Dolby Atmos 'Spatial Audio' format. Audiobooks which don't have a spatial audio version will be download - as usual based on your other file quality settings. + as usual based on your other audio format settings. """ }, {"LocateAudiobooks",""" Scan the contents a folder to find audio files that diff --git a/Source/LibationFileManager/Configuration.PersistentSettings.cs b/Source/LibationFileManager/Configuration.PersistentSettings.cs index b0e99649..392c5ecf 100644 --- a/Source/LibationFileManager/Configuration.PersistentSettings.cs +++ b/Source/LibationFileManager/Configuration.PersistentSettings.cs @@ -285,9 +285,12 @@ namespace LibationFileManager AC_4 } - [Description("Use widevine DRM")] + [Description("Use Widevine DRM")] public bool UseWidevine { get => GetNonString(defaultValue: false); set => SetNonString(value); } + [Description("Request xHE-AAC codec")] + public bool Request_xHE_AAC { get => GetNonString(defaultValue: false); set => SetNonString(value); } + [Description("Request Spatial Audio")] public bool RequestSpatial { get => GetNonString(defaultValue: true); set => SetNonString(value); } diff --git a/Source/LibationWinForms/Dialogs/SettingsDialog.AudioSettings.cs b/Source/LibationWinForms/Dialogs/SettingsDialog.AudioSettings.cs index bb954ce1..da172bf6 100644 --- a/Source/LibationWinForms/Dialogs/SettingsDialog.AudioSettings.cs +++ b/Source/LibationWinForms/Dialogs/SettingsDialog.AudioSettings.cs @@ -25,7 +25,7 @@ namespace LibationWinForms.Dialogs this.moveMoovAtomCbox.Text = desc(nameof(config.MoveMoovToBeginning)); this.useWidevineCbox.Text = desc(nameof(config.UseWidevine)); this.requestSpatialCbox.Text = desc(nameof(config.RequestSpatial)); - this.spatialCodecLbl.Text = desc(nameof(config.SpatialAudioCodec)); + this.request_xHE_AAC_Cbox.Text = desc(nameof(config.Request_xHE_AAC)); toolTip.SetToolTip(combineNestedChapterTitlesCbox, Configuration.GetHelpText(nameof(config.CombineNestedChapterTitles))); toolTip.SetToolTip(allowLibationFixupCbox, Configuration.GetHelpText(nameof(config.AllowLibationFixup))); @@ -38,7 +38,7 @@ namespace LibationWinForms.Dialogs toolTip.SetToolTip(stripAudibleBrandingCbox, Configuration.GetHelpText(nameof(config.StripAudibleBrandAudio))); toolTip.SetToolTip(useWidevineCbox, Configuration.GetHelpText(nameof(config.UseWidevine))); toolTip.SetToolTip(requestSpatialCbox, Configuration.GetHelpText(nameof(config.RequestSpatial))); - toolTip.SetToolTip(spatialCodecLbl, Configuration.GetHelpText(nameof(config.SpatialAudioCodec))); + toolTip.SetToolTip(request_xHE_AAC_Cbox, Configuration.GetHelpText(nameof(config.Request_xHE_AAC))); toolTip.SetToolTip(spatialAudioCodecCb, Configuration.GetHelpText(nameof(config.SpatialAudioCodec))); fileDownloadQualityCb.Items.AddRange( @@ -80,6 +80,7 @@ namespace LibationWinForms.Dialogs fileDownloadQualityCb.SelectedItem = config.FileDownloadQuality; spatialAudioCodecCb.SelectedItem = config.SpatialAudioCodec; useWidevineCbox.Checked = config.UseWidevine; + request_xHE_AAC_Cbox.Checked = config.Request_xHE_AAC; requestSpatialCbox.Checked = config.RequestSpatial; clipsBookmarksFormatCb.SelectedItem = config.ClipsBookmarksFileFormat; @@ -124,6 +125,7 @@ namespace LibationWinForms.Dialogs config.DownloadClipsBookmarks = downloadClipsBookmarksCbox.Checked; config.FileDownloadQuality = ((EnumDisplay)fileDownloadQualityCb.SelectedItem).Value; config.UseWidevine = useWidevineCbox.Checked; + config.Request_xHE_AAC = request_xHE_AAC_Cbox.Checked; config.RequestSpatial = requestSpatialCbox.Checked; config.SpatialAudioCodec = ((EnumDisplay)spatialAudioCodecCb.SelectedItem).Value; config.ClipsBookmarksFileFormat = (Configuration.ClipBookmarkFormat)clipsBookmarksFormatCb.SelectedItem; @@ -175,6 +177,13 @@ namespace LibationWinForms.Dialogs { moveMoovAtomCbox.Enabled = convertLosslessRb.Checked; lameOptionsGb.Enabled = !convertLosslessRb.Checked; + + if (convertLossyRb.Checked && requestSpatialCbox.Checked) + { + // Only E-AC-3 can be converted to mp3 + spatialAudioCodecCb.SelectedIndex = 0; + } + lameTargetRb_CheckedChanged(sender, e); LameMatchSourceBRCbox_CheckedChanged(sender, e); } @@ -196,7 +205,18 @@ namespace LibationWinForms.Dialogs } } - + private void spatialAudioCodecCb_SelectedIndexChanged(object sender, EventArgs e) + { + if (spatialAudioCodecCb.SelectedIndex == 1 && convertLossyRb.Checked) + { + // Only E-AC-3 can be converted to mp3 + spatialAudioCodecCb.SelectedIndex = 0; + } + } + private void requestSpatialCbox_CheckedChanged(object sender, EventArgs e) + { + spatialAudioCodecCb.Enabled = requestSpatialCbox.Checked && useWidevineCbox.Checked; + } private void useWidevineCbox_CheckedChanged(object sender, EventArgs e) { @@ -233,9 +253,13 @@ namespace LibationWinForms.Dialogs return; } } - requestSpatialCbox.Enabled = useWidevineCbox.Checked; - spatialCodecLbl.Enabled = spatialAudioCodecCb.Enabled = useWidevineCbox.Checked && requestSpatialCbox.Checked; - } + else + { + requestSpatialCbox.Checked = request_xHE_AAC_Cbox.Checked = false; + } + requestSpatialCbox.Enabled = request_xHE_AAC_Cbox.Enabled = useWidevineCbox.Checked; + requestSpatialCbox_CheckedChanged(sender, e); + } } } diff --git a/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs b/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs index 1f8ef5ab..53dafff0 100644 --- a/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs +++ b/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs @@ -84,10 +84,10 @@ folderTemplateTb = new System.Windows.Forms.TextBox(); folderTemplateLbl = new System.Windows.Forms.Label(); tab4AudioFileOptions = new System.Windows.Forms.TabPage(); + request_xHE_AAC_Cbox = new System.Windows.Forms.CheckBox(); requestSpatialCbox = new System.Windows.Forms.CheckBox(); useWidevineCbox = new System.Windows.Forms.CheckBox(); spatialAudioCodecCb = new System.Windows.Forms.ComboBox(); - spatialCodecLbl = new System.Windows.Forms.Label(); moveMoovAtomCbox = new System.Windows.Forms.CheckBox(); fileDownloadQualityCb = new System.Windows.Forms.ComboBox(); fileDownloadQualityLbl = new System.Windows.Forms.Label(); @@ -288,7 +288,7 @@ stripAudibleBrandingCbox.Location = new System.Drawing.Point(13, 70); stripAudibleBrandingCbox.Name = "stripAudibleBrandingCbox"; stripAudibleBrandingCbox.Size = new System.Drawing.Size(143, 34); - stripAudibleBrandingCbox.TabIndex = 14; + stripAudibleBrandingCbox.TabIndex = 16; stripAudibleBrandingCbox.Text = "[StripAudibleBranding\r\ndesc]"; stripAudibleBrandingCbox.UseVisualStyleBackColor = true; // @@ -298,7 +298,7 @@ splitFilesByChapterCbox.Location = new System.Drawing.Point(13, 22); splitFilesByChapterCbox.Name = "splitFilesByChapterCbox"; splitFilesByChapterCbox.Size = new System.Drawing.Size(162, 19); - splitFilesByChapterCbox.TabIndex = 12; + splitFilesByChapterCbox.TabIndex = 14; splitFilesByChapterCbox.Text = "[SplitFilesByChapter desc]"; splitFilesByChapterCbox.UseVisualStyleBackColor = true; splitFilesByChapterCbox.CheckedChanged += splitFilesByChapterCbox_CheckedChanged; @@ -311,7 +311,7 @@ allowLibationFixupCbox.Location = new System.Drawing.Point(19, 230); allowLibationFixupCbox.Name = "allowLibationFixupCbox"; allowLibationFixupCbox.Size = new System.Drawing.Size(162, 19); - allowLibationFixupCbox.TabIndex = 11; + allowLibationFixupCbox.TabIndex = 13; allowLibationFixupCbox.Text = "[AllowLibationFixup desc]"; allowLibationFixupCbox.UseVisualStyleBackColor = true; allowLibationFixupCbox.CheckedChanged += allowLibationFixupCbox_CheckedChanged; @@ -323,6 +323,7 @@ convertLossyRb.Name = "convertLossyRb"; convertLossyRb.Size = new System.Drawing.Size(329, 19); convertLossyRb.TabIndex = 27; + convertLossyRb.TabStop = true; convertLossyRb.Text = "Download my books as .MP3 files (transcode if necessary)"; convertLossyRb.UseVisualStyleBackColor = true; convertLossyRb.CheckedChanged += convertFormatRb_CheckedChanged; @@ -774,10 +775,10 @@ // tab4AudioFileOptions // tab4AudioFileOptions.AutoScroll = true; + tab4AudioFileOptions.Controls.Add(request_xHE_AAC_Cbox); tab4AudioFileOptions.Controls.Add(requestSpatialCbox); tab4AudioFileOptions.Controls.Add(useWidevineCbox); tab4AudioFileOptions.Controls.Add(spatialAudioCodecCb); - tab4AudioFileOptions.Controls.Add(spatialCodecLbl); tab4AudioFileOptions.Controls.Add(moveMoovAtomCbox); tab4AudioFileOptions.Controls.Add(fileDownloadQualityCb); tab4AudioFileOptions.Controls.Add(fileDownloadQualityLbl); @@ -802,19 +803,31 @@ tab4AudioFileOptions.Text = "Audio File Options"; tab4AudioFileOptions.UseVisualStyleBackColor = true; // + // request_xHE_AAC_Cbox + // + request_xHE_AAC_Cbox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + request_xHE_AAC_Cbox.Checked = true; + request_xHE_AAC_Cbox.CheckState = System.Windows.Forms.CheckState.Checked; + request_xHE_AAC_Cbox.Location = new System.Drawing.Point(239, 35); + request_xHE_AAC_Cbox.Name = "request_xHE_AAC_Cbox"; + request_xHE_AAC_Cbox.Size = new System.Drawing.Size(183, 19); + request_xHE_AAC_Cbox.TabIndex = 3; + request_xHE_AAC_Cbox.Text = "[Request_xHE_AAC desc]"; + request_xHE_AAC_Cbox.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + request_xHE_AAC_Cbox.UseVisualStyleBackColor = true; + // // requestSpatialCbox // requestSpatialCbox.AutoSize = true; - requestSpatialCbox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; requestSpatialCbox.Checked = true; requestSpatialCbox.CheckState = System.Windows.Forms.CheckState.Checked; - requestSpatialCbox.Location = new System.Drawing.Point(284, 35); + requestSpatialCbox.Location = new System.Drawing.Point(19, 60); requestSpatialCbox.Name = "requestSpatialCbox"; requestSpatialCbox.Size = new System.Drawing.Size(138, 19); - requestSpatialCbox.TabIndex = 29; + requestSpatialCbox.TabIndex = 4; requestSpatialCbox.Text = "[RequestSpatial desc]"; requestSpatialCbox.UseVisualStyleBackColor = true; - requestSpatialCbox.CheckedChanged += useWidevineCbox_CheckedChanged; + requestSpatialCbox.CheckedChanged += requestSpatialCbox_CheckedChanged; // // useWidevineCbox // @@ -824,7 +837,7 @@ useWidevineCbox.Location = new System.Drawing.Point(19, 35); useWidevineCbox.Name = "useWidevineCbox"; useWidevineCbox.Size = new System.Drawing.Size(129, 19); - useWidevineCbox.TabIndex = 28; + useWidevineCbox.TabIndex = 2; useWidevineCbox.Text = "[UseWidevine desc]"; useWidevineCbox.UseVisualStyleBackColor = true; useWidevineCbox.CheckedChanged += useWidevineCbox_CheckedChanged; @@ -837,16 +850,8 @@ spatialAudioCodecCb.Margin = new System.Windows.Forms.Padding(3, 3, 5, 3); spatialAudioCodecCb.Name = "spatialAudioCodecCb"; spatialAudioCodecCb.Size = new System.Drawing.Size(173, 23); - spatialAudioCodecCb.TabIndex = 2; - // - // spatialCodecLbl - // - spatialCodecLbl.AutoSize = true; - spatialCodecLbl.Location = new System.Drawing.Point(19, 62); - spatialCodecLbl.Name = "spatialCodecLbl"; - spatialCodecLbl.Size = new System.Drawing.Size(143, 15); - spatialCodecLbl.TabIndex = 24; - spatialCodecLbl.Text = "[SpatialAudioCodec desc]"; + spatialAudioCodecCb.TabIndex = 5; + spatialAudioCodecCb.SelectedIndexChanged += spatialAudioCodecCb_SelectedIndexChanged; // // moveMoovAtomCbox // @@ -875,7 +880,7 @@ fileDownloadQualityLbl.Margin = new System.Windows.Forms.Padding(0, 0, 2, 0); fileDownloadQualityLbl.Name = "fileDownloadQualityLbl"; fileDownloadQualityLbl.Size = new System.Drawing.Size(152, 15); - fileDownloadQualityLbl.TabIndex = 22; + fileDownloadQualityLbl.TabIndex = 1; fileDownloadQualityLbl.Text = "[FileDownloadQuality desc]"; // // combineNestedChapterTitlesCbox @@ -884,7 +889,7 @@ combineNestedChapterTitlesCbox.Location = new System.Drawing.Point(19, 206); combineNestedChapterTitlesCbox.Name = "combineNestedChapterTitlesCbox"; combineNestedChapterTitlesCbox.Size = new System.Drawing.Size(217, 19); - combineNestedChapterTitlesCbox.TabIndex = 10; + combineNestedChapterTitlesCbox.TabIndex = 12; combineNestedChapterTitlesCbox.Text = "[CombineNestedChapterTitles desc]"; combineNestedChapterTitlesCbox.UseVisualStyleBackColor = true; // @@ -895,7 +900,7 @@ clipsBookmarksFormatCb.Location = new System.Drawing.Point(285, 132); clipsBookmarksFormatCb.Name = "clipsBookmarksFormatCb"; clipsBookmarksFormatCb.Size = new System.Drawing.Size(67, 23); - clipsBookmarksFormatCb.TabIndex = 6; + clipsBookmarksFormatCb.TabIndex = 9; // // downloadClipsBookmarksCbox // @@ -903,7 +908,7 @@ downloadClipsBookmarksCbox.Location = new System.Drawing.Point(19, 134); downloadClipsBookmarksCbox.Name = "downloadClipsBookmarksCbox"; downloadClipsBookmarksCbox.Size = new System.Drawing.Size(248, 19); - downloadClipsBookmarksCbox.TabIndex = 5; + downloadClipsBookmarksCbox.TabIndex = 8; downloadClipsBookmarksCbox.Text = "Download Clips, Notes, and Bookmarks as"; downloadClipsBookmarksCbox.UseVisualStyleBackColor = true; downloadClipsBookmarksCbox.CheckedChanged += downloadClipsBookmarksCbox_CheckedChanged; @@ -916,7 +921,7 @@ audiobookFixupsGb.Location = new System.Drawing.Point(6, 254); audiobookFixupsGb.Name = "audiobookFixupsGb"; audiobookFixupsGb.Size = new System.Drawing.Size(416, 114); - audiobookFixupsGb.TabIndex = 19; + audiobookFixupsGb.TabIndex = 14; audiobookFixupsGb.TabStop = false; audiobookFixupsGb.Text = "Audiobook Fix-ups"; // @@ -926,7 +931,7 @@ stripUnabridgedCbox.Location = new System.Drawing.Point(13, 46); stripUnabridgedCbox.Name = "stripUnabridgedCbox"; stripUnabridgedCbox.Size = new System.Drawing.Size(147, 19); - stripUnabridgedCbox.TabIndex = 13; + stripUnabridgedCbox.TabIndex = 15; stripUnabridgedCbox.Text = "[StripUnabridged desc]"; stripUnabridgedCbox.UseVisualStyleBackColor = true; // @@ -948,7 +953,7 @@ chapterTitleTemplateBtn.Location = new System.Drawing.Point(769, 22); chapterTitleTemplateBtn.Name = "chapterTitleTemplateBtn"; chapterTitleTemplateBtn.Size = new System.Drawing.Size(75, 23); - chapterTitleTemplateBtn.TabIndex = 15; + chapterTitleTemplateBtn.TabIndex = 17; chapterTitleTemplateBtn.Text = "Edit..."; chapterTitleTemplateBtn.UseVisualStyleBackColor = true; chapterTitleTemplateBtn.Click += chapterTitleTemplateBtn_Click; @@ -960,7 +965,7 @@ chapterTitleTemplateTb.Name = "chapterTitleTemplateTb"; chapterTitleTemplateTb.ReadOnly = true; chapterTitleTemplateTb.Size = new System.Drawing.Size(757, 23); - chapterTitleTemplateTb.TabIndex = 16; + chapterTitleTemplateTb.TabIndex = 18; // // lameOptionsGb // @@ -977,7 +982,7 @@ lameOptionsGb.Location = new System.Drawing.Point(438, 78); lameOptionsGb.Name = "lameOptionsGb"; lameOptionsGb.Size = new System.Drawing.Size(412, 304); - lameOptionsGb.TabIndex = 14; + lameOptionsGb.TabIndex = 28; lameOptionsGb.TabStop = false; lameOptionsGb.Text = "Mp3 Encoding Options"; // @@ -997,7 +1002,7 @@ label21.Location = new System.Drawing.Point(227, 75); label21.Name = "label21"; label21.Size = new System.Drawing.Size(94, 15); - label21.TabIndex = 3; + label21.TabIndex = 0; label21.Text = "Encoder Quality:"; // // encoderQualityCb @@ -1045,7 +1050,7 @@ lameBitrateGb.Location = new System.Drawing.Point(6, 100); lameBitrateGb.Name = "lameBitrateGb"; lameBitrateGb.Size = new System.Drawing.Size(400, 92); - lameBitrateGb.TabIndex = 0; + lameBitrateGb.TabIndex = 33; lameBitrateGb.TabStop = false; lameBitrateGb.Text = "Bitrate"; // @@ -1170,7 +1175,7 @@ lameQualityGb.Location = new System.Drawing.Point(6, 196); lameQualityGb.Name = "lameQualityGb"; lameQualityGb.Size = new System.Drawing.Size(400, 85); - lameQualityGb.TabIndex = 0; + lameQualityGb.TabIndex = 36; lameQualityGb.TabStop = false; lameQualityGb.Text = "Quality"; // @@ -1260,7 +1265,7 @@ label13.Location = new System.Drawing.Point(355, 66); label13.Name = "label13"; label13.Size = new System.Drawing.Size(39, 15); - label13.TabIndex = 1; + label13.TabIndex = 0; label13.Text = "Lower"; // // label10 @@ -1269,7 +1274,7 @@ label10.Location = new System.Drawing.Point(6, 66); label10.Name = "label10"; label10.Size = new System.Drawing.Size(43, 15); - label10.TabIndex = 1; + label10.TabIndex = 0; label10.Text = "Higher"; // // label14 @@ -1311,7 +1316,7 @@ groupBox2.Location = new System.Drawing.Point(6, 22); groupBox2.Name = "groupBox2"; groupBox2.Size = new System.Drawing.Size(182, 45); - groupBox2.TabIndex = 0; + groupBox2.TabIndex = 28; groupBox2.TabStop = false; groupBox2.Text = "Target"; // @@ -1348,7 +1353,7 @@ label1.Location = new System.Drawing.Point(6, 286); label1.Name = "label1"; label1.Size = new System.Drawing.Size(172, 15); - label1.TabIndex = 1; + label1.TabIndex = 0; label1.Text = "Using L.A.M.E. encoding engine"; // // mergeOpeningEndCreditsCbox @@ -1357,7 +1362,7 @@ mergeOpeningEndCreditsCbox.Location = new System.Drawing.Point(19, 182); mergeOpeningEndCreditsCbox.Name = "mergeOpeningEndCreditsCbox"; mergeOpeningEndCreditsCbox.Size = new System.Drawing.Size(198, 19); - mergeOpeningEndCreditsCbox.TabIndex = 9; + mergeOpeningEndCreditsCbox.TabIndex = 11; mergeOpeningEndCreditsCbox.Text = "[MergeOpeningEndCredits desc]"; mergeOpeningEndCreditsCbox.UseVisualStyleBackColor = true; // @@ -1367,7 +1372,7 @@ retainAaxFileCbox.Location = new System.Drawing.Point(19, 158); retainAaxFileCbox.Name = "retainAaxFileCbox"; retainAaxFileCbox.Size = new System.Drawing.Size(131, 19); - retainAaxFileCbox.TabIndex = 8; + retainAaxFileCbox.TabIndex = 10; retainAaxFileCbox.Text = "[RetainAaxFile desc]"; retainAaxFileCbox.UseVisualStyleBackColor = true; retainAaxFileCbox.CheckedChanged += allowLibationFixupCbox_CheckedChanged; @@ -1380,7 +1385,7 @@ downloadCoverArtCbox.Location = new System.Drawing.Point(19, 110); downloadCoverArtCbox.Name = "downloadCoverArtCbox"; downloadCoverArtCbox.Size = new System.Drawing.Size(162, 19); - downloadCoverArtCbox.TabIndex = 4; + downloadCoverArtCbox.TabIndex = 7; downloadCoverArtCbox.Text = "[DownloadCoverArt desc]"; downloadCoverArtCbox.UseVisualStyleBackColor = true; downloadCoverArtCbox.CheckedChanged += allowLibationFixupCbox_CheckedChanged; @@ -1393,7 +1398,7 @@ createCueSheetCbox.Location = new System.Drawing.Point(19, 86); createCueSheetCbox.Name = "createCueSheetCbox"; createCueSheetCbox.Size = new System.Drawing.Size(145, 19); - createCueSheetCbox.TabIndex = 3; + createCueSheetCbox.TabIndex = 6; createCueSheetCbox.Text = "[CreateCueSheet desc]"; createCueSheetCbox.UseVisualStyleBackColor = true; createCueSheetCbox.CheckedChanged += allowLibationFixupCbox_CheckedChanged; @@ -1560,8 +1565,8 @@ private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Button applyDisplaySettingsBtn; private System.Windows.Forms.ComboBox spatialAudioCodecCb; - private System.Windows.Forms.Label spatialCodecLbl; private System.Windows.Forms.CheckBox useWidevineCbox; private System.Windows.Forms.CheckBox requestSpatialCbox; + private System.Windows.Forms.CheckBox request_xHE_AAC_Cbox; } } \ No newline at end of file