public override void Read(BitReader bitReader) { base.Read(bitReader); PrimaryPicType = (PictureType)bitReader.GetByteFromNBits(3); bitReader.DiscardTrailingBits(); // complete the byte while (MoreRBSPData(bitReader)) bitReader.ReadByte(); }
public override void Read(BitReader bitReader) { base.Read(bitReader); PrimaryPicType = (PictureType)bitReader.GetByteFromNBits(3); bitReader.DiscardTrailingBits(); // complete the byte while (MoreRBSPData(bitReader)) { bitReader.ReadByte(); } }
public override void Read(BitReader bitReader) { base.Read(bitReader); PICParamSetID = bitReader.DecodeUnsignedExpGolomb(); SEQParamSetID = bitReader.DecodeUnsignedExpGolomb(); EntropyCodingModeFlag = bitReader.GetNextBit(); PICOrderPresentFlag = bitReader.GetNextBit(); NumSliceGroupsMinus1 = bitReader.DecodeUnsignedExpGolomb(); if (NumSliceGroupsMinus1 > 0) { SliceGroupMapType = bitReader.DecodeUnsignedExpGolomb(); switch (SliceGroupMapType) { case 0: RunLengthMinus1 = new uint[NumSliceGroupsMinus1 + 1]; for (int grp = 0; grp <= NumSliceGroupsMinus1; grp++) { RunLengthMinus1[grp] = bitReader.DecodeUnsignedExpGolomb(); } break; case 1: break; case 2: TopLeft = new uint[NumSliceGroupsMinus1 + 1]; BottomRight = new uint[NumSliceGroupsMinus1 + 1]; for (int grp = 0; grp <= NumSliceGroupsMinus1; grp++) // standards doc, this reads grp < NumSliceGroupsMinus1 { TopLeft[grp] = bitReader.DecodeUnsignedExpGolomb(); BottomRight[grp] = bitReader.DecodeUnsignedExpGolomb(); } break; case 3: case 4: case 5: SliceGroupChangeDirectionFlag = bitReader.GetNextBit(); SliceGroupChangeRateMinus1 = bitReader.DecodeUnsignedExpGolomb(); break; case 6: PICSizeInMapUnitsMinus1 = bitReader.DecodeUnsignedExpGolomb(); SliceGroupID = new uint[PICSizeInMapUnitsMinus1 + 1]; ushort bitCount = BitReader.CalcBitsNeededToRepresent(NumSliceGroupsMinus1 + 1); for (int grp = 0; grp <= PICSizeInMapUnitsMinus1; grp++) { SliceGroupID[grp] = bitReader.GetUIntFromNBits(bitCount); } break; default: throw new Exception("BitReader: bad slice group map type"); } } NumRefIDx10ActiveMinus1 = bitReader.DecodeUnsignedExpGolomb(); NumRefIDx11ActiveMinus1 = bitReader.DecodeUnsignedExpGolomb(); WeightedPredFlag = bitReader.GetNextBit(); WeightedBiPredIDC = (ushort)bitReader.GetUIntFromNBits(2); PICInitQPMinus26 = bitReader.DecodeSignedExpGolomb(); PICInitQSMinus26 = bitReader.DecodeSignedExpGolomb(); ChromaQPIndexOffset = bitReader.DecodeSignedExpGolomb(); DeblockingFilterControlPresentFlag = bitReader.GetNextBit(); ConstrainedIntraPredFlag = bitReader.GetNextBit(); RedundantPICCountPresentFlag = bitReader.GetNextBit(); bitReader.DiscardTrailingBits(); }