<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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
<a href="http://downloads.xiph.org/releases/opus/opus-1.1-beta.tar.gz">here</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">-Antoine<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">BUILD LOG:<o:p></o:p></p>
<p class="MsoNormal">…<o:p></o:p></p>
<p class="MsoNormal"> [exec] Compile x86 : 1 <= schur64_FIX.c<o:p></o:p></p>
<p class="MsoNormal"> [exec] Compile x86 : 1 <= schur_FIX.c<o:p></o:p></p>
<p class="MsoNormal"> [exec] Compile x86 : 1 <= solve_LS_FIX.c<o:p></o:p></p>
<p class="MsoNormal"> [exec] Compile x86 : 1 <= vector_ops_FIX.c<o:p></o:p></p>
<p class="MsoNormal"> [exec] Compile x86 : 1 <= warped_autocorrelation_FIX.c<o:p></o:p></p>
<p class="MsoNormal"> [exec] StaticLibrary : lib0.a<o:p></o:p></p>
<p class="MsoNormal"> [exec] StaticLibrary : lib1.a<o:p></o:p></p>
<p class="MsoNormal"> [exec] StaticLibrary : lib0.a<o:p></o:p></p>
<p class="MsoNormal"> [exec] StaticLibrary : lib1.a<o:p></o:p></p>
<p class="MsoNormal"> [exec] StaticLibrary : lib0.a<o:p></o:p></p>
<p class="MsoNormal"> [exec] StaticLibrary : lib1.a<o:p></o:p></p>
<p class="MsoNormal"> [exec] SharedLibrary : libdmt_opus.so<o:p></o:p></p>
<p class="MsoNormal"> [exec] SharedLibrary : libdmt_opus.so<o:p></o:p></p>
<p class="MsoNormal"> [exec] SharedLibrary : libdmt_opus.so<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb<o:p></o:p></p>
<p class="MsoNormal">uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr<o:p></o:p></p>
<p class="MsoNormal">oideabi/bin/ld.exe: ./obj/local/armeabi/lib0.a(analysis.o): in function run_anal<o:p></o:p></p>
<p class="MsoNormal">ysis:jni/src/libopus/src/analysis.c:636: error: <span style="color:red">
undefined reference to 'optimize<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">_framesize'<o:p></o:p></span></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb<o:p></o:p></p>
<p class="MsoNormal">uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr<o:p></o:p></p>
<p class="MsoNormal">oideabi/bin/ld.exe: ./obj/local/armeabi/lib0.a(mlp.o): in function tansig_approx<o:p></o:p></p>
<p class="MsoNormal">.part.0:jni/src/libopus/src/mlp.c:60: error: <span style="color:red">
undefined reference to 'MULT16_16_Q<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">11'<o:p></o:p></span></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb<o:p></o:p></p>
<p class="MsoNormal">uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr<o:p></o:p></p>
<p class="MsoNormal">oideabi/bin/ld.exe: ./obj/local/armeabi/lib0.a(mlp.o): in function tansig_approx<o:p></o:p></p>
<p class="MsoNormal">.part.0:jni/src/libopus/src/mlp.c:60: error: undefined reference to 'MULT16_16_Q<o:p></o:p></p>
<p class="MsoNormal">11'<o:p></o:p></p>
<p class="MsoNormal"> [exec] collect2: ld returned 1 exit status<o:p></o:p></p>
<p class="MsoNormal"> [exec] make: *** [obj/local/armeabi/libdmt_opus.so] Error 1<o:p></o:p></p>
<p class="MsoNormal"> [exec] make: *** Waiting for unfinished jobs....<o:p></o:p></p>
<p class="MsoNormal"> [exec] /cygdrive/c/android/android-ndk-r8e/build/core/build-binary.mk:450:<o:p></o:p></p>
<p class="MsoNormal">recipe for target `obj/local/armeabi/libdmt_opus.so' failed<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb<o:p></o:p></p>
<p class="MsoNormal">uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr<o:p></o:p></p>
<p class="MsoNormal">oideabi/bin/ld.exe: ./obj/local/armeabi-v7a/lib0.a(analysis.o): in function run_<o:p></o:p></p>
<p class="MsoNormal">analysis:jni/src/libopus/src/analysis.c:636: error: undefined reference to 'opti<o:p></o:p></p>
<p class="MsoNormal">mize_framesize'<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb<o:p></o:p></p>
<p class="MsoNormal">uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr<o:p></o:p></p>
<p class="MsoNormal">oideabi/bin/ld.exe: ./obj/local/armeabi-v7a/lib0.a(mlp.o): in function tansig_ap<o:p></o:p></p>
<p class="MsoNormal">prox.part.0:jni/src/libopus/src/mlp.c:60: error: undefined reference to 'MULT16_<o:p></o:p></p>
<p class="MsoNormal">16_Q11'<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/preb<o:p></o:p></p>
<p class="MsoNormal">uilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-andr<o:p></o:p></p>
<p class="MsoNormal">oideabi/bin/ld.exe: ./obj/local/armeabi-v7a/lib0.a(mlp.o): in function tansig_ap<o:p></o:p></p>
<p class="MsoNormal">prox.part.0:jni/src/libopus/src/mlp.c:60: error: undefined reference to 'MULT16_<o:p></o:p></p>
<p class="MsoNormal">16_Q11'<o:p></o:p></p>
<p class="MsoNormal"> [exec] collect2: ld returned 1 exit status<o:p></o:p></p>
<p class="MsoNormal"> [exec] make: *** [obj/local/armeabi-v7a/libdmt_opus.so] Error 1<o:p></o:p></p>
<p class="MsoNormal"> [exec] /cygdrive/c/android/android-ndk-r8e/build/core/build-binary.mk:450:<o:p></o:p></p>
<p class="MsoNormal">recipe for target `obj/local/armeabi-v7a/libdmt_opus.so' failed<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.<o:p></o:p></p>
<p class="MsoNormal">./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob<o:p></o:p></p>
<p class="MsoNormal">j/local/x86/lib0.a(analysis.o): in function run_analysis:jni/src/libopus/src/ana<o:p></o:p></p>
<p class="MsoNormal">lysis.c:636: error: undefined reference to 'optimize_framesize'<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.<o:p></o:p></p>
<p class="MsoNormal">./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob<o:p></o:p></p>
<p class="MsoNormal">j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:<o:p></o:p></p>
<p class="MsoNormal">error: undefined reference to 'MULT16_16_Q11'<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.<o:p></o:p></p>
<p class="MsoNormal">./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob<o:p></o:p></p>
<p class="MsoNormal">j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:<o:p></o:p></p>
<p class="MsoNormal">error: undefined reference to 'MULT16_16_Q11'<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.<o:p></o:p></p>
<p class="MsoNormal">./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob<o:p></o:p></p>
<p class="MsoNormal">j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:<o:p></o:p></p>
<p class="MsoNormal">error: undefined reference to 'MULT16_16_Q11'<o:p></o:p></p>
<p class="MsoNormal"> [exec] C:/android/android-ndk-r8e/toolchains/x86-4.6/prebuilt/windows/bin/.<o:p></o:p></p>
<p class="MsoNormal">./lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./ob<o:p></o:p></p>
<p class="MsoNormal">j/local/x86/lib0.a(mlp.o): in function mlp_process:jni/src/libopus/src/mlp.c:60:<o:p></o:p></p>
<p class="MsoNormal">error: undefined reference to 'MULT16_16_Q11'<o:p></o:p></p>
<p class="MsoNormal"> [exec] collect2: ld returned 1 exit status<o:p></o:p></p>
<p class="MsoNormal"> [exec] make: *** [obj/local/x86/libdmt_opus.so] Error 1<o:p></o:p></p>
<p class="MsoNormal"> [exec] /cygdrive/c/android/android-ndk-r8e/build/core/build-binary.mk:450:<o:p></o:p></p>
<p class="MsoNormal">recipe for target `obj/local/x86/libdmt_opus.so' failed<o:p></o:p></p>
<p class="MsoNormal"> [exec] make: Leaving directory `/cygdrive/c/eng/nmt/NextGen/trunk/android/N<o:p></o:p></p>
<p class="MsoNormal">extGen/build/opus'<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">BUILD FAILED<o:p></o:p></p>
<p class="MsoNormal">C:\eng\nmt\NextGen\trunk\android\NextGen\build.xml:374: The following error occu<o:p></o:p></p>
<p class="MsoNormal">rred while executing this line:<o:p></o:p></p>
<p class="MsoNormal">C:\eng\nmt\NextGen\trunk\android\NextGen\build-native-lib.xml:28: exec returned:<o:p></o:p></p>
<p class="MsoNormal">2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Total time: 1 minute 10 seconds<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>