mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
Simplify code for encoder settings
This commit is contained in:
@@ -61,13 +61,7 @@ namespace CUETools.Codecs.FLACCL
|
|||||||
{
|
{
|
||||||
if (EncoderModeIndex < 0)
|
if (EncoderModeIndex < 0)
|
||||||
throw new Exception("unsupported encoder mode");
|
throw new Exception("unsupported encoder mode");
|
||||||
var thisModeSettings = FLACCLWriterSettings.modeSettings[EncoderModeIndex];
|
SetDefaultValuesForMode();
|
||||||
if (MaxLPCOrder < 0)
|
|
||||||
MaxLPCOrder = thisModeSettings.MaxLPCOrder;
|
|
||||||
if (MinFixedOrder < 0)
|
|
||||||
MinFixedOrder = thisModeSettings.MinFixedOrder;
|
|
||||||
if (MaxFixedOrder < 0)
|
|
||||||
MaxFixedOrder = thisModeSettings.MaxFixedOrder;
|
|
||||||
if (Padding < 0)
|
if (Padding < 0)
|
||||||
throw new Exception("unsupported padding value " + Padding.ToString());
|
throw new Exception("unsupported padding value " + Padding.ToString());
|
||||||
if (BlockSize != 0 && (BlockSize < 256 || BlockSize >= Flake.MAX_BLOCKSIZE))
|
if (BlockSize != 0 && (BlockSize < 256 || BlockSize >= Flake.MAX_BLOCKSIZE))
|
||||||
@@ -82,57 +76,21 @@ namespace CUETools.Codecs.FLACCL
|
|||||||
throw new Exception("invalid MinPartitionOrder " + MinPartitionOrder.ToString());
|
throw new Exception("invalid MinPartitionOrder " + MinPartitionOrder.ToString());
|
||||||
if (MinPartitionOrder > MaxPartitionOrder || MaxPartitionOrder > 8)
|
if (MinPartitionOrder > MaxPartitionOrder || MaxPartitionOrder > 8)
|
||||||
throw new Exception("invalid MaxPartitionOrder " + MaxPartitionOrder.ToString());
|
throw new Exception("invalid MaxPartitionOrder " + MaxPartitionOrder.ToString());
|
||||||
|
if (CPUThreads < 0 || CPUThreads > 16)
|
||||||
|
throw new Exception("CPUThreads must be between 0..16");
|
||||||
if (!AllowNonSubset && !IsSubset())
|
if (!AllowNonSubset && !IsSubset())
|
||||||
throw new Exception("the encoding parameters specified do not conform to the FLAC Subset");
|
throw new Exception("the encoding parameters specified do not conform to the FLAC Subset");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static FLACCLWriterSettings[] modeSettings =
|
|
||||||
{
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 3, MaxFixedOrder = 2, MaxLPCOrder = 7,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 7,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 8,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 8,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 8,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 8,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 12,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 12,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 0, MaxFixedOrder = 4, MaxLPCOrder = 12,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 32,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 32,
|
|
||||||
},
|
|
||||||
new FLACCLWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 32,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
[DefaultValue(-1)]
|
[DefaultValue(-1)]
|
||||||
|
[DefaultValueForMode(3, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2)]
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[DisplayName("MinFixedOrder")]
|
[DisplayName("MinFixedOrder")]
|
||||||
[SRDescription(typeof(Properties.Resources), "MinFixedOrderDescription")]
|
[SRDescription(typeof(Properties.Resources), "MinFixedOrderDescription")]
|
||||||
public int MinFixedOrder { get; set; }
|
public int MinFixedOrder { get; set; }
|
||||||
|
|
||||||
[DefaultValue(-1)]
|
[DefaultValue(-1)]
|
||||||
|
[DefaultValueForMode(2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2)]
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[DisplayName("MaxFixedOrder")]
|
[DisplayName("MaxFixedOrder")]
|
||||||
[SRDescription(typeof(Properties.Resources), "MaxFixedOrderDescription")]
|
[SRDescription(typeof(Properties.Resources), "MaxFixedOrderDescription")]
|
||||||
@@ -145,6 +103,7 @@ namespace CUETools.Codecs.FLACCL
|
|||||||
public int MinLPCOrder { get; set; }
|
public int MinLPCOrder { get; set; }
|
||||||
|
|
||||||
[DefaultValue(-1)]
|
[DefaultValue(-1)]
|
||||||
|
[DefaultValueForMode(7, 7, 8, 8, 8, 8, 12, 12, 12, 32, 32, 32)]
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[DisplayName("MaxLPCOrder")]
|
[DisplayName("MaxLPCOrder")]
|
||||||
[SRDescription(typeof(Properties.Resources), "MaxLPCOrderDescription")]
|
[SRDescription(typeof(Properties.Resources), "MaxLPCOrderDescription")]
|
||||||
@@ -207,22 +166,9 @@ namespace CUETools.Codecs.FLACCL
|
|||||||
[SRDescription(typeof(Properties.Resources), "DescriptionDeviceType")]
|
[SRDescription(typeof(Properties.Resources), "DescriptionDeviceType")]
|
||||||
public OpenCLDeviceType DeviceType { get; set; }
|
public OpenCLDeviceType DeviceType { get; set; }
|
||||||
|
|
||||||
int cpu_threads = 0;
|
|
||||||
[DefaultValue(0)]
|
[DefaultValue(0)]
|
||||||
[SRDescription(typeof(Properties.Resources), "DescriptionCPUThreads")]
|
[SRDescription(typeof(Properties.Resources), "DescriptionCPUThreads")]
|
||||||
public int CPUThreads
|
public int CPUThreads { get; set; }
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return cpu_threads;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (value < 0 || value > 16)
|
|
||||||
throw new Exception("CPUThreads must be between 0..16");
|
|
||||||
cpu_threads = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
[DisplayName("Allow Non-subset")]
|
[DisplayName("Allow Non-subset")]
|
||||||
|
|||||||
@@ -64,15 +64,7 @@ namespace CUETools.Codecs.FLAKE
|
|||||||
{
|
{
|
||||||
if (EncoderModeIndex < 0)
|
if (EncoderModeIndex < 0)
|
||||||
throw new Exception("unsupported encoder mode");
|
throw new Exception("unsupported encoder mode");
|
||||||
var thisModeSettings = FlakeWriterSettings.modeSettings[EncoderModeIndex];
|
SetDefaultValuesForMode();
|
||||||
if (MaxLPCOrder < 0)
|
|
||||||
MaxLPCOrder = thisModeSettings.MaxLPCOrder;
|
|
||||||
if (MinFixedOrder < 0)
|
|
||||||
MinFixedOrder = thisModeSettings.MinFixedOrder;
|
|
||||||
if (MaxFixedOrder < 0)
|
|
||||||
MaxFixedOrder = thisModeSettings.MaxFixedOrder;
|
|
||||||
if (MaxPartitionOrder < 0)
|
|
||||||
MaxPartitionOrder = thisModeSettings.MaxPartitionOrder;
|
|
||||||
if (Padding < 0)
|
if (Padding < 0)
|
||||||
throw new Exception("unsupported padding value " + Padding.ToString());
|
throw new Exception("unsupported padding value " + Padding.ToString());
|
||||||
if (BlockSize != 0 && (BlockSize < 256 || BlockSize >= Flake.MAX_BLOCKSIZE))
|
if (BlockSize != 0 && (BlockSize < 256 || BlockSize >= Flake.MAX_BLOCKSIZE))
|
||||||
@@ -91,53 +83,15 @@ namespace CUETools.Codecs.FLAKE
|
|||||||
throw new Exception("the encoding parameters specified do not conform to the FLAC Subset");
|
throw new Exception("the encoding parameters specified do not conform to the FLAC Subset");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static FlakeWriterSettings[] modeSettings =
|
|
||||||
{
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 3, MaxFixedOrder = 2, MaxLPCOrder = 6, MaxPartitionOrder = 6,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 8, MaxPartitionOrder = 6,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 12, MaxPartitionOrder = 6,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 8, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 12, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 12, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 12, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 12, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 0, MaxFixedOrder = 2, MaxLPCOrder = 12, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 2, MaxFixedOrder = 2, MaxLPCOrder = 32, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 0, MaxFixedOrder = 4, MaxLPCOrder = 32, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
new FlakeWriterSettings() {
|
|
||||||
MinFixedOrder = 0, MaxFixedOrder = 4, MaxLPCOrder = 32, MaxPartitionOrder = 8,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
[DefaultValue(-1)]
|
[DefaultValue(-1)]
|
||||||
|
[DefaultValueForMode(3, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0)]
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[DisplayName("MinFixedOrder")]
|
[DisplayName("MinFixedOrder")]
|
||||||
[SRDescription(typeof(Properties.Resources), "MinFixedOrderDescription")]
|
[SRDescription(typeof(Properties.Resources), "MinFixedOrderDescription")]
|
||||||
public int MinFixedOrder { get; set; }
|
public int MinFixedOrder { get; set; }
|
||||||
|
|
||||||
[DefaultValue(-1)]
|
[DefaultValue(-1)]
|
||||||
|
[DefaultValueForMode(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4)]
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[DisplayName("MaxFixedOrder")]
|
[DisplayName("MaxFixedOrder")]
|
||||||
[SRDescription(typeof(Properties.Resources), "MaxFixedOrderDescription")]
|
[SRDescription(typeof(Properties.Resources), "MaxFixedOrderDescription")]
|
||||||
@@ -150,6 +104,7 @@ namespace CUETools.Codecs.FLAKE
|
|||||||
public int MinLPCOrder { get; set; }
|
public int MinLPCOrder { get; set; }
|
||||||
|
|
||||||
[DefaultValue(-1)]
|
[DefaultValue(-1)]
|
||||||
|
[DefaultValueForMode(6, 8, 12, 8, 12, 12, 12, 12, 12, 32, 32, 32)]
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[DisplayName("MaxLPCOrder")]
|
[DisplayName("MaxLPCOrder")]
|
||||||
[SRDescription(typeof(Properties.Resources), "MaxLPCOrderDescription")]
|
[SRDescription(typeof(Properties.Resources), "MaxLPCOrderDescription")]
|
||||||
@@ -162,6 +117,7 @@ namespace CUETools.Codecs.FLAKE
|
|||||||
public int MinPartitionOrder { get; set; }
|
public int MinPartitionOrder { get; set; }
|
||||||
|
|
||||||
[DefaultValue(-1)]
|
[DefaultValue(-1)]
|
||||||
|
[DefaultValueForMode(6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8)]
|
||||||
[DisplayName("MaxPartitionOrder")]
|
[DisplayName("MaxPartitionOrder")]
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[SRDescription(typeof(Properties.Resources), "MaxPartitionOrderDescription")]
|
[SRDescription(typeof(Properties.Resources), "MaxPartitionOrderDescription")]
|
||||||
|
|||||||
@@ -67,6 +67,18 @@ namespace CUETools.Codecs
|
|||||||
return hasBrowsable;
|
return hasBrowsable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void SetDefaultValuesForMode()
|
||||||
|
{
|
||||||
|
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(this))
|
||||||
|
if (!property.CanResetValue(this))
|
||||||
|
foreach (var attribute in property.Attributes)
|
||||||
|
if (attribute is DefaultValueForModeAttribute)
|
||||||
|
{
|
||||||
|
var defaultValueForMode = attribute as DefaultValueForModeAttribute;
|
||||||
|
property.SetValue(this, defaultValueForMode.m_values[EncoderModeIndex]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
[XmlIgnore]
|
[XmlIgnore]
|
||||||
public AudioPCMConfig PCM
|
public AudioPCMConfig PCM
|
||||||
|
|||||||
27
CUETools.Codecs/DefaultValueForMode.cs
Normal file
27
CUETools.Codecs/DefaultValueForMode.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace CUETools.Codecs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Default property value for each encoder mode attribute
|
||||||
|
/// </summary>
|
||||||
|
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
|
||||||
|
public class DefaultValueForModeAttribute : Attribute
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Resource manager to use;
|
||||||
|
/// </summary>
|
||||||
|
public int[] m_values;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Construct the description attribute
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text"></param>
|
||||||
|
public DefaultValueForModeAttribute(params int[] values)
|
||||||
|
{
|
||||||
|
this.m_values = values;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user