mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
Reset encoding mode to default for codecs with dynamic modes list,
when settings become incompatible with the chosen mode. E.g. for flac if -11 was selected and nonsubset modes are disabled, -7 is chosen instead.
This commit is contained in:
@@ -8,7 +8,7 @@ namespace CUETools.Codecs
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// When plugins with classes that provide <see cref="IAudioDest" /> are
|
||||
/// registered, their <see cref="AudioEncoderClass" /> attributes are read.
|
||||
/// registered, their <see cref="AudioEncoderClassAttribute" /> attributes are read.
|
||||
/// </remarks>
|
||||
/// <example>
|
||||
/// <code lang="C#">using CUETools.Codecs;
|
||||
@@ -19,7 +19,7 @@ namespace CUETools.Codecs
|
||||
///}</code>
|
||||
/// </example>
|
||||
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
|
||||
public sealed class AudioEncoderClass : Attribute
|
||||
public sealed class AudioEncoderClassAttribute : Attribute
|
||||
{
|
||||
private string _encoderName, _extension;
|
||||
private bool _lossless;
|
||||
@@ -51,7 +51,7 @@ namespace CUETools.Codecs
|
||||
get { return _settings; }
|
||||
}
|
||||
|
||||
public AudioEncoderClass(string encoderName, string extension, bool lossless, int priority, Type settings)
|
||||
public AudioEncoderClassAttribute(string encoderName, string extension, bool lossless, int priority, Type settings)
|
||||
{
|
||||
_encoderName = encoderName;
|
||||
_extension = extension;
|
||||
|
||||
@@ -25,13 +25,17 @@ namespace CUETools.Codecs
|
||||
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(this))
|
||||
property.ResetValue(this);
|
||||
this.m_supported_modes = supported_modes;
|
||||
this.EncoderMode = default_mode;
|
||||
this.m_default_mode = default_mode;
|
||||
//GetSupportedModes(out m_default_mode);
|
||||
this.EncoderMode = m_default_mode;
|
||||
}
|
||||
|
||||
private string m_supported_modes;
|
||||
protected string m_supported_modes;
|
||||
protected string m_default_mode;
|
||||
|
||||
public virtual string GetSupportedModes()
|
||||
public virtual string GetSupportedModes(out string defaultMode)
|
||||
{
|
||||
defaultMode = m_default_mode;
|
||||
return this.m_supported_modes;
|
||||
}
|
||||
|
||||
@@ -101,23 +105,14 @@ namespace CUETools.Codecs
|
||||
set;
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
[Browsable(false)]
|
||||
public string[] SupportedModes
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.GetSupportedModes().Split(' ');
|
||||
}
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
[Browsable(false)]
|
||||
public int EncoderModeIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
string[] modes = this.SupportedModes;
|
||||
string defaultMode;
|
||||
string[] modes = this.GetSupportedModes(out defaultMode).Split(' ');
|
||||
if (modes == null || modes.Length < 1)
|
||||
return -1;
|
||||
for (int i = 0; i < modes.Length; i++)
|
||||
@@ -128,7 +123,8 @@ namespace CUETools.Codecs
|
||||
|
||||
set
|
||||
{
|
||||
string[] modes = this.SupportedModes;
|
||||
string defaultMode;
|
||||
string[] modes = this.GetSupportedModes(out defaultMode).Split(' ');
|
||||
if (modes.Length == 0 && value < 0)
|
||||
return;
|
||||
if (value < 0 || value >= modes.Length)
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<Compile Include="PlaybackState.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SilenceGenerator.cs" />
|
||||
<Compile Include="UserDefinedEncoderSettings.cs" />
|
||||
<Compile Include="UserDefinedReader.cs" />
|
||||
<Compile Include="UserDefinedWriter.cs" />
|
||||
<Compile Include="WAVReader.cs" />
|
||||
|
||||
39
CUETools.Codecs/UserDefinedEncoderSettings.cs
Normal file
39
CUETools.Codecs/UserDefinedEncoderSettings.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace CUETools.Codecs
|
||||
{
|
||||
public class UserDefinedEncoderSettings : AudioEncoderSettings
|
||||
{
|
||||
public UserDefinedEncoderSettings()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public string SupportedModes
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_supported_modes;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_supported_modes = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string DefaultMode
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_default_mode;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_default_mode = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user