Add option to move the moov atom to the beginning of the file.
This commit is contained in:
parent
630cfdeab3
commit
8dc912c11d
@ -13,7 +13,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AAXClean.Codecs" Version="0.5.11" />
|
<PackageReference Include="AAXClean.Codecs" Version="0.5.12" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -140,6 +140,10 @@ That naming may not be desirable for everyone, but it's an easy change to instea
|
|||||||
|
|
||||||
aaxConversion.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
aaxConversion.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
||||||
await aaxConversion;
|
await aaxConversion;
|
||||||
|
|
||||||
|
if (aaxConversion.IsCompletedSuccessfully)
|
||||||
|
moveMoovToBeginning(workingFileStream?.Name);
|
||||||
|
|
||||||
return aaxConversion.IsCompletedSuccessfully;
|
return aaxConversion.IsCompletedSuccessfully;
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
@ -195,12 +199,26 @@ That naming may not be desirable for everyone, but it's an easy change to instea
|
|||||||
PartsTotal = splitChapters.Count,
|
PartsTotal = splitChapters.Count,
|
||||||
Title = newSplitCallback?.Chapter?.Title,
|
Title = newSplitCallback?.Chapter?.Title,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
moveMoovToBeginning(workingFileStream?.Name);
|
||||||
|
|
||||||
newSplitCallback.OutputFile = createOutputFileStream(props);
|
newSplitCallback.OutputFile = createOutputFileStream(props);
|
||||||
newSplitCallback.TrackTitle = DownloadOptions.GetMultipartTitleName(props);
|
newSplitCallback.TrackTitle = DownloadOptions.GetMultipartTitleName(props);
|
||||||
newSplitCallback.TrackNumber = currentChapter;
|
newSplitCallback.TrackNumber = currentChapter;
|
||||||
newSplitCallback.TrackCount = splitChapters.Count;
|
newSplitCallback.TrackCount = splitChapters.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void moveMoovToBeginning(string filename)
|
||||||
|
{
|
||||||
|
if (DownloadOptions.OutputFormat is OutputFormat.M4b
|
||||||
|
&& DownloadOptions.MoveMoovToBeginning
|
||||||
|
&& filename is not null
|
||||||
|
&& File.Exists(filename))
|
||||||
|
{
|
||||||
|
Mp4File.RelocateMoovAsync(filename).GetAwaiter().GetResult();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private FileStream createOutputFileStream(MultiConvertFileProperties multiConvertFileProperties)
|
private FileStream createOutputFileStream(MultiConvertFileProperties multiConvertFileProperties)
|
||||||
{
|
{
|
||||||
var fileName = DownloadOptions.GetMultipartFileName(multiConvertFileProperties);
|
var fileName = DownloadOptions.GetMultipartFileName(multiConvertFileProperties);
|
||||||
|
|||||||
@ -98,12 +98,21 @@ namespace AaxDecrypter
|
|||||||
aaxConversion.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
aaxConversion.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
||||||
await aaxConversion;
|
await aaxConversion;
|
||||||
|
|
||||||
if (aaxConversion.IsCompletedSuccessfully)
|
|
||||||
{
|
|
||||||
outputFile.Close();
|
outputFile.Close();
|
||||||
base.OnFileCreated(OutputFileName);
|
|
||||||
|
if (aaxConversion.IsCompletedSuccessfully
|
||||||
|
&& DownloadOptions.OutputFormat is OutputFormat.M4b
|
||||||
|
&& DownloadOptions.MoveMoovToBeginning)
|
||||||
|
{
|
||||||
|
aaxConversion.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
||||||
|
aaxConversion = Mp4File.RelocateMoovAsync(OutputFileName);
|
||||||
|
aaxConversion.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
||||||
|
await aaxConversion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (aaxConversion.IsCompletedSuccessfully)
|
||||||
|
base.OnFileCreated(OutputFileName);
|
||||||
|
|
||||||
return aaxConversion.IsCompletedSuccessfully;
|
return aaxConversion.IsCompletedSuccessfully;
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
@ -117,7 +126,7 @@ namespace AaxDecrypter
|
|||||||
outputFile.Close();
|
outputFile.Close();
|
||||||
|
|
||||||
if (aaxConversion is not null)
|
if (aaxConversion is not null)
|
||||||
aaxConversion.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
|
aaxConversion.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate;
|
||||||
|
|
||||||
Step_DownloadAudiobook_End(zeroProgress);
|
Step_DownloadAudiobook_End(zeroProgress);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,7 @@ namespace AaxDecrypter
|
|||||||
NAudio.Lame.LameConfig LameConfig { get; }
|
NAudio.Lame.LameConfig LameConfig { get; }
|
||||||
bool Downsample { get; }
|
bool Downsample { get; }
|
||||||
bool MatchSourceBitrate { get; }
|
bool MatchSourceBitrate { get; }
|
||||||
|
bool MoveMoovToBeginning { get; }
|
||||||
string GetMultipartFileName(MultiConvertFileProperties props);
|
string GetMultipartFileName(MultiConvertFileProperties props);
|
||||||
string GetMultipartTitleName(MultiConvertFileProperties props);
|
string GetMultipartTitleName(MultiConvertFileProperties props);
|
||||||
Task<string> SaveClipsAndBookmarks(string fileName);
|
Task<string> SaveClipsAndBookmarks(string fileName);
|
||||||
|
|||||||
@ -160,6 +160,7 @@ namespace FileLiberator
|
|||||||
AudibleKey = contentLic?.Voucher?.Key,
|
AudibleKey = contentLic?.Voucher?.Key,
|
||||||
AudibleIV = contentLic?.Voucher?.Iv,
|
AudibleIV = contentLic?.Voucher?.Iv,
|
||||||
OutputFormat = outputFormat,
|
OutputFormat = outputFormat,
|
||||||
|
MoveMoovToBeginning = config.MoveMoovToBeginning,
|
||||||
TrimOutputToChapterLength = config.AllowLibationFixup && config.StripAudibleBrandAudio,
|
TrimOutputToChapterLength = config.AllowLibationFixup && config.StripAudibleBrandAudio,
|
||||||
RetainEncryptedFile = config.RetainAaxFile && encrypted,
|
RetainEncryptedFile = config.RetainAaxFile && encrypted,
|
||||||
StripUnabridged = config.AllowLibationFixup && config.StripUnabridged,
|
StripUnabridged = config.AllowLibationFixup && config.StripUnabridged,
|
||||||
|
|||||||
@ -34,6 +34,8 @@ namespace FileLiberator
|
|||||||
public bool MatchSourceBitrate { get; init; }
|
public bool MatchSourceBitrate { get; init; }
|
||||||
public ReplacementCharacters ReplacementCharacters => Configuration.Instance.ReplacementCharacters;
|
public ReplacementCharacters ReplacementCharacters => Configuration.Instance.ReplacementCharacters;
|
||||||
|
|
||||||
|
public bool MoveMoovToBeginning { get; init; }
|
||||||
|
|
||||||
public string GetMultipartFileName(MultiConvertFileProperties props)
|
public string GetMultipartFileName(MultiConvertFileProperties props)
|
||||||
=> Templates.ChapterFile.GetFilename(LibraryBookDto, props);
|
=> Templates.ChapterFile.GetFilename(LibraryBookDto, props);
|
||||||
|
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
mc:Ignorable="d" d:DesignWidth="850" d:DesignHeight="620"
|
mc:Ignorable="d" d:DesignWidth="900" d:DesignHeight="680"
|
||||||
MinWidth="800" MinHeight="620"
|
MinWidth="900" MinHeight="680"
|
||||||
x:Class="LibationAvalonia.Dialogs.SettingsDialog"
|
x:Class="LibationAvalonia.Dialogs.SettingsDialog"
|
||||||
xmlns:controls="clr-namespace:LibationAvalonia.Controls"
|
xmlns:controls="clr-namespace:LibationAvalonia.Controls"
|
||||||
Title="Edit Settings"
|
Title="Edit Settings"
|
||||||
@ -34,6 +34,378 @@
|
|||||||
<Setter Property="MinHeight" Value="5"/>
|
<Setter Property="MinHeight" Value="5"/>
|
||||||
</Style>
|
</Style>
|
||||||
</TabControl.Styles>
|
</TabControl.Styles>
|
||||||
|
<TabItem>
|
||||||
|
|
||||||
|
<TabItem.Header>
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
FontSize="14"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="Audio File Settings"/>
|
||||||
|
|
||||||
|
</TabItem.Header>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="0"
|
||||||
|
BorderThickness="2"
|
||||||
|
BorderBrush="{DynamicResource DataGridGridLinesBrush}">
|
||||||
|
|
||||||
|
<Grid
|
||||||
|
RowDefinitions="*,Auto"
|
||||||
|
ColumnDefinitions="*,*">
|
||||||
|
|
||||||
|
<StackPanel
|
||||||
|
Margin="5"
|
||||||
|
Grid.Row="0"
|
||||||
|
Grid.Column="0">
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.CreateCueSheet, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.CreateCueSheetText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.DownloadCoverArt, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.DownloadCoverArtText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.DownloadClipsBookmarks, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="Download Clips, Notes and Bookmarks as" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<controls:WheelComboBox
|
||||||
|
Margin="5,0,0,0"
|
||||||
|
IsEnabled="{Binding AudioSettings.DownloadClipsBookmarks}"
|
||||||
|
Items="{Binding AudioSettings.ClipBookmarkFormats}"
|
||||||
|
SelectedItem="{Binding AudioSettings.ClipBookmarkFormat}"/>
|
||||||
|
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.RetainAaxFile, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.RetainAaxFileText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.MergeOpeningAndEndCredits, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.MergeOpeningEndCreditsText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.AllowLibationFixup, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.AllowLibationFixupText}" />
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<controls:GroupBox
|
||||||
|
BorderWidth="1"
|
||||||
|
Label="Audiobook Fix-ups"
|
||||||
|
IsEnabled="{Binding AudioSettings.AllowLibationFixup}">
|
||||||
|
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.SplitFilesByChapter, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.SplitFilesByChapterText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.StripAudibleBrandAudio, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.StripAudibleBrandingText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.StripUnabridged, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.StripUnabridgedText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
Margin="0,5,0,5"
|
||||||
|
IsChecked="{Binding !AudioSettings.DecryptToLossy, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<StackPanel >
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="Download my books in the original audio format (Lossless)" />
|
||||||
|
<CheckBox
|
||||||
|
Margin="0,0,0,5"
|
||||||
|
IsEnabled="{Binding !AudioSettings.DecryptToLossy}"
|
||||||
|
IsChecked="{Binding AudioSettings.MoveMoovToBeginning, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding AudioSettings.MoveMoovToBeginningText}" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
</StackPanel>
|
||||||
|
</RadioButton>
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
Margin="0,5,0,5"
|
||||||
|
IsChecked="{Binding AudioSettings.DecryptToLossy, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="Download my books as .MP3 files (transcode if necessary)" />
|
||||||
|
|
||||||
|
</RadioButton>
|
||||||
|
</StackPanel>
|
||||||
|
</controls:GroupBox>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<StackPanel
|
||||||
|
Grid.Row="0"
|
||||||
|
Grid.Column="1">
|
||||||
|
|
||||||
|
<controls:GroupBox
|
||||||
|
BorderWidth="1"
|
||||||
|
Label="Mp3 Encoding Options">
|
||||||
|
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
|
||||||
|
<Grid
|
||||||
|
Margin="5,5,5,0"
|
||||||
|
ColumnDefinitions="Auto,*">
|
||||||
|
|
||||||
|
<controls:GroupBox
|
||||||
|
BorderWidth="1"
|
||||||
|
Grid.Column="0"
|
||||||
|
Label="Target">
|
||||||
|
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
Margin="10"
|
||||||
|
Content="Bitrate"
|
||||||
|
IsChecked="{Binding AudioSettings.LameTargetBitrate, Mode=TwoWay}"/>
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
Margin="10"
|
||||||
|
Content="Quality"
|
||||||
|
IsChecked="{Binding !AudioSettings.LameTargetBitrate, Mode=TwoWay}"/>
|
||||||
|
|
||||||
|
</StackPanel>
|
||||||
|
</controls:GroupBox>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Grid.Column="1"
|
||||||
|
IsChecked="{Binding AudioSettings.LameDownsampleMono, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="Downsample to mono? (Recommended)" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<controls:GroupBox
|
||||||
|
Margin="5,5,5,0"
|
||||||
|
BorderWidth="1"
|
||||||
|
Label="Bitrate"
|
||||||
|
IsEnabled="{Binding AudioSettings.LameTargetBitrate}" >
|
||||||
|
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<Grid ColumnDefinitions="*,25,Auto">
|
||||||
|
|
||||||
|
<Slider
|
||||||
|
Grid.Column="0"
|
||||||
|
IsEnabled="{Binding !AudioSettings.LameMatchSource}"
|
||||||
|
Value="{Binding AudioSettings.LameBitrate, Mode=TwoWay}"
|
||||||
|
Minimum="16"
|
||||||
|
Maximum="320"
|
||||||
|
IsSnapToTickEnabled="True" TickFrequency="16"
|
||||||
|
Ticks="16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320"
|
||||||
|
TickPlacement="Outside">
|
||||||
|
|
||||||
|
<Slider.Styles>
|
||||||
|
<Style Selector="Slider /template/ Thumb">
|
||||||
|
<Setter Property="ToolTip.Tip" Value="{Binding $parent[Slider].Value, Mode=OneWay, StringFormat='\{0:f0\} Kbps'}" />
|
||||||
|
<Setter Property="ToolTip.Placement" Value="Top" />
|
||||||
|
<Setter Property="ToolTip.VerticalOffset" Value="-10" />
|
||||||
|
<Setter Property="ToolTip.HorizontalOffset" Value="-30" />
|
||||||
|
</Style>
|
||||||
|
</Slider.Styles>
|
||||||
|
</Slider>
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="1"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Text="{Binding AudioSettings.LameBitrate}" />
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="2"
|
||||||
|
Text=" Kbps" />
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<Grid ColumnDefinitions="*,*">
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Grid.Column="0"
|
||||||
|
IsChecked="{Binding AudioSettings.LameConstantBitrate, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="Restrict Encoder to Constant Bitrate?" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
Grid.Column="1"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
IsChecked="{Binding AudioSettings.LameMatchSource, Mode=TwoWay}">
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="Match Source Bitrate?" />
|
||||||
|
|
||||||
|
</CheckBox>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</controls:GroupBox>
|
||||||
|
|
||||||
|
<controls:GroupBox
|
||||||
|
Margin="5,5,5,0"
|
||||||
|
BorderWidth="1"
|
||||||
|
Label="Quality"
|
||||||
|
IsEnabled="{Binding !AudioSettings.LameTargetBitrate}">
|
||||||
|
|
||||||
|
<Grid
|
||||||
|
ColumnDefinitions="*,*,25"
|
||||||
|
RowDefinitions="*,Auto">
|
||||||
|
|
||||||
|
<Slider
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Value="{Binding AudioSettings.LameVBRQuality, Mode=TwoWay}"
|
||||||
|
Minimum="0"
|
||||||
|
Maximum="9"
|
||||||
|
IsSnapToTickEnabled="True" TickFrequency="1"
|
||||||
|
Ticks="0,1,2,3,4,5,6,7,8,9"
|
||||||
|
TickPlacement="Outside">
|
||||||
|
<Slider.Styles>
|
||||||
|
<Style Selector="Slider /template/ Thumb">
|
||||||
|
<Setter Property="ToolTip.Tip" Value="{Binding $parent[Slider].Value, Mode=OneWay, StringFormat='V\{0:f0\}'}" />
|
||||||
|
<Setter Property="ToolTip.Placement" Value="Top" />
|
||||||
|
<Setter Property="ToolTip.VerticalOffset" Value="-10" />
|
||||||
|
<Setter Property="ToolTip.HorizontalOffset" Value="-30" />
|
||||||
|
</Style>
|
||||||
|
</Slider.Styles>
|
||||||
|
</Slider>
|
||||||
|
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="2"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
|
||||||
|
<TextBlock Text="V" />
|
||||||
|
<TextBlock Text="{Binding AudioSettings.LameVBRQuality}" />
|
||||||
|
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="1"
|
||||||
|
Margin="10,0,0,0"
|
||||||
|
Text="Higher" />
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.Row="1"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Text="Lower" />
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</controls:GroupBox>
|
||||||
|
|
||||||
|
<TextBlock
|
||||||
|
Margin="5,5,5,5"
|
||||||
|
Text="Using L.A.M.E encoding engine"
|
||||||
|
FontStyle="Italic" />
|
||||||
|
|
||||||
|
</StackPanel>
|
||||||
|
</controls:GroupBox>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<controls:GroupBox
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Margin="5"
|
||||||
|
BorderWidth="1" IsEnabled="{Binding AudioSettings.SplitFilesByChapter}"
|
||||||
|
Label="{Binding AudioSettings.ChapterTitleTemplateText}">
|
||||||
|
|
||||||
|
<Grid ColumnDefinitions="*,Auto">
|
||||||
|
|
||||||
|
<TextBox
|
||||||
|
Grid.Column="0"
|
||||||
|
Margin="0,10,10,10"
|
||||||
|
FontSize="14"
|
||||||
|
IsReadOnly="True"
|
||||||
|
Text="{Binding AudioSettings.ChapterTitleTemplate}" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
Grid.Column="1"
|
||||||
|
Content="Edit"
|
||||||
|
Height="30"
|
||||||
|
Padding="30,3,30,3"
|
||||||
|
Click="EditChapterTitleTemplateButton_Click" />
|
||||||
|
</Grid>
|
||||||
|
</controls:GroupBox>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
</TabItem>
|
||||||
|
|
||||||
|
|
||||||
<TabItem>
|
<TabItem>
|
||||||
@ -117,7 +489,6 @@
|
|||||||
</Border>
|
</Border>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
|
|
||||||
<TabItem>
|
<TabItem>
|
||||||
|
|
||||||
<TabItem.Header>
|
<TabItem.Header>
|
||||||
@ -390,367 +761,6 @@
|
|||||||
</Border>
|
</Border>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem>
|
|
||||||
|
|
||||||
<TabItem.Header>
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
FontSize="14"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Text="Audio File Settings"/>
|
|
||||||
|
|
||||||
</TabItem.Header>
|
|
||||||
|
|
||||||
<Border
|
|
||||||
Grid.Column="0"
|
|
||||||
Grid.Row="0"
|
|
||||||
BorderThickness="2"
|
|
||||||
BorderBrush="{DynamicResource DataGridGridLinesBrush}">
|
|
||||||
|
|
||||||
<Grid
|
|
||||||
RowDefinitions="*,Auto"
|
|
||||||
ColumnDefinitions="*,*">
|
|
||||||
|
|
||||||
<StackPanel
|
|
||||||
Margin="5"
|
|
||||||
Grid.Row="0"
|
|
||||||
Grid.Column="0">
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.CreateCueSheet, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.CreateCueSheetText}" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.DownloadCoverArt, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.DownloadCoverArtText}" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.DownloadClipsBookmarks, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="Download Clips, Notes and Bookmarks as" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<controls:WheelComboBox
|
|
||||||
Margin="5,0,0,0"
|
|
||||||
IsEnabled="{Binding AudioSettings.DownloadClipsBookmarks}"
|
|
||||||
Items="{Binding AudioSettings.ClipBookmarkFormats}"
|
|
||||||
SelectedItem="{Binding AudioSettings.ClipBookmarkFormat}"/>
|
|
||||||
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.RetainAaxFile, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.RetainAaxFileText}" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.MergeOpeningAndEndCredits, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.MergeOpeningEndCreditsText}" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.AllowLibationFixup, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.AllowLibationFixupText}" />
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<controls:GroupBox
|
|
||||||
BorderWidth="1"
|
|
||||||
Label="Audiobook Fix-ups"
|
|
||||||
IsEnabled="{Binding AudioSettings.AllowLibationFixup}">
|
|
||||||
|
|
||||||
<StackPanel Orientation="Vertical">
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.SplitFilesByChapter, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.SplitFilesByChapterText}" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.StripAudibleBrandAudio, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.StripAudibleBrandingText}" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Margin="0,0,0,5"
|
|
||||||
IsChecked="{Binding AudioSettings.StripUnabridged, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding AudioSettings.StripUnabridgedText}" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
Margin="0,5,0,5"
|
|
||||||
IsChecked="{Binding !AudioSettings.DecryptToLossy, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="Download my books in the original audio format (Lossless)" />
|
|
||||||
|
|
||||||
</RadioButton>
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
Margin="0,5,0,5"
|
|
||||||
IsEnabled="{Binding AudioSettings.IsMp3Supported}"
|
|
||||||
IsChecked="{Binding AudioSettings.DecryptToLossy, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="Download my books as .MP3 files (transcode if necessary)" />
|
|
||||||
|
|
||||||
</RadioButton>
|
|
||||||
</StackPanel>
|
|
||||||
</controls:GroupBox>
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<StackPanel
|
|
||||||
Grid.Row="0"
|
|
||||||
IsVisible="{Binding AudioSettings.IsMp3Supported}"
|
|
||||||
Grid.Column="1">
|
|
||||||
|
|
||||||
<controls:GroupBox
|
|
||||||
BorderWidth="1"
|
|
||||||
Label="Mp3 Encoding Options">
|
|
||||||
|
|
||||||
<StackPanel Orientation="Vertical">
|
|
||||||
|
|
||||||
<Grid
|
|
||||||
Margin="5,5,5,0"
|
|
||||||
ColumnDefinitions="Auto,*">
|
|
||||||
|
|
||||||
<controls:GroupBox
|
|
||||||
BorderWidth="1"
|
|
||||||
Grid.Column="0"
|
|
||||||
Label="Target">
|
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
Margin="10"
|
|
||||||
Content="Bitrate"
|
|
||||||
IsChecked="{Binding AudioSettings.LameTargetBitrate, Mode=TwoWay}"/>
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
Margin="10"
|
|
||||||
Content="Quality"
|
|
||||||
IsChecked="{Binding !AudioSettings.LameTargetBitrate, Mode=TwoWay}"/>
|
|
||||||
|
|
||||||
</StackPanel>
|
|
||||||
</controls:GroupBox>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Grid.Column="1"
|
|
||||||
IsChecked="{Binding AudioSettings.LameDownsampleMono, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="Downsample to mono? (Recommended)" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<controls:GroupBox
|
|
||||||
Margin="5,5,5,0"
|
|
||||||
BorderWidth="1"
|
|
||||||
Label="Bitrate"
|
|
||||||
IsEnabled="{Binding AudioSettings.LameTargetBitrate}" >
|
|
||||||
|
|
||||||
<StackPanel>
|
|
||||||
|
|
||||||
<Grid ColumnDefinitions="*,25,Auto">
|
|
||||||
|
|
||||||
<Slider
|
|
||||||
Grid.Column="0"
|
|
||||||
IsEnabled="{Binding !AudioSettings.LameMatchSource}"
|
|
||||||
Value="{Binding AudioSettings.LameBitrate, Mode=TwoWay}"
|
|
||||||
Minimum="16"
|
|
||||||
Maximum="320"
|
|
||||||
IsSnapToTickEnabled="True" TickFrequency="16"
|
|
||||||
Ticks="16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320"
|
|
||||||
TickPlacement="Outside">
|
|
||||||
|
|
||||||
<Slider.Styles>
|
|
||||||
<Style Selector="Slider /template/ Thumb">
|
|
||||||
<Setter Property="ToolTip.Tip" Value="{Binding $parent[Slider].Value, Mode=OneWay, StringFormat='\{0:f0\} Kbps'}" />
|
|
||||||
<Setter Property="ToolTip.Placement" Value="Top" />
|
|
||||||
<Setter Property="ToolTip.VerticalOffset" Value="-10" />
|
|
||||||
<Setter Property="ToolTip.HorizontalOffset" Value="-30" />
|
|
||||||
</Style>
|
|
||||||
</Slider.Styles>
|
|
||||||
</Slider>
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
Grid.Column="1"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Text="{Binding AudioSettings.LameBitrate}" />
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
Grid.Column="2"
|
|
||||||
Text=" Kbps" />
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<Grid ColumnDefinitions="*,*">
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Grid.Column="0"
|
|
||||||
IsChecked="{Binding AudioSettings.LameConstantBitrate, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="Restrict Encoder to Constant Bitrate?" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
|
|
||||||
<CheckBox
|
|
||||||
Grid.Column="1"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
IsChecked="{Binding AudioSettings.LameMatchSource, Mode=TwoWay}">
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="Match Source Bitrate?" />
|
|
||||||
|
|
||||||
</CheckBox>
|
|
||||||
</Grid>
|
|
||||||
</StackPanel>
|
|
||||||
</controls:GroupBox>
|
|
||||||
|
|
||||||
<controls:GroupBox
|
|
||||||
Margin="5,5,5,0"
|
|
||||||
BorderWidth="1"
|
|
||||||
Label="Quality"
|
|
||||||
IsEnabled="{Binding !AudioSettings.LameTargetBitrate}">
|
|
||||||
|
|
||||||
<Grid
|
|
||||||
ColumnDefinitions="*,*,25"
|
|
||||||
RowDefinitions="*,Auto">
|
|
||||||
|
|
||||||
<Slider
|
|
||||||
Grid.Column="0"
|
|
||||||
Grid.ColumnSpan="2"
|
|
||||||
Value="{Binding AudioSettings.LameVBRQuality, Mode=TwoWay}"
|
|
||||||
Minimum="0"
|
|
||||||
Maximum="9"
|
|
||||||
IsSnapToTickEnabled="True" TickFrequency="1"
|
|
||||||
Ticks="0,1,2,3,4,5,6,7,8,9"
|
|
||||||
TickPlacement="Outside">
|
|
||||||
<Slider.Styles>
|
|
||||||
<Style Selector="Slider /template/ Thumb">
|
|
||||||
<Setter Property="ToolTip.Tip" Value="{Binding $parent[Slider].Value, Mode=OneWay, StringFormat='V\{0:f0\}'}" />
|
|
||||||
<Setter Property="ToolTip.Placement" Value="Top" />
|
|
||||||
<Setter Property="ToolTip.VerticalOffset" Value="-10" />
|
|
||||||
<Setter Property="ToolTip.HorizontalOffset" Value="-30" />
|
|
||||||
</Style>
|
|
||||||
</Slider.Styles>
|
|
||||||
</Slider>
|
|
||||||
|
|
||||||
<StackPanel
|
|
||||||
Grid.Column="2"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Orientation="Horizontal">
|
|
||||||
|
|
||||||
<TextBlock Text="V" />
|
|
||||||
<TextBlock Text="{Binding AudioSettings.LameVBRQuality}" />
|
|
||||||
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
Grid.Column="0"
|
|
||||||
Grid.Row="1"
|
|
||||||
Margin="10,0,0,0"
|
|
||||||
Text="Higher" />
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
Grid.Column="1"
|
|
||||||
Grid.Row="1"
|
|
||||||
Margin="0,0,10,0"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Text="Lower" />
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
</controls:GroupBox>
|
|
||||||
|
|
||||||
<TextBlock
|
|
||||||
Margin="5,5,5,5"
|
|
||||||
Text="Using L.A.M.E encoding engine"
|
|
||||||
FontStyle="Italic" />
|
|
||||||
|
|
||||||
</StackPanel>
|
|
||||||
</controls:GroupBox>
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<controls:GroupBox
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.ColumnSpan="2"
|
|
||||||
Margin="5"
|
|
||||||
BorderWidth="1" IsEnabled="{Binding AudioSettings.SplitFilesByChapter}"
|
|
||||||
Label="{Binding AudioSettings.ChapterTitleTemplateText}">
|
|
||||||
|
|
||||||
<Grid ColumnDefinitions="*,Auto">
|
|
||||||
|
|
||||||
<TextBox
|
|
||||||
Grid.Column="0"
|
|
||||||
Margin="0,10,10,10"
|
|
||||||
FontSize="14"
|
|
||||||
IsReadOnly="True"
|
|
||||||
Text="{Binding AudioSettings.ChapterTitleTemplate}" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
Grid.Column="1"
|
|
||||||
Content="Edit"
|
|
||||||
Height="30"
|
|
||||||
Padding="30,3,30,3"
|
|
||||||
Click="EditChapterTitleTemplateButton_Click" />
|
|
||||||
</Grid>
|
|
||||||
</controls:GroupBox>
|
|
||||||
</Grid>
|
|
||||||
</Border>
|
|
||||||
</TabItem>
|
|
||||||
</TabControl>
|
</TabControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@ -383,6 +383,7 @@ namespace LibationAvalonia.Dialogs
|
|||||||
{
|
{
|
||||||
|
|
||||||
private bool _downloadClipsBookmarks;
|
private bool _downloadClipsBookmarks;
|
||||||
|
private bool _decryptToLossy;
|
||||||
private bool _splitFilesByChapter;
|
private bool _splitFilesByChapter;
|
||||||
private bool _allowLibationFixup;
|
private bool _allowLibationFixup;
|
||||||
private bool _lameTargetBitrate;
|
private bool _lameTargetBitrate;
|
||||||
@ -391,8 +392,6 @@ namespace LibationAvalonia.Dialogs
|
|||||||
private int _lameVBRQuality;
|
private int _lameVBRQuality;
|
||||||
private string _chapterTitleTemplate;
|
private string _chapterTitleTemplate;
|
||||||
|
|
||||||
public bool IsMp3Supported => Configuration.IsLinux || Configuration.IsWindows;
|
|
||||||
|
|
||||||
public AudioSettings(Configuration config)
|
public AudioSettings(Configuration config)
|
||||||
{
|
{
|
||||||
LoadSettings(config);
|
LoadSettings(config);
|
||||||
@ -411,6 +410,7 @@ namespace LibationAvalonia.Dialogs
|
|||||||
StripUnabridged = config.StripUnabridged;
|
StripUnabridged = config.StripUnabridged;
|
||||||
ChapterTitleTemplate = config.ChapterTitleTemplate;
|
ChapterTitleTemplate = config.ChapterTitleTemplate;
|
||||||
DecryptToLossy = config.DecryptToLossy;
|
DecryptToLossy = config.DecryptToLossy;
|
||||||
|
MoveMoovToBeginning = config.MoveMoovToBeginning;
|
||||||
LameTargetBitrate = config.LameTargetBitrate;
|
LameTargetBitrate = config.LameTargetBitrate;
|
||||||
LameDownsampleMono = config.LameDownsampleMono;
|
LameDownsampleMono = config.LameDownsampleMono;
|
||||||
LameConstantBitrate = config.LameConstantBitrate;
|
LameConstantBitrate = config.LameConstantBitrate;
|
||||||
@ -433,6 +433,7 @@ namespace LibationAvalonia.Dialogs
|
|||||||
config.StripUnabridged = StripUnabridged;
|
config.StripUnabridged = StripUnabridged;
|
||||||
config.ChapterTitleTemplate = ChapterTitleTemplate;
|
config.ChapterTitleTemplate = ChapterTitleTemplate;
|
||||||
config.DecryptToLossy = DecryptToLossy;
|
config.DecryptToLossy = DecryptToLossy;
|
||||||
|
config.MoveMoovToBeginning = MoveMoovToBeginning;
|
||||||
config.LameTargetBitrate = LameTargetBitrate;
|
config.LameTargetBitrate = LameTargetBitrate;
|
||||||
config.LameDownsampleMono = LameDownsampleMono;
|
config.LameDownsampleMono = LameDownsampleMono;
|
||||||
config.LameConstantBitrate = LameConstantBitrate;
|
config.LameConstantBitrate = LameConstantBitrate;
|
||||||
@ -453,6 +454,7 @@ namespace LibationAvalonia.Dialogs
|
|||||||
public string StripAudibleBrandingText { get; } = Configuration.GetDescription(nameof(Configuration.StripAudibleBrandAudio));
|
public string StripAudibleBrandingText { get; } = Configuration.GetDescription(nameof(Configuration.StripAudibleBrandAudio));
|
||||||
public string StripUnabridgedText { get; } = Configuration.GetDescription(nameof(Configuration.StripUnabridged));
|
public string StripUnabridgedText { get; } = Configuration.GetDescription(nameof(Configuration.StripUnabridged));
|
||||||
public string ChapterTitleTemplateText { get; } = Configuration.GetDescription(nameof(Configuration.ChapterTitleTemplate));
|
public string ChapterTitleTemplateText { get; } = Configuration.GetDescription(nameof(Configuration.ChapterTitleTemplate));
|
||||||
|
public string MoveMoovToBeginningText { get; } = Configuration.GetDescription(nameof(Configuration.MoveMoovToBeginning));
|
||||||
|
|
||||||
public bool CreateCueSheet { get; set; }
|
public bool CreateCueSheet { get; set; }
|
||||||
public bool DownloadCoverArt { get; set; }
|
public bool DownloadCoverArt { get; set; }
|
||||||
@ -462,7 +464,8 @@ namespace LibationAvalonia.Dialogs
|
|||||||
public bool MergeOpeningAndEndCredits { get; set; }
|
public bool MergeOpeningAndEndCredits { get; set; }
|
||||||
public bool StripAudibleBrandAudio { get; set; }
|
public bool StripAudibleBrandAudio { get; set; }
|
||||||
public bool StripUnabridged { get; set; }
|
public bool StripUnabridged { get; set; }
|
||||||
public bool DecryptToLossy { get; set; }
|
public bool DecryptToLossy { get => _decryptToLossy; set => this.RaiseAndSetIfChanged(ref _decryptToLossy, value); }
|
||||||
|
public bool MoveMoovToBeginning { get; set; }
|
||||||
|
|
||||||
public bool LameDownsampleMono { get; set; } = Design.IsDesignMode;
|
public bool LameDownsampleMono { get; set; } = Design.IsDesignMode;
|
||||||
public bool LameConstantBitrate { get; set; } = Design.IsDesignMode;
|
public bool LameConstantBitrate { get; set; } = Design.IsDesignMode;
|
||||||
|
|||||||
@ -115,6 +115,9 @@ namespace LibationFileManager
|
|||||||
[Description("Decrypt to lossy format?")]
|
[Description("Decrypt to lossy format?")]
|
||||||
public bool DecryptToLossy { get => GetNonString(defaultValue: false); set => SetNonString(value); }
|
public bool DecryptToLossy { get => GetNonString(defaultValue: false); set => SetNonString(value); }
|
||||||
|
|
||||||
|
[Description("Move the mp4 moov atom to the beginning of the file?")]
|
||||||
|
public bool MoveMoovToBeginning { get => GetNonString(defaultValue: false); set => SetNonString(value); }
|
||||||
|
|
||||||
[Description("Lame encoder target. true = Bitrate, false = Quality")]
|
[Description("Lame encoder target. true = Bitrate, false = Quality")]
|
||||||
public bool LameTargetBitrate { get => GetNonString(defaultValue: false); set => SetNonString(value); }
|
public bool LameTargetBitrate { get => GetNonString(defaultValue: false); set => SetNonString(value); }
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
this.mergeOpeningEndCreditsCbox.Text = desc(nameof(config.MergeOpeningAndEndCredits));
|
this.mergeOpeningEndCreditsCbox.Text = desc(nameof(config.MergeOpeningAndEndCredits));
|
||||||
this.stripAudibleBrandingCbox.Text = desc(nameof(config.StripAudibleBrandAudio));
|
this.stripAudibleBrandingCbox.Text = desc(nameof(config.StripAudibleBrandAudio));
|
||||||
this.stripUnabridgedCbox.Text = desc(nameof(config.StripUnabridged));
|
this.stripUnabridgedCbox.Text = desc(nameof(config.StripUnabridged));
|
||||||
|
this.moveMoovAtomCbox.Text = desc(nameof(config.MoveMoovToBeginning));
|
||||||
|
|
||||||
clipsBookmarksFormatCb.Items.AddRange(
|
clipsBookmarksFormatCb.Items.AddRange(
|
||||||
new object[]
|
new object[]
|
||||||
@ -37,6 +38,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
stripAudibleBrandingCbox.Checked = config.StripAudibleBrandAudio;
|
stripAudibleBrandingCbox.Checked = config.StripAudibleBrandAudio;
|
||||||
convertLosslessRb.Checked = !config.DecryptToLossy;
|
convertLosslessRb.Checked = !config.DecryptToLossy;
|
||||||
convertLossyRb.Checked = config.DecryptToLossy;
|
convertLossyRb.Checked = config.DecryptToLossy;
|
||||||
|
moveMoovAtomCbox.Checked = config.MoveMoovToBeginning;
|
||||||
|
|
||||||
lameTargetBitrateRb.Checked = config.LameTargetBitrate;
|
lameTargetBitrateRb.Checked = config.LameTargetBitrate;
|
||||||
lameTargetQualityRb.Checked = !config.LameTargetBitrate;
|
lameTargetQualityRb.Checked = !config.LameTargetBitrate;
|
||||||
@ -70,6 +72,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
config.StripUnabridged = stripUnabridgedCbox.Checked;
|
config.StripUnabridged = stripUnabridgedCbox.Checked;
|
||||||
config.StripAudibleBrandAudio = stripAudibleBrandingCbox.Checked;
|
config.StripAudibleBrandAudio = stripAudibleBrandingCbox.Checked;
|
||||||
config.DecryptToLossy = convertLossyRb.Checked;
|
config.DecryptToLossy = convertLossyRb.Checked;
|
||||||
|
config.MoveMoovToBeginning = moveMoovAtomCbox.Checked;
|
||||||
|
|
||||||
config.LameTargetBitrate = lameTargetBitrateRb.Checked;
|
config.LameTargetBitrate = lameTargetBitrateRb.Checked;
|
||||||
config.LameDownsampleMono = lameDownsampleMonoCbox.Checked;
|
config.LameDownsampleMono = lameDownsampleMonoCbox.Checked;
|
||||||
@ -107,6 +110,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
|
|
||||||
private void convertFormatRb_CheckedChanged(object sender, EventArgs e)
|
private void convertFormatRb_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
moveMoovAtomCbox.Enabled = convertLosslessRb.Checked;
|
||||||
lameTargetRb_CheckedChanged(sender, e);
|
lameTargetRb_CheckedChanged(sender, e);
|
||||||
LameMatchSourceBRCbox_CheckedChanged(sender, e);
|
LameMatchSourceBRCbox_CheckedChanged(sender, e);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,6 +76,7 @@
|
|||||||
this.clipsBookmarksFormatCb = new System.Windows.Forms.ComboBox();
|
this.clipsBookmarksFormatCb = new System.Windows.Forms.ComboBox();
|
||||||
this.downloadClipsBookmarksCbox = new System.Windows.Forms.CheckBox();
|
this.downloadClipsBookmarksCbox = new System.Windows.Forms.CheckBox();
|
||||||
this.audiobookFixupsGb = new System.Windows.Forms.GroupBox();
|
this.audiobookFixupsGb = new System.Windows.Forms.GroupBox();
|
||||||
|
this.moveMoovAtomCbox = new System.Windows.Forms.CheckBox();
|
||||||
this.stripUnabridgedCbox = new System.Windows.Forms.CheckBox();
|
this.stripUnabridgedCbox = new System.Windows.Forms.CheckBox();
|
||||||
this.chapterTitleTemplateGb = new System.Windows.Forms.GroupBox();
|
this.chapterTitleTemplateGb = new System.Windows.Forms.GroupBox();
|
||||||
this.chapterTitleTemplateBtn = new System.Windows.Forms.Button();
|
this.chapterTitleTemplateBtn = new System.Windows.Forms.Button();
|
||||||
@ -294,7 +295,7 @@
|
|||||||
// convertLossyRb
|
// convertLossyRb
|
||||||
//
|
//
|
||||||
this.convertLossyRb.AutoSize = true;
|
this.convertLossyRb.AutoSize = true;
|
||||||
this.convertLossyRb.Location = new System.Drawing.Point(13, 136);
|
this.convertLossyRb.Location = new System.Drawing.Point(13, 158);
|
||||||
this.convertLossyRb.Name = "convertLossyRb";
|
this.convertLossyRb.Name = "convertLossyRb";
|
||||||
this.convertLossyRb.Size = new System.Drawing.Size(329, 19);
|
this.convertLossyRb.Size = new System.Drawing.Size(329, 19);
|
||||||
this.convertLossyRb.TabIndex = 12;
|
this.convertLossyRb.TabIndex = 12;
|
||||||
@ -675,6 +676,7 @@
|
|||||||
//
|
//
|
||||||
// audiobookFixupsGb
|
// audiobookFixupsGb
|
||||||
//
|
//
|
||||||
|
this.audiobookFixupsGb.Controls.Add(this.moveMoovAtomCbox);
|
||||||
this.audiobookFixupsGb.Controls.Add(this.splitFilesByChapterCbox);
|
this.audiobookFixupsGb.Controls.Add(this.splitFilesByChapterCbox);
|
||||||
this.audiobookFixupsGb.Controls.Add(this.stripUnabridgedCbox);
|
this.audiobookFixupsGb.Controls.Add(this.stripUnabridgedCbox);
|
||||||
this.audiobookFixupsGb.Controls.Add(this.convertLosslessRb);
|
this.audiobookFixupsGb.Controls.Add(this.convertLosslessRb);
|
||||||
@ -682,11 +684,21 @@
|
|||||||
this.audiobookFixupsGb.Controls.Add(this.stripAudibleBrandingCbox);
|
this.audiobookFixupsGb.Controls.Add(this.stripAudibleBrandingCbox);
|
||||||
this.audiobookFixupsGb.Location = new System.Drawing.Point(6, 169);
|
this.audiobookFixupsGb.Location = new System.Drawing.Point(6, 169);
|
||||||
this.audiobookFixupsGb.Name = "audiobookFixupsGb";
|
this.audiobookFixupsGb.Name = "audiobookFixupsGb";
|
||||||
this.audiobookFixupsGb.Size = new System.Drawing.Size(403, 160);
|
this.audiobookFixupsGb.Size = new System.Drawing.Size(403, 185);
|
||||||
this.audiobookFixupsGb.TabIndex = 19;
|
this.audiobookFixupsGb.TabIndex = 19;
|
||||||
this.audiobookFixupsGb.TabStop = false;
|
this.audiobookFixupsGb.TabStop = false;
|
||||||
this.audiobookFixupsGb.Text = "Audiobook Fix-ups";
|
this.audiobookFixupsGb.Text = "Audiobook Fix-ups";
|
||||||
//
|
//
|
||||||
|
// moveMoovAtomCbox
|
||||||
|
//
|
||||||
|
this.moveMoovAtomCbox.AutoSize = true;
|
||||||
|
this.moveMoovAtomCbox.Location = new System.Drawing.Point(23, 133);
|
||||||
|
this.moveMoovAtomCbox.Name = "moveMoovAtomCbox";
|
||||||
|
this.moveMoovAtomCbox.Size = new System.Drawing.Size(188, 19);
|
||||||
|
this.moveMoovAtomCbox.TabIndex = 14;
|
||||||
|
this.moveMoovAtomCbox.Text = "[MoveMoovToBeginning desc]";
|
||||||
|
this.moveMoovAtomCbox.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// stripUnabridgedCbox
|
// stripUnabridgedCbox
|
||||||
//
|
//
|
||||||
this.stripUnabridgedCbox.AutoSize = true;
|
this.stripUnabridgedCbox.AutoSize = true;
|
||||||
@ -701,7 +713,7 @@
|
|||||||
//
|
//
|
||||||
this.chapterTitleTemplateGb.Controls.Add(this.chapterTitleTemplateBtn);
|
this.chapterTitleTemplateGb.Controls.Add(this.chapterTitleTemplateBtn);
|
||||||
this.chapterTitleTemplateGb.Controls.Add(this.chapterTitleTemplateTb);
|
this.chapterTitleTemplateGb.Controls.Add(this.chapterTitleTemplateTb);
|
||||||
this.chapterTitleTemplateGb.Location = new System.Drawing.Point(6, 335);
|
this.chapterTitleTemplateGb.Location = new System.Drawing.Point(6, 360);
|
||||||
this.chapterTitleTemplateGb.Name = "chapterTitleTemplateGb";
|
this.chapterTitleTemplateGb.Name = "chapterTitleTemplateGb";
|
||||||
this.chapterTitleTemplateGb.Size = new System.Drawing.Size(842, 54);
|
this.chapterTitleTemplateGb.Size = new System.Drawing.Size(842, 54);
|
||||||
this.chapterTitleTemplateGb.TabIndex = 18;
|
this.chapterTitleTemplateGb.TabIndex = 18;
|
||||||
@ -738,7 +750,7 @@
|
|||||||
this.lameOptionsGb.Controls.Add(this.groupBox2);
|
this.lameOptionsGb.Controls.Add(this.groupBox2);
|
||||||
this.lameOptionsGb.Location = new System.Drawing.Point(415, 6);
|
this.lameOptionsGb.Location = new System.Drawing.Point(415, 6);
|
||||||
this.lameOptionsGb.Name = "lameOptionsGb";
|
this.lameOptionsGb.Name = "lameOptionsGb";
|
||||||
this.lameOptionsGb.Size = new System.Drawing.Size(433, 323);
|
this.lameOptionsGb.Size = new System.Drawing.Size(433, 348);
|
||||||
this.lameOptionsGb.TabIndex = 14;
|
this.lameOptionsGb.TabIndex = 14;
|
||||||
this.lameOptionsGb.TabStop = false;
|
this.lameOptionsGb.TabStop = false;
|
||||||
this.lameOptionsGb.Text = "Mp3 Encoding Options";
|
this.lameOptionsGb.Text = "Mp3 Encoding Options";
|
||||||
@ -1240,5 +1252,6 @@
|
|||||||
private System.Windows.Forms.CheckBox useCoverAsFolderIconCb;
|
private System.Windows.Forms.CheckBox useCoverAsFolderIconCb;
|
||||||
private System.Windows.Forms.ComboBox clipsBookmarksFormatCb;
|
private System.Windows.Forms.ComboBox clipsBookmarksFormatCb;
|
||||||
private System.Windows.Forms.CheckBox downloadClipsBookmarksCbox;
|
private System.Windows.Forms.CheckBox downloadClipsBookmarksCbox;
|
||||||
|
private System.Windows.Forms.CheckBox moveMoovAtomCbox;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user