Commit Graph

330 Commits

Author SHA1 Message Date
Justin Ruggles 2d9a101a1f ac3enc: add some assertions 2011-03-07 11:18:59 -05:00
Justin Ruggles 7100d63ca5 ac3enc: use av_assert2() instead of assert() to make debugging easier. 2011-03-07 11:18:51 -05:00
Justin Ruggles 53e35fd340 ac3enc: add num_rematrixing_bands to AC3EncodeContext and use it instead of the hardcoded value.
Currently it is always 4, but this change will allow it to be adjusted when
bandwidth-related features are added such as channel coupling, enhanced
channel coupling, and spectral extension.
2011-03-04 17:40:24 -05:00
Justin Ruggles 5b54d4b376 ac3enc: fix bug in stereo rematrixing decision.
The rematrixing strategy reuse flags are not reset between frames, so they
need to be initialized for all blocks, not just block 0.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-16 23:39:57 +00:00
Justin Ruggles 50d7140441 ac3enc: change default floor code to 7.
This is to match the value in every (E-)AC-3 file from commercial sources.
It has a negligible effect on audio quality.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-15 21:40:42 +00:00
Reinhard Tartler 737eb5976f Merge libavcore into libavutil
It is pretty hopeless that other considerable projects will adopt
libavutil alone in other projects. Projects that need small footprint
are better off with more specialized libraries such as gnulib or rather
just copy the necessary parts that they need. With this in mind, nobody
is helped by having libavutil and libavcore split. In order to ease
maintenance inside and around FFmpeg and to reduce confusion where to
put common code, avcore's functionality is merged (back) to avutil.

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-02-15 16:18:21 +01:00
Justin Ruggles dda3f0ef48 Add x86-optimized versions of exponent_min().
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-10 15:32:47 -05:00
Justin Ruggles c3beafa0f1 ac3enc: Change EXP_DIFF_THRESHOLD to 500.
This patch changes the exponent difference threshold in the exponent
strategy decision function of the AC-3 encoder.  I tested lowering in
increments of 100.  From 1000 down to 500 generally increased in quality
with each step, but 400 was generally much worse.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-02 20:00:43 +00:00
Justin Ruggles 4c57cde942 Add ff_ prefix to ac3_common_init().
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-26 15:35:27 +00:00
Justin Ruggles 3b924294ea ac3enc: use dsputil functions in apply_window()
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-22 17:53:28 +00:00
Justin Ruggles 0db5d2b09e cosmetics: spacing, line wrap, and remove unneeded braces
Originally committed as revision 26359 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:59:31 +00:00
Justin Ruggles 964f2cf2a0 Process all EXP_REUSE blocks at once in exponent_min().
43% faster in function encode_exponents().

Originally committed as revision 26358 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:59:21 +00:00
Justin Ruggles 7d87d56ff8 Take advantage of per-channel exponent and exponent strategy layout to
simplify and speed up encode_exponents().
8% faster in function.

Originally committed as revision 26357 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:59:15 +00:00
Justin Ruggles 5bff8590f3 Simplify compute_exp_strategy() by passing a pointer to all exponents and
exponent strategies for a single channel to compute_exp_strategy_ch().
This allows for removal of the temporary pointer arrays.

Originally committed as revision 26356 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:59:10 +00:00
Justin Ruggles 4b90c35d74 Use a local variable in the inner loop of group_exponents() to simplify the
code.

Originally committed as revision 26355 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:59:04 +00:00
Justin Ruggles a281c6509f cosmetics: remove unneeded braces
Originally committed as revision 26354 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:58:59 +00:00
Justin Ruggles 5fc2e0075d cosmetics: rename block_num to blk for variable name consistency
Originally committed as revision 26353 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:58:55 +00:00
Justin Ruggles 0429e4a6ca Move exp_strategy from AC3Block to AC3EncodeContext in order to arrange by
channel first, then by block.

Originally committed as revision 26352 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:58:50 +00:00
Justin Ruggles 7cc4be58b4 Rearrange exponent buffer to group all blocks for a single channel together.
This will allow for faster and simpler processing of all blocks at once.

Originally committed as revision 26351 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-15 01:58:45 +00:00
Justin Ruggles dc7e07ac1f Add stereo rematrixing support to the AC-3 encoders.
This improves the audio quality significantly for stereo source with both the
fixed-point and floating-point AC-3 encoders.
Update acodec-ac3_fixed and seek-ac3_rm test references.

Originally committed as revision 26271 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-08 23:21:17 +00:00
Justin Ruggles ac05f9030e Convert floating-point MDCT coefficients to 24-bit fixed-point all at once
instead of doing it separately in 2 different functions.
This makes float AC-3 encoding approx. 3-7% faster overall.
Also, the coefficient conversion can now be easily SIMD-optimized.

Originally committed as revision 26232 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-05 20:35:36 +00:00
Justin Ruggles 9be52d48d9 Use local variables outside the inner loop in extract_exponents() to reduce
accessing of structs and arrays inside the loop.
Approx. 30% faster in function extract_exponents().

Originally committed as revision 26226 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-05 16:02:08 +00:00
Justin Ruggles f1cbbb79bf cosmetics: fix typo in previous commit
Originally committed as revision 26210 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-04 12:08:10 +00:00
Justin Ruggles 6fd96d1a85 Change the AC-3 encoder to use floating-point.
Fixed-point AC-3 encoder renamed to ac3_fixed.
Regression test acodec-ac3 renamed to acodec-ac3_fixed.
Regression test lavf-rm changed to use ac3_fixed encoder.

Originally committed as revision 26209 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-04 11:53:44 +00:00
Justin Ruggles ad6b2c1f6d Move fixed-point parts of the AC-3 encoder to separate files.
Originally committed as revision 26206 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-03 16:08:56 +00:00
Justin Ruggles 9c84a72a25 Skip the bit allocation search if previous and current SNR offsets are the
maximum value of 1023.
This speeds up overall encoding depending on the content and bitrate.
The most improvement is with high bitrates and/or low complexity content.

Originally committed as revision 26181 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-31 23:22:08 +00:00
Justin Ruggles 5128842ea2 10l: Fix mistake in r26044. Check increment bounds using actual increment
instead of 64. This will change output in some cases, but it happens to not
affect the AC-3 regression tests.

Originally committed as revision 26180 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-31 22:59:19 +00:00
Justin Ruggles c05ffcd9ba Change planar_samples from int16_t to SampleType.
This one was missed in r26174.

Originally committed as revision 26179 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-31 20:01:12 +00:00
Justin Ruggles 0cbd5ff704 Add typedefs and a macro that will allow sharing of functions between the
fixed-point and floating-point AC-3 encoders.

Originally committed as revision 26174 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-30 22:30:48 +00:00
Justin Ruggles b33dae5efb Move the list of supported channel layouts to a separate table.
Originally committed as revision 26173 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-30 22:13:41 +00:00
Justin Ruggles 34d5074e6d Add a window field to AC3MDCTContext and use it as an input to apply_window()
instead of using the ff_ac3_window[] table directly.

Originally committed as revision 26172 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-30 22:13:37 +00:00
Justin Ruggles b5293036b9 cosmetics: alignment, line wrap, and spacing
Originally committed as revision 26171 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-30 22:13:34 +00:00
Justin Ruggles 14166a6d6c Remove avctx from AC3MDCTContext and just pass it to mdct_init() instead.
Originally committed as revision 26170 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-30 22:13:30 +00:00
Justin Ruggles e0698e4bbd Make exponent_group_tab[] static.
Originally committed as revision 26169 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-30 22:13:25 +00:00
Justin Ruggles ec44dd5fc2 Change the default dB-per-bit code from 2 to 3.
This gives slightly better quality in PEAQ tests.
Code 3 gives a dBpb value of 2816 = -132dB (128 psd units = -6dB), which
corresponds to 22 bits. Since the exponents have an offset applied, the
16-bit source looks like 24-bit source to the bit allocation routine.
So using dBpb code=3 is a closer match to the exponent range.

Regression test refs updated for acodec-ac3, lavf-rm, and seek-ac3_rm.

Originally committed as revision 26144 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-29 19:17:22 +00:00
Justin Ruggles b51c740eab cosmetics: line wrap and vertical alignment
Originally committed as revision 26084 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-23 18:01:29 +00:00
Justin Ruggles e96dc767e4 Make sure that the 2nd CRC value does not match the AC-3 sync word.
This is optional for encoders, but it's a good idea and has minimal impact
on performance.
This will change the output for some files, but it happens not to affect the
regression tests.

Originally committed as revision 26083 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-23 18:01:26 +00:00
Justin Ruggles a897423baa Store CRC context locally to reduce number of calls to av_crc_get_table().
Originally committed as revision 26082 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-23 18:01:23 +00:00
Justin Ruggles 0e9b064305 Remove unneeded local variable, frame_size, in output_frame_end().
Originally committed as revision 26081 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-23 18:01:19 +00:00
Justin Ruggles 1ce9d6b85f cosmetics: fix comment after change in clipping range
Originally committed as revision 26072 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-22 12:28:02 +00:00
Justin Ruggles 295ab2af6e Change FIX15() back to clipping to -32767..32767.
This avoids a 16-bit overflow in mdct512() due to a -32768 value in costab.
References updated for acodec-ac3, lavf-rm, and seek-ac3_rm tests.
Thanks to Måns Rullgård for finding the bug.

Originally committed as revision 26071 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-21 21:18:58 +00:00
Justin Ruggles f9f69028af Add emms_c() after exp_diff calculations.
Fixes AC-3 encoding on OpenBSD 4.8 x86_32 and hopefully other similar
configurations.

Originally committed as revision 26070 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-21 20:56:25 +00:00
Justin Ruggles a81d7c6aa3 Pre-calculate crc_inv at codec init.
20% faster output_frame_end().

Originally committed as revision 26069 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-21 18:26:13 +00:00
Justin Ruggles 386268dfff Add some simple fallbacks for normal bit allocation failure.
This allows encoding with lower bitrates by decreasing exponent bits first,
then decreasing bandwidth if the user did not specify a specific cutoff
frequency.

Originally committed as revision 26050 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-17 23:42:56 +00:00
Justin Ruggles e62ef8f2db Check user-specified cutoff frequency in validate_options().
Originally committed as revision 26049 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-17 23:42:52 +00:00
Justin Ruggles 78646ac206 10l: fix encoding for LFE channel
Originally committed as revision 26048 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-17 22:06:00 +00:00
Justin Ruggles 86c9673bab Add support for fixed-point MDCT sizes other than 512.
Originally committed as revision 26046 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-17 20:52:27 +00:00
Justin Ruggles 234b70d346 cosmetics: reindent after last commit
Originally committed as revision 26045 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-17 15:02:15 +00:00
Justin Ruggles 98e34e71c0 Simplify bit allocation search by using a loop for the SNR offset increment.
Originally committed as revision 26044 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-17 15:02:12 +00:00
Justin Ruggles cf7c961b19 Do not calculate psd and masking curve if exponents are being reused.
Approx. 20% faster in function bit_alloc_masking().

Originally committed as revision 26042 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-17 14:16:13 +00:00
Justin Ruggles 68e6b0990d cosmetics: reindent after last commit
Originally committed as revision 26041 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 22:47:11 +00:00
Justin Ruggles 795063db3b Copy bap from previous block when exponent strategy is EXP_REUSE.
We can do this because exponents are the only bit allocation parameters which
change from block-to-block currently.
Approx. 57% faster in function bit_alloc().
Approx. 25% faster overall encoding.

Originally committed as revision 26040 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 22:47:07 +00:00
Justin Ruggles 126a29b871 Count grouped mantissas for each block all at once at the end of bit
allocation for each block.
24% faster in function bit_alloc(). Approx. 10% faster overall encoding.

Originally committed as revision 26039 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 22:47:04 +00:00
Justin Ruggles e7536ac567 Count bits for fixed parameters at start of encoding rather than in every
frame.

Originally committed as revision 26038 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 22:47:00 +00:00
Justin Ruggles e86ea34dad Use a LUT for number of exponent groups. This avoids recalculating it for
every block and channel for every frame.

Originally committed as revision 26037 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 21:09:22 +00:00
Justin Ruggles 834550ea0d Speed up group minimum and group output calculations for EXP_D25 and EXP_D45
in encode_exponents_blk_ch() by removing the inner loops. This is about 30-40%
faster for the modified sections.

Originally committed as revision 26036 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 21:09:16 +00:00
Justin Ruggles cdedf7e625 Convert a for() loop into a while() loop for the downward part of the exponent
delta limiting.

Originally committed as revision 26035 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 21:09:08 +00:00
Justin Ruggles 27af78cf0e Redesign encode_exponents_blk_ch() so that duplicate exponent sets are no
longer required. This gets rid of the temp buffer as well as encoded_exp in
AC3EncodeContext. It also allows for skipping the exponent grouping for
EXP_D15. 56% faster in encode_exponents_blk_ch().

Originally committed as revision 26034 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 21:09:02 +00:00
Justin Ruggles 8846ee54ad Use optimized function DSPContext.sad[0]() instead of calc_exp_diff().
90% faster compute_exp_strategy().

Originally committed as revision 26033 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 15:06:28 +00:00
Justin Ruggles 7786c384f6 cosmetics: pretty-printing after last commit
Originally committed as revision 26031 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 03:44:35 +00:00
Justin Ruggles 89bedc4d2e Add a goto for init failure instead of duplicate calls to ac3_encode_close().
Originally committed as revision 26030 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 03:44:32 +00:00
Justin Ruggles c41ac4f82e Use pre-allocated temp buffers in mdct512().
5% faster in function.

Originally committed as revision 26029 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 03:44:29 +00:00
Justin Ruggles e29065f7bf Write results of post-rotation complex multiply directly to output.
2% faster in function mdct512().

Originally committed as revision 26028 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 03:13:45 +00:00
Justin Ruggles 9d8533368f Use memcpy() instead of a for loop in mdct512().
8% faster in function.

Originally committed as revision 26027 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 03:13:41 +00:00
Justin Ruggles b6f6204db9 Allocate all large per-channel arrays using av_malloc().
Decreases memory usage for less than 6 channels.

Originally committed as revision 26026 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 02:33:02 +00:00
Justin Ruggles aa645b9888 Make windowed_samples 16-byte aligned.
This will allow future SIMD optimization of the window function.

Originally committed as revision 26025 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 02:32:59 +00:00
Justin Ruggles e8d21fba3f Allocate planar_samples using av_mallocz().
Lowers memory usage when encoding less than 6 channels.

Originally committed as revision 26024 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-16 02:32:55 +00:00
Justin Ruggles 171bc51c9b Allocate bap and bap1 buffers using av_malloc().
This reduces the memory footprint when using less than 6 channels.
Modify bit allocation to swap the 2 buffers instead of using memcpy() and use
per-block pointers for bap. This is slightly faster (0.3%) in function
cbr_bit_allocation().

Originally committed as revision 26023 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-15 21:12:28 +00:00
Justin Ruggles 1c3e117e0b Remove last_samples[] and copy directly from planar_samples[].
Avoids memcpy that was used to store last samples for next frame.
Approx. 3% faster in function deinterleave_input_samples() and reduces memory
usage by 3kB.

Originally committed as revision 26021 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-15 17:28:52 +00:00
Justin Ruggles 7eeca961e3 Remove unneeded line. key_frame is already set to 1 in avcodec_alloc_frame().
Originally committed as revision 26020 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-15 17:28:49 +00:00
Justin Ruggles 2d82d9b1df cosmetics: comment clean-up and misc cosmetics
Originally committed as revision 26019 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-15 17:28:44 +00:00
Justin Ruggles 5901cebecd Separate most of the per-block arrays into a separate per-block struct.
Originally committed as revision 26018 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-15 17:28:41 +00:00
Justin Ruggles cb6247cb30 Split bit allocation search into a separate function.
Originally committed as revision 26017 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-15 17:28:38 +00:00
Justin Ruggles 06f6f78578 10l: fix typo in compute_exp_strategy()
Originally committed as revision 26013 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 22:45:35 +00:00
Justin Ruggles 266d24be4a Move large arrays to AC3EncodeContext rather than passing them around.
Originally committed as revision 26012 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 22:45:31 +00:00
Justin Ruggles 7da4dc17d9 cosmetics: line wrap and spacing
Originally committed as revision 26011 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 22:45:28 +00:00
Justin Ruggles a0d763fc88 Use a single value for SNR offset in the bit allocation search rather than
the separate coarse and fine values.

Originally committed as revision 26010 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 22:45:22 +00:00
Justin Ruggles 70fcd7ea80 Change bit_alloc() to return the mantissa bit count.
Originally committed as revision 26009 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 22:45:19 +00:00
Justin Ruggles 937cd1467c cosmetics: alignment and line wrap after last commit
Originally committed as revision 26008 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 22:45:15 +00:00
Justin Ruggles 359c1d1926 Move bit counts to AC3EncodeContext.
Originally committed as revision 26007 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 22:45:12 +00:00
Justin Ruggles 793bbf9544 Split out setting of bit allocation parameters to a separate function.
Th new function only needs to be called at initialization because bit
allocation parameters currently do not change during encoding.

Originally committed as revision 26003 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:43 +00:00
Justin Ruggles 8999944ecb Split out counting of frame bits into a separate function.
Originally committed as revision 26002 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:40 +00:00
Justin Ruggles 33a7d549e8 cosmetics: vertical alignment
Originally committed as revision 26001 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:36 +00:00
Justin Ruggles d3325d555b Only calculate num_exp_groups once.
Originally committed as revision 26000 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:33 +00:00
Justin Ruggles dc0bc0f84e Check for bit allocation error in ac3_encode_frame().
Move error log printout to ac3_encode_frame().

Originally committed as revision 25999 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:30 +00:00
Justin Ruggles f94bacc538 Split out grouping of exponents into a separate function.
Originally committed as revision 25998 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:26 +00:00
Justin Ruggles b6a1e5236e Split out mantissa quantization into separate functions.
Originally committed as revision 25997 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:23 +00:00
Justin Ruggles 5b44ede0ba cosmetics: rearrange some functions
Originally committed as revision 25996 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:20 +00:00
Justin Ruggles d7da80806c Reverse the exponent & exponent strategy array arrangement to simplify the
per-channel exponent strategy decision.  This will also make it easier to
plug-in other exponent strategy algorithms.

Originally committed as revision 25995 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:17 +00:00
Justin Ruggles 67d979fede Move writing of frame to the output bitstream to a separate function.
Originally committed as revision 25994 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:13 +00:00
Justin Ruggles 084f5c5afe cosmetics: remove a comment and just spacing
Originally committed as revision 25993 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:10 +00:00
Justin Ruggles 160d85f5b0 Split frame size adjustment into a separate function.
Originally committed as revision 25992 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:06 +00:00
Justin Ruggles dfdf73eb1a Split exponent processing into separate functions.
Originally committed as revision 25991 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:53:02 +00:00
Justin Ruggles 0a0a8500fb Split applying of MDCT into several separate functions.
Originally committed as revision 25990 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:59 +00:00
Justin Ruggles 4acc790f3c Split input sample deinterleaving into a separate function.
Originally committed as revision 25989 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:56 +00:00
Justin Ruggles 152cc52803 Separate functionally different calculations in ac3_encode_frame().
Originally committed as revision 25988 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:53 +00:00
Justin Ruggles 98f6ee4453 cosmetics: rename 2 variables
Originally committed as revision 25987 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:49 +00:00
Justin Ruggles 12ed622699 Deinterleave whole frame at once instead of per-block.
This reduces the amount of memcpy() by using pointers to overlap samples for
successive blocks rather than copying.

Originally committed as revision 25986 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:46 +00:00
Justin Ruggles e0685bc98f cosmetics: add & alter some comments
Originally committed as revision 25985 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:43 +00:00
Justin Ruggles 282255bbd2 Split setting of bandwidth into a separate function.
Originally committed as revision 25984 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:40 +00:00
Justin Ruggles e35c984a5d Move setting of bitstream_id and bitstream_mode to ac3_encode_init().
Originally committed as revision 25983 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:37 +00:00
Justin Ruggles ddf63d37b8 Improve ac3_encode_init() error reporting.
Return AVERROR(EINVAL) instead of -1. Propogate errors from called functions.
Add some error log printouts.

Originally committed as revision 25982 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:34 +00:00
Justin Ruggles b64d842c1d cosmetics: indent after last commit
Originally committed as revision 25981 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:30 +00:00
Justin Ruggles 99ca4f73f0 Don't use nested loops to iterate valid sample rates.
Eliminates a goto and mirrors the bitrate validation.

Originally committed as revision 25980 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:25 +00:00
Justin Ruggles 1607db0a95 Remove some duplicate local copies of avctx fields.
This is an av_cold function, and we don't need to duplicate variables just to
save a few characters.

Originally committed as revision 25979 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:21 +00:00
Justin Ruggles 8f60f70d44 Split validation of initial user options into a separate function.
Originally committed as revision 25978 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:18 +00:00
Justin Ruggles 427e2293d3 Use bytes instead of 16-bit words for frame size.
Originally committed as revision 25977 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:14 +00:00
Justin Ruggles eed00252c9 cosmetics: rename variable 'n' to 'pad_bytes'
Originally committed as revision 25976 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:12 +00:00
Justin Ruggles 1971ab6ed6 Change output_frame_end() to return void. The frame size is already known.
Originally committed as revision 25975 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:08 +00:00
Justin Ruggles e8b552a818 cosmetics: pretty-printing
Originally committed as revision 25974 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:04 +00:00
Justin Ruggles ce67b7cd38 cosmetics: rename some iterator variables to match what they represent
Originally committed as revision 25973 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:52:00 +00:00
Justin Ruggles 777732756a cosmetics: rename a variable for consistency
Originally committed as revision 25972 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:56 +00:00
Justin Ruggles aab45ca3de cosmetics: rename exp_samples and global_exp to exp_shift.
Originally committed as revision 25971 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:53 +00:00
Justin Ruggles 23c5b361a6 cosmetics: rename 2 functions
Originally committed as revision 25970 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:50 +00:00
Justin Ruggles 47ae6e795b define AC3_CRITICAL_BANDS and use it in the AC-3 encoder and decoder.
Originally committed as revision 25967 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:40 +00:00
Justin Ruggles 0454b55801 Use sizeof(array value) instead of sizeof(int16_t).
Originally committed as revision 25966 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:36 +00:00
Justin Ruggles a0a9204e49 cosmetics: use lowercase letters for function names
Originally committed as revision 25965 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:33 +00:00
Justin Ruggles c36ce0f8df cosmetics: add new function documentation and clean up existing documentation
Originally committed as revision 25964 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:30 +00:00
Justin Ruggles 2f8ae52228 cosmetics: add more space between functions
Originally committed as revision 25963 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:26 +00:00
Justin Ruggles e77fd066fb cosmetics: rearrange some functions/typedefs/macros
Originally committed as revision 25962 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:23 +00:00
Justin Ruggles 02877def49 Simplify group size calculation in 2 places.
Originally committed as revision 25961 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:20 +00:00
Justin Ruggles 9816155337 cosmetics: make a switch/case more compact
Originally committed as revision 25960 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:17 +00:00
Justin Ruggles b84a211bc8 Clean up fft_init() and mdct_init()
Originally committed as revision 25959 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:12 +00:00
Justin Ruggles 6a988808a4 cosmetics: pretty-printing, alignment, etc...
Originally committed as revision 25958 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:09 +00:00
Justin Ruggles a913b5cf60 Remove unneeded #include
Originally committed as revision 25957 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:05 +00:00
Justin Ruggles 918cd2255c Simplify fix15().
Turn it into 2 macros, and use av_clip_int16() and lrintf().
This matches the int16 to float sample conversion in audioconvert.c.
The regression test output is different due to lrintf() rounding.

Originally committed as revision 25956 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:51:02 +00:00
Justin Ruggles 228315bbd3 Fix the fixed-point MDCT and FFT tests so that they actually compile and work.
Also, use LFG from libavutil instead of random().

Originally committed as revision 25955 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:58 +00:00
Justin Ruggles a8d2b06b7c Split out initialization of MDCT tables into a separate function.
Originally committed as revision 25954 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:54 +00:00
Justin Ruggles 0796546370 cosmetics: Document AC3EncodeContext fields.
Originally committed as revision 25953 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:49 +00:00
Justin Ruggles 22c0b03c8f Remove unneeded debugging messages.
Originally committed as revision 25952 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:45 +00:00
Justin Ruggles 1fda2c10f6 cosmetics: Define AC3_WINDOW_SIZE and use it instead of AC3_BLOCK_SIZE*2.
Originally committed as revision 25951 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:40 +00:00
Justin Ruggles 7066cc8f2b cosmetics: use better (and shared) macro names for some constant values
Originally committed as revision 25950 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:34 +00:00
Justin Ruggles a657899cf7 Remove duplicate AC3EncodeContext fields, sr_shift and sr_code.
Originally committed as revision 25949 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:30 +00:00
Justin Ruggles 2d2692eb49 cosmetics: rename some fields in AC3EncodeContext
Originally committed as revision 25948 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:27 +00:00
Justin Ruggles 9cb5903299 cosmetics: change all short to int16_t
Originally committed as revision 25947 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:23 +00:00
Justin Ruggles 2be209b213 Change some unsigned types to signed types in AC3EncodeContext
Originally committed as revision 25946 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:20 +00:00
Justin Ruggles 7e5a4bf8ba cosmetics: rearrange AC3EncodeContext fields
Originally committed as revision 25945 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-14 14:50:15 +00:00
Stefano Sabatini 63e8d9760f Use the new libavcore audio channel API.
This also allows to remove a linking dependency of libavfilter on
libavcodec.

Originally committed as revision 25789 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-11-21 20:06:22 +00: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
Reimar Döffinger edac49daf5 Use "const" qualifier for pointers that point to input data of
audio encoders.
This is purely for clarity/documentation purposes.

Originally committed as revision 24481 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-24 13:59:49 +00:00
Måns Rullgård 8fc0162ac4 Add av_ prefix to bswap macros
Originally committed as revision 24170 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-10 22:12:30 +00:00
Diego Biurrun ba87f0801d Remove explicit filename from Doxygen @file commands.
Passing an explicit filename to this command is only necessary if the
documentation in the @file block refers to a file different from the
one the block resides in.

Originally committed as revision 22921 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-04-20 14:45:34 +00:00
Stefano Sabatini 72415b2adb Define AVMediaType enum, and use it instead of enum CodecType, which
is deprecated and will be dropped at the next major bump.

Originally committed as revision 22735 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-30 23:30:55 +00:00
Francesco Lavra 91cc5d3767 Move ff_reverse in libavcodec to av_reverse in libavutil.
Patch by Francesco Lavra, francescolavra interfree it

Originally committed as revision 20484 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-11-09 09:11:35 +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 8b44de14d1 Change av_log() calls surrounded by '#ifdef DEBUG' into dprintf macros.
Originally committed as revision 19550 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-30 21:00:08 +00:00
Justin Ruggles be1efe5993 ac3enc: log a warning message if the channel layout is not specified at
the time of codec initialization.

Originally committed as revision 18631 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-20 00:34:08 +00:00
Justin Ruggles 120b4557f3 Add channel layout support to the AC-3 encoder.
Originally committed as revision 18623 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-19 15:06:13 +00:00
Justin Ruggles a7c6e1171b ac3enc: reorder input channels to AC-3 channel order
Originally committed as revision 18540 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-17 08:39:11 +00:00
Stefano Sabatini fb53b4a035 Rename pbBufPtr() to put_bits_ptr().
The new name is more readable and consistent with the FFmpeg naming
style.

Originally committed as revision 18497 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-13 16:59:38 +00:00