码迷,mamicode.com
首页 > 其他好文 > 详细

HEVC残差系数解码代码详解

时间:2015-01-05 18:45:16      阅读:817      评论:0      收藏:0      [点我收藏+]

标签:hevc   变换   残差系数   hm   代码详解   

上一篇中主要介绍了编码中的原理,这里主要是结合HM中的代码介绍读残差系数的方法

HM变换系数熵解码简介:

 

初始一个TU对象

成员变量介绍:

 

public:

    typedef enum TU_SPLIT_MODE { DONT_SPLIT=0, VERTICAL_SPLIT=1, QUAD_SPLIT=2, NUMBER_OF_SPLIT_MODES=3 } SPLIT_MODE;  //<TU在递归过程中的三种劈分方式

    static const UInt NUMBER_OF_SECTIONS[NUMBER_OF_SPLIT_MODES];

  protected:

    ChromaFormat  mChromaFormat;

    Bool          mbProcessLastOfLevel; // if true, then if size n/2 x n/2 is invalid, the nxn block for a channel is processed only for the last block, not the first.

    UInt          mCuDepth;  //<CU是TU的根节点,记录CU深度

    UInt          mTrDepthRelCU[MAX_NUM_COMPONENT]; //<记录TU相对于CU的深度

    UInt          mSection;//<如果进行劈分,那么劈分后处理SubCU的index

    TU_SPLIT_MODE mSplitMode;//< the split mode

    TComRectangle mRect[MAX_NUM_COMPONENT]; //<当前TU的位置信息    Bool          mCodeAll[MAX_NUM_COMPONENT];

    UInt          mOrigWidth[MAX_NUM_COMPONENT];

    UInt          mOffsets[MAX_NUM_COMPONENT];//<cur TU 与 CU左上角的偏移量,比如TU 为8*8,那么处理第二个TU则偏移64个bit

    UInt          mAbsPartIdxCU;//<the abs index of CU in LCU

    UInt          mAbsPartIdxTURelCU;//<the abs index of TU in cur CU

    UInt          mAbsPartIdxStep;//<if split, the added index

    TComDataCU   *mpcCU;

    UInt          mLog2TrLumaSize;//< relative to the size of Cur TU

TComTU       *mpParent; //<如果劈分进行递归,对应父节点


下面是解码的这个外围的流程图

技术分享

技术分享


其中涉及到两个比较重要得函数:

pareseCBF 和 parseCoeffNxN,前一个函数比较简单,后面将重点分析一下第二个函数

因为涉及好多的表格,这里不好编辑,我就直接把截图放上来

技术分享

技术分享技术分享

文档下载链接

http://download.csdn.net/detail/xietingcandice/8329321



HEVC残差系数解码代码详解

标签:hevc   变换   残差系数   hm   代码详解   

原文地址:http://blog.csdn.net/xietingcandice/article/details/42425843

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!