(十二)子宏块预测句法
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 )
H264源码:子宏块、残差及CAVLC句法分析

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

被折叠的 条评论
为什么被折叠?



