void ProcessMetadataStreamInfo( int len, PrimitiveReader reader )
        {
            short minBlockSize = reader.ReadInt16();
            short maxBlockSize = reader.ReadInt16();
            int minFrameSize = reader.ReadUInt24();
            int maxFrameSize = reader.ReadUInt24();

            FlacBitReader bitReader = new FlacBitReader( reader );
            bitReader.BigEndian = true;
            int sampleRate = bitReader.ReadBits( 20 );
            Metadata[MetadataKeys.SampleRate] = sampleRate.ToString();
            int channels = bitReader.ReadBits( 3 ) + 1;
            Metadata[MetadataKeys.Channels] = channels.ToString();
            int bitsPerSample = bitReader.ReadBits( 5 ) + 1;
            Metadata[MetadataKeys.BitsPerSample] = bitsPerSample.ToString();
            long totalSamples = bitReader.ReadBits64( 36 );
            Metadata["Total samples"] = totalSamples.ToString();

            channelCount = channels;
            metaSampleRate = sampleRate;
            metaBitsPerSample = bitsPerSample;
            byte[] md5hash = reader.ReadBytes( 16 );
        }