Exemplo n.º 1
0
 public override void Read(BitReader bitReader)
 {
     base.Read(bitReader);
       PrimaryPicType = (PictureType)bitReader.GetByteFromNBits(3);
       bitReader.DiscardTrailingBits(); // complete the byte
       while (MoreRBSPData(bitReader))
     bitReader.ReadByte();
 }
Exemplo n.º 2
0
 public override void Read(BitReader bitReader)
 {
     base.Read(bitReader);
     PrimaryPicType = (PictureType)bitReader.GetByteFromNBits(3);
     bitReader.DiscardTrailingBits(); // complete the byte
     while (MoreRBSPData(bitReader))
     {
         bitReader.ReadByte();
     }
 }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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();
        }