HM编码器代码阅读(1)——介绍以及相关知识
HM是HEVC(H.265)的开源实现,可以从网上直接下载。
HEVC(H.265)是新一代的视频编解码标准。
本人目前研究的只是编码器部分,而且还是入门阶段!为了提高自己,边学边记,由于理解不够深入,难免会有误,请见谅!
本人现在使用的版本是15.0,最新版本好像已经到16.0了
文件的功能以及作用:
AccessUnit.h 定义了存取单元(或者说访问单元),实质是一个类型为NALUnitEBSP的list
NAL.h 定义了NALUnit(NAL单元)和NALUnitEBSP(EBSP类型的NAL单元)
AnnexBwrite.h 实现了把存取单元写入外部数据队列的功能
CommonDef.h 定义各种宏
ContextModel.h/ContextModel.cpp 定义了熵编码需要的上下文模型
ContextModel3DBuffer.h/ContextModel3DBuffer.cpp 定义了熵编码上下文模型需要的3维缓存区
ContextTables.h 定义各种上下文所需的表格,例如二进制化、熵编码等等
encmain.cpp 编码器的主函数
libmd5.h/libmd5.cpp/MD5.h md5的实现
NALwrite.h/NALwrite.cpp 定义了输出的NAL单元(OutputNALUnit)、实现把NAL单元写到外部输出流中(std::ostream)
program_options_lite.h/program_options_lite.cpp 编码器的选项配置
SEI.h/SEI.cpp 图像增强信息方面
SEIwrite.h/SEIwrite.cpp 写SEI信息到比特流中
SyntaxElementWriter.h/SyntaxElementWriter.cpp 语法元素写入器
TAppEncCfg.h/TAppEncCfg.cpp 编码器应用程序配置类
TAppEncTop.h/TAppEncTop.cpp 继承自TAppEncCfg,编码器应用程序顶层类(或者说编码器的主类)
TComBitCounter.h/TComBitCounter.cpp 比特计数器
TComBitStream.h/TComBitStream.cpp 比特流
TComCABACTables.h/TComCABACTables.cpp定义了CABAC所需要的各种表格
TComDataCU.h/TComDataCU.cpp CU(编码单元的定义)
TComInterpolationFilter.h/TComInterpolationFilter.cpp 插值过滤器
TComList.h 公用的列表的定义,继承自std的list
TComLoopFilter.h/TComLoopFilter.cpp 环路滤波器的实现
TComMotionInfo.h/TComMotionInfo.cpp 运动信息的实现
TComMv.h mv(运动向量)的定义
TComPattern.h/TComPattern.cpp 公共的模式类,定义了YUV三个颜色分量的方位方法和相邻像素的访问方法
TcomPic.h/TcomPic.cpp 是图片类,它包含TComPicSym(图像符号类)和TComPicYuv(yuv数据类:包括原始数据,预测数据、惨差数据)
TComPicSym.h/TComPicSym.cpp 定义了图像符号类,定义了从图像到片和cu的访问方式
TComPicYuv.h/TComPicYuv.cpp 图像的yuv数据类:包括原始数据,预测数据、残差数据
TComPicYuvMD5.cpp 图像的yuv的md5的实现
TComPrediction.h/TComPrediction.cpp 预测的实现(帧内预测/帧间预测)
TComRdCost.h/TComRdCost.cpp率失真代价
TComRdCostWeightPrediction.h/TComRdCostWeightPrediction.cpp 带率失真权重的预测
TComRom.h/TComRom.cpp 全局的变量和函数
TComSampleAdaptiveOffset.h/TComSampleAdaptiveOffset.cpp SAO的定义和实现
TComSlice.h/TComSlice.cpp 片的定义和实现
TComTrQuant.h/TComTrQuant.cpp变换和量化的实
TComWeightPrediction.h/TComWeightPrediction.cpp带权重的预测
TComYuv.h/TComYuv.cpp TComPicYuv和TComYuv的区别,TComYuv可以看作是一个方便操作YUV的类,主要用于预测阶段,从TComPicYuv产生而来,TComYuv的作用没有TComPicYuv那么大
TEncAnalyze.h/TEncAnalyze.cpp 编码器分析类(性能分析类)
TEncBinCoder.h 二进制编码器的定义(定义了二进制化和熵编码的一些类)
TEncBinCoderCABAC.h/TEncBinCoderCABAC.cpp CABAC二进制编码器
TEncBinCoderCABACCounter.h/TEncBinCoderCABACCounter.cpp CABAC比特计数器
TEncCavlc.h/TEncCavlc.cpp CAVLC熵编码器
TEncCfg.h 编码器的基础配置类
TEncCu.h/TEncCu.cpp CU编码器
TEncEntropy.h/TEncEntropy.cpp 熵编码器
TEncGOP.h/TEncGOP.cpp 图像组编码器
TEncPic.h/TEncPic.cpp 图像编码器
TEncPreanalyzer.h/TEncPreanalyzer.cpp 预测分析器编码器
TEncRateCtrl.h/TEncRateCtrl.cpp 速率控制器(帧速率、比特速率等等)
TEncSampleAdaptiveOffset.h/TEncSampleAdaptiveOffset.cpp SAO编码器
TEncSbac.h/TEncSbac.cpp SBAC编码器(SBAC是CABAC的改进,是并行的CABAC算法)
TEncSearch.h/TEncSearch.cpp 运动搜索的实现
TEncSlice.h/TEncSlice.cpp 片编码器
TEncTop.h/TEncTop.cpp 公共的编码器类(与编码器应用类不一样,编码器应用类是一个包装的接口类)
TvideoIOYuv.h/TvideoIOYuv.cpp YUV的I/O类,是用来读取yuv文件的类,读取出来之后把数据放到TComPicYuv中
TypeDef.h 基础类型的定义
WeightPredAnalysis.h/WeightPredAnalysis.cpp 带权预测分析
TCom和TEnc的区别在于,TEnc一般是管理器或者编码器,而TCom则是数据存储类或者算法实现类,例如TEncCu是CU编码器类,而TComDataCU则是CU的数据类(或者说CU数据的操作类,因为实际的数据仍然存放在TComPicYuv中)
原文链接:http://blog.csdn.net/nb_vol_1/article/details/51134857
HM编码器代码阅读(1)——介绍以及相关知识的更多相关文章
- HM编码器代码阅读(14)——帧间预測之AMVP模式(二)predInterSearch函数
简单介绍 predInterSearch基本的工作是ME(运动预计)和MC(运动补偿). 函数中有一个bTestNormalMC变量.它表示是否进行正常的MC过程,正常的MC过程就是进 ...
- Memcached介绍及相关知识
memcached简介 1.memcached是一个免费开源的.高性能的,具有分布式内存对象的缓存系统.memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...
- 代码阅读分析工具Understand 2.0试用
Understand 2.0是一款源代码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率.由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所 ...
- block(代码块)的介绍以及使用方法和变量之间的关系
http://blog.csdn.net/menxu_work/article/details/8762848 block(代码块)的介绍以及使用方法和变量之间的关系 block(代码块)的介绍以及使 ...
- MediaInfo代码阅读
MediaInfo是一个用来分析媒体文件的开源工具. 支持的文件非常全面,基本上支持所有的媒体文件. 最近是在做HEVC开发,所以比较关注MediaInfo中关于HEVC的分析与处理. 从Meid ...
- CGAL代码阅读跳坑指南
CGAL代码阅读跳坑指南 整体框架介绍 CGAL中的算法和数据结构由它们使用的对象类型和操作参数化.它们可以处理满足特定语法和语义需求的任何具体模板参数.为了避免长参数列表,参数类型被收集到一个单独的 ...
- Ubuntu 字体修改以及字体的相关知识 分类: ubuntu 2014-06-19 21:46 81人阅读 评论(0) 收藏
Ubuntu chrome 字体修改 打开任意一张含有输入框的网页,比如Google首页,然后右键点击"搜索框"会拉出一个菜单,我们这样选: 拼音检查选项==>语言设置==& ...
- [置顶] Linux协议栈代码阅读笔记(一)
Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...
- Ionic 入门与实战之第一章:Ionic 介绍与相关学习资源
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第一章,主要对 Ionic 的概念.发展历程.适配的移动平台等知识进行了介绍,并分享了 Ionic 相关的学习资源. 原文发表于我的技 ...
随机推荐
- Python3.x:常用基础语法
Python3.x:常用基础语法 1,if else语句: 不执行if内的语句,需要用:pass if i>2: #跳过不执行 pass else: print("i= %s" ...
- raid 简单了解
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks ...
- 重新想,重新看——CSS3变形,过渡与动画①
学习CSS3,觉得最难记忆的部分除了flex特性之外,就要属变形,过渡和动画部分了.作为初学者,总有种犯懒的心理,想着既然IE8浏览器都不完全支持CSS动画属性,还要考虑浏览器兼容问题,那么就不那么着 ...
- win7打开ftp步骤
FTP是很方便文件传输的功能 打开ftp xftp连接 传输测试 如果连接不通的话,有可能是防火墙的问题
- UVa 11354 邦德(最小瓶颈路+LCA)
https://vjudge.net/problem/UVA-11354 题意: 有n个城市m条道路,每条道路有一个危险系数.先在有若干个询问,要求找到一条从s到t的路,使得途径所有边的最大危险系数最 ...
- LA 3971 组装电脑(二分)
https://vjudge.net/problem/UVALive-3971 题意:你有b块钱,想要组装一台电脑.给出n个配件各自的种类.品质因子和价格,要求每种类型的配件各买一个,总价格不超过b, ...
- codeforces291E Tree-String Problem
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Apache的MaxClients设置
本文将介绍Apache的MaxClients参数的重要性以及在GC发生时对系统整体性能的显著影响.通过几个例子,你将会更清晰的理解MaxClients值所引发的问题.最后会介绍如何依据系统的可用内存来 ...
- Mac下配置NDK环境
下载NDK 这里写图片描述配置NDK开发环境 第一步:打开Mac终端 Snip20170208_1.png 第二步:在终端中输入:open -e .bash_profile,打开.bash_profi ...
- spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableViewController
spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableView ...