以前只知道HEVC的理论知识,基本没有看过源码,现在特来补充下源码知识并做个小记录
先来简单看下项目目录:
(1) TAppCommon 编码器和解码器共用的应用函数
(2) TAppDecoder 解码器的应用函数
(3)TAppDecoderAnalyser 解码器分析的应用函数
(4) TAppEncoder 编码器的应用函数
(5) TLibCommon 编码器和解码器共用的库函数
(6) TLibDecoder 解码器的库函数
(7)TLibDecoderAnalyser 编码器分析的应用函数
(8) TLibEncoder 编码器的库函数
(9) TLibVideoIO 视频输入、输出库函数
开始配置:
01.换成X64下的debug模式
02.新建一个文件夹workplace用于存放配置文件以及生成的二进制码流文件和重建的YUV文件
每个YUV序列编码需要两个cfg文件:一个是视频序列媒体信息的配置文件,一个是编码的配置文件
对于给的测试序列其媒体信息的配置文件在/cfg/per-sequence/中:
可以看到其描述了视频的长宽帧率位深等信息。
编码的配置文件也在该文件夹中,如我们选择帧内模式:
可以看到描述了最大CU尺寸,profile等信息。
03:
在属性页中将工作空间和配置文件添加进去:
04:将整个项目编译下:
05:将TAppEncoder设为启动项,然后开始愉快的编码吧,由于电脑太弱,仅编码5帧意思意思:
并且可以看到,由于选的是AI模式,全编的I帧,
可以看到在workplace中生成了码流文件和重建的YUV文件
看看压缩前的大小:
因为原始序列50帧,其5帧约为30M,压缩完只有3M,即使是AI模式也高达1/10的压缩效率