[opus] [RFC PATCH v2] Encode optimize using libNe10
Viswanath Puttagunta
viswanath.puttagunta at linaro.org
Wed Feb 4 10:21:03 PST 2015
Changes from RFC PATCH v1:
- passing arch parameter explicitly
- reduced stack usage by ~3.5K by using scaled NE10 fft version
- moved all optimization array functions to arm_celt_map.c
- Other cleanups pointed out by Timothy
Phil,
As you mentioned earlier, could you please address all
compile and linker errors/warnings coming out of Ne10 library?
You can find my working Ne10 repo at [1]
You can find my working opus repo at [2]
Commands I used to build opus:
Download code
$ git clone git://git.linaro.org/people/viswanath.puttagunta/opus.git
$ cd opus
$ git checkout -b local_rfcv2 remotes/origin/rfcv2_final_opus_fft_ne10
Compile code
$ ./autogen.sh
$ mkdir ../build
$ cd ../build
$ export PATH=$PATH:<path_to_arm-linux-gnueabihf_bin_dir>
$ ../opus/configure --host=arm-linux-gnueabihf --enable-intrinsics --with-NE10-libraries=<path_to_Ne10_libraries> --with-NE10-includes=<path_to_Ne10_includes>
$ make -j6
Compile warnings related to Ne10:
i. ..NE10_init.h:40:5: warning: function declaration isn't a prototype [-Wstrict-prototypes]
extern ne10_result_t ne10_HasNEON();
ii. NE10_init.h:45:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
extern ne10_result_t ne10_init();
Linker warnings related to Ne10:
../gcc-linaro/14.09/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.2/../../../../arm-linux-gnueabihf/bin/ld: warning: libstdc++.so.6, needed by <path>/binary/usr/local/lib/libNE10.so, not found (try using -rpath or -rpath-link)
[1]: https://git.linaro.org/people/viswanath.puttagunta/Ne10.git branch: rfcv2_final_ne10_fft
[2]: https://git.linaro.org/people/viswanath.puttagunta/opus.git branch: rfcv2_final_opus_fft_ne10
Viswanath Puttagunta (1):
armv7(float): Optimize encode usecase using NE10 library
Makefile.am | 34 +--
celt/arm/arm_celt_map.c | 47 +++-
celt/arm/celt_ne10_fft.c | 120 ++++++++++
celt/arm/celt_ne10_mdct.c | 158 +++++++++++++
celt/arm/fft_arm.h | 66 ++++++
celt/arm/mdct_arm.h | 53 +++++
celt/celt_encoder.c | 13 +-
celt/dump_modes/Makefile | 23 +-
celt/dump_modes/dump_modes.c | 21 ++
celt/dump_modes/dump_modes_arch.h | 41 ++++
celt/dump_modes/dump_modes_arm_ne10.c | 125 ++++++++++
celt/kiss_fft.c | 27 ++-
celt/kiss_fft.h | 54 ++++-
celt/mdct.c | 15 +-
celt/mdct.h | 39 +++-
celt/modes.c | 8 +-
celt/static_modes_float.h | 25 ++
celt/static_modes_float_arm_ne10.h | 404 +++++++++++++++++++++++++++++++++
celt/tests/test_unit_dft.c | 52 +++--
celt/tests/test_unit_mathops.c | 6 +
celt/tests/test_unit_mdct.c | 81 ++++---
celt/tests/test_unit_rotation.c | 6 +
celt_headers.mk | 3 +
celt_sources.mk | 4 +
configure.ac | 81 +++++++
src/analysis.c | 8 +-
src/analysis.h | 2 +-
src/opus_encoder.c | 2 +-
src/opus_multistream_encoder.c | 9 +-
29 files changed, 1422 insertions(+), 105 deletions(-)
create mode 100644 celt/arm/celt_ne10_fft.c
create mode 100644 celt/arm/celt_ne10_mdct.c
create mode 100644 celt/arm/fft_arm.h
create mode 100644 celt/arm/mdct_arm.h
create mode 100644 celt/dump_modes/dump_modes_arch.h
create mode 100644 celt/dump_modes/dump_modes_arm_ne10.c
create mode 100644 celt/static_modes_float_arm_ne10.h
--
1.7.9.5
More information about the opus
mailing list