VTM1.0代码阅读:coding_unit函数

本文深入探讨VTM1.0中的coding_unit函数,该函数在coding_tree模块中用于编码CU内的预测模式、预测数据及变换系数等关键信息。
摘要由CSDN通过智能技术生成

coding_unit函数在coding_tree中被调用,来对一个cu中的所有预测信息、变换系数等信息进行编码。
其实对一个cu的编码,主要编码3个信息:预测模式、预测数据、变换系数。

void CABACWriter::coding_unit( const CodingUnit& cu, Partitioner& partitioner, CUCtx& cuCtx )
{
   
  CodingStructure& cs = *cu.cs;

  // transquant bypass flag
  if( cs.pps->getTransquantBypassEnabledFlag() )
  {
   
    cu_transquant_bypass_flag( cu );	//变换系数旁路编码标志
  }

  // skip flag
  if( !cs.slice->isIntra() )
  {
   
    cu_skip_flag( cu );					//skip模式时编码skip_flag
  }

  // skip data
  if( cu.skip )
  {
   
    CHECK( !cu.firstPU->mergeFlag, "Merge flag has to be on!" );
    PredictionUnit&   pu = *cu.firstPU;
    prediction_unit ( pu );				//skip模式时编码预测数据:merge_idx
    end_of_ctu      ( cu, cuCtx );		//如果ctu结束,编码一个0(一帧最后一个ctu不编码这个0)
    return;
  }

  // prediction mode and partitioning data
  pred_mode ( cu );						//编码帧内还是帧间
#if HEVC_USE_PART_SIZE
  part_mode ( cu );
#endif

  // pcm samples
  if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值