Commit Graph

169 Commits

Author SHA1 Message Date
Derek Buitenhuis 504e3f75bf aac: Make codec init run under ff_thread_once
This makes AAC init threadsafe.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2015-10-15 14:00:24 -04:00
Luca Barbato d5eab59a53 aac: Make sure to set err on the failure path
Bug-Id: CID 1308153
2015-08-23 21:44:38 +02:00
Vittorio Giovara 059a934806 lavc: Consistently prefix input buffer defines
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27 15:24:59 +01:00
Vittorio Giovara def97856de lavc: AV-prefix all codec capabilities
Express bitfields more simply.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27 15:24:58 +01:00
Vittorio Giovara 7c6eb0a1b7 lavc: AV-prefix all codec flags
Convert doxygen to multiline and express bitfields more simply.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27 15:24:58 +01:00
Luca Barbato bc76c46943 aac: Wait to know the channels before allocating frame
The channel configuration can be delivered only by the PCE,
try to parse it first and not try to decode until a channel
configuration is set.

CC: libav-stable@libav.org
2015-06-07 10:14:46 +02:00
Sebastian Dröge a188108ebf aac: Support channel configurations 11 and 12
These are defined in ISO/IEC 14496-3:2009/PDAM 4 for 6.1 and 7.1.
It also defines another 7.1 layout with configuration 14, that one
is not added here for now.

11: 3/3.1    FC FL+FR BL+BR BC LFE
12: 3/2/2.1  FC FL+FR SiL+SiR BL+BR LFE

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-06-07 10:14:46 +02:00
nu774 677c804aa3 aac: correctly map 7.1ch-wide AAC from FDK AAC encoder
FDK AAC encoder outputs SCE(front)+CPE(front)+CPE(back)+CPE(back) on
MODE_7_1_REAR_SURROUND configuration.
Since decoder couldn't properly map 4 back channels, decoding failed
unless -request_channel_layout 0x8000000000000000 has been specified.
Now we treat first CPE(back) as CPE(side) on channel mapping.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-06-07 10:14:45 +02:00
nu774 0289f81241 aac: Correctly map multichannel ADTS AAC with non-zero channel_config + PCE
The decoder assigns channels using default channel configuration
for 5.1ch when it parses an ADTS frame header using consecutive
channel ids.

When a PCE comes, it reassigns channels using PCE configuration
using directly the ids provided. They can be arbitrary.

Always use consecutive channel ids to avoid decoding glitches due
spurious reconfigurations due the channel ids mismatch between the
two otherwise-identical channel maps.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-06-03 14:40:10 +02:00
Andreas Cadhalpun 09bd7ddf20 aacdec: consistently use avctx for logging in decode_eld_specific_config
ac may be NULL and then accessing ac->avctx results in a segmentation fault.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-04-19 23:45:35 +01:00
Vittorio Giovara 6a85dfc830 lavc: Replace av_dlog and tprintf with internal macros 2015-04-19 12:41:59 +01:00
Vittorio Giovara 87e85a133f aac: Relax reserved_bit validation
Although the specification mandates this bit to zero, it may happen
that software tools incorrectly flip it to one, invalidating a possibly
valid stream.

Relax this restriction, by failing only when AV_EF_BITSTREAM is set.
This behaviour is similar to aac decoders in Firefox and Quicktime.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-03-04 16:36:16 +00:00
Anton Khirnov ee964145b5 lavc: remove unused traces of fmtconvert usage
Those decoders have been switched to float output and so do not use
fmtconvert anymore.
2015-02-28 21:51:24 +01:00
Alex Converse d615187f74 aacdec: Support for ER AAC ELD 480.
Based in part on work from Niel van der Westhuizen <espes@pequalsnp.com>.
2015-02-03 20:32:16 -08:00
Niel van der Westhuizen 7640c4a371 aacdec: Tables for length 480 AAC ELD. 2015-02-03 20:32:16 -08:00
Niel van der Westhuizen 0ee2573347 aacdec: Support for ER AAC in LATM 2015-02-03 20:32:16 -08:00
Alex Converse edd9ea3ffb aacdec: Refactor aac_er_decode_frame. 2015-02-03 20:32:15 -08:00
Alex Converse 82bd8a5769 aacdec: Refactor decode_ics_info. 2015-02-03 20:32:15 -08:00
Luca Barbato 7464e98f74 aac: Simplify decode_mid_side_stereo
Might spare few cycles if the compiler is naive and
makes the function more readable.
2014-12-02 15:28:22 +00:00
Vittorio Giovara b99ca86350 aacdec: avoid an out-of-bounds write
Also move the check in the case it is actually used.

CC: libav-stable@libav.org
Bug-Id: CID 1087090
2014-11-24 01:30:15 +00:00
Vittorio Giovara 77ab341c0c aacdec: add default case in channel layout
Bug-Id: CID 732291
2014-11-04 09:28:45 -05:00
Diego Biurrun 831a118078 Update dsputil- and SIMD-related comments to match reality more closely 2014-03-13 05:50:29 -07:00
Hendrik Leppkes 3aca10bf76 latm: Always reconfigure if no extradata was set previously
AAC LOAS can have new audio config objects in the stream itself.

Make sure the decoder reconfigures itself when the first one arrives
midstream.

Bug-Id: 644
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-02-28 14:51:20 +01:00
John Stebbins 462d5e8e6c aacdec: set AVFrame sample_rate
AVFrame.sample_rate is set in ff_get_buffer, but aacdec calls
ff_get_buffer before the samplerate is known. So it needs to be
set again before returning the frame.
2014-02-12 12:52:28 +01:00
Alex Converse 7f29644108 aac: Fix low delay windowing.
AAC LD uses a low overlap sine window instead of a KBD window.
2014-01-04 14:42:38 -08:00
Alex Converse b2212dec0f aac: Fix TNS decoding for the 512 sample window family. 2014-01-04 14:42:38 -08:00
Diego Biurrun 8f8bc92365 Add missing #includes for *INT64_MAX and *INT64_C 2013-11-23 21:55:52 +01:00
Gian-Carlo Pascutto 454959a5aa aacdec: Set the profile during decoding
Previously the profile would not be set if the bitstream needs
to be decoded to know the profile.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2013-11-04 08:51:26 +01:00
Alex Converse adea4512c6 aacdec: Fix calls to avpriv_report_missing_feature().
It does not take log level as an argument.
2013-10-25 19:41:23 +00:00
Alex Converse b3be41ca82 aac: Add support for Enhanced AAC Low Delay (ER AAC ELD).
This does not include support for LD SBR, epTool, data resilience, nor
the 960 transform family.
2013-10-23 00:08:29 -07:00
Alex Converse f457edb697 aacdec: Use avpriv_report_missing_feature() instead of custom logging. 2013-10-23 00:08:29 -07:00
Diego Biurrun b2bed9325d cosmetics: Group .name and .long_name together in codec/format declarations 2013-10-03 23:32:01 +02:00
Alex Converse 1914e6f010 aacdec: Add support for LD (Low Delay) AAC 2013-09-18 12:01:53 -07:00
Alex Converse 5cdefc0207 aacdec: Add support for Error Resilience syntax.
This does not add support for any error resilience tools.
2013-09-18 12:01:49 -07:00
Luca Barbato a10c4ce24b aac: Forward errors properly in aac_decode_frame_int
Incidentally also remove a warning.
2013-08-04 16:05:36 +02:00
Luca Barbato 71953ebcf9 aac: Check init_get_bits return value
Some code paths can call it with invalid length.

CC: libav-stable@libav.org
2013-08-04 16:05:36 +02:00
Diego Biurrun 4a2ef39442 cosmetics: Add '0' to float constants ending in '.'. 2013-07-25 11:33:23 +02:00
Luca Barbato 07c52e2c7c aac: return meaningful errors 2013-06-27 01:22:36 +02:00
Luca Barbato 6d8629aac1 aac: K&R formatting cosmetics 2013-06-27 01:22:06 +02:00
Luca Barbato a943a132f3 aac: check the maximum number of channels
Broken bitstreams could report a larger than specified number of
channels and cause outbound writes.

CC:libav-stable@libav.org
2013-04-28 00:40:33 +02:00
Diego Biurrun 12e25ed284 avcodec: av_log_missing_feature(1) ---> avpriv_request_sample() 2013-03-13 21:20:12 +01:00
Diego Biurrun 6d97484d72 avcodec: av_log_ask_for_sample() ---> avpriv_request_sample() 2013-03-13 21:20:12 +01:00
Diego Biurrun 63d744e2be av_log_missing_feature() ---> avpriv_report_missing_feature() 2013-03-13 20:42:21 +01:00
Anton Khirnov 759001c534 lavc decoders: work with refcounted frames. 2013-03-08 07:38:30 +01:00
Diego Biurrun c242bbd8b6 Remove unnecessary dsputil.h #includes 2013-02-26 00:51:34 +01:00
Justin Ruggles ffd2123095 aac: decode directly to the user-provided AVFrame 2013-02-12 12:21:21 -05:00
Ronald S. Bultje d56668bd80 floatdsp: move scalarproduct_float from dsputil to avfloatdsp.
This makes the aac decoder and all voice codecs independent of dsputil.
2013-01-22 11:55:42 -08:00
Ronald S. Bultje 5959bfaca3 floatdsp: move butterflies_float from dsputil to avfloatdsp.
This makes wmadec/enc, twinvq and mpegaudiodec (i.e. mp2/mp3)
independent of dsputil.
2013-01-22 11:55:42 -08:00
Ronald S. Bultje 42d3246948 floatdsp: move vector_fmul_reverse from dsputil to avfloatdsp.
Now, nellymoserenc and aacenc no longer depends on dsputil. Independent
of this patch, wmaprodec also does not depend on dsputil, so I removed
it from there also.
2013-01-22 11:55:42 -08:00
Justin Ruggles e034cc6c60 lavc: Move vector_fmul_window to AVFloatDSPContext
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2013-01-16 10:45:45 +01:00