HEVC熵解码代码分析—类结构(1)

本文分析了HEVC熵解码的代码结构,从TAppDecTop类开始,探讨了熵解码过程中的关键类如TDecEntropy、TDecSbac和TDecBinCABAC。这些类在熵解码中扮演不同角色,TDecEntropy负责调用解码方法,TDecSbac处理CABAC解码,而TDecBinCABAC是最底层的算术解码部分,用于从码流中提取位。通过C++的多态特性实现不同解码方式的区分。

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

最近开始做HEVC了,其中熵解码作为最底层的部分,因为和h264差不多,难度系数不是很大,主要是一些查表的操作

具体的实现原理就不细说了,主要从代码来进行解释

首先分析HM工程当中的熵解码的部分作为引导,因为最终要在DSP上进行运行,之后会重写为C代码,流程性更强


代码分析

首先介绍熵解码中比较重要的几个结构体和设计到的函数

一进入main函数,最主要的就是对应的解码类TAppDecTop

int main(int argc, char* argv[])
{
  TAppDecTop  cTAppDecTop;

TAppDecTop类中主要是create和destroy相关的成员函数,真正重要的解码类还在 TDecTop当中,打开TDecTop类,会看到一些比较重要的模块的类

  TComPrediction          m_cPrediction;
  TComTrQuant             m_cTrQuant;
  TDecGop                 m_cGopDecoder;
  TDecSlice               m_cSliceDecoder;
  TDecCu                  m_cCuDecoder;
  TDecEntropy             m_cEntropyDecoder;
  TDecCavlc               m_cCavlcDecoder;
  TDecSbac                m_cSbacDecoder;
  TDecBinCABAC            m_cBinCABAC;
  SEIReader               m_seiReader;
  TComLoopFilter          m_cLoopFilter;
  TComSampleAdaptiveOffset m_cSAO;

很明显有几个和熵解码有关系:

TDecEntropy             m_cEntropyDecoder; 看一下成员函数

  Void init (TComPrediction* p) {m_pcPrediction = p;}
  Void decodePUWise       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU );
  Void decodeInterDirPU   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPartIdx );
  Void decodeRefFrmIdxPU  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList );
  Void decodeMvdPU        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList );
  Void decodeMVPIdxPU     ( TComDataCU* pcSubCU, UInt uiPartAddr, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList );

  Void    setEntropyDecoder           ( TDecEntropyIf* p );
  Void    setBitstream                ( TComInp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值