aom软件下载平台:https://aomedia.googlesource.com/aom
可以在该网站直接下载,也可以通过git命令进行clone(注意需要科学上网)
git clone https://aomedia.googlesource.com/aom
一、AOM工程的编译
根据https://aomedia.googlesource.com/aom下载网页中列出的编译的先决条件(doxygen和EMSDK现不需要)
- CMake:从cmake官网可以下载Win版本可执行文件或者安装包进行安装
- Python:使用cmake生成工程文件会依赖Python(也可以用编译命令跳过)
- perl推荐下载Strawberry Perl ;
- yasm or nasm? nasm最新版足够了
安装完python、Perl和yasm还需要将它们加入环境变量。
为了方便大家使用,我把相关软件安装包上传到了CSDN:https://download.csdn.net/download/BigDream123/14041931
安装完上面这些软件之后,我们打开Cmake GUI进行编译,注意source地址是整个文件的地址,到aom就行,目标文件可以在aom目录下也可以在别的目录下,建议放在和aom的同级目录下:
点击configure配置,因为我用的是VS2017,根据自己VS的版本选择相应的选项,之后选择x64,然后点击finish
配置成功之后,搜索nasm,勾选ENABLE_NASM(若有yasm,不勾选nasm则默认选择yasm)
如果对测试数据没有需求得话,建议取消ENABLE_TESTDATA,可以大大减少工程代码量
最后点击generate生成代码,显示generate done表示代码生成成功,这样我们的编译工作就完成了
二、AOM工程的调试(VS2017)
我们打开build目录下的AOM.sln,使用VS打开aom工程,aomenc主要是编码端的工程,aomdec主要是解码端的工程,在调试的时候分别需要设置启动项和命令行参数
1、编码端的调试
鼠标右键点击aomenc,选择设为启动项目
鼠标右键点击aomenc,选择属性,点击配置属性-》调试-》命令行参数,这里注意左上角的配置选项,为了方便我通常选择所有配置,你也可以根据需求分别配置debug的和release的参数,以我使用的参数为例:
E:\VideoCoding\BasketballDrill_832x480_50.yuv --width=640 --height=360 --bit-depth=8 --codec=av1 --test-decode=0 --cpu-used=0 --threads=1 --profile=0 --drop-frame=0 --static-thresh=0 --sharpness=0 --frame-parallel=0 --tile-columns=0 --passes=2 --kf-min-dist=0 --kf-max-dist=0 --end-usage=q --psnr -v --cq-level=45 --enable-cdef=1 --enable-restoration=1 --limit=60 --enable-cfl-intra=1 -o bluesky_45.ivf > bluesky_45_log.log 2>&1
最开始输入的视频文件,后面是视频文件的宽度、高度、比特深度等,aom编码端有许多命令参数设,可以根据不同需求设置不同的参数,相关命令行参数可以参考:https://blog.csdn.net/BigDream123/article/details/109441957
配置完之后,选择Debug,然后就可以开始断点调试了
注意:如果编码端想要输出重建YUV,则需要找到宏DUMP_RECON_FRAMES,在该宏的引用处存在输出重建YUV相关代码
#define DUMP_RECON_FRAMES 1
2、解码端的调试
解码端的调试和编码端调试类似,也是先设置启动项目再配置命令行参数,不同的是编码端的命令行参数输入的是码流文件,以下面为例:
bluesky_45.ivf --rawvideo --progress -o dec.yuv