[opus] [RFC PATCH v2] Encode optimize using libNe10

Viswanath Puttagunta viswanath.puttagunta at linaro.org
Mon Feb 16 10:18:45 PST 2015


Hello opus-dev,

Can we please have review on RFCv2? We have quite a few optimizations
(Eg: ifft/mdct_backwards, fixed point fft/ifft mdct_forward/backward
etc) that are in my pipeline that depend on this patch series being
accepted.

Regards,
Vish


On 4 February 2015 at 12:21, Viswanath Puttagunta
<viswanath.puttagunta at linaro.org> wrote:
> 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