Commit Graph

80 Commits

Author SHA1 Message Date
Nathan Caldwell 9292fe4a1d aacenc: Simplify windowing
Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:46 -08:00
Nathan Caldwell 7946a5acfb aacenc: Move saved overlap samples to the beginning of the same buffer as incoming samples.
Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:46 -08:00
Nathan Caldwell 9b8e2a8709 aacenc: Deinterleave input samples before processing.
Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:46 -08:00
Nathan Caldwell 04af2efaae aacenc: Store channel count in AACEncContext.
Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:46 -08:00
Nathan Caldwell 80d44277e6 aacenc: Move Q^3/4 calculation to it's own table
This should be moved to tablegen at some point.

Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:46 -08:00
Nathan Caldwell 025ccf1f8b aacenc: Request normalized float samples instead of converting s16 samples to float.
Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:46 -08:00
Nathan Caldwell 5310704190 aacenc: cosmetics: move init() and end() to the bottom of the file.
Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:45 -08:00
Nathan Caldwell 17ae608127 aacenc: aac_encode_init() cleanup
Macroify sanity checks and check return values of allocs and other functions.

Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-23 11:40:45 -08:00
Anton Khirnov 9f51c682ee lavc: use avpriv_ prefix for ff_copy_bits and align_put_bits.
They are used in lavf.
2011-10-20 21:06:58 +02:00
Anton Khirnov 59a9a23581 lavc: use avpriv_ prefix for some mpeg4audio symbols used in lavf.
Specifically, ff_mpeg4audio_sample_rates, ff_mpeg4audio_get_config and
ff_copy_pce_data
2011-10-20 21:06:57 +02:00
Anton Khirnov 145f741e11 AVOptions: rename FF_OPT_TYPE_* => AV_OPT_TYPE_* 2011-10-12 16:51:16 +02:00
Nathan Caldwell 24efdea7fd aacenc: Fix number of coefficients used in a LFE channel.
The spec states:

 *  Only the lowest 12 spectral coefficients of any LFE may be non-zero

We were using the 12 lowest *bands*.
2011-08-13 19:40:33 -07:00
Nathan Caldwell 51a1d4d94a aacenc: Fix a segfault with grouped psymodel.
10l: Forgot about TYPE_LFE being after TYPE_CPE. Which causes a
segfault when encoding 5.1
2011-08-13 19:37:38 -07:00
Anton Khirnov ec6402b7c5 lavc: use designated initialisers for all codecs.
It's more readable and less prone to breakage.
2011-07-29 08:42:34 +02:00
Nathan Caldwell 98add74e85 aacenc: Fix determination of Mid/Side Mode.
In adjust_frame_information(), msc is incremented for each sfb in each
sub-window then compared against max_sfb which is for a single sub-window.

This resulted in frames using EIGHT_SHORT_SEQUENCE where the first few
sub-windows increment msc to a value that results in ms_mode == 2. Even
though only some of the bands are actually using Mid/Side.
2011-06-29 14:28:53 -07:00
Nathan Caldwell d3a6c2ab7e psymodel: Remove the single channel analysis function 2011-06-29 14:28:53 -07:00
Nathan Caldwell 01344fe409 aacenc: Implement dummy channel group analysis that just calls the single channel analysis for each channel. 2011-06-29 14:28:53 -07:00
Nathan Caldwell 0bc01cc9fe psymodel: Add channels and channel groups to the psymodel. 2011-06-29 14:28:52 -07:00
Nathan Caldwell 1bb52045d3 aacenc: Save channel configuration for later use. 2011-06-27 21:49:01 -07:00
Nathan Caldwell cc9947ffbe aacenc: Add stereo_mode option.
ms_off is the default, until Mid/Side is no longer buggy.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-06-02 07:04:22 -07:00
Nathan Caldwell b58e298572 psymodel: Remove wrapper functions.
Instead use the function pointers directly.
2011-05-08 12:43:04 -07:00
Nathan Caldwell 5b29af624f aacenc: Replace loop counters in aac_encode_frame() with more descriptive 'ch' and 'w'. 2011-05-08 12:42:34 -07:00
Nathan Caldwell 230c1a9075 aacenc: Finish 3GPP psymodel analysis for non mid/side cases.
There is still are still a few sections missing relating to TNS (not present)
and mid/side (contains other bugs).

Overall this improves quality, and vastly improves rate-control.

Signed-off-by: Martin Storsjö <martin@martin.st>
2011-04-23 12:30:05 +03:00
Mans Rullgard 4538729afe Move sine windows to a separate file
These windows do not really belong in fft/mdct files and were
easily confused with the similarly named tables used by rdft.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-20 13:25:19 +00:00
Mans Rullgard a45fbda994 Move ff_kbd_window_init() to a separate file
This function is not tightly coupled to mdct, and it's in the way
of making a fixed-point mdct implementation.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 19:49:27 +00:00
Mans Rullgard 26f548bb59 fft: remove inline wrappers for function pointers
This removes the rather pointless wrappers (one not even inline)
for calling the fft_calc and related function pointers.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 19:49:18 +00:00
Mans Rullgard 2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Nathan Caldwell 31ff9bd7b8 aacenc: Fix a segfault in search_for_quantizers
This reverts the removal of scoefs from AACEncContext.
It resulted in scoefs being a NULL pointer when
search_for_quantizers() is called.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-08 17:45:08 -05:00
Young Han Lee 2790d7a9ff aacenc: remove the data arrays
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-07 12:25:36 -05:00
Diego Elio Pettenò d36beb3f69 Add ff_ prefix to data symbols of encoders, decoders, hwaccel, parsers, bsf.
None of these symbols should be accessed directly, so declare them as
hidden.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-26 16:08:45 +00:00
Janne Grunau 2fd9035ddc aacenc: fix typo in sync extension constant in 8ae0fa2 2011-01-23 18:57:24 +01:00
Justin Ruggles 6eabb0d3ad Change DSPContext.vector_fmul() from dst=dst*src to dest=src0*src1.
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-22 17:53:27 +00:00
Alex Converse 8ae0fa243e aacenc: mark SBR absent
Use backwards compatible explicit signalling to denote the absence of
SBR.

Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-01-22 15:55:38 +01:00
Stefano Sabatini 5d6e4c160a Replace deprecated symbols SAMPLE_FMT_* with AV_SAMPLE_FMT_*, and enum
SampleFormat with AVSampleFormat.

Originally committed as revision 25730 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-11-12 11:04:40 +00:00
Alex Converse 99d7a3e862 aacenc: Remove an unused variable from adjust_frame_information().
Originally committed as revision 25002 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-31 00:33:56 +00:00
Alex Converse 1297f58132 aacenc: Don't set s->cur_channel before apply_window_and_mdct().
In general s->cur_channel should be phased out.

Originally committed as revision 25001 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-31 00:31:17 +00:00
Alex Converse 8e4c11e90a aacenc: Write tag.elem_id early.
Originally committed as revision 25000 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-30 23:52:03 +00:00
Alex Converse 76dfe4ebc5 aacenc: Only apply M/S if common_window is set.
Originally committed as revision 24998 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-30 23:43:03 +00:00
Nathan Caldwell 2bb1d0e77a aacenc: Adjust array offsets for the current channel before calling ff_psy_suggest_window().
Patch by Nathan Caldwell <saintdev@gmail.com>

Originally committed as revision 24332 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-19 18:22:44 +00:00
Nathan Caldwell 0045499dec aacenc: Refactor apply_window_and_mdct() so it no longer takes an offset channel.
Patch by Nathan Caldwell <saintdev@gmail.com>

Originally committed as revision 24331 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-19 18:19:53 +00:00
Alex Converse 267843844c Cosmetics: whitespace
Originally committed as revision 24100 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-07 21:50:50 +00:00
Alex Converse 03d5d9b900 aacenc: Enforce LFE bitstream restrictions.
Originally committed as revision 24099 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-07 21:48:51 +00:00
Måns Rullgård 86e41bc300 aacenc: replace VLA with fixed size
Number of channels is restricted to 6 so the size is acceptable
for the stack.

Originally committed as revision 24068 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-06 00:06:15 +00:00
Alex Converse 4e42debc8d aacenc: Start the lookahead pointer 1/4 of the way into the first short window.
Short windows are of length 256 and begin at sample 448.

Originally committed as revision 23871 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-06-28 21:50:57 +00:00
Alex Converse 072c0d605f aacenc: Properly pad extradata.
This fixes a valgrind error when encoding to ADTS.

Originally committed as revision 23866 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-06-28 21:34:57 +00:00
Alex Converse e29af81818 aactab: Tablegenify ff_aac_pow2sf_tab.
Originally committed as revision 23740 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-06-23 19:30:01 +00:00
Alex Converse 614842a93d Cleanup apply_window_and_mdct().
Originally committed as revision 23495 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-06-05 19:41:52 +00:00
Alex Converse e84c276f31 Mark AAC encoder as experimental.
Originally committed as revision 23350 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-05-27 14:46:31 +00:00
Alex Converse 960323a230 aacenc: Select the TLS (two-loop search) as the default scalefactor coder.
Originally committed as revision 23133 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-05-14 16:49:21 +00:00
Alex Converse 31184aac87 aacenc: Fix psy logic.
Set band info before determining scalefactors. Use the look ahead for
windowing decision.

Originally committed as revision 23132 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-05-14 16:49:11 +00:00