void ProcessMetadataVorbisComment( int len, PrimitiveReader reader ) { int bytesRead = 0; reader.BigEndian = false; while( bytesRead < len ) { int vendorLength = reader.ReadInt32(); string vendor = reader.ReadUTF8String( vendorLength ); bytesRead += 4 + vendorLength; uint commentsCount = reader.ReadUInt32(); bytesRead += 4; for( uint i = 0; i < commentsCount; i++ ) { int commentLength = reader.ReadInt32(); string comment = reader.ReadUTF8String( commentLength ); bytesRead += 4 + commentLength; } } reader.BigEndian = true; }
void ProcessMetadataPicture( int len, PrimitiveReader reader ) { uint type = reader.ReadUInt32(); PictureType pictureType = (PictureType)type; int mimeTypeLength = reader.ReadInt32(); string mimeType = reader.ReadASCIIString( mimeTypeLength ); int descriptionLength = reader.ReadInt32(); string description = reader.ReadUTF8String( descriptionLength ); int width = reader.ReadInt32(); int height = reader.ReadInt32(); int colourDepth = reader.ReadInt32(); // Bits per pixel. int indexedColoursUsed = reader.ReadInt32(); int picturelength = reader.ReadInt32(); byte[] data = reader.ReadBytes( picturelength ); }