- 博客(7)
- 收藏
- 关注
原创 HM在帧内预测中如何指定一幅图像作为一个slice,一个CU作为一个PU的
1,如何指定一幅图像就是一个slice:首先,HM实现slice内CU循环终止的条件就是,判断下一个预测CU的地址有没有超过slice的边界uiBoudingCUAddr,其中slice的边界也是以CU为基础进行定义的,从另一个角度,也就是决定slice是不是一幅图像,也是以这个CU边界进行判决的,这个时候还需要另外一个量来做对比,即定义一个变量表示下一个slice开头的第一个CU的地址start
2015-10-21 20:15:18 1301 4
原创 HEVC中CU和TU的划分的过程
在HEVC中,不仅要在当前CU中确定最佳的预测模式,还要判决当前CU的划分方式是不是最佳的划分方式。具体的实现过程是,我们先在当前CU里求出最佳的三个候选预测模式,所涉及函数是predIntraLumaAng和m_pcEdCost->calcHAD,xModeBitsIntra以及xUpdateCandList,然后再模式预测算法再选出三个候选模式添加到刚刚的候选模式列表中,当然,如果有些模式重合
2015-10-20 21:26:29 4269 2
原创 HEVC最优CU划分确定的过程
HEVC中CU有64x64,32x32,16x16,8x8四种,对于一个大的LCU,应该如何划分CU才能使得RDCo最小,我们知道HM中是采用遍历递归的形式进行计算的,但是具体的流程又是怎么样的?1,首先对于一个大的LCU即64x64的块,我们首先把他当作一个CU,计算出这个CU最佳的预测模式,并记录当前划分模式下的最佳预测数据。2,然后我们对当前LCU进行划分,划分成4个32x32的CU
2015-10-19 10:28:49 5159
原创 HM各个类中保存的数据类型以及之间的联系
1,TComPicYuv类主要存储的是图像数据,包括Y,U,V三种形式的数据,以及图像的宽和高,CU的宽和高。2,TVideoIOYuv类主要存储的是输入或者输出的图像的名称句柄,留作接下来输入或者输出文件和程序进行连接,以及像素的深度,比如是8位还是16位。3,TEncTop类也是一个复合类,首先包含了TEncCfg类;然后包含了TEncGOP,TEncSlice以及TEncCU预测单元
2015-10-12 21:22:31 1045
原创 文件与流
在C++中,我们能用cin和cout把输入输出连接到键盘和屏幕上,也能通过类似的方式把输入输出连接到硬盘中的文件上,准确来说是建立系统内存和硬盘之间的链接。对于键盘和屏幕的输入输出对象,我们可以使用iostream类,对于硬盘文件的输入输出对象,我们使用的是fstream类,fstream类包含ifstream和ofstream类。1,首先说一下文件流的基本操作,文件流的基本操作和输入输出流的
2015-10-12 09:35:04 528
原创 HM代码解读--TAppEncTop::encode()
这个函数是main函数进入编码函数的第一个重要函数。 首先,在这个函数里面首先包含了三个重要的初始化函数。 1,xInitLibCfg()是设定VPS参数,profile,Level,Framerate以及编码图像的宽度和高度,待编码的帧数等等。所有的这些参数其实都是TEncTop类下的TEncCfg类的成员,也就是说这个函数主要就是设定TEncCfg类的成员值,其实就是把TAppEn
2015-10-10 22:43:02 1663
原创 HEVC 语法元素NAL1
HEVC视频编码的数据输出都是以NAL为基本单位进行输出的, NAL的前两个BYTE是NAL的头,这两个BYTE的数据存储了当前NAL的类型,以及LayerID和TID,这两个的作用现在还没有完全弄懂 还有就是NAL分为VCL和non-VCL两大类,VCL是指携带编码数据的数据流,而non-VCL则是控制数据流,其中一个携带编码数据的数据流VCL包含了一个slice segme
2015-10-10 22:33:52 1059
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人