r A or B). 2. The variable transBlockN is derived as follows: If mbAddrN is available and the macroblock mbAddrN is coded in Intra_16x16 macroblock prediction mode, the following applies: If ctxBlockCat is equal to 0, the luma DC block of macroblock mbAddrN is assigned to transBlockN. Otherwise, if ctxBlockCat is equal to 6, the Cb DC block of macroblock mbAddrN is assigned to transBlockN. Otherwise (ctxBlockCat is equal to 10), the Cr DC block of macroblock mbAddrN is assigned to transBlockN. Otherwise, transBlockN is marked as not available. Otherwise, if ctxBlockCat is equal to 1 or 2, the following ordered steps are specified: The derivation process for neighbouring 4x4 luma blocks specified in clause 6.4.11.4 is invoked with luma4x4BlkIdx as input and the output is assigned to mbAddrN, luma4x4BlkIdxN (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 Skip, B_Skip, or I_PCM, ( ( CodedBlockPatternLuma >> ( luma4x4BlkIdxN >>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 luma block with index luma4x4BlkIdxN 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, ( ( CodedBlockPatternLum >> ( luma4x4BlkIdxN >>2)) & 1) is not equal to 0 for the macroblock mbAddrN, and ransform_size_8x8_flag is equal to 1 for the macroblock mbAddrN, the 8x8 luma block with index luma4x4BlkIdxN >>2) of macroblock mbAddrN is assigned to transBlockN. Rec. ITU-T H.264 (01/2012) Otherwise, transBlockN is marked as not available. Otherwise, if ctxBlockCat is equal to 3, the following ordered steps are specified: The derivation process for neighbouring macroblocks specified in clause 6.4.11.1 is invoked and the output is assigned to mbAddrN (with N being either A or B). 2. The variable transBlockN is derived as follows: If mbAddrN is available,