天天看點

H.264句法和文法總結(十二)子宏塊預測句法

sub_mb_pred( mb_type ) {   
    for( mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++ )          
        // sub_mb_type[ mbPartIdx ]    指明子宏塊的預測類型,在不同的宏塊類型中這個句法元素的語義不一樣。      
        sub_mb_type[ mbPartIdx ]   
    for( mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++ )              
        if( ( num_ref_idx_l0_active_minus1    >    0    | |   
mb_field_decoding_flag ) && 
            mb_type    !=    P_8x8ref0    && 
            sub_mb_type[ mbPartIdx ]    !=    B_Direct_8x8    && 
            SubMbPredMode( sub_mb_type[ mbPartIdx ] )    !=    Pred_L1 ) 
            ref_idx_l0[ mbPartIdx ]    
    for( mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++ )              
        if( (num_ref_idx_l1_active_minus1    >    0    | |    mb_field_decoding_flag ) 
&& 
                sub_mb_type[ mbPartIdx ]    !=    B_Direct_8x8    && 
                SubMbPredMode( sub_mb_type[ mbPartIdx ] )    !=    Pred_L0 ) 
            ref_idx_l1[ mbPartIdx ]   
    for( mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++ )              
        if( sub_mb_type[ mbPartIdx ]    !=    B_Direct_8x8    && 
            SubMbPredMode( sub_mb_type[ mbPartIdx ] )    !=    Pred_L1 ) 
            for( subMbPartIdx = 0;   
                      subMbPartIdx < NumSubMbPart( sub_mb_type[ mbPartIdx ] ); 
                      subMbPartIdx++) 
                for( compIdx = 0; compIdx < 2; compIdx++ )          
                    mvd_l0[ mbPartIdx ][ subMbPartIdx ][ compIdx ]   
    for( mbPartIdx = 0; mbPartIdx < 4; mbPartIdx++ )          
        if( sub_mb_type[ mbPartIdx ]    !=    B_Direct_8x8    && 
            SubMbPredMode( sub_mb_type[ mbPartIdx ] )    !=    Pred_L0 ) 
            for( subMbPartIdx = 0;   
                      subMbPartIdx < NumSubMbPart( sub_mb_type[ mbPartIdx ] ); 
                      subMbPartIdx++) 
                for( compIdx = 0; compIdx < 2; compIdx++ )          
                    mvd_l1[ mbPartIdx ][ subMbPartIdx ][ compIdx ]   
}      

繼續閱讀