HM编码器代码阅读(2)——框架以及主要流程
来源:互联网 发布:js cookie大小 编辑:程序博客网 时间:2024/06/09 18:32
框架以及主要流程
HM编码器的运行方式
编码器的运行方式:encoder -c encoder_lowdelay_main.cfg -c akiyo.cfg
其中encoder就是编码器可执行文件的名字,encoder_lowdelay_main.cfg是编码器的配置信息,akiyo.cfg是待编码的视频数据的配置信息。
下面是运行截图:
主函数
编码器主函数在文件encmain.cpp中,调用如下:
1、create是个空函数
2、encode函数执行了实际的编码工作
编码的简要流程
TAppEncTop的encode函数调用了compressGOP这个函数,这是一个非常重要的函数,它对一个图像组进行编码。
compressGOP函数(这个函数将近2000行,我就不贴上来了。。。):
1、调用xInitGOP设置图像组中帧的数量
2、设置一些图像增强信息
3、进入一个大的for循环,对图像组的每一帧图像进行处理
3.1、说明一下GOPEntry并不表示一个图像组,而是表示某一帧对应的GOP(即图像组)的信息,它包含了这个帧的参考帧等重要的信息。
3.2、调用selectReferencePictureSet、createExplicitReferencePictureSetFromReference、applyReferencePictureSet、arrangeLongtermPicturesInRPS、setRefPicList、setRefPOCList、setList1IdxToList0Idx等几个函数,设置当前帧的参考图像集、参考帧、并对这些参考帧进行排序等等,比较复杂的功能。
3.3、进入一个while循环,对帧的每一片(slice)进行编码,主要是调用compressSlice来选出最优的参数,以及预测、变换、量化的编码工作,然后进行环路滤波,最后调用encodeSlice对其进行熵编码
4、一些收尾工作!
2 2
- HM编码器代码阅读(2)——框架以及主要流程
- HM编码器代码阅读(7)——整个编码流程以及相关的函数
- HM编码器代码阅读(7)——整个编码流程以及相关的函数
- HM编码器代码阅读(22)——cabac的流程
- HM编码器代码阅读
- HM编码器代码阅读(1)——介绍以及相关知识
- HM编码器代码阅读(21)——熵编码的概念以及在HEVC中应用
- HM编码器代码阅读(4)——一些概念
- HM编码器代码阅读(10)——片的编码
- HM编码器代码阅读(11)——CU的初始化
- HM编码器代码阅读(12)——CU编码
- HM编码器代码阅读(18)——变换
- HM编码器代码阅读(19)——量化
- HM编码器代码阅读(26)——去方块滤波
- HM编码器代码阅读(28)——比特流
- HM编码器代码阅读(29)——码率控制
- HM编码器代码阅读(42)——率失真优化
- HM编码器代码阅读(46)——SAO总结
- Your project path contains non-ASCII characters(使用androidstudio常见错误)
- live555—VS2010/VS2013 下live555编译、使用及测试
- ASP.net和EasyUI后台管理系统
- 集群和分布式的区别
- HashMap
- HM编码器代码阅读(2)——框架以及主要流程
- BitMap、Drawable、InputStream、Byte[]互换
- Tomcat结构分析
- [PHP实例] PHP多文件上传实现
- 剑指offer系列之33:第一个只出现一次的字符
- 轨迹记忆
- lightoj1018 - Brush (IV)【状压dp】
- Java 多线程处理任务的封装
- 每天编程小题目(oneDay):求每个月兔子总数