 samples, substituting luma with Cb or Cr, substituting pred with predcb or predcr, and substituting BitDepthy with BitDepthc. 8.3.5 Sample construction process for I_PCM macroblocks This process is invoked when mb_type is equal to I_PCM. The variable dy is derived as follows: If MbaffFrameFlag is equal to 1 and the current macroblock is a field macroblock, dy is set equal to 2. Otherwise (MbaffFrameFlag is equal to 0 or the current macroblock is a frame macroblock), dy is set equal to 1. The position of the upper-left luma sample of the current macroblock is derived by invoking the inverse macroblock scanning process in clause 6.4.1 with CurrMbAddr as input and the output being assigned to xP, yP). The constructed luma samples prior to the deblocking process are generated as specified by: for(i=0;i<256;it+) S'L[xP + (% % 66, yP + dy * (i/16)) ] = pcm_sample_luma[ ] (8-150) When ChromaArrayType is not equal to 0, the constructed chroma samples prior to the deblocking process are generated as specified by: for( i=0; i MbWidthC*MbHeightC;i++ { S'cb[ (xP/SubWidthC)+(i%MbWidthC), ( + SubHeightC 1) SubHeightC ) + dy * i/MbWidthC)] = pcm_sample_chroma[i] (8-151) S'cr[ xP /SubWidthC)+(i%MbWidthC), SubHeightC 1) SubHeightC ) + dy /MbWidthC ) = pcm_sample_chroma[ + MbWidthC MbHeightC Inter prediction process This process is invoked when decoding P and B macroblock types. Outputs of this process are Inter prediction samples for the current macroblock that are a 16x16 array pred of luma samples and when ChromaArrayType is not equal to 0 two (MbWidthC)x(MbHeightC) arrays predcb and predc of chroma samples, one for each of the chroma components Cb and Cr. The partitioning of a macroblock is specified by mb_type. Each macroblock partition is referred to by mbPartIdx. When the macroblock partitioning consists of partitions that are equal to sub-macroblocks, each sub-macroblock can be further partitioned into sub-macroblock partitions as specified by sub_mb_type[mbPartIdx ]. Each sub-macroblock partition is referred to by subMbP