Code cleanup; Reader classes renamed to Decoders, Writers to Encoders, every Decoder must have a corresponding Settings class now just like Encoders. UserDefinedEncoders renamed to CommandLineEncoders, etc.

This commit is contained in:
Grigory Chudov
2018-03-23 19:26:26 -04:00
parent 8a5946ae89
commit 16fccfe5c9
71 changed files with 4530 additions and 4576 deletions

View File

@@ -8,13 +8,27 @@ using CUETools.Codecs;
namespace CUETools.Codecs.libwavpack
{
[AudioDecoderClass("libwavpack", "wv", 1)]
public unsafe class Reader : IAudioSource
public class DecoderSettings : AudioDecoderSettings
{
public override string Extension => "wv";
public override string Name => "libwavpack";
public override Type DecoderType => typeof(AudioDecoder);
public override int Priority => 1;
public DecoderSettings() : base() { }
}
[AudioDecoderClass(typeof(DecoderSettings))]
public unsafe class AudioDecoder : IAudioSource
{
private readonly void* IO_ID_WV = ((IntPtr)1).ToPointer();
private readonly void* IO_ID_WVC = ((IntPtr)2).ToPointer();
public Reader(string path, Stream IO, Stream IO_WVC)
public AudioDecoder(DecoderSettings settings, string path, Stream IO, Stream IO_WVC)
{
m_settings = settings;
m_read_bytes = ReadCallback;
m_get_pos = TellCallback;
m_set_pos_abs = SeekCallback;
@@ -58,11 +72,13 @@ namespace CUETools.Codecs.libwavpack
_sampleOffset = 0;
}
public Reader(string path, Stream IO)
: this(path, IO, null)
public AudioDecoder(DecoderSettings settings, string path, Stream IO = null)
: this(settings, path, IO, null)
{}
public AudioDecoderSettings Settings => null;
private DecoderSettings m_settings;
public AudioDecoderSettings Settings => m_settings;
public AudioPCMConfig PCM => pcm;

View File

@@ -6,18 +6,31 @@ using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using CUETools.Codecs;
using Newtonsoft.Json;
namespace CUETools.Codecs.libwavpack
{
public class WriterSettings : AudioEncoderSettings
[JsonObject(MemberSerialization.OptIn)]
public class EncoderSettings : AudioEncoderSettings
{
public WriterSettings()
public override string Extension => "wv";
public override string Name => "libwavpack";
public override Type EncoderType => typeof(AudioEncoder);
public override int Priority => 1;
public override bool Lossless => true;
public EncoderSettings()
: base("fast normal high high+", "normal")
{
}
[DefaultValue(0)]
[DisplayName("ExtraMode")]
[JsonProperty]
public int ExtraMode {
get => m_extraMode;
set {
@@ -31,6 +44,7 @@ namespace CUETools.Codecs.libwavpack
[DefaultValue(true)]
[DisplayName("MD5")]
[Description("Calculate MD5 hash for audio stream")]
[JsonProperty]
public bool MD5Sum { get; set; }
[DisplayName("Version")]
@@ -40,10 +54,10 @@ namespace CUETools.Codecs.libwavpack
private int m_extraMode;
};
[AudioEncoderClass("libwavpack", "wv", true, 1, typeof(WriterSettings))]
public unsafe class Writer : IAudioDest
[AudioEncoderClass(typeof(EncoderSettings))]
public unsafe class AudioEncoder : IAudioDest
{
public Writer(string path, Stream output, WriterSettings settings)
public AudioEncoder(EncoderSettings settings, string path, Stream output = null)
{
m_path = path;
m_stream = output;
@@ -57,11 +71,6 @@ namespace CUETools.Codecs.libwavpack
throw new Exception("bits per sample must be 16..24");
}
public Writer(string path, WriterSettings settings)
: this(path, null, settings)
{
}
public AudioEncoderSettings Settings => m_settings;
public string Path { get => m_path; }
@@ -209,7 +218,7 @@ namespace CUETools.Codecs.libwavpack
int[,] _shiftedSampleBuffer;
WavpackContext* _wpc;
WriterSettings m_settings;
EncoderSettings m_settings;
Stream m_stream;
MD5 _md5hasher;
bool m_streamGiven;