Commit Graph

242 Commits

Author SHA1 Message Date
Glenn Kasten
76b428d4b4 Remove redundant parentheses around == comparison operator
Bug: 28026175
Change-Id: I8ff9d8d1dd73933dc181f2745292a0a3398a2479
2016-04-18 16:10:57 -07:00
Jean-Michel Trivi
97a1b8140d Fix aacDecoder_drcExtractAndMap()
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
2016-04-15 08:14:50 -07:00
Jean-Michel Trivi
3fbcee8020 AAC/SBR decoder improvements and bugfixes
am: 203e3f2

* commit '203e3f28fbebec7011342017fafc2a0bda0ce530':
  AAC/SBR decoder improvements and bugfixes

Change-Id: I2f7f5bb7f4c486347a1fdbd7c481cde33037441e
2016-04-09 00:36:07 +00:00
Jean-Michel Trivi
125815b0ed AAC/SBR encoder improvements
am: 46ba367

* commit '46ba3676b854acbc69a4c7845f578d4c2886377b':
  AAC/SBR encoder improvements

Change-Id: Id839c5ba8b79eddb7e239b7ec1b26fb5079b7d81
2016-04-09 00:36:07 +00:00
Jean-Michel Trivi
203e3f28fb AAC/SBR decoder improvements and bugfixes
* 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
2016-04-08 19:10:30 +00:00
Jean-Michel Trivi
46ba3676b8 AAC/SBR encoder improvements
* 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
2016-04-08 10:52:42 -07:00
Jean-Michel Trivi
d75233c2da Fix aacDecoder_drcExtractAndMap()
am: 4834f01

* commit '4834f01bdf9b9f371fcbb0b9cf4f7297fdf1fd55':
  Fix aacDecoder_drcExtractAndMap()

Change-Id: I4f9994a4d4e858b6193b006d6971536c391e0478
2016-04-05 21:08:27 +00:00
Jean-Michel Trivi
4834f01bdf Fix aacDecoder_drcExtractAndMap()
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
2016-04-05 20:50:05 +00:00
Jean-Michel Trivi
65750eae65 SBR/AAC encoder updates, code clean up
am: e1c78ed

* commit 'e1c78ed73faa51f2c7fcb0c4a17a92be9cc747f5':
  SBR/AAC encoder updates, code clean up

Change-Id: I908adc47823de593c3e258c67f360da9321780f5
2016-04-05 17:43:33 +00:00
Jean-Michel Trivi
0713b4acff Remove compiler warnings, revised ARM QMF encoder
am: ef30836

* commit 'ef30836651bf059c3120c03dd11e08b6aafdae13':
  Remove compiler warnings, revised ARM QMF encoder

Change-Id: I07babb4dc36b6ad7aebeb62c303a8380e99d691e
2016-04-05 16:11:23 +00:00
Jean-Michel Trivi
e1c78ed73f SBR/AAC encoder updates, code clean up
* 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
2016-04-04 17:25:36 -07:00
Jean-Michel Trivi
ef30836651 Remove compiler warnings, revised ARM QMF encoder
Bug 8493170

Change-Id: I64d19a8a8059c5a96386b1eaac297fd2469515f8
2016-04-04 15:03:26 -07:00
Jean-Michel Trivi
f86e64f5c7 Fix stack corruption happening in aacDecoder_drcExtractAndMap() am: a06d1c2 am: 47739cd am: 118fc75
am: 7657556

* commit '7657556633262752ad2db9e3914a04128bd64e1b':
  Fix stack corruption happening in aacDecoder_drcExtractAndMap()
2016-03-22 02:57:52 +00:00
Jean-Michel Trivi
7657556633 Fix stack corruption happening in aacDecoder_drcExtractAndMap() am: a06d1c2 am: 47739cd
am: 118fc75

* commit '118fc75eee6cc763a3105d6e963b77d76d114a2e':
  Fix stack corruption happening in aacDecoder_drcExtractAndMap()
2016-03-22 02:49:48 +00:00
Jean-Michel Trivi
118fc75eee Fix stack corruption happening in aacDecoder_drcExtractAndMap() am: a06d1c2
am: 47739cd

* commit '47739cd9d8d7842436b90ef14207c935b0a799fe':
  Fix stack corruption happening in aacDecoder_drcExtractAndMap()
2016-03-22 02:44:32 +00:00
Jean-Michel Trivi
47739cd9d8 Fix stack corruption happening in aacDecoder_drcExtractAndMap()
am: a06d1c2

* commit 'a06d1c2b9af1621037b48557aac42b5ecbdb03b3':
  Fix stack corruption happening in aacDecoder_drcExtractAndMap()
2016-03-22 02:36:16 +00:00
Jean-Michel Trivi
a06d1c2b9a Fix stack corruption happening in aacDecoder_drcExtractAndMap()
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
2016-03-21 21:59:22 +00:00
Jean-Michel Trivi
e46ff0f7f9 Fix stack corruption happening in aacDecoder_drcExtractAndMap()
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
2016-03-21 21:58:57 +00:00
Martin Storsjo
50a98d1fd2 Merge remote-tracking branch 'aosp/master' 2016-03-09 08:49:40 +02:00
Martin Storsjo
0943e715f7 Remove android specific diagnostic logging 2016-01-26 22:42:09 +02:00
Timothy Gu
c8ad7a2ef9 Merge remote-tracking branch 'aosp/master' into update 2016-01-26 11:57:49 -08:00
Dan Willemsen
c203653dcb Remove __DATE__/__TIME__
am: 2d435aa433

* commit '2d435aa43323935bd8ed293f4f12cddfdee81eb3':
  Remove __DATE__/__TIME__
2015-11-03 19:44:47 +00:00
Dan Willemsen
2d435aa433 Remove __DATE__/__TIME__
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 6e8330732f)
2015-10-30 21:53:59 +00:00
Dan Willemsen
ca249e444b Merge "Remove __DATE__/__TIME__"
am: a73b059815

* commit 'a73b059815fc35ba689e5a8235b567b2353eabad':
  Remove __DATE__/__TIME__
2015-10-27 23:27:46 +00:00
Dan Willemsen
a73b059815 Merge "Remove __DATE__/__TIME__" 2015-10-27 23:16:31 +00:00
Dan Willemsen
6e8330732f Remove __DATE__/__TIME__
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
2015-10-23 09:48:27 -07:00
Vicente Olivert Riera
047376af8c libFDK/include/mips/cplx_mul.h: use C code instead of ASM
Replace the assembler code by the equivalent in C. This way it will work
for every MIPS ISA. Now the check for __mips_isa_rev < 6 is no longer
necessary, so remove it.

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
2015-09-21 11:59:02 +01:00
Marco Nelissen
106fb85b42 am 9f42dfb7: am b3c5a4bb: Fix crash on invalid channel config
* commit '9f42dfb7990a107da23454669459bb5e28d90726':
  Fix crash on invalid channel config
2015-09-15 02:12:36 +00:00
Marco Nelissen
9f42dfb799 am b3c5a4bb: Fix crash on invalid channel config
* commit 'b3c5a4bb8442ab3158fa1f52b790fadc64546f46':
  Fix crash on invalid channel config
2015-09-15 01:10:04 +00:00
Marco Nelissen
b3c5a4bb84 Fix crash on invalid channel config
Bug: 23876444
Change-Id: I90ad197811ebabceb5b5d74d6d3f20716fbe2d45
2015-09-08 15:50:08 +00:00
Dan Willemsen
8e8d920708 am 9f1b9bb7: (-s ours) am 5e7b21bb: Merge "build: wildcard isn\'t guaranteed to be sorted"
* commit '9f1b9bb71019b9a773d847cec6f10c198cd6c459':
2015-08-27 05:10:06 +00:00
Jasper Lievisse Adriaanse
2585f10da2 Fix the preprocessor statements controlling the use of mips{32,64}r1 instructions.
Only enable code using mips32/mips64 instructions if the compiler is targetting
this ISA. (integer madd and msub instructions aren't available in the
``canonical'' mips ISAs)
2015-08-13 10:53:07 +02:00
Dan Willemsen
ba8b18e1e8 am 5e7b21bb: Merge "build: wildcard isn\'t guaranteed to be sorted"
* commit '5e7b21bb954dcf74533a1725be62cf6bffcb34ce':
  build: wildcard isn't guaranteed to be sorted
2015-08-12 00:39:30 +00:00
Dan Willemsen
9f1b9bb710 am 5e7b21bb: Merge "build: wildcard isn\'t guaranteed to be sorted"
* commit '5e7b21bb954dcf74533a1725be62cf6bffcb34ce':
  build: wildcard isn't guaranteed to be sorted
2015-08-12 00:39:04 +00:00
Dan Willemsen
5e7b21bb95 Merge "build: wildcard isn't guaranteed to be sorted" 2015-08-12 00:24:06 +00:00
Dan Willemsen
f170f89906 build: wildcard isn't guaranteed to be sorted
To prevent this from changing between builds, wrap in $(sort )

Change-Id: I0571d7d8787a40ca107c7c735d79692d27bed06e
2015-08-07 13:51:09 -07:00
Martin Storsjo
83ac4a9860 Merge remote-tracking branch 'aosp/master' 2015-03-11 16:49:43 +02:00
Martin Storsjo
2ded8da912 Update the changelog for the upcoming 0.1.4 release 2015-03-05 10:26:54 +02:00
Martin Storsjo
d7fca408b4 Merge remote-tracking branch 'aosp/master' 2015-03-03 10:52:42 +02:00
Bill Yi
267940f5bd am f2df045a: Merge commit \'10d211b84a5f0790b28fcc8b3db66884d5f9c729\' into HEAD
* commit 'f2df045ae92ee655481f73b19986084308ae684c':
2015-02-20 00:22:52 +00:00
Bill Yi
f2df045ae9 Merge commit '10d211b84a5f0790b28fcc8b3db66884d5f9c729' into HEAD 2015-02-19 14:30:49 -08:00
Chih-Hung Hsieh
bd8021bef1 am 2b6bf8dc: Merge "Do not include genericStds_linux.cpp."
* commit '2b6bf8dc0941f3a4531030b950cf24fd31248b0b':
  Do not include genericStds_linux.cpp.
2015-02-18 02:53:59 +00:00
Chih-Hung Hsieh
2b6bf8dc09 Merge "Do not include genericStds_linux.cpp." 2015-02-18 02:41:47 +00:00
Chih-Hung Hsieh
09f1d04467 Do not include genericStds_linux.cpp.
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
2015-02-12 11:20:14 -08:00
Marco Nelissen
10d211b84a am 1c6ab7db: Merge "Use gcc for the AAC decoder"
* commit '1c6ab7db30867f3eee0d550adb015b340fbbc668':
  Use gcc for the AAC decoder
2015-02-11 01:51:25 +00:00
Marco Nelissen
1c6ab7db30 Merge "Use gcc for the AAC decoder" 2015-02-11 01:22:20 +00:00
Marco Nelissen
355baa79bf Use gcc for the AAC decoder
clang generates crashing code for this.

Change-Id: I90355d6735403290e7c0d93ff4854520b7b80f4a
2015-02-10 15:39:28 -08:00
Chih-Hung Hsieh
28e448bb55 am 66091e46: Merge "Fix checks for {Front,Side,Back}ElementIsCpe"
* commit '66091e46d7aae1b45ed96f5f39274954a296db71':
  Fix checks for {Front,Side,Back}ElementIsCpe
2014-12-01 19:45:05 +00:00
Chih-Hung Hsieh
66091e46d7 Merge "Fix checks for {Front,Side,Back}ElementIsCpe" 2014-12-01 19:31:58 +00:00
Dan Albert
57f76311ba am 84851b23: Merge "Move back to C++98."
* commit '84851b23d6f65ce03da4fa8ef2348b4f46c0ed0f':
  Move back to C++98.
2014-12-01 19:27:01 +00:00