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

@@ -1,10 +1,13 @@
using System.ComponentModel;
using System;
using System.ComponentModel;
using CUETools.Codecs.LAME.Interop;
namespace CUETools.Codecs.LAME
{
public class LAMEEncoderCBRSettings : AudioEncoderSettings
{
public override Type EncoderType => typeof(LAMEEncoderCBR);
public static readonly uint[] bps_table = new uint[] { 96, 128, 192, 256, 320 };
[DefaultValue(0)]

View File

@@ -1,10 +1,13 @@
using System.ComponentModel;
using System;
using System.ComponentModel;
namespace CUETools.Codecs.LAME
{
public class LAMEEncoderVBRSettings : AudioEncoderSettings
{
[DefaultValue(LAMEEncoderVBRProcessingQuality.Normal)]
public override Type EncoderType => typeof(LAMEEncoderVBR);
[DefaultValue(LAMEEncoderVBRProcessingQuality.Normal)]
public LAMEEncoderVBRProcessingQuality Quality { get; set; }
public LAMEEncoderVBRSettings()

View File

@@ -5,9 +5,9 @@ using System.IO;
namespace CUETools.Codecs.LAME
{
[AudioEncoderClass("CBR (libmp3lame)", "mp3", false, 1, typeof(LameWriterCBRSettings))]
[AudioEncoderClass("VBR (libmp3lame)", "mp3", false, 2, typeof(LameWriterVBRSettings))]
public class LameWriter : IAudioDest
[AudioEncoderClass(typeof(CBREncoderSettings))]
[AudioEncoderClass(typeof(VBREncoderSettings))]
public class AudioEncoder : IAudioDest
{
#region Unmanaged Functions
@@ -74,7 +74,7 @@ namespace CUETools.Codecs.LAME
get { return this.m_outputPath; }
}
private LameWriterSettings m_settings;
private LameEncoderSettings m_settings;
public virtual AudioEncoderSettings Settings
{
@@ -84,7 +84,7 @@ namespace CUETools.Codecs.LAME
}
}
public LameWriter(string path, Stream output, LameWriterSettings settings)
public AudioEncoder(string path, Stream output, LameEncoderSettings settings)
{
this.CheckPCMConfig(settings.PCM);
this.m_settings = settings;
@@ -92,7 +92,7 @@ namespace CUETools.Codecs.LAME
this.m_outputStream = output != null ? output : File.Create(path);
}
public LameWriter(string path, LameWriterSettings settings)
public AudioEncoder(string path, LameEncoderSettings settings)
: this(path, null, settings)
{
}

View File

@@ -2,26 +2,35 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using Newtonsoft.Json;
namespace CUETools.Codecs.LAME
{
public class LameWriterCBRSettings : LameWriterSettings
[JsonObject(MemberSerialization.OptIn)]
public class CBREncoderSettings : LameEncoderSettings
{
public override string Extension => "mp3";
public override string Name => "libmp3lame-CBR";
public override int Priority => 1;
public static readonly int[] bps_table = new int[] { 96, 128, 192, 256, 320 };
[JsonProperty]
[DefaultValue(LameQuality.High)]
public LameQuality Quality { get; set; }
public LameWriterCBRSettings()
public CBREncoderSettings()
: base("96 128 192 256 320", "256")
{
}
public override void Apply(IntPtr lame)
{
LameWriter.lame_set_VBR(lame, (int)LameVbrMode.Off);
LameWriter.lame_set_brate(lame, LameWriterCBRSettings.bps_table[this.EncoderModeIndex]);
LameWriter.lame_set_quality(lame, (int)this.Quality);
AudioEncoder.lame_set_VBR(lame, (int)LameVbrMode.Off);
AudioEncoder.lame_set_brate(lame, CBREncoderSettings.bps_table[this.EncoderModeIndex]);
AudioEncoder.lame_set_quality(lame, (int)this.Quality);
}
}
}

View File

@@ -4,9 +4,11 @@ using System.Text;
namespace CUETools.Codecs.LAME
{
public class LameWriterSettings : AudioEncoderSettings
public class LameEncoderSettings : AudioEncoderSettings
{
public LameWriterSettings(string modes, string defaultMode)
public override Type EncoderType => typeof(AudioEncoder);
public LameEncoderSettings(string modes, string defaultMode)
: base(modes, defaultMode)
{
}

View File

@@ -2,24 +2,33 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using Newtonsoft.Json;
namespace CUETools.Codecs.LAME
{
public class LameWriterVBRSettings : LameWriterSettings
[JsonObject(MemberSerialization.OptIn)]
public class VBREncoderSettings : LameEncoderSettings
{
[DefaultValue(LameQuality.High)]
public override string Extension => "mp3";
public override string Name => "libmp3lame-VBR";
public override int Priority => 2;
[JsonProperty]
[DefaultValue(LameQuality.High)]
public LameQuality Quality { get; set; }
public LameWriterVBRSettings()
public VBREncoderSettings()
: base("V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2")
{
}
public override void Apply(IntPtr lame)
{
LameWriter.lame_set_VBR(lame, (int)LameVbrMode.Default);
LameWriter.lame_set_VBR_quality(lame, 9 - this.EncoderModeIndex);
LameWriter.lame_set_quality(lame, (int)this.Quality);
AudioEncoder.lame_set_VBR(lame, (int)LameVbrMode.Default);
AudioEncoder.lame_set_VBR_quality(lame, 9 - this.EncoderModeIndex);
AudioEncoder.lame_set_quality(lame, (int)this.Quality);
}
}
}