コード例 #1
0
ファイル: FrameContentCodec.cs プロジェクト: MRoc/puremp3
        public virtual int RequiredBytes(
            FrameContent frameContent,
            bool desynchronization,
            Reader.UnsyncMode unsyncMode)
        {
            if (unsyncMode == Reader.UnsyncMode.CountIncludesUnsyncBytes)
            {
                using (Writer writer = new Writer())
                {
                    writer.Unsynchronization = desynchronization;

                    using (WriterStream stream = new WriterStream(writer))
                    {
                        frameContent.Codec.Write(stream, frameContent);
                    }

                    writer.Flush();

                    return((int)writer.Length);
                }
            }
            else if (unsyncMode == Reader.UnsyncMode.CountExcludesUnsyncBytes)
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    frameContent.Codec.Write(stream, frameContent);

                    return((int)stream.Length);
                }
            }
            else
            {
                throw new NotSupportedException("Unknown unsync mode");
            }
        }
コード例 #2
0
ファイル: ReaderStream.cs プロジェクト: MRoc/puremp3
        public ReaderStream(
            Reader _reader,
            int _length,
            Reader.UnsyncMode unsyncMode)
        {
            if (_reader.Length - _reader.Position < _length)
            {
                throw new Exception("Can't setup reader of size " + _length
                                    + " on reader with " + (_reader.Length - _reader.Position) + " bytes left");
            }

            reader = _reader;
            length = _length;
            originalReaderPosition = _reader.Position;
            UnsyncMode             = unsyncMode;
        }