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; } } }
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); }