[opus] Help building OPUS library using FIXED_POINT option

Dubois-Rande, Antoine Antoine.Dubois-Rande at nuance.com
Thu Jul 18 08:12:27 PDT 2013


Hi,

We are rebasing our audio compression subsystem using OPUS rather than SPEEX. The platform is Android but this piece is written in C code: we need to support armv5/armv7/x86 architectures.... and we use the released opus-1.1beta package from here<http://downloads.xiph.org/releases/opus/opus-1.1-beta.tar.gz>.

A lot of our OPUS build system + code to drive the audio compression has been reused from our SPEEX port since there are a lot of similarities between the OPUS and SPEEX build flags and APIs.

I can build and run OPUS on the device using the default FLOATING point. However, for latency reasons, we are considering building with FIXED_POINT (like we do for SPEEX). Then I have the link error below. a macro is not defined and a method is not implemented when compiling with FIXED_POINT. I did a search on your code base and indeed that seems to be the problem.

I might be missing something but please verify on your side and keep me posted about your results. I also attached the python file that list the files we are building for FIXED POINT and FLOATING POINT mode as well as our config.h file adapted from our SPEEX implementation.

Thanks,
-Antoine

BUILD LOG:
...
     [exec] Compile x86    : 1 <= schur64_FIX.c
     [exec] Compile x86    : 1 <= schur_FIX.c
     [exec] Compile x86    : 1 <= solve_LS_FIX.c
     [exec] Compile x86    : 1 <= vector_ops_FIX.c
     [exec] Compile x86    : 1 <= warped_autocorrelation_FIX.c
     [exec] StaticLibrary  : lib0.a
     [exec] StaticLibrary  : lib1.a
     [exec] StaticLibrary  : lib0.a
     [exec] StaticLibrary  : lib1.a
     [exec] StaticLibrary  : lib0.a
     [exec] StaticLibrary  : lib1.a
     [exec] SharedLibrary  : libdmt_opus.so
     [exec] SharedLibrary  : libdmt_opus.so
     [exec] SharedLibrary  : libdmt_opus.so
     [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb
uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr
oideabi/bin/ld.exe: ./obj/local/armeabi/lib0.a(analysis.o): in function run_anal
ysis:jni/src/libopus/src/analysis.c:636: error: undefined reference to 'optimize
_framesize'
     [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb
uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr
oideabi/bin/ld.exe: ./obj/local/armeabi/lib0.a(mlp.o): in function tansig_approx
.part.0:jni/src/libopus/src/mlp.c:60: error: undefined reference to 'MULT16_16_Q
11'
     [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb
uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr
oideabi/bin/ld.exe: ./obj/local/armeabi/lib0.a(mlp.o): in function tansig_approx
.part.0:jni/src/libopus/src/mlp.c:60: error: undefined reference to 'MULT16_16_Q
11'
     [exec] collect2: ld returned 1 exit status
     [exec] make: *** [obj/local/armeabi/libdmt_opus.so] Error 1
     [exec] make: *** Waiting for unfinished jobs....
     [exec] /cygdrive/c/android/android-ndk-r8e/build/core/build-binary.mk:450:
recipe for target `obj/local/armeabi/libdmt_opus.so' failed
     [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb
uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr
oideabi/bin/ld.exe: ./obj/local/armeabi-v7a/lib0.a(analysis.o): in function run_
analysis:jni/src/libopus/src/analysis.c:636: error: undefined reference to 'opti
mize_framesize'
     [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb
uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr
oideabi/bin/ld.exe: ./obj/local/armeabi-v7a/lib0.a(mlp.o): in function tansig_ap
prox.part.0:jni/src/libopus/src/mlp.c:60: error: undefined reference to 'MULT16_
16_Q11'
     [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb
uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr
oideabi/bin/ld.exe: ./obj/local/armeabi-v7a/lib0.a(mlp.o): in function tansig_ap
prox.part.0:jni/src/libopus/src/mlp.c:60: error: undefined reference to 'MULT16_
16_Q11'
     [exec] collect2: ld returned 1 exit status
     [exec] make: *** [obj/local/armeabi-v7a/libdmt_opus.so] Error 1
     [exec] /cygdrive/c/android/android-ndk-r8e/build/core/build-binary.mk:450:
recipe for target `obj/local/armeabi-v7a/libdmt_opus.so' failed
     [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.
./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob
j/local/x86/lib0.a(analysis.o): in function run_analysis:jni/src/libopus/src/ana
lysis.c:636: error: undefined reference to 'optimize_framesize'
     [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.
./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob
j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:
error: undefined reference to 'MULT16_16_Q11'
     [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.
./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob
j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:
error: undefined reference to 'MULT16_16_Q11'
     [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.
./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob
j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:
error: undefined reference to 'MULT16_16_Q11'
     [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.
./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob
j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:
error: undefined reference to 'MULT16_16_Q11'
     [exec] collect2: ld returned 1 exit status
     [exec] make: *** [obj/local/x86/libdmt_opus.so] Error 1
     [exec] /cygdrive/c/android/android-ndk-r8e/build/core/build-binary.mk:450:
recipe for target `obj/local/x86/libdmt_opus.so' failed
     [exec] make: Leaving directory `/cygdrive/c/eng/nmt/NextGen/trunk/android/N
extGen/build/opus'

BUILD FAILED
C:\eng\nmt\NextGen\trunk\android\NextGen\build.xml:374: The following error occu
rred while executing this line:
C:\eng\nmt\NextGen\trunk\android\NextGen\build-native-lib.xml:28: exec returned:
2

Total time: 1 minute 10 seconds

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/opus/attachments/20130718/d1b9c0fe/attachment-0001.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: build_config _FLP.py
Type: application/octet-stream
Size: 16563 bytes
Desc: build_config _FLP.py
Url : http://lists.xiph.org/pipermail/opus/attachments/20130718/d1b9c0fe/attachment-0002.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: build_config_FIX.py
Type: application/octet-stream
Size: 16017 bytes
Desc: build_config_FIX.py
Url : http://lists.xiph.org/pipermail/opus/attachments/20130718/d1b9c0fe/attachment-0003.obj 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: config.h
Url: http://lists.xiph.org/pipermail/opus/attachments/20130718/d1b9c0fe/attachment-0001.txt 


More information about the opus mailing list