 the macroblock mbAddrN does not have mb_type equal to P_Skip,B_Skip, or I_PCM, and CodedBlockPatternChroma is not equal to 0 for the macroblock mbAddrN, the chroma DC block of chroma component iCbCr of macroblock mbAddrN is assigned to transBlockN. Otherwise, transBlockN is marked as not available. Otherwise, if ctxBlockCat is equal to 4, the following ordered steps are specified: The derivation process for neighbouring 4x4 chroma blocks specified in clause 6.4.11.5 is invoked with chroma4x4BlkIdx as input and the output is assigned to mbAddrN, chroma4x4BlkIdxN (with N being either A or B). 2. The variable transBlockN is derived as follows: If mbAddrN is available, the macroblock mbAddrN does not have __type equal to P_Skip,B_Skip, or I_PCM, and CodedBlockPatternChroma is equal to 2 for the macroblock mbAddrN, the 4x4 chroma block with chroma4x4BlkIdxN of the chroma component iCbCr of macroblock mbAddrN is assigned to transBlockN. Otherwise, transBlockN is marked as not available. Otherwise, if ctxBlockCat is equal to 5, the following ordered steps are specified: The derivation process for neighbouring 8x8 luma blocks specified in clause 6.4.11.2 is invoked with luma8x8BlkIdx as input and the output is assigned to mbAddrN, luma8x8BlkIdxN (with N being either A or B). 2. The variable transBlockN is derived as follows: If mbAddrN is available, the macroblock mbAddrN does not have mb_type equal to P_Skip, B_Skip, or I_PCM, ( ( CodedBlockPatternLuma >>luma8x8BlkIdx) & 1 ) is not equal to 0 for the macroblock mbAddrN, and transform_size_8x8_flag is equal to 1 for the macroblock mbAddrN, the 8x8 luma block with index luma8x8BlkIdxN of macroblock mbAddrN is assigned to transBlockN. Otherwise, transBlockN is marked as not available. Otherwise, if ctxBlockCat is equal to7 or 8, the following ordered steps are specified: The derivation process for neighbouring 4x4 Cb blocks specified in clause 6.4.11.5 is invoked with cb4x4BlkIdx as input and the output is assigned to mbAddrN, cb4x4BlkIdxN (with N being either A or B). 2.