public Mono2StereoFilter(PullSoundStreamBase input) : base(input) { if (input.Chans != 1) { throw new ArgumentException("Input stream's channel num MUST be 1"); } }
public override void Dispose() { if (Input != null) { Input.Dispose(); } Input = null; GC.SuppressFinalize(this); }
/// <summary> /// CUEシートのTrack情報からストリームを生成 /// </summary> /// <param name="track">CUEのTrack情報</param> /// <param name="preScan">preScanを行うかどうか</param> /// <returns></returns> private static PullSoundStreamBase CreateStreamCue(CD.Track track, bool preScan) { String streamFullPath = System.IO.Path.IsPathRooted(track.file_name_CUESheet) ? track.file_name_CUESheet : Path.GetDirectoryName(track.file_name) + Path.DirectorySeparatorChar + track.file_name_CUESheet; PullSoundStreamBase self = CreateFileStreamPrimitive(streamFullPath, preScan); self = ApplyTrackRange(self, track); return(self); }
public RangeFilter(PullSoundStreamBase input, ulong offset, ulong length) : base(input) { if (offset + length > Input.LengthSample) { throw new ArgumentOutOfRangeException("offset / length out of range"); } Offset = offset; ActualLength = length; PositionSample = 0; // 先頭にシーク }
private static PullSoundStreamBase ApplyTrackRange(PullSoundStreamBase self, CD.Track track) { var RangeOffset = GetFrame2Sample(self, track.Start); var RangeLength = track.End > track.Start ? GetFrame2Sample(self, track.End - track.Start) : self.LengthSample - RangeOffset; var gain = track.getTagValue("ALBUM GAIN"); if (gain != null) { self = new ReplayGainOverrideFilter(self, Util.Util.parseDouble(gain.ToString())); } self = new RangeFilter(self, RangeOffset, RangeLength); return(self); }
/// <summary> /// CDのフレームからサンプル数に変換する /// </summary> /// <param name="frames">フレーム数</param> /// <returns>サンプル数</returns> private static ulong GetFrame2Sample(PullSoundStreamBase llStream, int frames) { return((ulong)frames * (llStream.Freq / 75)); }
public ReplayGainOverrideFilter(PullSoundStreamBase input, double gain) : base(input) { this.OverrideGain = gain; }
public AbstractFilter(PullSoundStreamBase input) { this.Input = input; }
public FreqConvertFilter(PullSoundStreamBase input) : base(input) { }