コード例 #1
0
ファイル: DecodeStreamFactory.cs プロジェクト: gageas/lutea
        /// <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);
        }
コード例 #2
0
ファイル: DecodeStreamFactory.cs プロジェクト: gageas/lutea
        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);
        }