1. 08 Apr, 2016 2 commits
    • Jean-Michel Trivi's avatar
      AAC/SBR decoder improvements and bugfixes · 203e3f28
      Jean-Michel Trivi authored
      * AAC-Decoder
      
         - Add support for AOT 20 (ER-AAC scalable) (base layer only)
         - Add support for AAC as used in Digital Radio Mondiale (DRM30/DRM+)
           Modified file(s):
              libAACdec/src/aacdecoder.cpp
              libAACdec/src/aacdecoder_lib.cpp
              libFDK/src/FDK_core.cpp
              libFDK/src/FDK_tools_rom.cpp
              libMpegTPDec/src/tpdec_asc.cpp
              libMpegTPDec/src/tpdec_lib.cpp
              libMpegTPDec/src/version
              libSBRdec/include/sbrdecoder.h
              libSBRdec/src/env_extr.h
              libSBRdec/src/sbrdecoder.cpp
           Added file(s):
              libMpegTPDec/src/tpdec_drm.cpp
              libMpegTPDec/src/tpdec_drm.h
      
         - Fix sanity check in HCR module that was performed at the wrong point in time.
           Modified file(s):
              libAACdec/src/aacdecoder_lib.cpp
              libAACdec/src/block.cpp
      
         - Extend core sampling rate support up to 96 kHz.
           Modified file(s):
              libAACdec/src/aac_rom.cpp
              libAACdec/src/aacdecoder.cpp
              libAACdec/src/aacdecoder_lib.cpp
      
         - Return correct audio output channel description according number of output
           channels.
           Modified file(s):
              libAACdec/src/aacdecoder_lib.cpp
      
         - Indroduce decoder intern output buffer. This change allows to use framework
           output buffer with the actual size of the deocder output channels.
           Modified file(s):
              libAACdec/include/aacdecoder_lib.h
              libAACdec/src/aacdecoder.h
              libAACdec/src/aacdecoder_lib.cpp
      
      * SBR-Decoder
      
         - Increase robustness for erroneous input data.
         - Improve error concealment performance.
         - Fix handling of lowest sub-band for LD-SBR
           Modified file(s):
              libAACdec/src/aacdecoder.cpp
              libAACdec/src/aacdecoder_lib.cpp
              libSBRdec/src/env_calc.cpp
              libSBRdec/src/env_dec.cpp
              libSBRdec/src/env_extr.cpp
              libSBRdec/src/env_extr.h
              libSBRdec/src/sbr_dec.cpp
              libSBRdec/src/sbr_rom.cpp
              libSBRdec/src/sbr_rom.h
              libSBRdec/src/sbrdecoder.cpp
      
         - Add QMF delay compensation for ELD v2 streams decoded with the complex
           low delay filter-bank.
           Modified file(s):
              libSBRdec/src/sbr_dec.cpp
              libSBRdec/src/sbr_dec.h
              libSBRdec/src/sbrdecoder.cpp
      
         - Introduce a different handling of frames to be flushed
           dependent on whether there are delayed frames available or not.
           Modified file(s):
              libSBRdec/src/sbr_ram.h
              libSBRdec/src/sbrdecoder.cpp
      
         - Calculate the correct number of samples for dual-mono copy in case of no
           available PS data.
           Modified file(s):
              libSBRdec/src/sbrdecoder.cpp
      
      * SYS-Library
      
         - Change include order of genericStds.h to prevent conflict with definitions
           which are also used in math.h.
           Modified file(s):
              libSYS/src/genericStds.cpp
      
      Change-Id: I3ecffbad85f39b056213107955cfadbeb3f4b6e1
      203e3f28
    • Jean-Michel Trivi's avatar
      AAC/SBR encoder improvements · 46ba3676
      Jean-Michel Trivi authored
      * AAC-Encoder
      
        - AAC-ELD core encoder audio quality tuning. Update tuning tables, configure
          bitreservoir size and adapt afterburner iteration value.
           Modified file(s):
              libAACenc/src/aacenc.h
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/adj_thr.cpp
              libAACenc/src/adj_thr.h
              libAACenc/src/adj_thr_data.h
              libAACenc/src/bandwidth.cpp
              libAACenc/src/pnsparam.cpp
              libAACenc/src/qc_main.cpp
      
         - Introduze dead zone quantizer for ELD to improve audio quality at certain
           configurations.
           Modified file(s):
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/adj_thr.cpp
              libAACenc/src/adj_thr.h
              libAACenc/src/qc_data.h
              libAACenc/src/qc_main.cpp
              libAACenc/src/quantize.cpp
              libAACenc/src/quantize.h
              libAACenc/src/sf_estim.cpp
              libAACenc/src/sf_estim.h
      
         - Revise TNS module to improve ELD audio quality.
         - Use new window function and separate prediction gain according TNS filters.
         - Add missing memory initilization to TNS configuration.
           Modified file(s):
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/aacenc_tns.cpp
              libAACenc/src/aacenc_tns.h
              libAACenc/src/psy_main.cpp
              libAACenc/src/tns_func.h
      
      * SBR-Encoder
      
         - Revise frequency resolution calculation and handle differently depending
           on number of envelopes and split frames decision.
         - Add and adjust ELD SBR tuning tables.
           Modified file(s):
              libSBRenc/include/sbr_encoder.h
              libSBRenc/src/bit_sbr.h
              libSBRenc/src/env_est.cpp
              libSBRenc/src/fram_gen.cpp
              libSBRenc/src/fram_gen.h
              libSBRenc/src/mh_det.cpp
              libSBRenc/src/sbr_def.h
              libSBRenc/src/sbr_encoder.cpp
              libSBRenc/src/sbr_rom.cpp
              libSBRenc/src/tran_det.cpp
      
         - Replace ELD transient detector with fast implementation.
           Modified file(s):
              libSBRenc/src/env_est.cpp
              libSBRenc/src/env_est.h
              libSBRenc/src/fram_gen.cpp
              libSBRenc/src/sbr_def.h
              libSBRenc/src/sbr_encoder.cpp
              libSBRenc/src/tran_det.cpp
              libSBRenc/src/tran_det.h
      
      * FDK-Library
         - Introduce generic compare function in tools library.
           Modified file(s):
              libFDK/include/fixpoint_math.h
              libFDK/src/FDK_core.cpp
      
      * SBR-Encoder
      
        -  Revise ELD frame splitter to improve bit distribution.
           Modified file(s):
              libSBRenc/include/sbr_encoder.h
              libSBRenc/src/bit_sbr.h
              libSBRenc/src/env_est.cpp
              libSBRenc/src/fram_gen.cpp
              libSBRenc/src/fram_gen.h
              libSBRenc/src/sbr_encoder.cpp
              libSBRenc/src/tran_det.cpp
              libSBRenc/src/tran_det.h
      
         - Configure amplitude resolution according the tonality of the audio signal.
           Modified file(s):
              libSBRenc/include/sbr_encoder.h
              libSBRenc/src/bit_sbr.h
              libSBRenc/src/env_est.cpp
              libSBRenc/src/nf_est.cpp
              libSBRenc/src/nf_est.h
              libSBRenc/src/sbr_def.h
              libSBRenc/src/sbr_encoder.cpp
              libSBRenc/src/ton_corr.cpp
              libSBRenc/src/ton_corr.h
              libSBRenc/src/tran_det.cpp
              libSBRenc/src/tran_det.h
      
      Change-Id: Ie0672b989a06ee63b50240616b8d1d4b790b6cb2
      46ba3676
  2. 05 Apr, 2016 2 commits
    • Jean-Michel Trivi's avatar
      Fix aacDecoder_drcExtractAndMap() · 4834f01b
      Jean-Michel Trivi authored
      Parse DVB DRC data only when numThreads is below
       MAX_DRC_THREADS. The post-increment is necessary as
       it is used in fill element DRC data section.
      This solution parses as many DRC payloads as allowed by
       MAX_DRC_THREADS and skips all remaining DRC elements in the stream.
      
      Bug 27792766
      Bug 26751339
      
      Change-Id: Ie1641888bac1757c4d1491119f977fc5d436eaea
      4834f01b
    • Jean-Michel Trivi's avatar
      SBR/AAC encoder updates, code clean up · e1c78ed7
      Jean-Michel Trivi authored
      * SBR-Encoder
      
         - Prevent noise level overflow in noise floor detection.
         - Saturate threshold calculation in transient detection.
           Modified file(s):
              libSBRenc/src/nf_est.cpp
              libSBRenc/src/sbr_encoder.cpp
              libSBRenc/src/tran_det.cpp
      
      * AAC-Encoder
      
         - Expand input data range of GetInvInt() function. There was an encoder
           assert observed in non-default bitrate configuration.
           Modified file(s):
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/intensity.cpp
              libFDK/include/fixpoint_math.h
              libFDK/src/FDK_core.cpp
              libFDK/src/FDK_tools_rom.cpp
      
         - Make sure that the encoder is stable with regard to very low audio bandwidth
           confguration parameter value.
         - Fix lowdelay blending for low audio bandwidth.
           Modified file(s):
              libAACenc/src/aacenc.cpp
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/adj_thr.cpp
              libAACenc/src/psy_configuration.cpp
              libAACenc/src/psy_main.cpp
      
         - Disable pseudo surround flag in case metadata matrix mixdown index is
           present in program config element.
           Modified file(s):
              libAACenc/src/aacenc_lib.cpp
      
         - Enable variable bitrate mode in encoder api.
         - Add AACENC_PEAK_BITRATE parameter to encoder api.
         - Add AACENC_AUDIOMUXVER parameter to encoder api.
           Modified file(s):
              libAACenc/include/aacenc_lib.h
              libAACenc/src/aacenc.cpp
              libAACenc/src/aacenc.h
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/qc_main.cpp
              libMpegTPEnc/src/tpenc_latm.cpp
              libMpegTPEnc/src/version
      
      * FDK-Sources
      
         - Code clean up. Remove unneeded pseudo audio object types and transport types.
           Modified file(s):
              libAACdec/src/aacdecoder.cpp
              libAACdec/src/aacdecoder_lib.cpp
              libAACenc/include/aacenc_lib.h
              libAACenc/src/aacenc.cpp
              libAACenc/src/aacenc_lib.cpp
              libFDK/src/FDK_tools_rom.cpp
              libMpegTPDec/src/tpdec_lib.cpp
              libMpegTPDec/src/version
              libMpegTPEnc/src/tpenc_latm.cpp
              libMpegTPEnc/src/version
              libSBRdec/src/sbrdecoder.cpp
              libSBRenc/src/sbr_encoder.cpp
              libSYS/include/FDK_audio.h
              libSYS/src/genericStds.cpp
      
      Change-Id: I807a53cb7f48c9ee7563cb8da1d0c52221576ca6
      e1c78ed7
  3. 04 Apr, 2016 1 commit
  4. 22 Mar, 2016 4 commits
  5. 21 Mar, 2016 2 commits
    • Jean-Michel Trivi's avatar
      Fix stack corruption happening in aacDecoder_drcExtractAndMap() · a06d1c2b
      Jean-Michel Trivi authored
      In the aacDecoder_drcExtractAndMap() function, self->numThreads
        can be used after having exceeded its intended max value,
        MAX_DRC_THREADS, causing memory to be cleared after the
        threadBs[MAX_DRC_THREADS] array.
      The crash is prevented by never using self->numThreads with
        a value equal to or greater than MAX_DRC_THREADS.
      A proper fix will be required as there seems to be an issue as
        to which entry in the threadBs array is meant to be initialized
        and used.
      
      Bug 26751339
      
      Change-Id: I655cc40c35d4206ab72e83b2bdb751be2fe52b5a
      a06d1c2b
    • Jean-Michel Trivi's avatar
      Fix stack corruption happening in aacDecoder_drcExtractAndMap() · e46ff0f7
      Jean-Michel Trivi authored
      In the aacDecoder_drcExtractAndMap() function, self->numThreads
        can be used after having exceeded its intended max value,
        MAX_DRC_THREADS, causing memory to be cleared after the
        threadBs[MAX_DRC_THREADS] array.
      The crash is prevented by never using self->numThreads with
        a value equal to or greater than MAX_DRC_THREADS.
      A proper fix will be required as there seems to be an issue as
        to which entry in the threadBs array is meant to be initialized
        and used.
      
      Bug 26751339
      
      Change-Id: I655cc40c35d4206ab72e83b2bdb751be2fe52b5a
      e46ff0f7
  6. 03 Nov, 2015 1 commit
  7. 30 Oct, 2015 1 commit
    • Dan Willemsen's avatar
      Remove __DATE__/__TIME__ · 2d435aa4
      Dan Willemsen authored
      Building __DATE__/__TIME__ into the binaries means that every build will
      create different binaries, even if all the sources are identical. This
      also means that any libraries including this one will need to be patched
      during every OTA.
      
      Nothing appears to use the build_date/build_time fields, so just replace
      them with empty strings.
      
      Bug: 24204119
      Change-Id: I9543eb388a1e8ab9284df9035a62fc8942cdc082
      (cherry picked from commit 6e833073)
      2d435aa4
  8. 27 Oct, 2015 2 commits
  9. 23 Oct, 2015 1 commit
    • Dan Willemsen's avatar
      Remove __DATE__/__TIME__ · 6e833073
      Dan Willemsen authored
      Building __DATE__/__TIME__ into the binaries means that every build will
      create different binaries, even if all the sources are identical. This
      also means that any libraries including this one will need to be patched
      during every OTA.
      
      Nothing appears to use the build_date/build_time fields, so just replace
      them with empty strings.
      
      Bug: 24204119
      Change-Id: I9543eb388a1e8ab9284df9035a62fc8942cdc082
      6e833073
  10. 15 Sep, 2015 2 commits
  11. 08 Sep, 2015 1 commit
  12. 27 Aug, 2015 1 commit
  13. 12 Aug, 2015 3 commits
  14. 07 Aug, 2015 1 commit
  15. 20 Feb, 2015 1 commit
  16. 19 Feb, 2015 1 commit
  17. 18 Feb, 2015 2 commits
  18. 12 Feb, 2015 1 commit
    • Chih-Hung Hsieh's avatar
      Do not include genericStds_linux.cpp. · 09f1d044
      Chih-Hung Hsieh authored
      The __aeabi_memcpy functions are already defined in Android libc.
      Redefining them to call memcpy will become recursive when clang/llvm
      converts the memcpy call to __aeabi_memcpy.
      With this change, we can enable clang/llvm by removing LOCAL_CLANG from Android.mk.
      
      BUG: 12216385
      Change-Id: I8b8b4ba7f3ff1e66f8110fc3b6356865a582c1d8
      09f1d044
  19. 11 Feb, 2015 2 commits
  20. 10 Feb, 2015 1 commit
  21. 01 Dec, 2014 5 commits
  22. 28 Nov, 2014 1 commit
    • Dan Albert's avatar
      Move back to C++98. · d52f3747
      Dan Albert authored
      This code depends on narrowing hex literals to a signed long, which
      trips -Wc++11-narrowing (the fix would be to explicitly cast each
      value to signed).
      
      Change-Id: I581a02ef0eeee5a2d95ce0ff2ec6f7ff26f3a074
      d52f3747
  23. 25 Oct, 2014 1 commit
  24. 23 Sep, 2014 1 commit