 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 >> cb4x4BlkIdxN x >>2) ) & 1 ) is not equal to 0 for the macroblock mbAddrN, and transform_size_8x8_flag is equal to 0 for the macroblock mbAddrN, the 4x4 Cb block with index cb4x4BlkIdxN of macroblock mbAddrN is assigned to transBlockN. Otherwise, if mbAddrN is available, the macroblock mbAddrN does not have mb_type equal to P_Skip or B_Skip, ( CodedBlockPatternLuma >> cb4x4BlkIdxN>>2)) & 1) is not equal to 0 for the macroblock mbAddrN, and transform_size_8x8_flagi is equal to 1 for the macroblock mbAddrN, the 8x8 Cb block with index ( cb4x4BlkIdxN >>2) of macroblock mbAddrN is assigned to transBlockN. Otherwise, transBlockN is marked as not available. Otherwise, if ctxBlockCat is equal to 9, the following ordered steps are specified: The derivation process for neighbouring 8x8 Cb blocks specified in clause 6.4.11.3 is invoked with cb8x8BlkIdx as input and the output is assigned to mbAddrN, cb8x8BlkIdxN (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 >>cb8x8BlkIdx) & 1 ) is not equal to 0 for the macroblock Rec. ITU-T H.264 (01/2012) mbAddrN, and transform_size_8x8_flag is equal to 1 for the macroblock mbAddrN, the 8x8 Cb block with index cb8x8BlkIdxN of macroblock mbAddrN is assigned to transBlockN. Otherwise, transBlockN is marked as not available. Otherwise, if ctxBlockCat is equal to 11 or 12, the following ordered steps are specified: 1. The derivation process for neighbouring 4x4 Cr blocks specified in clause 6.4.11.5 is invoked with cr4x4BlkIdx as input and the output is assigned to mbAddrN, cr4x4BlkIdxN (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_