Esempio n. 1
0
        public CodedCoefficients(ISliceState sliceState, uint picHeightInMbs, SubBlockPartition subBlockPartition)
        {
            _sliceState        = sliceState;
            _subBlockPartition = subBlockPartition;

            uint macroBlockCount = (picHeightInMbs * sliceState.PictureState.SequenceState.PicWidthInMbs);
            int  subBlockCount   = _subBlockPartition.SubBlockCount;

            _totalCoeffs = new byte[macroBlockCount, subBlockCount];

            // Clear the total (non-zero) coeffs array
            for (int i = 0; i < macroBlockCount; i++)
            {
                for (int j = 0; j < subBlockCount; j++)
                {
                    _totalCoeffs[i, j] = TotalCoeffUnavailable;
                }
            }
        }
Esempio n. 2
0
        public CavlcSliceData(INalUnitReader reader, IState readerState)
        {
            _reader                  = reader;
            _readerState             = readerState;
            _sliceState              = reader.State.SliceState;
            _pictureState            = _sliceState.PictureState;
            _sequenceState           = _pictureState.SequenceState;
            _coeffTokenChromaDc      = (ChromaFormat == ChromaFormat.YCbCr420) ? CoeffTokenChromaDc420 : CoeffTokenChromaDc422;
            _lumaCodedCoefficients   = new CodedCoefficients(_sliceState, PicHeightInMbs, SubBlockPartition.Luma);
            _chromaCodedCoefficients = new CodedCoefficients[2];
            _subMbTypes              = new ISubMacroblockType[4];

            SubBlockPartition chromaSubBlockPartition = ChromaArrayTypeSubBlockPartitions[_sequenceState.ChromaFormat.ChromaFormatIdc];

            for (int i = 0; i < _chromaCodedCoefficients.Length; i++)
            {
                _chromaCodedCoefficients[i] = new CodedCoefficients(_sliceState, PicHeightInMbs, chromaSubBlockPartition);
            }

            MbToSliceGroupMap = _mbToSliceGroup.CreateMacroBlockToSliceGroupMap(_sliceState);
        }