VTM1.0代码阅读:CU、PU、TU
VTM中的cu、pu和tu在使用时都是作为CodingStructure类的成员变量来使用的,即作为CS中cus、pus和tus数组中的一个变量来使用的,毕竟VTM中的操作都是以CS作为最基本的类来执行的。
VTM不会像JEM中那样将cu、pu和tu区分起来看待,JEM中在划分完cu后,在处理pu时会有8种划分模式,tu也会根据pu的划分方式有自己的划分。VTM则移除了这种对cu、pu和tu的严格区分,只是将cu、pu和tu视为当前块cs的三种类型的数据,CTU划分树得到cu之后不再进行pu和tu的继续划分了(当然tu会因为变换块的大小关系可能划分为小块)
CU、PU和TU的结构体中包含的数据如下:
struct CodingUnit : public UnitArea
{CodingStructure *cs; //所归属的csSlice *slice;ChannelType chType;PredMode predMode; //intra、interPartSize partSize; //VTM中均为2Nx2NUChar depth; //所有划分模式的depthUChar qtDepth; //QT深度UChar btDepth; //BT深度UChar mtDepth; //TT+BT深度SChar chromaQpAdj;SChar qp; //量化参数SplitSeries splitSeries; //64位长整数,记录ctu划分树划分到cu时的各个depth的划分模式Bool skip; //是否为skip模式Bool transQuantBypass; //变换系数旁路编码Bool ipcm; //是否为pcm模式Bool rootCbf;// needed for fast imv mode decisionsSChar imvNumCand;unsigned idx; //cu存储在cs中的cus数组中CodingUnit *next; //idx表示在数组中位置,nest指向数组中下一个cuPredictionUnit *firstPU; //cu会记录它的pu和tuPredictionUnit *lastPU; //cu的pu和tu是cs.pus和cs.tus的一段TransformUnit *firstTU;TransformUnit *lastTU;
};struct IntraPredictionData
{UInt intraDir[MAX_NUM_CHANNEL_TYPE]; //帧内预测亮度和色度模式
};struct InterPredictionData //帧间预测数据,merge和inter_ME
{Bool mergeFlag; //是否mergeUChar mergeIdx; //mergeidxUChar interDir; //帧间预测方向:1-前向、2-后向、3-双向UChar mvpIdx [NUM_REF_PIC_LIST_01]; //mvp的在AMVP列表中的idxUChar mvpNum [NUM_REF_PIC_LIST_01]; //AMVP列表中mvp数目Mv mvd [NUM_REF_PIC_LIST_01]; //mvdMv mv [NUM_REF_PIC_LIST_01]; //mv=mvp+mvdShort refIdx [NUM_REF_PIC_LIST_01]; //参考帧MergeType mergeType; //merge模式类型
};struct PredictionUnit : public UnitArea, public IntraPredictionData, public InterPredictionData
{ //pu直接继承了上面帧内和帧间的数据CodingUnit *cu; //pu所属的cuCodingStructure *cs; //pu所属的csChannelType chType;unsigned idx; //pu存储在cs中的pus数组中PredictionUnit *next; //cs.pus中指向下一个pu
};struct TransformUnit : public UnitArea
{CodingUnit *cu; //tu所属的cuCodingStructure *cs;ChannelType chType;#if HEVC_USE_RQT || ENABLE_BMSUChar depth; //tu如果进行划分时的深度
#endifUChar cbf [ MAX_NUM_TBLOCKS ]; //tu是否已经经过变换量化RDPCMMode rdpcm [ MAX_NUM_TBLOCKS ]; //pcm模式 pcm模式是省去求残差、变换和量化Bool transformSkip[ MAX_NUM_TBLOCKS ]; //transformSkip模式 TS模式是省去变换SChar compAlpha [ MAX_NUM_TBLOCKS ];unsigned idx; //与cu和pu一样,cs.tus中的位置TransformUnit *next;private:TCoeff *m_coeffs[ MAX_NUM_TBLOCKS ]; //其实这里只是记录当前tu的变换系数的存储位置,tu的变换系数数据存储在cs中。参考addTU函数就能理解Pel *m_pcmbuf[ MAX_NUM_TBLOCKS ]; //pcm模式时的像素buf
};
VTM1.0代码阅读:CU、PU、TU相关推荐
- VTM1.0代码阅读:CodingStructure类主要函数
CodingStructure类中的各个函数对于cu.pu和tu的函数处理,其实大致流程都是差不多一样的,所以这里只对cu的相应函数进行分析. 对于下面CodingStructure类中的各个函数的阅 ...
- 每一步详细介绍—在HM中进行CU PU TU划分以及PU最佳预测模式选择
CU PU TU划分以及PU最佳预测模式选择 在HM对CU进行划分(CU模式判别).PU模式选择(划分).以及PU预测模式划分的过程总算有点理解,现对整个过程进行详细介绍. HM进行块划分和模式选择主 ...
- VTM3.0代码阅读:xEstimateMvPredAMVP函数
AMVP运用于inter_ME模式的时候. xEstimateMvPredAMVP进行AMVP,获得当前pu的相邻运动信息,构建AMVP列表,最终选择出最优的MVP.AMVP最终获得的MVP作为ME的 ...
- 浅谈HEVC中的CTU CU PU TU
从今天开始会陆续写一些对HEVC的认识的文章,小弟初来乍到,希望大家能够多多指点. 这两天看了block partitioning structure in the HEVC standard这篇论文 ...
- HEVC标准中的图像分割(2),slice,tile,CTU,CU,PU,TU等
接着来说HEVC的图像分割. HEVC的标准中有这么一段话,翻译过来就是: 图像分成分量(Y,Cb,Cr). 分量分成coding tree blocks 图像分成tile列 图像分成tile行 Ti ...
- HEVC区域划分Slice Tile CTU CU PU TU
Slice Slice是可以不依赖同一张图片其他Slice独立编码的数据结构,包括信号预测.残差信号重建和熵编码.一张图片可以分为一个活多个Slice.Slice包含一个或多个Slice segmen ...
- VTM3.0代码阅读:xDeriveCUMV函数
xDeriveCUMV函数根据解码得到的预测参数数据,计算得到mv. 函数内根据解码得到的各个模式的数据,获取到MMVD.三角预测.AffineMerge.普通merge.AffineME.普通int ...
- yii 2.0 代码阅读 小记
1.\yii\base\object 设置了get/set属性...使用getName()获取属性名..构造函数中使用config初始化属性 2.\yii\base\Component 继承自Obje ...
- VVC 代码阅读 compressCtu()函数
void EncCu::compressCtu( CodingStructure& cs, const UnitArea& area, const unsigned ctuRsAddr ...
最新文章
- redis中密码设置
- metasploit 目录结构
- Codeforces Round #470 (rated, Div. 2 C. Producing Snow(思维)
- android地图路径绘制,android:利用svg的path路径+canvas 开发自定义地图控件
- linux下启动oracle服务
- C++笔记-远程线程注入
- 07.移动先行之谁主沉浮----控件之轮流轰炸——布局类控件
- Glide 这样用,更省内存!!! 1
- YbSoftwareFactory 代码生成插件【八】:基于JQuery EasyUI、Web Api的 ASP.NET MVC 代码生成插件...
- 多光谱、高光谱与雷达数据等产品级划分标准
- 程序员居然都玩起“直播”,你的好友工程狮已经上线!
- kindeditor富文本编辑器下载使用
- 宾馆酒店如何对客人进行实名认证登记?
- 开发人员使用Helix QAC实现静态代码测试合规性的五大原因
- A调用B方法,@Transactional事务失效情况
- ESP8266_CH340G串口自动下载固件库原理
- html怎么设置左侧内边距,CSS 内边距(Padding)
- Not allowed to access vertices on mesh ‘Combined Mesh (root: scene)
- 开源表单推荐:Tduck 填鸭 —— 表单收集器
- Taro引入阿里图标