HEVC技术
文章平均质量分 69
主要介绍HEVC技术,以及对HEVC原形代码的介绍和重构技术
candice廷
做一位出色的算法工程师
展开
-
HEVC-I帧中CU,TU,PU之间的关系
这里主要是结合HEVC的解码端I帧进行讲解的,其中P,B帧基本上没有太大的出入,主要是PU还存在不规则的情况,因为我现在刚做完I帧,对P帧还没有把握之后清楚解析后,再进行补充在之前的博文中提到了编码树结构的相关概念,这里主要结合代码进行进一步的讲解在帧内模式中:35中预测模式是在PU的基础上进行定义的,但是在具体的帧内预测过程中是以TU为单位的,标准规定PU可以四叉树的形式划分为T原创 2015-01-08 16:14:25 · 7327 阅读 · 3 评论 -
HEVC残差系数解码代码详解
上一篇中主要介绍了编码中的原理,这里主要是结合HM中的代码介绍读残差系数的方法HM变换系数熵解码简介: 初始一个TU对象成员变量介绍: public: typedef enum TU_SPLIT_MODE { DONT_SPLIT=0, VERTICAL_SPLIT=1, QUAD_SPLIT=2, NUMBER_OF_SPLIT_MODES=3 } SPLI原创 2015-01-05 18:03:26 · 3096 阅读 · 6 评论 -
HEVC变换后残差系数编码原理
变换系数熵编码简介:变换系数的扫描是基于4*4大小的子块进行的,子块和子块内部递归扫描。较大的TB首先被分割为多个4*4子块,扫描一般起始于最后一个系数,终止于DC系数,扫描包括子块的扫描和子块内部的扫描。每一个子块内的扫描方式都是一样的。三种扫描方式:对角,水平,垂直 编码过程:非零系数位置信息编码:1 最后一个非零系数的位置:扫描最后一个非零系数在TB中的位原创 2015-01-05 17:48:55 · 4593 阅读 · 1 评论 -
HEVC 调试技巧
这两天在写HEVC中读CTU的部分,包括PartMode,partSize,PredInfo还有特别重要的扫描表和残差系数的几个函数,经过调试已经没有问题,但是在调试过程中因为涉及到码字等相关问题,调试的复杂度比较大,后来根据写TRACE文件的方法,调试基本就是流程性的工作了,不再会出现没有头绪的情况在HM代码模型中,在/** \file TComRom.h原创 2014-12-30 15:11:52 · 1652 阅读 · 0 评论 -
HEVC—编码树结构
HEVC中有CU,TU,PU概念就不多说了,这里主要说一下在具体实现时他们之间大小的关系在HEVC中亮度 CU 最大为 64*64,最小为8*8 色度CU最大为 32*32,最小为4*4在编码配置文档之中可以配置初始的LCU的大小也就是初始根节点CTU的大小 假设这里为64*64在确定是否进行劈分的过程中利用一个CU_split_flag进行标识,同时结合四叉树的深度信息。获原创 2014-12-25 21:41:42 · 1529 阅读 · 0 评论 -
HEVC—参数GOP,SLICE,TILE解疑
一直不是很理解GOP的概念视频序列由若干时间连续的图像构成,在对其压缩的时候,先将该视频分割为若干个小的图像组,GOP。在视频编码中有两种GOP类型封闭式GOP,每一个GOP以IDR图像开始,各个GOP之间独立编码开发式GOP中第一个GOP 为IDR图像,后续的GOP中第一个为non-IDR图像,即帧间预测的时候后面GOP的图像可以参考一面GOP图像的信息SS(slice原创 2014-12-25 20:42:02 · 4789 阅读 · 0 评论 -
HEVC中CTU递归代码分析
CU递归的算法,那么就是xDecodeCU这个函数里面首先对其中一些比较难以理解的部分进行相应的整理UInt uiCurNumParts = pcPic->getNumPartitionsInCtu() >> (uiDepthpcPic->getNumPartitionsInCtu() 获得的数据就是LCU中也就是根节点中CTU对应的按照最小TU进行划分得到的数量,后原创 2014-12-24 19:10:08 · 3480 阅读 · 1 评论 -
HEVC熵解码代码分析—代码解码流程(2)
虽然熵解码的过程并不是很复杂,但是因为涉及太多的文档和函数比较让人心烦,所以稍微进行一下整理熵解码一般一开始就是需要对上下文模式进行一定得初始化在HEVC中因为是类结构,所以在声明对象的时候,基本就完成了一般的初始化工作,下面详细介绍一下:在类TDecSbac当中包含所有的上下文模式,但是在HM中有两个对应的结构 ContextModel m_contextMo原创 2014-12-23 18:55:39 · 2114 阅读 · 0 评论 -
HEVC熵解码代码分析—类结构(1)
最近开始做HEVC了,其中熵解码作为最底层的部分,因为和h264差不多,难度系数不是很大,主要是一些查表的操作具体的实现原理就不细说了,主要从代码来进行解释首先分析HM工程当中的熵解码的部分作为引导,因为最终要在DSP上进行运行,之后会重写为C代码,流程性更强代码分析首先介绍熵解码中比较重要的几个结构体和设计到的函数一进入main函数,最主要的就是对应的解码类TAppD原创 2014-12-23 17:44:46 · 2115 阅读 · 1 评论 -
CABAC整体讲解1
参考的博客http://blog.sina.com.cn/s/blog_520811730101ljiw.html1、CABAC熵编码熵编码是视频编码的最后一步和解码的第一步所使用的一种无损编码。熵编码所处理的对象,是在前期的预测、变换阶段所产生的一系列语法元素(Syntax Elements),包括预测模式和残差数据等。这些语法元素描述了CU,PU,TU和LF等多种语法元素的特性。对原创 2014-12-12 15:38:02 · 3261 阅读 · 0 评论 -
HEVC—PPS
PPS:图像参数设置在HM工程中TComSlice.h当中HEVC的图像参数集PPS包含每一帧可能不同的设置信息,其内容同H.264中的大致类似主要包括:1、自引信息;2、初始图像控制信息,如初始QP等;3、分块信息。在解码开始的时候,所有的PPS全部是非活动状态,而且在解码的任意时刻,最多只能有一个PPS处于激活状态。当某部分码流引用了原创 2014-12-08 20:48:24 · 2516 阅读 · 0 评论