前言

libopus是xiph开发的opus音频编解码库,记录一下在windows平台使用MinGW编译libopus以及官方编解码demo的过程(为什么不用MSVC,因为MSVC就是屎,装个VS占掉十几G磁盘,各个版本VS兼容性也做得一坨,不得不装好几个版本的VS🤬,最逆天的是VS历史版本你在官网还下载不到)

配置w64devkit环境

经测试opus1.5.2版本只有w64devkit里编译通过了,在git bash、MSYS2中均编译不过,报错如下

1
2
3
4
5
6
7
8
9
10
11
F:\learn\opus\silk\x86\NSQ_del_dec_avx2.c:959:43: error: incompatible type for a
rgument 1 of '_mm256_cvtepi16_epi64'
__m256i x = _mm256_cvtepi16_epi64(_mm_loadu_si64(&x16[i]));
^~~~~~~~~~~~~~~~~~~~~~~
In file included from E:/environment/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/incl
ude/immintrin.h:43,
from F:\learn\opus\silk\x86\NSQ_del_dec_avx2.c:37:
E:/environment/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/avx2intrin.h:468:3
2: note: expected '__m128i' {aka '__vector(2) long long int'} but argument is of
type 'int'
_mm256_cvtepi16_epi64 (__m128i __X)

到w64devkit官网 https://github.com/skeeto/w64devkit 下载安装包w64devkit-x64-2.0.0.exe ,安装就不说了

w64devkit安装目录下有个w64devkit.ini文件, 最后一行添加 home = 磁盘位置,作为w64devkit的默认路径

下载libopus源码

到libopus官网 https://opus-codec.org/downloads/ 下载tarball 解压到F:/learn/

或者 https://github.com/xiph/opus 用git拉源码

编译

打开w64devkit.exe

1
2
3
4
5
6
7
cd opus # 进入源码路径
mkdir build
cd build

cmake .. -G "MinGW Makefiles" -DOPUS_BUILD_PROGRAMS=ON # OPUS_BUILD_PROGRAMS=ON是用来编译官方可执行demo的开关

make -j4

编译成功输出如下

试着运行一下demo,也没问题