AV1源码分析(一)

AOM 工程

AOMedia Video 1是一个开放、免专利的影片编码格式,专为通过网络进行流传输而设计。它由开放媒体联盟开发,该联盟由半导体企业、视频点播供应商和网页浏览器开发商于2015年成立。互联网工程任务组也将这项工作标准化为互联网视频编解码器(NetVC)。
AV1的目标是取代其前身,即由谷歌开发的VP9视频压缩格式,并与动态图像专家组(MPEG)领导开发的高效率视频编码(HEVC)以及由中华人民共和国的数字音视频编码技术标准工作组主导开发的第二代数字音视频编解码技术标准(AVS2)竞争。
AV1可以与Opus音频格式一起封装在WebM容器格式中,并可用于HTML5网络视频和网页即时通信。

  1. AV1 前期准备:
  • 安装CMake,版本需求 3.5 以上;
  • 安装Git;
  • 安装Perl;
  • 对于x86,需要安装yasm或nasm;
  • 安装python;
  1. 获取源码
$ git clone https://aomedia.googlesource.com/aom

googlesource不好上,幸好我在github上存了一份:https://github.com/iChenwin/aom/tree/master

$ git clone [email protected]:iChenwin/aom.git
  1. Linux 下编译方法
    Linux 下的编译比较简单了,只需要用cmake配置,然后make编译即可。
$ cmake path/to/aom
$ make

直接在aom目录下执行cmake命令会报这么个错:

Building from within the aom source tree is not supported.

解决办法是在与aom同级目录下新建一个aom_build,然后进到aom_build目录执行以下两条命令:

$ cmake ../aom
$ make -j8

最终编译结果如下:

[2020/3/20 23:09:24] [ 97%] Building CXX object CMakeFiles/test_aom_encoder.dir/test/av1_convolve_scale_test.cc.o
[2020/3/20 23:09:32] [ 97%] Building CXX object CMakeFiles/test_aom_encoder.dir/test/av1_horz_only_frame_superres_test.cc.o
[2020/3/20 23:09:34] [ 97%] Building CXX object CMakeFiles/test_aom_encoder.dir/test/intra_edge_test.cc.o
[2020/3/20 23:09:37] [ 98%] Building CXX object CMakeFiles/test_aom_encoder.dir/test/hash_test.cc.o
[2020/3/20 23:09:54] [ 98%] Built target test_aom_encoder
[2020/3/20 23:15:28] [ 98%] Built target test_aom_common
[2020/3/20 23:15:28] Scanning dependencies of target test_libaom
[2020/3/20 23:15:28] [ 98%] Building C object CMakeFiles/test_libaom.dir/gen_src/usage_exit.c.o
[2020/3/20 23:15:28] [ 99%] Building CXX object CMakeFiles/test_libaom.dir/test/av1_quantize_test.cc.o
[2020/3/20 23:15:28] [ 98%] Building CXX object CMakeFiles/test_libaom.dir/test/simd_cmp_ssse3.cc.o
[2020/3/20 23:15:28] [ 98%] Building CXX object CMakeFiles/test_libaom.dir/test/test_libaom.cc.o
[2020/3/20 23:15:28] [ 98%] Building CXX object CMakeFiles/test_libaom.dir/test/av1_highbd_iht_test.cc.o
[2020/3/20 23:15:28] [ 99%] Building CXX object CMakeFiles/test_libaom.dir/test/simd_cmp_sse2.cc.o
[2020/3/20 23:15:28] [100%] Building CXX object CMakeFiles/test_libaom.dir/test/corner_match_test.cc.o
[2020/3/20 23:15:28] [100%] Building CXX object CMakeFiles/test_libaom.dir/test/simd_cmp_sse4.cc.o
[2020/3/20 23:15:29] [100%] Building CXX object CMakeFiles/test_libaom.dir/test/simd_cmp_avx2.cc.o
[2020/3/20 23:16:12] [100%] Linking CXX executable test_libaom
[2020/3/20 23:16:15] [100%] Built target test_libaom
  1. Windows 下编译方法
    Windows下使用Visual Studio同样可以编译运行av1的代码。只需要在cmake时指定 VS 版本号即可,支持的工具可以通过cmake --help来查看。
$ make aom_vs
$ cd aom_vs
$ cmake /path/to/aom -G "Visual Studio 12 2013 Win64" -DCONFIG_AV1_ENCODER=0 -DCONFIG_LOWBITDEPTH=0 -DAOM_TARGET_CPU=generic

你可能感兴趣的:(AV1,音视频)