1. 程式人生 > >交叉工具編譯ARM平臺Opus音訊庫

交叉工具編譯ARM平臺Opus音訊庫

     最近專案中使用到opus音訊庫,這是一款開源的高效的音訊庫。其優點相對於AAC編碼來說,編碼效率高,據說相同頻寬下,音訊質量完爆AAC,而高頻寬下音質接近原始音訊(不喜勿噴^_^)。詳情及原始碼見官網http://www.opus-codec.org/

     原始碼可以直接編譯x86平臺的庫,想要編譯ARM平臺下,需一番配置。

     首先配置交叉編譯工具,交叉編譯工具鏈網上有一大堆,Google官網也有官方的,請自行下載。

sh ~/sdk/android-ndk-r14b/build/tools/make-standalone-toolchain.sh \
        --platform=android-19 --install-dir=/tmp/my_toolchain

     請注意第一行後面的連線符,platform預設使用android-19,可根據實際情況自行修改。

     建立一個env.opus檔案,內容如下:

#!/bin/sh

export PATH=/tmp/my_toolchain/bin:$PATH
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++

./configure --host=arm-linux --enable-fixed-point --disable-float-api \
			CFLAGS="-O3 -mfpu=neon -mfloat-abi=softfp" HAVE_ARM_NEON_INTR=1

為了提高庫的執行效率,分別做了如下優化:啟用定點數運算,禁用浮點數運算,O3優化,neon優化,使用軟浮點庫進行浮點運算。

PS: 從Opus提供的編譯指令碼來看,要徹底開啟neon以後,還需要新增“HAVE_ARM_NEON_INTR=1”

本地實測編譯通過,可正常使用(只測試了靜態庫,動態庫自行測試)。