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:
@@ -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)]
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user