HEVC YUV数据的获取

来源:互联网 发布:淘宝真实姓名怎么改 编辑:程序博客网 时间:2024/05/16 10:42

HM代码中有两个类用来保存YUV数据。分别在TComPicYuv.h和TComYuv.h中

  • TComYuv
class TComYuv{    Pel*    m_apiBuf[MAX_NUM_COMPONENT];    UInt    m_iWidth;    UInt    m_iHeight;    Pel* getAddr(const ComponentID id)      //  Get stride value of YUV buffer  UInt         getStride                  (const ComponentID id) const { return m_iWidth >> getComponentScaleX(id);   }}

getAddr()用于获取保存yuv数据的数组的起始地址;getStride()用于获取每个分量的宽度步长,一般用在读取YUV数据和复制YUV数据中。

  • TComPicYuv 保存Pic level YUV数据的类
class TComPicYuv{private:Pel* m_apiPicBuf[MAX_NUM_COMPONENT];Pel* m_piPicOrg[MAX_NUM_COMPONENT];Int m_picWidth;Int m_picHeight;public:Pel*          getAddr           (const ComponentID ch)       { return  m_piPicOrg[ch];   }Int           getStride         (const ComponentID id) const { return ((m_picWidth     ) + (m_marginX  <<1)) >> getComponentScaleX(id); }}

同样有两个队YUV对象比较重要的函数:getAddr()和getStride()
当前的intra 码率控制使用了YUV数据中的Y分量,经过累加的8*8Hardama变换,得到每个CTU的complexity。可以借鉴这个,来获取每个CTUY分量的原始值。

0 0
原创粉丝点击