视频编码
biubiu_scut
这个作者很懒,什么都没留下…
展开
-
CompressCU函数:LCU的编码,包括CU的划分,PU模式的决定,TU的划分
看过好几次CompressCU函数,都是一知半解。这次要做的是把模式保留下来,可以减少熵编码的比特数。这样就必须彻底的弄清楚CU的递归的划分也就是xcompressCU这个函数。这样才知道什么时候保存需要的模式,保存到哪里去,以什么形式存储,在熵编码的时候如何对PU的模式进行索引。1.xCompressCU 函数的调用在编码一个片的函数CompressSlice 函数中有这个几行代转载 2014-12-21 11:08:40 · 3691 阅读 · 0 评论 -
LCU 模式选择过程分析(CTU的深度选择及CU的分割)
1.率失真代价计算模型HEVC 的最大编码单元为 LCU,即 64×64 的 CU,对一个 LCU 选择最佳 CU编码深度,需要遍历所有 64×64 到 8×8 的分割,一共 85 个 CU,通过计算率失真代价选择此 LCU 的最佳分割方式。对于每一个 CU,遍历帧内和帧间所有可选的预测模式,根据率失真代价选择最佳 PU 预测模式。对于每一种 PU 预测模式,TU的分割方式由当前 CU 的大小原创 2014-12-21 16:57:09 · 11020 阅读 · 3 评论 -
【HEVC学习与研究】1、HEVC概览(1)
HEVC,即H.265,是现行的先进视频编解码标准H.264/MPEG-4 AVC的后继与发展。由ISO/IEC Moving Picture Experts Group(MPEG)和ITU-T Video Coding Experts Group(VCEG)两个组织联合成立的Joint Collaborative Team on Video Coding (JCT-VC)开发。该项目被称转载 2014-12-11 22:31:51 · 1146 阅读 · 0 评论 -
【HEVC学习与研究】3、HEVC概览(3)
1、HEVC的档次2013年1月的HEVC草案定义了三种档次:Main,Main 10和main静态图像档次。另外还包含了多种附加档次。未来的扩展讨论主要集中在比特深扩展、4:2:2/4:4:4色度采样视频、多视点编码和可分级编码等方面。HEVC的第一个版本将于2013年1月面世,扩展标准约在2014年1月出炉。所谓一个档次,也就是一个编码工具的集合,可以用来将视频信号编码成一个符转载 2014-12-11 22:36:01 · 685 阅读 · 0 评论 -
【HEVC学习与研究】9.HEVC视频编码技术
成功运行HM10.0后,下面开始进入真正对HEVC标准采用的编码技术的讨论。参考文献选用IEEE TCSVT 201212期的Overview of HEVC。同H.264等前代的视频编码标准类似,HEVC依然采用了混合编码框架,利用帧间预测去除时域相关,利用帧内预测去除空间相关,利用变换、熵编码去除统计相关性。同前代技术相比,HEVC并未采用革命性的创新技术,而是针对现有技术进行小步快跑转载 2014-12-11 22:45:56 · 690 阅读 · 0 评论 -
【HEVC学习与研究】10.HEVC的档次、层与级别
1、档次、级别和层的概念档次、层和级别为多种不同应用提供了兼容性。一组可以生成符合标准的码流的编码工具或算法组成档次;级别根据解码过程负载和存储空间情况对关键参数加以限制(如最大采样频率、最大图像尺寸、最大比特率等等等);定义了主层和高层来区分最大码率和编码图像缓存不同的应用。满足某一层级的解码器应当可以解码当前及比当前更低的层级所有码流,满足某一档次的解码器应支持该档次中的所有特转载 2014-12-11 22:47:12 · 2550 阅读 · 0 评论 -
【HEVC学习与研究】11.HEVC参考解码器的设置及参数解析过程
之前已经讨论过如何运行HM的encoder工程,已经可以成功将一个yuv测试序列编码为一个.bin格式的二进制码流。这里我们再看看它的逆过程,即将二进制码流进行解码。在整个HM的solution中很明显可以看到解码器的工程TAppDecoder,将这个工程设置为启动工程(在工程目录上右单击->set as startup project),设置工程属性,主要是命令行参数(右键—>Prope转载 2014-12-11 22:48:10 · 2289 阅读 · 0 评论 -
【HEVC学习与研究】2、HEVC概览(2)
1、HEVC的特征HEVC旨在允许运算复杂度提升的前提下,在相似视频质量情况下比H.264节省一半的比特率。依据不同应用场合的需求,HEVC编码器可以在压缩率、运算复杂度、抗误码性和编码延迟方面进行取舍和折中。相对于H.264,HEVC具有两大改进,即支持更高分辨率的视频以及改进的并行处理模式。HEVC的目标是应用与下一代高清电视和摄像系统,这些系统的特征有逐行扫描和从QVGA到4320P转载 2014-12-11 22:34:23 · 720 阅读 · 0 评论 -
【HEVC学习与研究】5.HEVC综述(第一部分)
1. 引言 HEVC是ITU-T VCEG和ISO/IEC MPEG联合组成的JCT-VC的最新研究成果,第一版计划将于2013年1月公布。下一步的扩展工作将主要集中于对高精度及彩色视频的支持、可分级视频编码3D立体多视点视频的编码方面。HEVC公布后在这两个组织中的命名分别为ITU-T Recommendation H.265和MPEG-H Part 2 (ISO/IE转载 2014-12-11 22:38:38 · 914 阅读 · 0 评论 -
【HEVC学习与研究】6.HEVC综述(第二部分)
3. 高层语法 包含类似H.264中网络提取层的元素,用于联系视频编码层和网络传输(如数据包封装等),支持的新功能描述如下:3.1 随机接入和比特流条带特征 H.264采用可包含独立解码图像的IDR接入单元实现随机接入。 HEVC中的新结构:clean random access (CRA)。支持开放GO转载 2014-12-11 22:39:44 · 730 阅读 · 0 评论 -
HEVC学习与研究】8.关于GOP与RAP的一些解释
在之前的博文中,我曾经简单把之前阅读文献资料和编译软件的记录和心得记录分享了一下。由于我也是刚刚接触HEVC没几天,有些问题我的理解也不是很深入,在之前的博文中有博友对高层语法中的一些概念提出了疑问。在咨询了了解背景知识的同学之后,经过仔细地重新推敲参考文献("Overview of HEVC")之后,对一些问题找到了一些答案,在此另发一篇博文作为回应。关于码流中的三种随机接入点的解释:转载 2014-12-11 22:44:32 · 1028 阅读 · 0 评论 -
【HEVC学习与研究】4、关于IEEE TCSVT的HEVC Special Section
【前言:视频处理领域的顶级学术期刊IEEE Transactions on Circuits and Systerms for Video Technology(TCSVT)在2012年年底做了一期HEVC Special Section,用了一整期的篇幅介绍新一代视频编解码标准HEVC。这一期Special Section所收录的学术论文包含了世界各国在视频编码领域最资深的专家的研究成果,对我们转载 2014-12-11 22:37:23 · 1559 阅读 · 0 评论 -
HEVC-xCompressCU
// ====================================================================================================================// Protected member functions// ===============================================转载 2014-12-19 22:09:32 · 1840 阅读 · 3 评论 -
【HEVC学习与研究】32、编码一个CU(帧内部分)1
在一个compressSlice()中,在compressCU函数中实现对一个CU的编码,其中主要进行了CU的初始化,以及实际的编码操作。[cpp] view plaincopyVoid TEncCu::compressCU( TComDataCU*& rpcCU ) { // initialize CU data转载 2014-12-17 21:14:37 · 1564 阅读 · 0 评论 -
【HEVC学习与研究】17、HEVC中的图像的分块分割方法
HEVC中的图像的分块分割方法1、条带与区块在HEVC的视频编解码过程中,一帧图像会被分割成条带(slice),条带片段(slice segment)和区块(tiles)进行处理。条带和区块都是可采取的独立分割形式之一。而条带则是由条带片段组成的元素,包括独立条带元素和依赖性条带元素两类。上图即为一帧图像分割成条带的示意图。在该图中,该帧图像被分转载 2014-12-16 22:20:40 · 728 阅读 · 0 评论 -
【HEVC学习与研究】18.HEVC的条带头解析
一个条带由整数个coding tree units组成的编码视频流的结构,包含一个非依赖性条带元素和0到多个依赖性条带元素。若当前某个条带元素属于非依赖性条带元素,或者是按照解码顺序在当前的依赖性条带元素之前的第一个非依赖性条带元素的slice element header被称作当前条带的条带头。另一方面,条带元素头中的数据应用于该条带元素中的第一个或者所有的coding tree units转载 2014-12-16 22:22:49 · 616 阅读 · 0 评论 -
【HEVC学习与研究】26、HEVC的算数编码实现
关于HEVC的前25篇博文全文发表在新浪博客,地址为:http://blog.sina.com.cn/s/articlelist_1376260467_0_1.html。从第26篇开始博客全文发在CSDN,新浪同步更新摘要和链接地址。在第13篇博文中贴出了我们在调试代码时所采用的二进制码流的开头一部分数据,并根据这些数据进行了NAL Header解析、参数集合解析和条带头解析等转载 2014-12-16 22:26:00 · 971 阅读 · 0 评论 -
【HEVC学习与研究】27、CABAC解析语法元素SAO
解析完成条带头之后下一步的工作是解析条带数据slice_segment_data。slice_segment_data数据主要由一个个的Coding_Tree_Unit(CTU)组成。每一个CTU的结构如下所示:[cpp] view plaincopycoding_tree_unit( ) { xCtb = ( CtbAddrI转载 2014-12-16 22:26:42 · 887 阅读 · 0 评论 -
【HEVC学习与研究】29、解码第一个Coding Quadtree结构(1)
在开始研究这部分代码之前,重新回顾一下理论部分。众所周知,H.264及其之前的编码标准中,VCL层的核心结构称作“宏块”(MacroBlock, MB),大小为16×16像素。一个宏块里面包含着一个16×16分辨率的亮度采样矩阵和两个8×8分辨率的色度采样矩阵。相应的,在HEVC中,编码所采用的块结构为树形编码单元(Coding Tree Unit, CTU),每个CTU的大小由编码器决定转载 2014-12-16 22:39:33 · 1116 阅读 · 0 评论 -
【HEVC学习与研究】12.HEVC的高层语法结构
一、概述参考文献“Overview of HEVC High-Level Syntax and Reference Picture Management”简述了HEVC的高层语法结构,并着重于提供新功能,提高抗误码鲁棒性的新语法元素。H.264等前代标准考虑的是连续的视频的视频码流,尽管有条带等概念,但是这些标准在条带上层(如帧一级)上未能考虑抗误码性。H.264可以流转载 2014-12-16 22:12:22 · 731 阅读 · 0 评论 -
【HEVC学习与研究】15、HEVC解码中的SPS解析
SPS解析一段HEVC码流可能包含一个或者多个编码视频序列CVS,每个CVS由一个随机接入点开始,即IDR/BLA/CRA。在H.264和HEVC中,序列参数集SPS包含该CVS中所有slice需要的信息。SPS的内容大致可以分为几个部分:1、自引ID;2、解码相关信息,如档次级别、分辨率、子层数等;3、某档次中的功能开关标识及该功能的参数;4、对结构和变换系数编码灵活性的限制信息;5、时转载 2014-12-16 22:18:09 · 879 阅读 · 0 评论 -
【HEVC学习与研究】28、第一帧第一个宏块的SAO部分完整解析结果
经过了前面一段时间的研究,现在大致将这第一个宏块SAO由码流到语法元素值的解析过程完整整理一下。这里没有太多原理部分,更多的像是一篇流水账一样,聊作记录。在代码中,我们首先查看一下解析完条带头数据后,当前NAL中带解析的码流。还是看我们一直使用的这个demo序列的编码结果,码流中正式用语解析条带数据的值如:(后面是第一个CTU的SAO参数部分二进制流中的数据)CE 67 A2 6B转载 2014-12-16 22:29:07 · 637 阅读 · 0 评论 -
【HEVC学习与研究】31、HM编码器的基本结构
通过解码器代码的研究,已经对HEVC的编解码技术有了一个初步的认识。现在我们就对照着编码器的代码进一步理解HEVC视频编码算法的各个技术细节。编码器在整个HM解决方案中的工程名为TAppEncoder,入口点函数位于encmain.cpp文件中:[cpp] view plaincopyint main(int argc, char*转载 2014-12-17 21:13:05 · 1092 阅读 · 0 评论 -
【HEVC学习与研究】16、HEVC中的PPS解析
PPS解析HEVC的图像参数集PPS包含每一帧可能不同的设置信息,其内容同H.264中的大致类似,主要包括:1、自引信息;2、初始图像控制信息,如初始QP等;3、分块信息。在解码开始的时候,所有的PPS全部是非活动状态,而且在解码的任意时刻,最多只能有一个PPS处于激活状态。当某部分码流引用了某个PPS的时候,这个PPS便被激活,称为活动PPS,一直到另一个PPS被激活。转载 2014-12-16 22:19:22 · 845 阅读 · 0 评论 -
【HEVC学习与研究】13.NAL unit解码
在完成了参数配置文件的解析之后,主函数中调用cTAppDecTop.decode()开始正式的解码过程。这个函数中首先调用xCreateDecLib();xInitDecLib();建立和初始化解码器的对象。下面的byteStreamNALUnit (bytestream, nalUnit, stats);函数进行NAL的解码过程,进入该函数,发现实际进行操作的是_byteStreamNALU转载 2014-12-16 22:13:13 · 841 阅读 · 0 评论 -
【HEVC学习与研究】30、解码Coding Unit数据
一个CU结构可以认为是编码过程中作为实际处理过程的一个单元,标准文档的7.3.8.5节说明了CU的语法结构,如下图:这个结构中,第一个元素cu_transquant_bypass_flag表示是否跳过scaling和变换过程,如果该元素不存在则默认为0。在xDecodeCU函数中,解析该元素的代码如下:[objc] view转载 2014-12-16 22:40:02 · 1238 阅读 · 0 评论 -
【HEVC学习与研究】7.HEVC参考代码HM10.0的使用
在正式讨论HEVC的技术细节之前,有必要先建立好符合标准的实验平台,这对理解编解码的技术具有很大帮助。最方便,最有效,认可程度也最高的自然是JCT-VC工作组公布的参考代码HM系列了。这里,我们用最新版的参考代码HM10.0为例,详细阐述如何用参考软件成功编码一个视频码流。参考代码的下载请到我的微盘:http://vdisk.weibo.com/s/u8mJ28nBwYdFl 下载。(1)转载 2014-12-11 22:42:38 · 1103 阅读 · 0 评论