H.264句法和语法总结(十三)残差句法

本文详细介绍了视频编码过程中残差块的处理方法,包括熵编码模式、预测模式、块大小、DC和AC系数的编码策略,以及色度残差的处理。针对不同的编码模式和块类型,采用了Cavlc和Cabac编码方式,对于16x16的内部块,还特别考虑了DC和AC系数的编码细节。

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

residual( ) {  
    if( !entropy_coding_mode_flag )           
        residual_block = residual_block_cavlc           
    else           
        residual_block = residual_block_cabac           
    if( MbPartPredMode( mb_type, 0 )    = =    Intra_16x16 )           
        residual_block( Intra16x16DCLevel, 16 )     
    for( i8x8 = 0; i8x8 < 4; i8x8++ )    /* each luma 8x8 block */           
        for( i4x4 = 0; i4x4 < 4; i4x4++ )    /* each 4x4 sub-block of block */           
            if( CodedBlockPatternLuma & ( 1 << i8x8 ) ) {             
                if( MbPartPredMode( mb_type, 0 )    = =    Intra_16x16 )           
                    residual_block( Intra16x16ACLevel[ i8x8 * 4 + i4x4 ], 15 )    
                else           
                    residual_block( LumaLevel[ i8x8 * 4 + i4x4 ], 16 )           
            } else {           
                if( MbPartPredMode( mb_type, 0 )    = =    Intra_16x16 )           
                    for( i = 0; i < 15; i++ )             
                        Intra16x16ACLevel[ i8x8 * 4 + i4x4 ][ i ] = 0           
                else           
                    for( i = 0; i < 16; i++ )           
                        LumaLevel[ i8x8 * 4 + i4x4 ][ i ] = 0           
            }           
    for( iCbCr = 0; iCbCr < 2; iCbCr++ )           
        if( CodedBlockPatternChroma & 3 )    /* chroma DC residual present */                    
            residual_block( ChromaDCLevel[ iCbCr ], 4 )        
        else           
            for( i = 0; i < 4; i++ )           
                ChromaDCLevel[ iCbCr ][ i ] = 0           
    for( iCbCr = 0; iCbCr < 2; iCbCr++ )           
        for( i4x4 = 0; i4x4 < 4; i4x4++ )           
            if( CodedBlockPatternChroma & 2 )     
                /* chroma AC residual present */   
                residual_block( ChromaACLevel[ iCbCr ][ i4x4 ], 15 )       
            else           
                for( i = 0; i < 15; i++ )           
                    ChromaACLevel[ iCbCr ][ i4x4 ][ i ] = 0           
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值