H264源码分析(四)

本文深入探讨H264编码中子宏块预测的句法元素,包括子宏块预测类型、参考帧索引以及运动矢量。接着,介绍了残差句法的处理,包括CABAC和CAVLC两种编码方式下残差系数的解码过程。通过对这些核心组件的理解,有助于提升H264视频编码的效率和质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(十二)子宏块预测句法

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 )
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值