[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