public void Encode() { if (this.trackGain == null && this.drMeter == null) { throw new SkipEncodingItemException("Neither ReplayGain nor DynamicRange to calculate."); } AudioBuffer buffer = new AudioBuffer(audioSource.PCM, FileEncoderBase.BufferSize); while (audioSource.Read(buffer, FileEncoderBase.BufferSize) > 0) { if (this.trackGain != null) { DspHelper.AnalyzeSamples(this.trackGain, buffer); } if (this.drMeter != null) { this.drMeter.Feed(buffer.Samples, buffer.Length); } ProgressChangedEventArgs eventArgs = new ProgressChangedEventArgs((double)this.audioSource.Position / this.audioSource.Length); this.OnProgressChanged(eventArgs); if (eventArgs.Cancel) { this.trackGain = null; this.drMeter = null; return; } } if (this.drMeter != null) { this.drMeter.Finish(); } }
public FileEncoderBase(IAudioSource audioSource, string targetFilename, AudioFileTag tags, TrackGain trackGain, DrMeter drMeter) { if (audioSource == null) { throw new SkipEncodingItemException("Unsupported audio source."); } this.targetFilename = targetFilename; this.audioSource = audioSource; Directory.CreateDirectory(Path.GetDirectoryName(this.targetFilename)); this.tags = tags; this.trackGain = trackGain; this.drMeter = drMeter; }
public NativeFlacEncoder(IAudioSource audioSource, string targetFilename, AudioFileTag tags, int compressionLevel, TrackGain trackGain, DrMeter drMeter) : base(audioSource, targetFilename, tags, trackGain, drMeter) { this.AudioDest = new NativeFlacWriter(targetFilename, audioSource.PCM) { CompressionLevel = compressionLevel }; }
public LocalMp3Encoder(IAudioSource audioSource, string targetFilename, AudioFileTag tags, int vbrQuality, TrackGain trackGain, DrMeter drMeter) : base(audioSource, targetFilename, tags, trackGain, drMeter) { this.AudioDest = new LameWriter(targetFilename, audioSource.PCM) { Settings = LameWriterSettings.CreateVbr(vbrQuality) }; }
public DspCalculatorEncoder(IAudioSource audioSource, TrackGain trackGain, DrMeter drMeter) { this.audioSource = audioSource; this.trackGain = trackGain; this.drMeter = drMeter; }
public RemoteMp3VbrEncoder(IPAddress remoteAddress, IAudioSource audioSource, string targetFilename, AudioFileTag tags, int vbrQuality, TrackGain trackGain, DrMeter drMeter) : base(audioSource, targetFilename, tags, trackGain, drMeter) { this.AudioDest = new RemoteMp3VbrWriter(remoteAddress, targetFilename, audioSource.PCM) { CompressionLevel = vbrQuality }; }