public void Parse(Stream input)
{
BitStream bits = new BitStream(input);
this._synchWord = (UInt16)bits.GetBits(11);
this._MPEGVersion = (Byte)bits.GetBits(2);
this._layer = (Byte)bits.GetBits(2);
this._protectionBit = 1 == bits.GetBits(1) ? true : false;
this._bitrate = (Byte)bits.GetBits(4);
this._samplingRate = (Byte)bits.GetBits(2);
this._paddingBit = 1 == bits.GetBits(1) ? true : false;
bits.GetBits(1); //reserved
this._channelMode = (Byte)bits.GetBits(2);
this._modeExtension = (Byte)bits.GetBits(2);
this._copyright = 1 == bits.GetBits(1) ? true : false;
this._original = 1 == bits.GetBits(1) ? true : false;
this._emphasis = (Byte)bits.GetBits(2);
this._sampleData = new Byte[(Int32)(input.Length - input.Position)];
input.Read(this._sampleData, 0, this._sampleData.Length);
}