博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
H.264句法和语法总结(十一)宏块层预测句法
阅读量:4183 次
发布时间:2019-05-26

本文共 2041 字,大约阅读时间需要 6 分钟。

mb_pred( mb_type ) {   
    if( MbPartPredMode( mb_type, 0 )    = =    Intra_4x4    | |     
        MbPartPredMode( mb_type, 0 )    = =    Intra_16x16 ) { 
        if( MbPartPredMode( mb_type, 0 )    = =    Intra_4x4 )         
            for( luma4x4BlkIdx=0; luma4x4BlkIdx<16; luma4x4BlkIdx++ ) {    
                
// prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ] rem_intra4x4_pred_mode[ luma4x4BlkIdx ] 帧内预测的模式也是需要预测的,  prev_intra4x4_pred_mode_flag 用来指明帧内预测时,亮度分量的预测模式的预测值是否就是真实预测模式,如果是,就不需另外再传预测模式。如果不是,就由 rem_intra4x4_pred_mode 指定真实预测模式。        
                
prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ]   
                if( !
prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ] )         
                   
rem_intra4x4_pred_mode[ luma4x4BlkIdx ]   
            }         
    
    // intra_chroma_pred_mode  在帧内预测时指定色度的预测模式, 
            intra_chroma_pred_mode        预测模式 
            0                                               DC 
            1                                               Horizontal 
            2                                               Vertical             
            3                                               Plane
  
        
intra_chroma_pred_mode   
    } else if( MbPartPredMode( mb_type, 0 )    !=    Direct ) {         
        for( mbPartIdx = 0; mbPartIdx < NumMbPart( mb_type ); mbPartIdx++)                 
            if( ( num_ref_idx_l0_active_minus1 > 0    | | 
                    mb_field_decoding_flag ) &&     
                MbPartPredMode( mb_type, mbPartIdx )    !=    Pred_L1 ) 
                
// ref_idx_l0[ mbPartIdx]用参考帧队列 L0 进行预测,即前向预测时,参考图像在参考帧队列中的序号。其中 mbPartIdx 是宏块分区的序号。 如 果 当 前 宏 块 是非场宏块 ,  则ref_idx_l0[ mbPartIdx ] 值的范围是0到 num_ref_idx_l0_active_minus1。 否则,如果当前宏块是场宏块,(宏块所在图像是场,当图像是帧场自适应时当前宏块处于场编码的宏块对),ref_idx_l0[ mbPartIdx]值的范围是 0  到 2*num_ref_idx_l0_active_minus1 + 1,如前所述,此时参考帧队列的帧都将拆成场,故参考队列长度加倍。 
                
ref_idx_l0[ mbPartIdx ]   
        for( mbPartIdx = 0; mbPartIdx < NumMbPart( mb_type ); mbPartIdx++)                 
            if( ( num_ref_idx_l1_active_minus1    >    0    | | 
                    mb_field_decoding_flag ) &&     
                MbPartPredMode( mb_type, mbPartIdx )    !=    Pred_L0 ) 
                
ref_idx_l1[ mbPartIdx ]   
        for( mbPartIdx = 0; mbPartIdx < NumMbPart( mb_type ); mbPartIdx++)                 
            if( MbPartPredMode ( mb_type, mbPartIdx )    !=    Pred_L1 )         
                for( compIdx = 0; compIdx < 2; compIdx++ )         
                   
// mvd_l0[ mbPartIdx ][ 0 ][ compIdx ]  运动矢量的预测值和实际值之间的差。mbPartIdx  是宏块分区的序号。CompIdx = 0 时水平运动矢量;  CompIdx = 1 垂直运动矢量。  
                    
mvd_l0[ mbPartIdx ][ 0 ][ compIdx ]   
        for( mbPartIdx = 0; mbPartIdx < NumMbPart( mb_type ); mbPartIdx++)                 
            if( MbPartPredMode( mb_type, mbPartIdx )    !=    Pred_L0 )         
                for( compIdx = 0; compIdx < 2; compIdx++ )         
                    
mvd_l1[ mbPartIdx ][ 0 ][ compIdx ]    
    }         
}

转载地址:http://nbzoi.baihongyu.com/

你可能感兴趣的文章
SpringBoot多模块项目实践(Multi-Module)
查看>>
第一篇: 服务的注册与发现Eureka(Greenwich版)
查看>>
第二篇: 服务消费者(rest+ribbon)(Greenwich版本)
查看>>
第三篇: 服务消费者(Feign)(Greenwich版本)
查看>>
获取客户的真实IP地址
查看>>
第四篇: 熔断器(Ribbon+Feign)(Greenwich版本)
查看>>
Linux的常用命令(一)
查看>>
Linux的常用命令(二)
查看>>
第六篇: 分布式配置中心(Greenwich版本)
查看>>
SpringBoot | 配置logback-spring.xml
查看>>
SpringBoot | 第一章:构建第一个SpringBoot工程
查看>>
SpringBoot | 第二章:配置多环境以及上传文件
查看>>
Spring Data JPA |自定义非实体类的映射
查看>>
SpringBoot | 常用注解记录
查看>>
JavaBean对象转换EntityUtils工具类
查看>>
Maven常用命令
查看>>
SpringBoot | 运行报错,无法加载oracle连接驱动
查看>>
为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
查看>>
AWS EC2如何从普通用户切换为root用户
查看>>
click方法不生效的
查看>>