Beispiel #1
0
        public static string GetBitrateString(MpegFileInfo mpegFileInfo)
        {
            if (mpegFileInfo.IsVbr)
                return "VBR";

            return (mpegFileInfo.Bitrate / 1000).ToString(CultureInfo.InvariantCulture);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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;
        }
Beispiel #5
0
        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;
        }
Beispiel #6
0
 public static string GetSampleRateString(MpegFileInfo mpegFileInfo)
 {
     return mpegFileInfo.SampleRate.ToString("#,###");
 }