public WaveFormatExtensible(int channels, int samplesPerSecond, int bitsPerSample,
			int validBitsPerSample, SpeakerPositions channelMask, Guid subFormat)
            : base(WaveFormatTag.Extensible, channels, samplesPerSecond, bitsPerSample)
        {
            extraDataSize = (short) (StandardSizeExtensible - StandardSize);
            _validBitsPerSample = (short) validBitsPerSample;
            _channelMask = channelMask;
            _subFormat = subFormat;
        }
 internal override void Read(BinaryReader reader)
 {
     base.Read(reader);
     try
     {
         if (extraDataSize < StandardSizeExtensible - StandardSize &&
             formatTag != WaveFormatTag.Extensible)
             return;
         _validBitsPerSample = reader.ReadInt16();
         _channelMask = (SpeakerPositions) reader.ReadUInt32();
         _subFormat = new Guid(reader.ReadBytes(16));
     }
     finally
     {
         reader = null;
     }
 }