- 博客(19)
- 收藏
- 关注
转载 预测块单元
在正式讨论HEVC的技术细节之前,有必要先建立好符合标准的实验平台,这对理解编解码的技术具有很大帮助。最方便,最有效,认可程度也最高的自然是JCT-VC工作组公布的参考代码HM系列了。这里,我们用最新预测块尺寸 HEVC放弃了当前各种编码标准中“宏块”的概念,而是采用了一种最大可达64×64,可以根据内容进一步分解为多种尺寸的结构。HEVC首先将树形编码单元(coding tre
2017-11-29 18:03:54 888
转载 NAL unit 的解码(一)
HEVC视频编码的数据输出都是以NAL为基本单位进行输出的, NAL的前两个BYTE是NAL的头,这两个BYTE的数据存储了当前NAL的类型,以及LayerID和TID,这两个的作用现在还没有完全弄懂 还有就是NAL分为VCL和non-VCL两大类,VCL是指携带编码数据的数据流,而non-VCL则是控制数据流,其中一个携带编码数据的数据流VCL包含了一个slice segment的数据。...
2017-11-29 15:47:10 4511
转载 CU的划分、地址以及索引
CU的划分、地址以及索引 在看HM源码的时候,最蛋疼的一件事就是被CU的划分以及它们的地址搞懵。为了搞清楚,仔细研究了一下源码,有什么错误请指出。为了弄清楚这个问题,必须要对扫描顺序、深度等概念有所理解。扫描顺序 HEVC中对像素块的扫描方式有两种:Raster和Zscan Raster扫
2017-11-29 12:49:27 2220
转载 CU划分
相信会有不少人对如何确定CU最终的划分有所困惑(包括我在内,刚开始接触时也不知道该怎么做),我觉得很大的一个原因就是CU是递归划分的,这就导致在寻找确定最佳分割位置时比较困难。 其实,解决问题的办法说难也不难,关键在于思路的转换,既然对于xCompressCU中是如何保存划分模式的觉得难以理解,何不跳出这个小圈子寻找新的方法呢? 我们可以从解码器的角度来考虑,因为最
2017-11-29 12:35:17 2176 2
转载 帧内预测:xPredIntraAng函数
xPredIntraAng函数// Function for deriving the angular Intra predictions /** Function for deriving the simplified angular intra predictions. * \param pSrc pointer to reconstructed sample array
2017-11-29 11:30:15 629
转载 HEVC帧内编码的原理和实现
HEVC帧内编码的原理和实现(上)【前面N篇博文都讲了一些HEVC帧内预测的代码结构和简单的方法,但是尚未对整体的算法和实现做一个比较完整的描述。本篇借助参考文献《High Efficiency Video Coding (HEVC) -- Algorithms and Architectures》的相关章节的阅读笔记,对HEVC的帧内预测算法做一个比较完整的阐述。】【
2017-11-27 15:56:57 5612 1
转载 YUV详解
原文地址:http://blog.csdn.net/searchsun/article/details/2443867YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。转载一篇对yuv格式解释的比较清楚地文章,也可以直接参考微软
2017-11-24 16:49:05 304
转载 rgb、yuv、ycbcr
一、和rgb之间换算公式的差异yuvrgbY'= 0.299*R' + 0.587*G' + 0.114*B'U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')R' = Y' + 1.140*V'
2017-11-24 16:00:19 184
转载 帧内预测:xPredIntraPlanar函数
xPredIntraPlanar/** Function for deriving planar intra prediction. * \param pSrc pointer to reconstructed sample array * \param srcStride the stride of the reconstructed sample array * \param rp
2017-11-24 14:52:52 455
原创 CSDN写博客基本技巧
第一:文字和图片直接复制粘贴既可。第二:代码(eg:.cpp)把工程中的代码直接复制到如下图所示,点击确认就好。注意:代码部分会呈现灰色,文字和图片部分是白色,注意区别。
2017-11-24 13:24:32 4369
转载 SAO为例浅析跟踪HM代码
HM的代码跟踪其实在我转载的一篇博客HEVC/H.265参考代码跟踪里就已经有很不错的介绍了,因此,我就不重复里面所说的了,而是对里面一些我觉得需要稍微补充下并且以另一个具体实例SAO即Sample Adaptive Offset的跟踪过程进行说明。由于只是一个跟踪说明,代码的具体细节就不去探究了,其实这也是一个方法,有些时候,你仅仅需要知道实现某个功能的代码在哪,而不需要知道它的实现细节,那
2017-11-24 13:20:15 2330
转载 HEVC/H.265参考代码跟踪
1.编码器程序从"TAppEncoder"工程中的encmain.cpp文件开始的,此文件中包含程序运行的入口函数"main",在main函数中主要做了编码器对象的创建、分析配置文件,初始化配置参数,和编码器最重要的功能"encode"。2.在"encode"函数中,主要实现了读取YUV文件的数据、初始化工具对象例如:GOPEncoder、SliceEncoder、CUEncder……。在
2017-11-24 13:18:17 479
转载 帧内预测:predIntraLumaAng函数+getPreditorPtr函数+xDCPredFiltering函数
帧内预测:predIntraLumaAng函数调用了getPredictorPtr获得指向参考样点首地址的指针,再根据帧内预测的模式调用xPredIntraPlanar进行Intra_Planar模式预测和调用xPredIntraAng进行Intra_DC、Intra_Angular模式预测,最后调用xDCPredFiltering对Intra_DC模式的边界进行平滑滤波处理。Void
2017-11-24 13:16:11 506
转载 帧内预测的主函数框架分析
Void TEncSearch::estIntraPredQT( TComDataCU* pcCU, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, TComYuv*
2017-11-24 11:54:48 375
转载 HM代码总结一
1.编码器程序从"TAppEncoder"工程中的encmain.cpp文件开始的,此文件中包含程序运行的入口函数"main",在main函数中主要做了编码器对象的创建、分析配置文件,初始化配置参数,和编码器最重要的功能"encode"。2.在"encode"函数中,主要实现了读取YUV文件的数据、初始化工具对象例如:GOPEncoder、SliceEncoder、CUEncder……。在
2017-11-24 11:45:39 488
原创 帧内预测-函数initAdiPattern
函数initAdiPattern(1)检测当前PU的相邻样点包括左上、上、右上、左、左下邻域样点值的可用性,或者说检查这些点是否存在;(2)参考样点的替换过程,主要实现的是JCTVC-J1003即draft 8.4.4.2.2的内容,主要由函数fillReferenceSamples来完成,这个在之前的文章已经讨论过了;(3)相邻样点即参考样点的平滑滤波uiWidth和
2017-11-24 11:22:30 459 1
原创 HM码流整理
HM学习TAppEncoder的函数调用关系图函数背景色函数在图中以方框的形式表现出来。不同的背景色标志了该函数不同的作用:白色背景的函数:不加区分的普通内部函数。黄色背景函数:滤波函数(Filter)。用于环路滤波,半像素插值,SSIM/PSNR的计算。绿色背景的函数:CU编码函数(Encode)。通过对残差的DCT变换、量化等方式对CU进行编码。紫色背景的函数:
2017-11-22 16:42:05 2277 2
转载 JM(264)基础知识整理
码率控制码率控制实际上是一种编码的优化算法,它用于实现对视频流码流大小的控制。那么它控制的目的是什么呢?我们可以试想一下,同样的视频编码格式,码流大,它包含的信息也就越多,那么对应的图像也就越清晰,反之亦然。目前常用的两种码流控制方式是VBR和CBR,VBR是动态比特率,CBR是固定比特率。那么他们是怎么来实现的呢?我们首先看视频编码的目的,它是为了在有限的带宽中传输尽可能清晰的视频,
2017-11-22 16:40:03 2825
转载 c++中“箭头(->)”和“点号(.)”操作符的区别(HM解析)
首先介绍一下C++中的结构。对于一个结构:[cpp] view plain copystruct MyStruct { int member_a; }; 如果有个变量MyStruct s,那么使用其中的成员元素时可以用:[cpp] view plain copy
2017-11-20 10:57:52 537
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人