Commit Graph

1325 Commits

Author SHA1 Message Date
Chih-Hung Hsieh 9428e080cc Ignore Clang warning on checking address of arrays.
BUG: 17356808
Change-Id: I464ffcfb3fc4f44ac8115f9ae98a8c46189b41cd
2014-09-03 12:40:41 -07:00
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
Martin Storsjo 9a3234055a Extend the GetInvInt table to 80 elements
This is a bug fix patch from Fraunhofer, amending/replacing/extending
the previous commit which only extended the table to 55 elements.
(In my previous fix, 55 seemed to be enough for the issue at hand at
least. A few of the coefficients had slightly different rounding than
what Fraunhofer had used though).

This will show up in AOSP in the next code drop as well.
2014-08-01 10:36:54 +03:00
Duane Sand 5c51a5898e [MIPSR6] Skip assembler code using MFHI/MFLO on mips32r6
Change-Id: I3dacd96cf9d5cf9c3d34d612ebb0456d64bc23bc
2014-07-31 15:40:38 -07:00
Martin Storsjo 6522e87ad6 Extend GetInvInt to support values up to 54
For sample rates >= 64 kHz with short blocks, the largest sfb
width is 36, which after grouping can be multiplied with 3,
ending up as 108. GetInvInt needs to be able to support
the largest grouped sfb width, divided by two (3 * 36 / 2 = 54).

This fixes VBR encoding with sample rates >= 64 kHz.
2014-07-29 15:00:56 +03:00
Martin Storsjo f82510410d Add support for waveformatex files
This is used for multichannel wave files.
2014-06-23 10:45:50 +03:00
Martin Storsjo 16f75a570e Support reading sox style piped wav files
Sox writes the RIFF header size as a very large number, instead
of as 0 as in libavformat.
2014-06-23 10:45:50 +03:00
Martin Storsjo 43cb942cd4 Use skip instead of fseek
fseek(SEEK_CUR) doesn't work for nonseekable streams (such
as pipes).

Only do this for skipping past small chunks; don't use it for
skipping past the actual data for non-streamed input.
2014-06-23 10:45:50 +03:00
Martin Storsjo cb19aa7c12 Allow reading wav files with a 0 bytes RIFF chunk
This is required in order to read streamed wav files produced by
the libavformat wav muxer.
2014-06-23 10:45:50 +03:00
Martin Storsjo 3951d0a4e5 Allow opening stdin when "-" is specified 2014-06-23 10:45:50 +03:00
Martin Storsjo e7348e7a5d Support streamed wav files with a 0 bytes data chunk 2014-06-23 10:45:50 +03:00
Martin Storsjo 1652691ee9 Use AC_SEARCH_LIBS to search for a library containing math functions
Even though the previous mechanism worked, this should be more
correct.
2014-06-23 10:44:02 +03:00
Mark Harris b8f6c140ce Fix AIX build
Fix AIX build failure with IBM xlC compiler due to conflicting
definition of M_PI.  The libSYS/include/genericStds.h definition is
guarded with #ifndef M_PI, but was included before <math.h> which
defines M_PI with more significant digits.
2014-05-26 12:31:40 -07:00
Mark Harris c15b653b99 Add ppc optimization for clz and fixmul
Optimize ppc/ppc64 similar to i386/x86_64, approximately doubling
encoding speed on a Power Mac G5 running OS X 10.5.8.
2014-05-26 12:23:56 -07:00
Mark Harris 5e154c7ed1 Make LONG 32 bits for ppc64 as it is for x86_64 2014-05-26 12:14:40 -07:00
Mark Harris 72fd73dbdd Fix PowerPC Mac build 2014-05-26 12:12:03 -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
Martin Storsjo 2f29dd48d0 Bump the version number, add a changelog entry 2013-11-25 12:25:55 +02:00
Martin Storsjo c3f7404aab Include autogen.sh when building distribution packages 2013-11-25 12:25:55 +02:00
Martin Storsjo 164fc98be1 Include the encoder library version in the publicly installed header
This allows callers to conditionally use new API features without
breaking compatibility with the earlier versions of the library.
2013-11-01 12:11:30 +02:00
Martin Storsjo c8002b04ff Avoid casting arbitrary values to an enum
The enum only contains the constant values 0, 1 and 2. This produces
the warning "comparison of constant 6 with expression of type
'PS_RESOLUTION' is always false" in clang for the first check
in the getNoBands function (but apparently not for the second one
even though mode>=3 shouldn't ever happen for a valid PS_RESOLUTION
value either). This could allow the compiler to completely remove
the conditions that shouldn't be able to occur even though they
actually are used and are necessary.

By passing the value as UINT instead, it is clear to the compiler
that all the checks are necessary.
2013-11-01 11:28:59 +02:00
Martin Storsjo b41a6f9e81 Revert "Avoid too big changes in isScale"
This reverts commit 226601a8d9.

This change doesn't seem to be necessary any longer, a proper
fix seems to be included upstream now in
60a27b7fe5.
2013-11-01 10:58:46 +02:00
Martin Storsjo 321233ee92 Merge remote-tracking branch 'aosp/kitkat-release' into kitkat-merge
Conflicts:
	libAACenc/src/quantize.cpp
2013-11-01 10:46:40 +02:00
Martin Storsjo fcb5f1b692 Ignore .dirstamp files 2013-10-03 09:02:22 +02:00
Terrance 0feb581efb Add an autogen shellscript 2013-09-07 18:32:50 +03: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