mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
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:
@@ -27,13 +27,27 @@ using CUETools.Codecs;
|
||||
|
||||
namespace CUETools.Codecs.ALAC
|
||||
{
|
||||
[AudioDecoderClass("cuetools", "m4a", 2)]
|
||||
public class ALACReader : IAudioSource
|
||||
public class DecoderSettings : AudioDecoderSettings
|
||||
{
|
||||
public override string Extension => "m4a";
|
||||
|
||||
public override string Name => "cuetools";
|
||||
|
||||
public override Type DecoderType => typeof(AudioDecoder);
|
||||
|
||||
public override int Priority => 2;
|
||||
|
||||
public DecoderSettings() : base() { }
|
||||
}
|
||||
|
||||
[AudioDecoderClass(typeof(DecoderSettings))]
|
||||
public class AudioDecoder : IAudioSource
|
||||
{
|
||||
public ALACReader(string path, Stream IO)
|
||||
public AudioDecoder(DecoderSettings settings, string path, Stream IO = null)
|
||||
{
|
||||
m_settings = settings;
|
||||
_path = path;
|
||||
_IO = IO != null ? IO : new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
_IO = IO ?? new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
_buff = new byte[512];
|
||||
_tags = new NameValueCollection();
|
||||
qtmovie_read();
|
||||
@@ -43,7 +57,7 @@ namespace CUETools.Codecs.ALAC
|
||||
calculate_length();
|
||||
}
|
||||
|
||||
public ALACReader(AudioPCMConfig _pcm, int rice_historymult, int rice_initialhistory, int rice_kmodifier, int blocksize)
|
||||
public AudioDecoder(AudioPCMConfig _pcm, int rice_historymult, int rice_initialhistory, int rice_kmodifier, int blocksize)
|
||||
{
|
||||
pcm = _pcm;
|
||||
|
||||
@@ -59,9 +73,10 @@ namespace CUETools.Codecs.ALAC
|
||||
_framesBuffer = new byte[65536];
|
||||
}
|
||||
|
||||
public AudioDecoderSettings Settings { get { return null; } }
|
||||
private DecoderSettings m_settings;
|
||||
public AudioDecoderSettings Settings => m_settings;
|
||||
|
||||
private void InitTables()
|
||||
private void InitTables()
|
||||
{
|
||||
if (_predicterror_buffer_a != null)
|
||||
return;
|
||||
|
||||
@@ -30,12 +30,24 @@ using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
#endif
|
||||
using CUETools.Codecs;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CUETools.Codecs.ALAC
|
||||
{
|
||||
public class ALACWriterSettings: AudioEncoderSettings
|
||||
[JsonObject(MemberSerialization.OptIn)]
|
||||
public class EncoderSettings: AudioEncoderSettings
|
||||
{
|
||||
public ALACWriterSettings()
|
||||
public override string Extension => "m4a";
|
||||
|
||||
public override string Name => "cuetools";
|
||||
|
||||
public override Type EncoderType => typeof(AudioEncoder);
|
||||
|
||||
public override int Priority => 1;
|
||||
|
||||
public override bool Lossless => true;
|
||||
|
||||
public EncoderSettings()
|
||||
: base("0 1 2 3 4 5 6 7 8 9 10", "5")
|
||||
{
|
||||
}
|
||||
@@ -51,11 +63,12 @@ namespace CUETools.Codecs.ALAC
|
||||
[DefaultValue(false)]
|
||||
[DisplayName("Verify")]
|
||||
[Description("Decode each frame and compare with original")]
|
||||
public bool DoVerify { get; set; }
|
||||
[JsonProperty]
|
||||
public bool DoVerify { get; set; }
|
||||
}
|
||||
|
||||
[AudioEncoderClass("cuetools", "m4a", true, 1, typeof(ALACWriterSettings))]
|
||||
public class ALACWriter : IAudioDest
|
||||
[AudioEncoderClass(typeof(EncoderSettings))]
|
||||
public class AudioEncoder : IAudioDest
|
||||
{
|
||||
Stream _IO = null;
|
||||
bool _pathGiven = false;
|
||||
@@ -100,13 +113,13 @@ namespace CUETools.Codecs.ALAC
|
||||
int _windowsize = 0, _windowcount = 0;
|
||||
|
||||
ALACFrame frame;
|
||||
ALACReader verify;
|
||||
AudioDecoder verify;
|
||||
|
||||
bool inited = false;
|
||||
|
||||
List<int> chunk_pos;
|
||||
|
||||
public ALACWriter(string path, Stream IO, ALACWriterSettings settings)
|
||||
public AudioEncoder(string path, Stream IO, EncoderSettings settings)
|
||||
{
|
||||
m_settings = settings;
|
||||
m_settings.Validate();
|
||||
@@ -134,7 +147,7 @@ namespace CUETools.Codecs.ALAC
|
||||
chunk_pos = new List<int>();
|
||||
}
|
||||
|
||||
public ALACWriter(string path, ALACWriterSettings settings)
|
||||
public AudioEncoder(string path, EncoderSettings settings)
|
||||
: this(path, null, settings)
|
||||
{
|
||||
}
|
||||
@@ -147,7 +160,7 @@ namespace CUETools.Codecs.ALAC
|
||||
}
|
||||
}
|
||||
|
||||
ALACWriterSettings m_settings;
|
||||
EncoderSettings m_settings;
|
||||
|
||||
public AudioEncoderSettings Settings
|
||||
{
|
||||
@@ -1369,7 +1382,7 @@ namespace CUETools.Codecs.ALAC
|
||||
{
|
||||
get
|
||||
{
|
||||
var version = typeof(ALACWriter).Assembly.GetName().Version;
|
||||
var version = typeof(AudioEncoder).Assembly.GetName().Version;
|
||||
return vendor_string ?? "CUETools " + version.Major + "." + version.Minor + "." + version.Build;
|
||||
}
|
||||
set
|
||||
@@ -1768,7 +1781,7 @@ namespace CUETools.Codecs.ALAC
|
||||
|
||||
if (m_settings.DoVerify)
|
||||
{
|
||||
verify = new ALACReader(Settings.PCM, history_mult, initial_history, k_modifier, m_blockSize);
|
||||
verify = new AudioDecoder(Settings.PCM, history_mult, initial_history, k_modifier, m_blockSize);
|
||||
verifyBuffer = new int[Alac.MAX_BLOCKSIZE * Settings.PCM.ChannelCount];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user