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); } }
public void MetadataBlock(FlacMetadataBlockType type, byte[] metadata) { if (metadata == null) { throw new ArgumentNullException("metadata"); } FlushMetaWriter(false); metaWriter = new ArrayMetadataBlockWriter(type, metadata); }
public ArrayMetadataBlockWriter(FlacMetadataBlockType type, byte[] data) { this.type = type; this.data = data; }
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); } }
public void MetadataBlock(FlacMetadataBlockType type, byte[] metadata) { if (metadata == null) throw new ArgumentNullException("metadata"); FlushMetaWriter(false); metaWriter = new ArrayMetadataBlockWriter(type, metadata); }