Esempio n. 1
0
        private void ReadMetadataBlock()
        {
            // read header
            int headerType = BaseStream.ReadByte();

            if (headerType < 0)
            {
                throw new FlacException("Unexepted end of stream: metadata block expected");
            }

            isLastMetadataBlock = (headerType & 0x80) != 0;

            metadataBlockType = (FlacMetadataBlockType)(headerType & 0x7F);

            byte[] metadataBlockLengthBytes = ReadExactly(3);
            int    metadataBlockLength      = metadataBlockLengthBytes[0] << 16 |
                                      metadataBlockLengthBytes[1] << 8 |
                                      metadataBlockLengthBytes[2];

            recordType = FlacRecordType.MetadataBlock;

            if (metadataBlockType == FlacMetadataBlockType.Streaminfo)
            {
                ReadStreaminfo(metadataBlockLength);
            }
            else
            {
                // TODO read other block types
                SkipData(metadataBlockLength);
            }
        }
Esempio n. 2
0
        public void MetadataBlock(FlacMetadataBlockType type, byte[] metadata)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException("metadata");
            }

            FlushMetaWriter(false);

            metaWriter = new ArrayMetadataBlockWriter(type, metadata);
        }
Esempio n. 3
0
 public ArrayMetadataBlockWriter(FlacMetadataBlockType type, byte[] data)
 {
     this.type = type;
     this.data = data;
 }
Esempio n. 4
0
        private void ReadMetadataBlock()
        {
            // read header
            int headerType = BaseStream.ReadByte();
            if (headerType < 0)
                throw new FlacException("Unexepted end of stream: metadata block expected");

            isLastMetadataBlock = (headerType & 0x80) != 0;

            metadataBlockType = (FlacMetadataBlockType)(headerType & 0x7F);

            byte[] metadataBlockLengthBytes = ReadExactly(3);
            int metadataBlockLength = metadataBlockLengthBytes[0] << 16 |
                metadataBlockLengthBytes[1] << 8 |
                metadataBlockLengthBytes[2];

            recordType = FlacRecordType.MetadataBlock;

            if (metadataBlockType == FlacMetadataBlockType.Streaminfo)
            {
                ReadStreaminfo(metadataBlockLength);
            }
            else
            {
                // TODO read other block types
                SkipData(metadataBlockLength);
            }
        }
Esempio n. 5
0
 public ArrayMetadataBlockWriter(FlacMetadataBlockType type, byte[] data)
 {
     this.type = type;
     this.data = data;
 }
Esempio n. 6
0
        public void MetadataBlock(FlacMetadataBlockType type, byte[] metadata)
        {
            if (metadata == null)
                throw new ArgumentNullException("metadata");

            FlushMetaWriter(false);

            metaWriter = new ArrayMetadataBlockWriter(type, metadata);
        }