Commit Graph

7 Commits

Author SHA1 Message Date
Jean-Michel Trivi 603f48ab99 AAC Decoder: introduce time domain limiter
Introduce time domain limiter. The module is per default enabled for all
  AAC-LC and HE-AAC v1/2 streams. For all ER-AAC-LD and ER-AAC-ELD streams
  the limiter is disabled per default. The feature can be en- or disabled
  via dynamic API parameter. Note that the limiter introduces an additional
  output delay which depends on the module parameters and the streams
  sampling rate.

Bug 9428126

Change-Id: I299a072340b33e2c324facbd347a72c8de3d380e
2014-03-31 23:41:44 +00:00
Jean-Michel Trivi 47c680c622 AAC Decoder: support 6.1/7.1 decoded as 5.1
- Add 6.1 and 7.1 channel support including downmixer. Per default the
     decoder creates a 5.1 channel output for all streams with more than six
     encoded channels.
     Modified file(s):
        libPCMutils/include/pcmutils_lib.h
        libPCMutils/src/pcmutils_lib.cpp
        libAACdec/include/aacdecoder_lib.h
        libAACdec/src/aac_rom.h
        libAACdec/src/aacdecoder.cpp
        libAACdec/src/aac_ram.cpp
        libAACdec/src/aacdec_drc.cpp
        libAACdec/src/aacdecoder_lib.cpp
        libAACdec/src/aac_rom.cpp
        libAACdec/src/aacdecoder.h
        libSBRdec/include/sbrdecoder.h
        libSBRdec/src/sbrdec_drc.h
        libSBRdec/src/sbrdecoder.cpp
        libSBRdec/src/sbr_ram.cpp
        libSBRdec/src/sbr_ram.h
        libMpegTPDec/include/tp_data.h
        libMpegTPDec/include/tpdec_lib.h
        libMpegTPDec/src/version
        libMpegTPDec/src/tpdec_asc.cpp
        libMpegTPEnc/include/tp_data.h
        libMpegTPEnc/src/version
        libSYS/include/FDK_audio.h
        libSYS/src/genericStds.cpp

   - Fix error concealment modules fade-out/in mechanism.
     Modified file(s):
        libAACdec/src/conceal.cpp

Bug 9428126

Change-Id: I3230bd2072314b730911cd7ec1740e290cb1d254
2013-12-30 09:40:08 -08:00
Jean-Michel Trivi dbf9680648 Encoder explicit signaling
* AAC-Encoder

   - Revise explicit signaling method which is required for downsampled SBR.
     The parameter is optional and default configuration is implicit signaling
     for dualrate SBR as before. In case of downsampled SBR and HE-AAC explicit
     signaling is configured as default.
     Modified file(s):
        documentation\aacEncoder.pdf
        libAACenc\include\aacenc_lib.h
        libAACenc\src\aacenc_lib.cpp
        libMpegTPEnc\src\tpenc_asc.cpp
        libMpegTPEnc\src\version
        libSYS\include\FDK_audio.h
        libSYS\src\genericStds.cpp

Bug 9428126

Change-Id: I35138140346f17384d109ee5829be9ea5bab80fc
2013-09-03 11:31:55 -07:00
Jean-Michel Trivi 3aec97e388 Encoder downsampled SBR
* AAC-Encoder

   - Introduce optional AACENC_SBR_RATIO encoder API parameter to configure
     dualrate or downsampled SBR explicitely. ELD makes use of downsampled SBR
     in default configuration.
     Modified file(s):
        documentation\aacEncoder.pdf
        libAACenc\include\aacenc_lib.h
        libAACenc\src\aacenc.h
        libAACenc\src\aacenc_lib.cpp

* SBR-Encoder

   - Implement downsampled SBR feature.
   - Revise sbr tuning parameter selection.
     Modified file(s):
        libSBRenc\include\sbr_encoder.h
        libSBRenc\src\bit_sbr.h
        libSBRenc\src\env_est.cpp
        libSBRenc\src\mh_det.cpp
        libSBRenc\src\nf_est.cpp
        libSBRenc\src\ps_main.cpp
        libSBRenc\src\sbr.h
        libSBRenc\src\sbr_def.h
        libSBRenc\src\sbr_encoder.cpp
        libSBRenc\src\sbr_rom.cpp
        libSBRenc\src\sbr_rom.h
        libSBRenc\src\sbrenc_freq_sca.cpp
        libSBRenc\src\sbrenc_freq_sca.h
        libSBRenc\src\ton_corr.cpp

Bug 9428126

Change-Id: I731720a10829272acaaf70b84525df00a09ff3d2
2013-08-29 12:24:04 -07:00
Jean-Michel Trivi 6ab36997af Bug 7170947 Update AAC codec
From Fraunhofer:
* AAC Decoder

   - Stick to the written MPEG standard instead of the MPEG reference software
     in terms of reference level normalization. Always set the program reference
     level equal to the target level. This disables level normalization using a
     default level for streams without embedded metadata.
     Modified file(s):
        libAACdec\src\aacdec_drc.cpp

   - Fix downmix channel assignment when using a WAV output channel ordering.
     Modified file(s):
        libPCMutils\src\pcmutils_lib.cpp

   - Retain signal accuracy and prevent LSB alteration when no level correction
     needs to be done.
     Modified file(s):
        libAACdec\src\aacdec_drc.h
        libAACdec\src\aacdec_drc.cpp
        libSBRdec\src\sbrdecoder.cpp
        libSBRdec\src\sbr_dec.cpp
        libSBRdec\src\sbrdec_drc.cpp

   - Align metadata processing with reference implementation.
     Modified file(s):
        libAACdec\src\aacdec_drc.h
        libAACdec\src\aacdecoder.cpp

* AAC-Encoder

   - Prevent potential overflow in energy calculation after TNS processing.
     Modified file(s):
       libAACenc\src\band_nrg.cpp

   - Added saturation for number of relevant lines which are used in pe
     calculation.
     Modified file(s):
       libAACenc\src\line_pe.cpp

   - Removed obsolete files.
     Deleded file(s):
       libAACenc\src\tns_param.h
       libAACenc\src\tns_param.cpp

* FDK-Library

   - Added x86 Count Leading Zeros intrinsic.
     Modified file(s):
        libFDK\include\clz.h
     Added file(s):
        libFDK\include\x86\clz_x86.h

   - Fixed compilation for MIPS GCC-4.4 and higher.
     Modified file(s):
        libFDK\include\mips\cplx_mul.h
        libFDK\include\mips\fixmul_mips.h

Change-Id: I4be65f07f88d412224c7fddc3f054e8f451176cc
2012-10-02 10:46:47 -07:00
Jean-Michel Trivi 381d69840a Bug fixes in AAC decoder, AAC encoder, FDK library
Latest code drop from Fraunhofer:

* AAC-Decoder

   - Expanded AAC-LD/ELD decoder TNS max band tables to avoid wrong data
     access for sampling rates <22kHz and >48kHz.
     Modified file(s):
        libAACdec\src\aacdec_tns.cpp
        libAACdec\src\aac_rom.h
        libAACdec\src\aac_rom.cpp

  - Fixed ELD synthesis QMF filterbank scaling for downsampled SBR.
    Modified file(s):
        libFDK\src\qmf.cpp

* AAC-Encoder

  - Fixed bit rate limiting for lower limit as introduced in the Delivery 2012-05-11.
    Modified file(s):
        libAACenc\include\aacenc_lib.h
        libAACenc\src\aacenc.h
        libAACenc\src\aacenc.cpp
        libSBRenc\src\sbr_rom.h
        libSBRenc\src\sbr_rom.cpp

  - Allow negative prediction gain as meaning that there is no coding gain.
    Make use of scaleValueSaturate in gauss window calculation.
    Modified file(s):
        libAACenc\src\aacenc_tns.cpp

  - Added energy saturation to prevent overflow in short blocks.
    Modified file(s):
        libAACenc\src\grp_data.cpp

  - Perform scalefactor adaption in case quantized lines are out of valid range.
    Modified file(s):
        libAACenc\src\quantize.cpp

  - Interrupt quantization loop when no spectral data is available.
    Adjustments in bitreservoir adaption.
    Modified file(s):
        libAACenc\src\qc_main.cpp

  - Indroduced dynamic scaling in none missing harmonic energy lowering compensation.
    Modified file(s):
        libSBRenc\src\env_est.cpp

* FDK-Library

  - Fixed saturation for negative values in scaleValueSaturate.
    Modified file(s):
        libFDK\include\scale.h

Change-Id: If830ea65caef6b5554281e4b7a77a8b2e08825ce
2012-09-09 11:52:09 -07:00
The Android Open Source Project 2228e36059 Snapshot 2bda038c16
Change-Id: If584e579464f28b97d50e51fc76ba654a5536c54
2012-07-11 10:15:24 -07:00