Commit Graph

109 Commits

Author SHA1 Message Date
Måns Rullgård d356a53f44 AAC: optimise bitstream reading in decode_spectrum_and_dequant()
Using the low-level macros directly avoids redundant open/update/close
cycles.

2-3% faster on ARM, PPC, and Core i7.

Originally committed as revision 21224 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-15 14:02:52 +00:00
Måns Rullgård 798339fb46 AAC: ARM/NEON asm for VMUL2/4 functions
Originally committed as revision 21219 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-15 02:58:24 +00:00
Måns Rullgård 2ef21b9179 AAC: Reduce depth of vlc_spectral tables to 2
Up to 6% faster overall on i7, no change on A8.

Originally committed as revision 21191 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-13 16:46:39 +00:00
Måns Rullgård 95dff4aced AAC: Unswitch loop over window groups in decode_spectrum_and_dequant()
GCC should be able to do this, but doesn't.  Slightly faster code.

Originally committed as revision 21190 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-13 16:46:35 +00:00
Måns Rullgård 05f9d8fcaa AAC: simplify some calculations in decode_spectrum_and_dequant()
Simplify cur_band_type, group_len, and coef/offset calculations.  This
makes the code easier to read and slightly faster.

Originally committed as revision 21189 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-13 16:46:32 +00:00
Måns Rullgård c816d3d042 AAC: Compress codebook tables and optimise sign bit handling
The codebooks each consist of small number of values repeated in
groups of 2 or 4.  Storing the codebooks as a packed list of 2- or
4-bit indexes into a table reduces their size substantially (from 7.5k
to 1.5k), resulting in less cache pressure.

For the band types with sign bits in the bitstream, storing the number
and position of non-zero codebook values using a few bits avoids
multiple get_bits() calls and floating-point comparisons which gcc
handles miserably.

Some float/int type punning also avoids gcc brain damage.

Overall speedup 20-35% on Cortex-A8, 20% on Core i7.

Originally committed as revision 21188 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-13 16:46:28 +00:00
Måns Rullgård dc0d86face AAC: use table for cbrtf(n)*n
The maximum length of escape_sequence is 21 bits, so adjust limit in
code to match this.

Up to 10% faster on Cortex-A8.

Originally committed as revision 21153 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-11 20:21:26 +00:00
Måns Rullgård 7c8af53f87 AAC: escape_sequence is 21 bits max
The maximum length of escape_sequence is 21 bits, so adjust limit in
code to match this.  Also fix the comment.

Originally committed as revision 21151 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-11 18:02:00 +00:00
Reimar Döffinger 14b8607065 Add support for hard-coded MDCT-related ff_sine_windows tables.
Originally committed as revision 21108 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-09 13:28:04 +00:00
Måns Rullgård 3963a17d0e AAC: add a const to decode_spectrum_and_dequant() args
Originally committed as revision 21099 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-08 17:52:54 +00:00
Carl Eugen Hoyos b0bc928b86 Undo r20874: It broke AAC decoding.
Originally committed as revision 20879 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-16 11:39:14 +00:00
Carl Eugen Hoyos 257c7147e1 Use enum and constant to avoid three icc warnings.
Originally committed as revision 20874 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-15 15:57:18 +00:00
Andreas Öman f658631419 aac: Set sample rate in avctx from ADTS header (if not already set by some
other means)

Originally committed as revision 20773 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-08 19:20:36 +00:00
Alex Converse 4fab662769 AAC: Add a global header but output not locked output configuration status.
Originally committed as revision 20701 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-02 09:12:05 +00:00
Alex Converse 38610d92ff Set the SBR mode to implicit on ADTS frames occurring before the output is locked.
Originally committed as revision 20700 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-02 09:07:32 +00:00
Alex Converse 4e878a1898 10l: Fix inverted if-condition from r20448. Fixes issue 1562.
Originally committed as revision 20570 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-11-21 20:56:46 +00:00
Alex Converse 01d19fbc9f AAC: Rename sect_len to sect_end. It marks the last sfb of the section, not the
length of the section.

Originally committed as revision 20513 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-11-11 20:33:56 +00:00
Alex Converse 981b8fd777 Don't lock the channel output configuration based on the first value seen for
non extradata formats. Instead lock it only after the successful decoding of a
frame. This fixes issue 999.

Originally committed as revision 20448 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-11-03 22:50:02 +00:00
Robert Swain 0359289d1d AAC: Fix regression introduced in r20067 where ADTS files would always be
signalled as having a channel configuration of 1 in output_configure().
Previously this didn't matter but it does now.

Originally committed as revision 20193 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-10-09 15:38:44 +00:00
David Conrad 144fec83b3 dca and aac decoders use float_to_int16_interleave, so check for
the C version of that rather than float_to_int16.
Fixes output on ARM/VFP

Originally committed as revision 20192 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-10-08 14:40:14 +00:00
Robert Swain 754ff9a795 Refactor channel element configuration and mapping code into its own function
to allow reuse

Originally committed as revision 20069 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-28 15:37:18 +00:00
Robert Swain 2309923c5c Reindent after last commit
Originally committed as revision 20068 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-28 15:35:51 +00:00
Robert Swain e22da6b637 AAC: Add channel layout support for channel configuration as defined in the
specification

Originally committed as revision 20067 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-28 15:35:13 +00:00
Måns Rullgård b418a6ca7e AAC: minor simplification in PNS decoding
Originally committed as revision 19999 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-23 13:52:53 +00:00
Måns Rullgård 0cb7141282 AAC: 10l: fix PNS decoding
Originally committed as revision 19970 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-22 19:31:01 +00:00
Alex Converse 5419da8d9c AAC: Simplify some logic from r19956. (The escape codebook is unsigned.)
Originally committed as revision 19958 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-22 01:34:42 +00:00
Måns Rullgård 42d3fbb3f4 AAC: use new dsputil functions
Originally committed as revision 19956 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-22 00:48:45 +00:00
Reimar Döffinger b5f09d31c2 Make sample_fmts and channel_layouts compound literals const to reduce size of
.data section.

Originally committed as revision 19787 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-06 09:15:07 +00:00
Diego Biurrun 577d383b0c cosmetics: K&R coding style
Originally committed as revision 19562 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-08-02 10:50:59 +00:00
Alex Converse 36f517736f Cosmetics: reindent after last commit
Originally committed as revision 19400 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-10 21:54:06 +00:00
Alex Converse 6308765cb5 Ignore subsequent channel configurations after the first in an AAC file. The
current code doesn't handle them properly, and they are a dubious construction
at best.

Originally committed as revision 19399 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-10 21:53:04 +00:00
Ronald S. Bultje ce863d7f36 Rename ff_log_missing_feature() to av_log_missing_feature().
Originally committed as revision 19294 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-29 19:07:04 +00:00
Alex Converse d4eeef0c19 Cosmetics: Re-indent after last commit
Originally committed as revision 19175 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-12 21:16:33 +00:00
Alex Converse 85e9296f41 Move TNS and swb_offset tables from aacdectab.h to aactab.c so that they can be
shared with the AAC encoder.

Originally committed as revision 19174 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-12 21:14:45 +00:00
Alex Converse 401a995085 In the event of a mismatch, do not follow the sample rate index in an AAC PCE.
This matches the behavior the reference decoder and fixes issue 1072.

Originally committed as revision 18957 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-26 21:34:56 +00:00
Siarhei Siamashka 7d485f165f Support for getting (i)MDCT output multiplied by a constant scaling factor.
Scaling (i)MDCT output has no runtime overhead and can be used to improve
performance of audio codecs. All the changes are only needed in
'ff_mdct_init' function and slow down initialization a bit.

Originally committed as revision 18855 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-16 14:17:08 +00:00
Alex Converse 90350d73f8 Allow parsing and decoding of ADTS AAC files with channel config = 0
Originally committed as revision 18815 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-13 17:57:58 +00:00
Robert Swain 7bbd2fb126 Remove redundant assignment. err is assigned in every switch case anyway. Issue
found by CSA.

Originally committed as revision 18641 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-21 12:29:36 +00:00
Robert Swain 5967e1413e Remove unnecessary assignment, found by CSA.
Originally committed as revision 18617 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-19 00:55:46 +00:00
Stefano Sabatini 9106a698e7 Rename bitstream.h to get_bits.h.
Originally committed as revision 18494 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-13 16:20:26 +00:00
Thilo Borgmann 7a00bbad21 Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an
AVPacket argument rather than a const uint8_t *buf + int buf_size. This allows
passing of packet-specific flags from demuxer to decoder, such as the keyframe
flag, which appears necessary to playback corePNG P-frames.

Patch by Thilo Borgmann thilo.borgmann googlemail com, see also the thread
"Google Summer of Code participation" on the mailinglist.

Originally committed as revision 18351 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-07 15:59:50 +00:00
Alex Converse 04964ee8bb AAC: Ignore cc_domain for independent (time domain) coupling.
Originally committed as revision 18169 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-23 05:13:26 +00:00
Alex Converse 4a39ccb403 AAC: IEEE-754 type punning for 16-bit floating point rounding.
Originally committed as revision 18015 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 16:11:27 +00:00
Alex Converse 7d87e2ceac Re-indent after last commit.
Originally committed as revision 17861 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-06 22:37:21 +00:00
Alex Converse 51741a82c3 If we get an error from ff_aac_parse_header() we should not trust the header info that it provides.
Originally committed as revision 17860 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-06 22:36:24 +00:00
Alex Converse bb5c0988ea Fix the channel allocation bug/assumption (issue 800).
Approved by Rob on IRC.

Originally committed as revision 17856 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-06 19:47:01 +00:00
Alex Converse cfd937b081 AAC: hoist dependent gain lookup out of the loop
Originally committed as revision 17835 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-05 23:10:22 +00:00
Alex Converse 9ef88afac3 AAC: Make the CPE function more consistent with the functions for other channel elements.
Originally committed as revision 17672 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-01 00:23:05 +00:00
Alex Converse e8d5c07bcc Re-indent after last commit.
Originally committed as revision 17600 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-26 01:54:16 +00:00
Alex Converse 21e8c46cde Refactor AAC unsigned band type decoding for a modest speedup.
Originally committed as revision 17599 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-26 01:51:34 +00:00