 is a frame macroblock, currMbFrameFlag is set equal to 1. Otherwise (the macroblock with address CurrMbAddr is a field macroblock), currMbFrameFlag is set equal to 0. The variable mbIsTopMbFlag is derived as follows: If the macroblock with address CurrMbAddr is a top macroblock (i.e., CurrMbAddr 9 % 2 is equal to 0), mbIsTopMbFlag is set equal to 1. Otherwise (the macroblock with address CurrMbAddr is a bottom macroblock, i.e., CurrMbAddr % 2 is equal to 1), mbIsTopMbFlag is set equal to 0. Table 6-4 specifies the macroblock addresses mbAddrN and yM in two ordered steps: 1. Specification of a macroblock address mbAddrX depending on ( xN, yN ) and the variables currMbFrameFlag and mbIsTopMbFlag: 2. Depending on the availability of mbAddrX, the following applies: If mbAddrX is not available, mbAddrN is marked as not available. Rec. ITU-T H.264 (01/2012) Otherwise (mbAddrX is available), mbAddrN is marked as available and Table 6-4 specifies mbAddrN and yM depending on ( xN, yN ), currMbFrameFlag, mbIsTopMbFlag, and the variable mbAddrXFrameFlag, which is derived as follows: If the macroblock mbAddrX is a frame macroblock, mbAddrXFrameFlag is set equal to 1. Otherwise (the macroblock mbAddrX is a field macroblock), mbAddrXFrameFlag is set equal to 0. Unspecified values (na) of the above flags in Table 6-4 indicate that the value of the corresponding flag is not relevant for the current table rows. Table 6-4 - Specification of mbAddrN and yM mbAddrD mbAddrD + 1 mbAddrA mbAddrA mbAddrA + 1 yN + maxH) 1 mbAddrD + 1 mbAddrD mbAddrD mbAddrD mbAddrD + 1 mbAddrA mbAddrA yN % 2 = = 0 mbAddrA yN>>1 yN % 2 == mbAddrA + 1 yN>>1 mbAddrA + 1 mbAddrA yN % 2==0 mbAddrA ( N + maxH ) >> 1 yN % !=0 mbAddrA + 1 ( yN + maxH ): >> 1 0..maxH 1 yN <(maxH/2) mbAddrA yN <<1 mbAddrA yN [>=(maxH/2) mbAddrA (yN<<1)- - maxH mbAddrA yN <(maxH/2) mbAddrA yN<<1) + 1 mbAddrA yN >= (maxH 2) mbAddrA + (yN<<1)- + 1 maxH mbAddrA + 1 mbAddrB mbAddrB + 1 CurrMbAddr CurrMbAddr - 1 0..maxW - - 1 <0 mbAddrB + 1 2* yN mbAddrB mbAddrB mbAddrB mbAddrB + 1 0..