Commit Graph

1301 Commits

Author SHA1 Message Date
Keun-young Park 8d8580c267 am 2decc778: Merge "[MIPSR6] Skip assembler code using MFHI/MFLO on mips32r6"
* commit '2decc77814e729df47464a504123f9b398ac7077':
  [MIPSR6] Skip assembler code using MFHI/MFLO on mips32r6
2014-08-14 18:42:23 +00:00
Keun-young Park 2decc77814 Merge "[MIPSR6] Skip assembler code using MFHI/MFLO on mips32r6" 2014-08-14 16:10:21 +00:00
Duane Sand 5c51a5898e [MIPSR6] Skip assembler code using MFHI/MFLO on mips32r6
Change-Id: I3dacd96cf9d5cf9c3d34d612ebb0456d64bc23bc
2014-07-31 15:40:38 -07:00
Jean-Michel Trivi 6792cf6361 AAC-Decoder: SBR delay for gapless
Revise decoder output delay determination. The output delay consisted of
  concealment and limiter delay. SBR delay was not covered but must be
  considered for gapless playback delay compensation.

Bug 9428126

Change-Id: I67483712c284de9b5378694f9db7acbed2547dd7
2014-05-20 17:39:03 -07:00
Jean-Michel Trivi 8e087bf394 AAC-Decoder: DRC metadata in stream info
Provide relevant DRC metadata information via API needed for DRC
  presentation mode wrapper.

Bug 9428126

Change-Id: I827cd6bdfd2a8799c21935ae32af23739c90a9b6
2014-05-20 17:29:03 -07:00
Jean-Michel Trivi af967fcc55 AAC Decoder: flush/seek improvements
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
2014-05-20 17:24:06 -07:00
Glenn Kasten fb2e845179 am 35f30c5a: Merge "AArch64: Make LONG 4 bytes"
* commit '35f30c5ab8089f38681d2fdd416c00aebef5a7ff':
  AArch64: Make LONG 4 bytes
2014-04-09 15:57:48 +00:00
Glenn Kasten 35f30c5ab8 Merge "AArch64: Make LONG 4 bytes" 2014-04-09 15:49:10 +00:00
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
Glenn Kasten 629f60c0e7 am 3252951f: Merge "Temporary workaround for 64-bit build error"
* commit '3252951f61e011241ce6dd8fff775fe9b9aed97f':
  Temporary workaround for 64-bit build error
2014-03-19 21:13:03 +00:00
Glenn Kasten 3252951f61 Merge "Temporary workaround for 64-bit build error" 2014-03-19 20:58:18 +00:00
Glenn Kasten 8609bfea36 Temporary workaround for 64-bit build error
Replace #error by #warning so we can build 64-bit

Change-Id: Ib52fbfb0e5e945ff04ba51ae06b4e3393886d7b7
2014-03-12 11:19:32 -07:00
Marcus Oakland f2f96fb86d AArch64: Make LONG 4 bytes
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: Marcus Oakland <marcus.oakland@arm.com>
2014-03-11 12:01:00 +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 fa3eba1644 Encoder 7.1 support
* 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
2013-09-03 14:19:38 -07:00
Jean-Michel Trivi 9f455bea1c Encoder ELD auto configurator
* 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
2013-09-03 11:44:33 -07: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 7ad97579f8 AAC Encoder low delay quality
* 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
2013-08-28 18:06:47 -07:00
Jean-Michel Trivi 206a397c70 Decoder parse ASC
* AAC-Decoder

   - Add support for explicit backward compatible signaling via ASC extension.

Bug 9428126

Change-Id: I0cb8226da07e3684bbb7eb95d10b6040973aa0f6
2013-08-27 16:35:59 -07:00
Jean-Michel Trivi 5016eb7f65 Decoder stability, sanity checks improvements
* 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
2013-08-27 16:28:09 -07:00
Jean-Michel Trivi b9774f9065 Decode dynamic range control improvements
* 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
2013-08-27 16:20:46 -07:00
Jean-Michel Trivi 2ddc922da8 Decode parametric stereo even with invalid channel config
AAC decoder: Allow decoding of Parametric Stereo (AOT 29) bitstreams
   with invalid channel config 2.

Bug 9428126

Change-Id: I1e8b801dfc0e6b1706421342d4985512e83f0dbe
2013-08-27 16:17:45 -07:00
Jean-Michel Trivi 3a0a695565 FDK update for downsampled SBR
Add missing support for downsampled SBR in libFDK

Bug 9428126

Change-Id: Idb732f8d31a115d36dd4b22916599db7fab98cae
2013-08-27 15:57:28 -07:00
Jean-Michel Trivi 16c472c201 AAC encoder metadata improvement
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
2013-08-20 15:31:42 -07:00
Jean-Michel Trivi a84864deb7 SBR header period
AAC encoder: Connect SBR and PS header repetition rate with AACENC_HEADER_PERIOD
     parameter of the encoder API.

Bug 9428126

Change-Id: Ia1ab965de9eaa2ac229d0c395a337cbd4d20cba1
2013-08-20 15:30:07 -07:00
Jean-Michel Trivi 3c59acf128 AAC encoder bitrate limitation
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
2013-08-20 15:27:49 -07:00
Jean-Michel Trivi fc4d7b0e73 SBR encoder improvement
SBR encoder: Introduce coupling energy ratio limitation to prevent undesirable SBR band
     amplification while decoding.

Bug 9428126

Change-Id: I18a77cd1a178fff7531b490779a29a0df7d993af
2013-08-20 15:05:08 -07:00
Jean-Michel Trivi 60a27b7fe5 Encoder intensity fix
AAC encoder: Prevent illegal intensity values delta coding at short blocks.

Bug 9428126

Change-Id: Ic287b86f3229022740f2317ea74aabe612de5e6b
2013-08-20 15:03:32 -07:00
Jean-Michel Trivi ed247dfa54 Encoder quantizer fix
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
2013-08-20 15:01:21 -07:00
Jean-Michel Trivi 577fcbb570 Decode and SYS lib cleanup
* 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
2013-08-20 14:51:53 -07:00
Jean-Michel Trivi 4f0d97057c Disclaimer update, lib version increment
- Update disclaimer in all source files.
- Increment library version in each FDK sub-module.

Bug 9428126

Change-Id: I490b96d4ee472246b01483202b0bb4f1e9c2a5d7
2013-08-20 14:38:55 -07:00
Jean-Michel Trivi 8bd0baee9e Fix HE-AAC SBR ignored high-freq data
Change-Id: I12d284477f07349368e714ba52cbb2a47b024554
(cherry picked from commit a889574e60a02bbc647d3b078d2727cb48d82e5a)
2013-08-05 19:23:49 +00:00
Elliott Hughes dd68dcdb75 am 0d439d3d: Merge "Remove a bionic workaround."
* commit '0d439d3d744f5ac8b0b0c16dcc9d1d3814ad002e':
  Remove a bionic workaround.
2012-11-29 20:29:44 -08:00
Elliott Hughes 03a143bcb4 Remove a bionic workaround.
(Requires corresponding bionic patch 3975cec694a0c9b42e3f7e671fcd678da92836c3.)

(cherry-pick of 1d24ddc612489f57c23e78a5deaaad91f1bf6ce5.)

Change-Id: I7105b17c285ff24fb48be23cf2067aef37f36d45
2012-11-29 19:51:22 -08:00
Elliott Hughes 0d439d3d74 Merge "Remove a bionic workaround." 2012-11-29 19:32:14 -08:00
Elliott Hughes 1d24ddc612 Remove a bionic workaround.
(Requires corresponding bionic patch 3975cec694a0c9b42e3f7e671fcd678da92836c3.)

Change-Id: Ief968db33e2f9e1957510bbd59f25faa6828d678
2012-11-29 17:30:23 -08: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
John Grossman ed8b5a747e Merge "Don't zero out spec coeffs before doing the final IMDCT." into jb-mr1-dev 2012-09-12 15:11:17 -07:00
John Grossman 34ce250e90 Don't zero out spec coeffs before doing the final IMDCT.
Addresses bug 7140347.

When flushing the decoder, you need to make sure to zero out any
lingering spectral coefficients as well as zero out the overlap buffer
state after decoding the final access unit.  Zeroing out the spec
coefficients *before* you decode the last block, however, seems like a
mistake.  If the final block contains any useful information for the
stream, then you end up outputting the overlap portion of the second
to last decoded block combined with zeros.  Because of the shape of
the second to last block's windows, this results in what appears to be
a fade out, but actually is a zero'ed out final block.

Signed-off-by: John Grossman <johngro@google.com>
Change-Id: I0fab9ee1a5899811d5519a91dc05631e9bf4963c
2012-09-12 14:20:05 -07:00
Keun young Park 1043598349 fix mips build by reverting files back
- MIPS still needs the work-around

Change-Id: If68b2028bd2779ada79020bb333ec8817abe9429
2012-09-11 17:28:46 -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
Jean-Baptiste Queru fef220869b Merge "Remove workaround in aac for broken toolchain" 2012-09-04 13:13:44 -07:00
Irina Tirdea ad749575b4 Remove workaround in aac for broken toolchain
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: Irina Tirdea <irina.tirdea@intel.com>
2012-09-03 02:48:01 +03:00
Jean-Baptiste Queru ee36153b8c Merge "GCC 4.4 and later cannot handle h constructs. Fix to replace the assembly constructs." 2012-08-15 13:47:14 -07:00
Jean-Baptiste Queru a00bd4cf64 Merge "Don't try to shift more bits than the variable length" 2012-08-13 10:03:01 -07:00
Martin Storsjo 6574569496 Don't try to shift more bits than the variable length
Shifting by more than (or equal to) the variable length is
undefined in C.

This caused the quantized spectrum values to go out of range,
triggering asserts later.

Change-Id: If81b6c8caa7b9c75941ad9d280b686d2069c968c
2012-08-10 11:05:56 +03:00
Raghu Gandham 50d9a4cb1e GCC 4.4 and later cannot handle h constructs. Fix to replace the assembly constructs.
Change-Id: I47509c20ee32f04ce42105563d2d4013910da531
2012-08-09 18:57:46 -07:00
Jean-Baptiste Queru d2854e2ac7 Merge "Only use __int64 on MSVC, not on all win32 compilers" 2012-08-08 12:07:04 -07:00
Martin Storsjo 52396724f8 Only use __int64 on MSVC, not on all win32 compilers
Mingw32 doesn't define the __int64 types.

Change-Id: Ia45add37be1bf85abde664fd6e382334a6bb4498
2012-07-12 17:06:45 +03:00