1. 21 May, 2014 1 commit
    • Jean-Michel Trivi's avatar
      AAC Decoder: flush/seek improvements · af967fcc
      Jean-Michel Trivi authored
      Improve flushing and seeking.
      Add field to the API stream info structure signaling the additional output
       delay for flushing and delay compensation.
      
      Bug 9428126
      
      Change-Id: I808412905563ea3de50a2e77a9b5dfee829cd2ed
      af967fcc
  2. 09 Apr, 2014 2 commits
  3. 31 Mar, 2014 1 commit
    • Jean-Michel Trivi's avatar
      AAC Decoder: introduce time domain limiter · 603f48ab
      Jean-Michel Trivi authored
      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
      603f48ab
  4. 19 Mar, 2014 2 commits
  5. 12 Mar, 2014 1 commit
  6. 11 Mar, 2014 1 commit
    • Marcus Oakland's avatar
      AArch64: Make LONG 4 bytes · f2f96fb8
      Marcus Oakland authored
      The libSYS/include/machine_type.h header file states LONG should be
      "Data type representing 4 byte signed integer on all supported
      platforms" but only provided for defining LONG as INT and ULONG as
      UINT when __x86_64__ was defined. This has been changed to when
      __LP64__ is defined, so that it also applies to AArch64. The change
      to libFDK/include/common_fix.h is then needed to get the project to
      compile.
      
      Change-Id: Iea42d7eca97dcc9da772a05b207d134cb999a72a
      Signed-off-by: default avatarMarcus Oakland <marcus.oakland@arm.com>
      f2f96fb8
  7. 30 Dec, 2013 1 commit
    • Jean-Michel Trivi's avatar
      AAC Decoder: support 6.1/7.1 decoded as 5.1 · 47c680c6
      Jean-Michel Trivi authored
         - 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
      47c680c6
  8. 03 Sep, 2013 3 commits
    • Jean-Michel Trivi's avatar
      Encoder 7.1 support · fa3eba16
      Jean-Michel Trivi authored
      * AAC-Encoder
      
         - Add 7.1 rear surround and 7.1 front center support to supported encoder
           channel modes. Change max channels from 6 to 8 and add 7.1 configuration
           to bandwidth and channel mapping functions.
           Modified file(s):
              libAACenc\include\aacenc_lib.h
              libAACenc\src\aacEnc_ram.cpp
              libAACenc\src\aacEnc_ram.h
              libAACenc\src\aacenc.cpp
              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\bitenc.cpp
              libAACenc\src\channel_map.cpp
              libAACenc\src\interface.h
              libAACenc\src\metadata_compressor.cpp
              libAACenc\src\psy_main.cpp
              libAACenc\src\psy_main.h
              libAACenc\src\qc_data.h
              libAACenc\src\qc_main.cpp
              libAACenc\src\qc_main.h
      
      * SBR-Encoder
      
         - Support up to 7.1 audio channels. Changed max channels from 6 to 8.
           Modified file(s):
              libSBRenc\include\sbr_encoder.h
              libSBRenc\src\sbr.h
              libSBRenc\src\sbr_encoder.cpp
              libSBRenc\src\sbr_ram.cpp
      
      * Transport-Encoder
         - Add 7.1 channel configuration to audio specific config writer in
           transport encoder library.
           Modified file(s):
              libMpegTPEnc\src\tpenc_asc.cpp
              libMpegTPEnc\src\version
      
      * SYS-Library
         - Add 7.1 channel modes to CHANNEL_MODE description.
           Modified file(s):
              libSYS\include\FDK_audio.h
              libSYS\src\genericStds.cpp
      
      Bug 9428126
      
      Change-Id: Ide53583aa8e03df4537b98db80740dfe0e7a9e0f
      fa3eba16
    • Jean-Michel Trivi's avatar
      Encoder ELD auto configurator · 9f455bea
      Jean-Michel Trivi authored
      * AAC-Encoder
      
         - Introduce ELD auto configurator to get predefined configuration at given
           bitrate and sampling rate. The configurator selects SBR on/off and if SBR
           enabled distinguishes between dualrate and downsampled SBR. In default
           configuration the ELD auto configurator is enabled.
           Modified file(s):
              libAACenc\include\aacenc_lib.h
              libAACenc\src\aacenc_lib.cpp
      
      Bug 9428126
      
      Change-Id: I01acc9c37e57c4154b3a818d496d538b7f8b227d
      9f455bea
    • Jean-Michel Trivi's avatar
      Encoder explicit signaling · dbf96806
      Jean-Michel Trivi authored
      * 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
      dbf96806
  9. 29 Aug, 2013 2 commits
    • Jean-Michel Trivi's avatar
      Encoder downsampled SBR · 3aec97e3
      Jean-Michel Trivi authored
      * 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
      3aec97e3
    • Jean-Michel Trivi's avatar
      AAC Encoder low delay quality · 7ad97579
      Jean-Michel Trivi authored
      * AAC-Encoder
      
         - Revise bit distribution for lowdelay configuration to improve encoder
           audio quality.
         - Adjust lowdelay bitreservoir for low bitreservoir configuration.
           Modified file(s):
              libAACenc\src\aacEnc_ram.cpp
              libAACenc\src\aacenc.cpp
              libAACenc\src\aacenc_lib.cpp
              libAACenc\src\aacenc_tns.cpp
              libAACenc\src\adj_thr.cpp
              libAACenc\src\adj_thr.h
              libAACenc\src\block_switch.cpp
              libAACenc\src\block_switch.h
              libAACenc\src\interface.h
              libAACenc\src\psy_main.cpp
              libAACenc\src\qc_data.h
              libAACenc\src\qc_main.cpp
      
      * FDK-Library
      
         - Increase the accuracy in CalcInvLdData() calculation which improves the
           encoder audio quality.
           Modified file(s):
              libFDK\src\fixpoint_math.cpp
      
      Bug 9428126
      
      Change-Id: I302d7f4c3aeccf79e1b85f20e18a31e6e2b10544
      7ad97579
  10. 27 Aug, 2013 5 commits
    • Jean-Michel Trivi's avatar
      Decoder parse ASC · 206a397c
      Jean-Michel Trivi authored
      * AAC-Decoder
      
         - Add support for explicit backward compatible signaling via ASC extension.
      
      Bug 9428126
      
      Change-Id: I0cb8226da07e3684bbb7eb95d10b6040973aa0f6
      206a397c
    • Jean-Michel Trivi's avatar
      Decoder stability, sanity checks improvements · 5016eb7f
      Jean-Michel Trivi authored
      * AAC-Decoder
      
         - Improved PCE handling for saver (re-)configuration and metadata processing.
           Modified file(s):
              libAACdec/src/aacdecoder.cpp
              libAACdec/src/aacdecoder_lib.cpp
      
         - Transport layer changes (config found) -> to be evaluated.
           Modified file(s):
              libMpegTPDec/include/tpdec_lib.h
              libMpegTPDec/src/tpdec_latm.h
              libMpegTPDec/src/version
              libMpegTPDec/src/tpdec_asc.cpp
              libMpegTPDec/src/tpdec_lib.cpp
              libMpegTPDec/src/tpdec_adts.cpp
              libMpegTPDec/src/tpdec_latm.cpp
              libSYS/include/FDK_audio.h
              libSYS/src/genericStds.cpp
      
         - Enable concealment state machine to skip states if the corresponding
           parameter is set to zero.
           Modified file(s):
              libAACdec/src/conceal.cpp
      
         - Add some more sanity checks to avoid segmentation faults especially when
           setting dynamic API params.
           Modified file(s):
              libAACdec/src/aacdecoder_lib.cpp
      
         - Fix to do a fail-safe initialization of IMDCT for all channels even with
           corrupt streams.
           Modified file(s):
              libAACdec/src/aacdecoder.cpp
      
         - HCR decoder fix (remove warnings).
           Modified file(s):
              libAACdec/src/block.cpp
      
         - Fix border calculation in SBR decoder's LPP transposer patch determination.
           Modified file(s):
              libSBRdec/src/env_dec.cpp
              libSBRdec/src/sbrdecoder.cpp
              libSBRdec/src/lpp_tran.cpp
      
      Bug 9428126
      
      Change-Id: Ib415b702b88a7ec8e9a55789d79cafb39296d26b
      5016eb7f
    • Jean-Michel Trivi's avatar
      Decode dynamic range control improvements · b9774f90
      Jean-Michel Trivi authored
      * AAC-Decoder
      
         - Only set the program reference level if it has changed compared to the
           previous value. This allows setting it on a frame-by-frame basis without
           limitations.
           Modified file(s):
              libAACdec/src/aacdec_drc.cpp
              libAACdec/src/aacdec_drc.h
      
         - Add expiry counter for the program reference level.
           Modified file(s):
              libAACdec/src/aacdec_drc.cpp
              libAACdec/src/aacdec_drc_types.h
      
         - Disable scaling of light compression gain values when heavy compression
           mode is enabled to have the full light compression as fallback if no heavy
           values are available.
           Modified file(s):
              libAACdec/src/aacdec_drc.cpp
              libAACdec/src/aacdecoder_lib.cpp
              libAACdec/src/aacdec_drc_types.h
      
         - Change initialization and channel disabling to improve start-up behavior in
           SBR decoder.
           Modified file(s):
              libSBRdec/src/sbrdecoder.cpp
              libSBRdec/src/sbrdec_drc.cpp
      
      Bug 9428126
      
      Change-Id: Ie1d3949c53910506da2547d32fe3bf6ee7606eb4
      b9774f90
    • Jean-Michel Trivi's avatar
      Decode parametric stereo even with invalid channel config · 2ddc922d
      Jean-Michel Trivi authored
      AAC decoder: Allow decoding of Parametric Stereo (AOT 29) bitstreams
         with invalid channel config 2.
      
      Bug 9428126
      
      Change-Id: I1e8b801dfc0e6b1706421342d4985512e83f0dbe
      2ddc922d
    • Jean-Michel Trivi's avatar
      FDK update for downsampled SBR · 3a0a6955
      Jean-Michel Trivi authored
      Add missing support for downsampled SBR in libFDK
      
      Bug 9428126
      
      Change-Id: Idb732f8d31a115d36dd4b22916599db7fab98cae
      3a0a6955
  11. 20 Aug, 2013 8 commits
    • Jean-Michel Trivi's avatar
      AAC encoder metadata improvement · 16c472c2
      Jean-Michel Trivi authored
      AAC-Encoder
      
         - Introduce metadata support for parametric stereo audio object type.
           Write metadata matrix mixdown coefficient only for channel config 5 and 6.
           Modified file(s):
              libAACenc/src/aacenc_lib.cpp
      
         - Revise metadata encoder downmix gain and fix matrix mixdown coefficient.
           Modified file(s):
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/metadata_compressor.cpp
              libMpegTPEnc/src/tpenc_asc.cpp
              libMpegTPEnc/src/tpenc_lib.cpp
              libMpegTPEnc/src/version
      
      Bug 9428126
      
      Change-Id: I87f5f1a1fdddd8223187aa0f9dc733e0ecc3e7e4
      16c472c2
    • Jean-Michel Trivi's avatar
      SBR header period · a84864de
      Jean-Michel Trivi authored
      AAC encoder: Connect SBR and PS header repetition rate with AACENC_HEADER_PERIOD
           parameter of the encoder API.
      
      Bug 9428126
      
      Change-Id: Ia1ab965de9eaa2ac229d0c395a337cbd4d20cba1
      a84864de
    • Jean-Michel Trivi's avatar
      AAC encoder bitrate limitation · 3c59acf1
      Jean-Michel Trivi authored
      AAC encoder: Make the bit rate limiting functionality more stable for multichannel
           configurations where element bit rate for SBR can differ significantly.
      
      Bug 9428126
      
      Change-Id: I35b134c5b3c160a8f5a16b4314782b731fe49cd8
      3c59acf1
    • Jean-Michel Trivi's avatar
      SBR encoder improvement · fc4d7b0e
      Jean-Michel Trivi authored
      SBR encoder: Introduce coupling energy ratio limitation to prevent undesirable SBR band
           amplification while decoding.
      
      Bug 9428126
      
      Change-Id: I18a77cd1a178fff7531b490779a29a0df7d993af
      fc4d7b0e
    • Jean-Michel Trivi's avatar
      Encoder intensity fix · 60a27b7f
      Jean-Michel Trivi authored
      AAC encoder: Prevent illegal intensity values delta coding at short blocks.
      
      Bug 9428126
      
      Change-Id: Ic287b86f3229022740f2317ea74aabe612de5e6b
      60a27b7f
    • Jean-Michel Trivi's avatar
      Encoder quantizer fix · ed247dfa
      Jean-Michel Trivi authored
      AAC Encoder: Saturate quantizer shift value to prevent
        undefined behaviour.
      
      In very rare cases the shift value 'totalShift = (16-4)-(3*(totalShift>>2))'
       can be greater than accu data width. If you apply a shift with more then
       31 bit the result depends on the architecture and is not defined in C.
      For certain platforms zeros are shifted in. That would be our desired behaviour.
      On other platforms the shift will be applied as modulo. For example >>34
       would be applied as >>2. To prevent this discrepancy the shift value
       is limited/saturated to DFRACT_BITS-1. 'accu >>= fixMin(totalShift,DFRACT_BITS-1)'.
      
      Bug 9428126
      
      Change-Id: I27177654c4dc22cf899bc35dad9cdd040dccb02d
      ed247dfa
    • Jean-Michel Trivi's avatar
      Decode and SYS lib cleanup · 577fcbb5
      Jean-Michel Trivi authored
      * AAC-Encoder
      
         - Remove source snippets related to unsupported frame length of 960.
         - Adjust minBits initialization for disabled VBR configuration.
           Modified file(s):
              libAACenc/src/aacenc.h
              libAACenc/src/aacenc_lib.cpp
              libAACenc/src/aacenc_tns.cpp
              libAACenc/src/bandwidth.cpp
              libAACenc/src/psy_const.h
              libAACenc/src/transform.h
      
         - Revise encoder parameter restrictions: "Error Resilient(ER) AAC Low Complexity"
           is not supported. Where the AAC part of the FDK encoder threw an
           initialization error, now the aacEncoder_SetParam() returns an error
           before initialization if the application tries to configure this
           audio object type.
           Modified file(s):
              libAACenc/src/aacenc_lib.cpp
      
      * SYS-Library
      
         - Portability fix for Mingw32.
           Modified file(s):
              libSYS/include/machine_type.h
      
         - Minor changes.
           Modified file(s):
              libSYS/include/wav_file.h
              libSYS/src/wav_file.cpp
              libSYS/src/cmdl_parser.cpp
              libSYS/src/genericStds.cpp
      
      Bug 9428126
      
      Change-Id: I9fa44923d34f033d0dc607f2b85abacb8a85eb61
      577fcbb5
    • Jean-Michel Trivi's avatar
      Disclaimer update, lib version increment · 4f0d9705
      Jean-Michel Trivi authored
      - Update disclaimer in all source files.
      - Increment library version in each FDK sub-module.
      
      Bug 9428126
      
      Change-Id: I490b96d4ee472246b01483202b0bb4f1e9c2a5d7
      4f0d9705
  12. 05 Aug, 2013 1 commit
  13. 30 Nov, 2012 4 commits
  14. 02 Oct, 2012 1 commit
    • Jean-Michel Trivi's avatar
      Bug 7170947 Update AAC codec · 6ab36997
      Jean-Michel Trivi authored
      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
      6ab36997
  15. 12 Sep, 2012 3 commits
  16. 09 Sep, 2012 1 commit
    • Jean-Michel Trivi's avatar
      Bug fixes in AAC decoder, AAC encoder, FDK library · 381d6984
      Jean-Michel Trivi authored
      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
      381d6984
  17. 04 Sep, 2012 1 commit
  18. 02 Sep, 2012 1 commit
    • Irina Tirdea's avatar
      Remove workaround in aac for broken toolchain · ad749575
      Irina Tirdea authored
      aac project forces the system not to include sys/types.h by defining
      _SYS_TYPES_H_. This is a workaround for broken android toolchain.
      
      This is no longer needed in latest android version and can be safely
      removed. This will also lead to more errors if changes in bionic
      headers are needed.
      
      Change-Id: Icb76c207d6b47e811eacff9f9403177629bfb451
      Signed-off-by: default avatarIrina Tirdea <irina.tirdea@intel.com>
      ad749575
  19. 15 Aug, 2012 1 commit