public static string GetBitrateString(MpegFileInfo mpegFileInfo) { if (mpegFileInfo.IsVbr) return "VBR"; return (mpegFileInfo.Bitrate / 1000).ToString(CultureInfo.InvariantCulture); }
public Track(FileInfo sourceFile, Disc disc, Session session, Context context) : this(session, context) { SourceFile = sourceFile; Disc = disc; // Find tags using (var stream = new BufferedStream(sourceFile.Open(FileMode.Open, FileAccess.Read, FileShare.Read))) { _mpegDataOffset = 0; _mpegDataSize = stream.Length; Stream dataStream; // Better be sorted from outer to inner Type[] tagTypes = { typeof(Id3v2Tag), typeof(Id3v1Tag), typeof(Lyrics3v2Tag), typeof(ApeTag) }; while (true) { dataStream = new SubStream(stream, _mpegDataOffset, _mpegDataSize); var anyTagFound = false; foreach (var tagType in tagTypes) { var tag = (ITag)Activator.CreateInstance(tagType); if (!tag.Read(dataStream)) continue; if (tag.Position == TagPosision.Beginning) { _mpegDataOffset += tag.Size; _mpegDataSize -= tag.Size; } else { _mpegDataSize -= tag.Size; } Tags.Add(tag); anyTagFound = true; break; } if (!anyTagFound) break; } MpegFileInfo = new MpegFileInfo(dataStream); } }
public static string GetAudioVersionString(MpegFileInfo mpegFileInfo) { switch (mpegFileInfo.AudioVersion) { case AudioVersion.Mpeg1: return "MPEG 1"; case AudioVersion.Mpeg2: return "MPEG 2"; case AudioVersion.Mpeg25: return "MPEG 2.5"; } return null; }
public static string GetLayerString(MpegFileInfo mpegFileInfo) { switch (mpegFileInfo.Layer) { case Layer.Layer1: return "Layer I"; case Layer.Layer2: return "Layer II"; case Layer.Layer3: return "Layer III"; } return null; }
public static string GetChannelModeString(MpegFileInfo mpegFileInfo) { switch (mpegFileInfo.ChannelMode) { case ChannelMode.DualChannel: return "Dual Channel"; case ChannelMode.JointStereo: return "Joint Stereo"; case ChannelMode.Mono: return "Mono"; case ChannelMode.Stereo: return "Stereo"; } return null; }
public static string GetSampleRateString(MpegFileInfo mpegFileInfo) { return mpegFileInfo.SampleRate.ToString("#,###"); }