- 博客(9)
- 资源 (7)
- 收藏
- 关注
原创 HEVC多次进行熵编码的原因
HEVC多次进行熵编码的原因 在HM中有个让人很疑惑的地方,就是熵编码会被多次调用 1、compressSlice中有两次 (1)第一次是compressCU中,使用熵编码来进行RDO优化,用来选择最优的编码参数 (2)第二次是紧接着compressCU后面调用了encodeCU 2、encodeSlice中有一次
2017-05-08 17:05:25 2989 3
原创 HEVC中的CABAC
HEVC中的CABAC CABAC(上下文自适应的二进制算术编码)基于算术编码,在HEVC中,除了参数集、SEI和slice头部之外,其余的所有数据都使用CABAC来进行熵编码。 CABAC有三个步骤: 1、初始化,构建上下文概率模型 2、根据上下文概率模型获取语法元素的概率,对语法元素进行熵编码 3、根据编码结果更新上下文概率模
2017-05-07 22:31:16 6549 1
原创 HEVC中的CAVLC
HEVC中的CAVLCCAVLC 基于上下文的自适应变长编码首先,HEVC的熵编码使用了两种算术编码:CABAC和CAVLC。CAVLC主要用于编码SEI、参数集、片头等,剩下的所有数据和语法元素均使用CABAC来编码。HEVC标准文档中使用到的一些描述符(描述符也表示操作方法):1、ae(v) 使用cabac2、b(8) 读进连续的8 bit3
2017-05-05 17:45:58 2092
原创 CU的划分、地址以及索引
CU的划分、地址以及索引 在看HM源码的时候,最蛋疼的一件事就是被CU的划分以及它们的地址搞懵。为了搞清楚,仔细研究了一下源码,有什么错误请指出。为了弄清楚这个问题,必须要对扫描顺序、深度等概念有所理解。扫描顺序 HEVC中对像素块的扫描方式有两种:Raster和Zscan Raster扫描方式:从上到下,从左到右进行扫描,
2017-05-04 21:54:44 5244
原创 TComPicYuv、TComPic、TComPicSym、TComDataCU以及TComYuv的关系
TComPicYuv、TComPic、TComPicSym、TComDataCU以及TComYuv的关系首先用一张图来描述它们之间的关系1、HM首先使用TComPicYuv保存从文件中读取出来的YUV数据2、利用TComPicYuv构造TComPic,并把YUV数据复制给他(TComPic包含了TComPicYuv成员)3、TComPic表示一帧图像,包含了
2017-05-04 18:06:11 5316 5
原创 HEVC解码器HM源码阅读(四)解析参数集
解析视频参数集VPS 得到如果NALU的装的是VPS,那么需要从NALU中把VPS解析出来,VPS包含了全局使用的一些信息,包含Profile、Level、Tier、时域层信息、TimingInfo、HRD等等 解析VPS的入口函数 1、创建VPS对象 2、解析VPS 3、把VPS放入参数集管理器中Void TDecTo
2017-05-02 21:14:12 1940
原创 HEVC解码器HM源码阅读(三)读取一个NALU
读取一个NALU视频数据的两种存储传输方式视频的压缩数据,有两种存储传输方式:1、存放在本地文件中,就是所谓的字节流应用(本章节讨论),也就是我们常说的比特流。2、把数据发送到网络上,就是所谓的分组流应用(涉及到RTSP、rtmp等等封装协议,这里不细讲)。NALU和比特流之间的关系常见的比特流如下图所示:1、NALU按照顺序
2017-05-02 20:00:01 2554
原创 HEVC解码器HM源码阅读(二)解码器中类的介绍
解码器中类的介绍(***未完待续****) HM解码器包含了下面的类: program_options_lite:参数解析 TAppDecCfg:解码器基础配置 TAppDecTop:解码器应用程序,代表了整个编码器 TDecTop:解码器内核,它是解码器最关键的部分,以汽车作为例子,TAppDecTop表示一辆汽车,那么TDe
2017-05-02 19:24:50 1308
原创 HEVC解码器HM源码阅读(一)介绍
HEVC解码器HM源码阅读(一)介绍之前看HM的编码器,总觉得理解得不够深入,很多地方只是了解大概的处理流程,具体含义没有理解。为了更加深入理解HEVC,现在开始从解码器的角度分析HEVC,说不定能够取得不错的效果。HM解码器包含的工程TAppDecoder:解码器入口(APP表示应用程序)TAppCommon:参数解析TLibCommon:公用的库(和编码器共
2017-05-02 17:52:58 2794
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人