Justin Ruggles
033a4a942a
aacdec: Use float instead of int16_t for ltp_state to avoid needless rounding.
2011-05-15 17:42:05 -04:00
Justin Ruggles
08e434b015
Add an aac sample which uses LTP to fate-aac.
2011-05-14 12:41:11 -04:00
Justin Ruggles
4d7a421574
ac3enc: put the counting of stereo rematrixing bits in the same place to
...
make the code easier to understand.
2011-05-12 12:41:08 -04:00
Justin Ruggles
257de756fb
ac3enc: clean up count_frame_bits() and count_frame_bits_fixed()
2011-05-12 12:41:08 -04:00
Justin Ruggles
63b1866ae1
ac3enc: clip large coefficient values and negative exponents rather than using
...
av_assert2().
2011-05-01 13:32:04 -04:00
Justin Ruggles
177fed4e9b
ac3enc: do not store a bandwidth code for each channel.
...
Although AC-3 allows it, it's not very useful. The encoder uses the same code
for all full-bandwidth channels.
2011-05-01 13:32:04 -04:00
Justin Ruggles
a1d0f511fc
ac3enc: remove bandwidth reduction as fallback for bit allocation failure.
...
It was only needed at low bitrates, which now already use a low bandwidth, so
the bandwidth reduction is no longer needed.
2011-05-01 13:32:04 -04:00
Justin Ruggles
ba6bce5140
ac3enc: merge compute_exp_strategy_ch() into compute_exp_strategy()
2011-05-01 13:32:04 -04:00
Justin Ruggles
4142487d1c
ac3enc: return error if frame+exponent bits are too large instead of using
...
av_assert2().
This can occur in some very rare cases with low bitrates.
2011-05-01 13:32:03 -04:00
Justin Ruggles
987fe2dc55
ac3enc: differentiate between current block and reference block in bit_alloc()
2011-05-01 13:32:03 -04:00
Justin Ruggles
6b2636bba6
ac3enc: simplify exponent_init() by calculating exponent_group_tab[] based
...
on exponent group sizes.
2011-05-01 13:32:03 -04:00
Justin Ruggles
e0b33d479c
ac3enc: simplify stereo rematrixing decision options
2011-05-01 13:32:03 -04:00
Justin Ruggles
8745e9c458
ac3enc: remove check for mismatching channels and channel_layout
2011-04-27 12:57:43 -04:00
Justin Ruggles
688b09fa59
If AVCodecContext.channels is 0 and AVCodecContext.channel_layout is
...
non-zero, set channels based on channel_layout.
This allows the user to set only channel_layout and not channels.
2011-04-27 12:57:43 -04:00
Justin Ruggles
168f9e8c40
If AVCodecContext.channel_layout and AVCodecContext.channels are both
...
non-zero, check to make sure they do not contradict eachother.
2011-04-27 12:57:43 -04:00
Justin Ruggles
3dfc3e70c0
cosmetics: indentation
2011-04-27 12:57:43 -04:00
Justin Ruggles
8b00ab0113
Check AVCodec.supported_samplerates and AVCodec.channel_layouts in
...
avcodec_open().
If the encoder has a channel_layouts list and AVCodecContext.channel_layout
is 0, then only print a warning and let the encoder decide how to handle it.
2011-04-27 12:57:42 -04:00
Justin Ruggles
6271794041
aacdec: use a scale of 2 in the LTP MDCT rather than doubling the coefficient
...
table values from the spec.
2011-04-27 12:39:37 -04:00
Justin Ruggles
79ee8977c2
ac3enc: correct the flipped sign in the ac3_fixed encoder
2011-04-26 17:19:37 -04:00
Justin Ruggles
53f7628d38
update last major version increase dates in APIchanges
2011-04-20 11:46:23 -04:00
Justin Ruggles
31d76ec288
In avcodec_open(), set return code to an error value only when an error occurs
...
instead of unconditionally at the start of the function.
This fixes a bug where a successful call to ff_thread_init() masks errors that
occur after that point in the function. It also makes future bugs like this
less likely since the error code is now set near to the point in the code
where the error is found.
2011-04-19 14:10:03 -04:00
Justin Ruggles
4c64c8e95a
ac3dec: fix processing of delta bit allocation information.
...
The number of dba segments is the coded value + 1.
The coupling dba offset starts at the first coupling band, not at zero.
2011-04-17 12:33:41 -04:00
Justin Ruggles
e05a3ac713
ac3enc: select bandwidth based on bit rate, sample rate, and number of
...
full-bandwidth channels.
This reduces high-frequency artifacts and improves the quality of the lower
frequency audio at low bit rates.
2011-04-03 20:59:14 -04:00
Justin Ruggles
e3c007bb43
flvdec: fix segfault in amf_parse_object() due to NULL key
...
fixes Issue 2674
2011-04-03 20:29:04 -04:00
Justin Ruggles
c4549bd66a
ac3enc: avoid memcpy() of exponents and baps in EXP_REUSE case by using
...
exponent reference blocks.
2011-03-28 14:46:17 -04:00
Justin Ruggles
991f3de1bb
ac3enc: Add codec-specific options for writing AC-3 metadata.
2011-03-27 11:30:09 -04:00
Justin Ruggles
eb81cf860c
mov: set audio service type for AC-3 from bitstream mode in the 'dac3' atom.
2011-03-25 16:59:09 -04:00
Justin Ruggles
be18738801
Get audio_service_type for AC-3 based on bitstream mode in the AC-3 parser
...
and decoder, and vice-versa for the AC-3 encoder.
2011-03-25 16:59:00 -04:00
Justin Ruggles
c70a6a41dd
Use audio_service_type to set stream disposition.
2011-03-25 16:58:50 -04:00
Justin Ruggles
0b18b49b3b
Add APIchanges entry for audio_service_type.
2011-03-25 16:55:36 -04:00
Justin Ruggles
34b47d7cbc
Add audio_service_type field to AVCodecContext for encoding and reporting
...
of the service type in the audio bitstream.
2011-03-25 16:51:53 -04:00
Justin Ruggles
7f0e747b8c
support @heading, @subheading, @subsubheading, and @subsubsection in
...
texi2pod.pl
2011-03-25 09:48:31 -04:00
Justin Ruggles
e6e9823488
Add apply_window_int16() to DSPContext with x86-optimized versions and use it
...
in the ac3_fixed encoder.
2011-03-22 21:08:30 -04:00
Justin Ruggles
40728b5169
cosmetics: indentation
2011-03-22 15:36:47 -04:00
Justin Ruggles
67fc8652b9
Always copy input data for AC3 decoder.
...
Depending on error_recognition is not correct, low values do
certainly not mean it is ok to crash.
Based on a patch by Reimar Döffinger <Reimar.Doeffinger@gmx.de >
2011-03-22 15:36:47 -04:00
Justin Ruggles
85ab290470
ac3enc: make sym_quant() branch-free
2011-03-22 14:36:18 -04:00
Justin Ruggles
45ed822550
cosmetics: indentation
2011-03-22 09:11:07 -04:00
Justin Ruggles
eba586b0d9
Add a CPU flag for the Atom processor.
...
The Atom has SSSE3 support, which is useful in many cases, but sometimes the
SSSE3 version is slower than the SSE2 equivalent on the Atom, but is generally
faster on other processors supporting SSSE3. This flag allows for selectively
disabling certain SSSE3 functions on the Atom.
2011-03-22 09:11:07 -04:00
Justin Ruggles
0f999cfddb
ac3enc: add float_to_fixed24() with x86-optimized versions to AC3DSPContext
...
and use in scale_coefficients() for the floating-point AC-3 encoder.
2011-03-17 16:46:48 -04:00
Justin Ruggles
79414257e2
mathops: fix MULL() when the compiler does not inline the function.
...
If the function is not inlined, an immmediate cannot be used for the
shift parameter, so the %cl register must be used instead in that case.
This fixes compilation for x86-32 using gcc with --disable-optimizations.
2011-03-15 20:49:37 -04:00
Justin Ruggles
aaff3b312e
mathops: change "g" constraint to "rm" in x86-32 version of MUL64().
...
The 1-arg imul instruction cannot take an immediate argument, only a register
or memory argument.
2011-03-15 13:43:47 -04:00
Justin Ruggles
b181b8fb96
mathops: convert MULL/MULH/MUL64 to inline functions rather than macros.
...
This fixes unexpected name collisions that were occurring with variables
declared within the macros.
It also fixes the fate-acodec-ac3_fixed regression test on x86-32.
2011-03-15 13:43:47 -04:00
Justin Ruggles
f1efbca5e9
ac3enc: add SIMD-optimized shifting functions for use with the fixed-point AC3 encoder.
2011-03-14 08:45:31 -04:00
Justin
323e6fead0
ac3enc: do not right-shift fixed-point coefficients in the final MDCT stage.
...
This increases the accuracy of coefficients, leading to improved quality.
Rescaling of the coefficients to full 25-bit accuracy is done rather than
offsetting the exponent values. This requires coefficient scaling to be done
before determining the rematrixing strategy. Also, the rematrixing strategy
calculation must use 64-bit math to prevent overflow due to the higher
precision coefficients.
2011-03-14 08:45:26 -04:00
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
d21be5f15b
cosmetics: rename ff_fmt_convert_init_ppc() to ff_fmt_convert_init_altivec().
...
It only has Altivec functions and is not compiled if Altivec is disabled.
2011-03-07 11:15:29 -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
b35743ffb4
ac3: define AC3_MAX_CPL_BANDS and use it in ac3dec.h
2011-03-04 16:48:09 -05:00
Justin Ruggles and Ronald S. Bultje
1108f8998c
vmdaudio: output 8-bit audio as AV_SAMPLE_FMT_U8.
...
There is no need to expand to 16-bits. Just use memcpy() to copy the raw data.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:52:51 -05:00
Justin Ruggles and Ronald S. Bultje
2ec7862db8
vmdaudio: remove unnecessary fields from VmdAudioContext and use the corresponding AVCodecContext fields instead.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:52:12 -05:00
Justin Ruggles and Ronald S. Bultje
1e86d685e0
vmdaudio: add out_bps to VmdAudioContext and use it to replace hard-coded sample size.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:51:44 -05:00
Justin Ruggles and Ronald S. Bultje
1574eff3d2
vmdaudio: simplify vmdaudio_decode_frame() by handling block_type first, then making a single call to vmdaudio_loadsound().
...
This also adds output buffer size checks for AUDIO and SILENCE block types.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:51:12 -05:00
Justin Ruggles and Ronald S. Bultje
ba9516cca8
cosmetics: reindent after previous commit
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:49:59 -05:00
Justin Ruggles and Ronald S. Bultje
762b386e4a
vmdaudio: move all silence chunk handling to vmdaudio_loadsound().
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:49:58 -05:00
Justin Ruggles and Ronald S. Bultje
8e9027d266
cosmetics: remove debugging cruft
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:49:56 -05:00
Justin Ruggles and Ronald S. Bultje
868f2f4d90
cosmetics: reindent after previous commit
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:48:04 -05:00
Justin Ruggles and Ronald S. Bultje
2d213695fc
vmdaudio: simplify buffer pointer and header size handling.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:12:39 -05:00
Justin Ruggles and Ronald S. Bultje
7a4fb3fd93
vmdaudio: set *data_size to zero when skipping small packets and add a warning log message.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:11:36 -05:00
Justin Ruggles and Ronald S. Bultje
22f893e1c9
vmdaudio: validate block type
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:10:12 -05:00
Justin Ruggles and Ronald S. Bultje
dd1af5136f
vmdaudio: use macros and a local variable for block type.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:08:31 -05:00
Justin Ruggles and Ronald S. Bultje
6989cb2dae
vmdaudio: correct the silent chunk count in the first block.
...
This fixes A/V sync with several samples, notably:
http://samples.mplayerhq.hu/game-formats/sierra-vmd/swat_*.vmd
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:06:33 -05:00
Justin Ruggles and Ronald S. Bultje
9b73f78600
vmdaudio: output audio samples for standalone silent blocks.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:04:51 -05:00
Justin Ruggles and Ronald S. Bultje
1328d43313
vmdaudio: remove duplicated code by merging mono and stereo decoding.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 21:02:19 -05:00
Justin Ruggles and Ronald S. Bultje
a58bcb40b1
vmdaudio: fix raw_block_size calculation.
...
The size should depend on the output sample size, not the internal bit depth.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-23 20:58:56 -05:00
Justin Ruggles and Mans Rullgard
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 and Ronald S. Bultje
1f004fc512
ac3dsp: Change punpckhqdq to movhlps in ac3_max_msb_abs_int16().
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-16 14:08:34 -05:00
Justin Ruggles and Mans Rullgard
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
Justin Ruggles and Ronald S. Bultje
fbb6b49dab
ac3enc: Add x86-optimized function to speed up log2_tab().
...
AC3DSPContext.ac3_max_msb_abs_int16() finds the maximum MSB of the absolute
value of each element in an array of int16_t.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-13 16:49:39 -05:00
Justin Ruggles and Ronald S. Bultje
74b1f96859
Add check for Athlon64 and similar AMD processors with slow SSE2.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com >
2011-02-11 16:58:18 -05:00
Justin Ruggles and Mans Rullgard
626264b11b
ac3enc: Remove unneeded clipping of shift amount.
...
s->windowed_samples will always have a range of [-32767,32767] due to the
window function, so the return value from log2_tab() will always be in the
range [0,14].
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-02-10 23:16:23 +00:00
Justin Ruggles and Mans Rullgard
d4582889ee
ac3enc: remove right shifting from lshift_tab() and make lshift unsigned.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-02-10 23:16:22 +00:00
Justin Ruggles and Ronald S. Bultje
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 and Mans Rullgard
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 and Mans Rullgard
c73d99e672
Separate format conversion DSP functions from DSPContext.
...
This will be beneficial for use with the audio conversion API without
requiring it to depend on all of dsputil.
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-02-02 02:44:53 +00:00
Justin Ruggles and Mans Rullgard
d19b744a36
cosmetics: indentation
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-31 20:30:15 +00:00
Justin Ruggles and Mans Rullgard
80ba1ddb58
Remove unneeded add bias from 3 functions.
...
DSPContext.vector_fmul_window()
DCADSPContext.lfe_fir()
SynthFilterContext.synth_filter_float()
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-31 20:28:42 +00:00
Justin Ruggles and Mans Rullgard
243f8241db
Flush final frames in libfaac encoder.
...
Gives decoded output identical in length to faac commandline encoder.
Fixes Issue 670.
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-29 18:58:27 +00:00
Justin Ruggles and Mans Rullgard
b5ec638343
cosmetics: indentation and spacing
2011-01-28 00:21:46 +00:00
Justin Ruggles and Mans Rullgard
9d06d7bce3
Remove the add bias hack for the C version of DSPContext.float_to_int16_*().
2011-01-28 00:07:35 +00:00
Justin Ruggles and Mans Rullgard
37cb3eb534
Add special case for 2nd-order IIR filter.
...
40% faster in ff_iir_filter_flt() when c->order == 2.
2011-01-28 00:04:02 +00:00
Justin Ruggles and Mans Rullgard
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 and Mans Rullgard
24e3ad3031
ac3: Remove ff_ac3_critical_band_size_tab.
...
It is only used to generate band_start_tab, which about the same size, at
runtime, so it's simpler just to always hardcode band_start_tab.
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-26 15:35:13 +00:00
Justin Ruggles and Mans Rullgard
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 and Mans Rullgard
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
Justin Ruggles and Janne Grunau
98cfadd648
10l: reverse the biquad coefficients.
...
I did not notice that the filter implementation uses a reversed history state.
Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net >
2011-01-22 04:46:48 +01:00
Justin Ruggles and Mans Rullgard
69915b48d6
iir: Change dst param to float* in ff_iir_filter_flt().
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-21 22:23:43 +00:00
Justin Ruggles and Mans Rullgard
1c189fc533
cosmetics related to LPC changes.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-21 19:59:08 +00:00
Justin Ruggles and Mans Rullgard
77a78e9bdc
Separate window function from autocorrelation.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-21 19:59:08 +00:00
Justin Ruggles and Mans Rullgard
56f8952b25
Move lpc_compute_autocorr() from DSPContext to a new struct LPCContext.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-21 19:58:59 +00:00
Justin Ruggles and Mans Rullgard
0361d13cf3
iir: change filter type if/else to a switch.
...
Simplifies error handling and makes it easier to add additional filter types.
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-20 23:55:21 +00:00
Justin Ruggles and Mans Rullgard
fcdf0a43cd
Add biquad high-pass and low-pass IIR filters.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-20 23:51:01 +00:00
Justin Ruggles and Mans Rullgard
30112adadf
Split out Butterworth filter coeff init to a separate function.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-20 20:23:28 +00:00
Justin Ruggles and Mans Rullgard
75b98610a7
cosmetics: vertical alignment and line wrap
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-20 18:35:42 +00:00
Justin Ruggles and Mans Rullgard
d42dc217ed
Add memory allocation failure checks to ff_iir_filter_init_coeffs().
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-20 18:35:13 +00:00
Justin Ruggles and Mans Rullgard
ebb230279a
cosmetics: wrap long line
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-20 17:27:00 +00:00
Justin Ruggles and Mans Rullgard
0a3d7697b4
Add function ff_iir_filter_flt() to accept floating-point input and output.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-20 17:26:13 +00:00
Justin Ruggles and Mans Rullgard
c3897d7690
Fix use of sstep/dstep in ff_iir_filter().
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-19 20:56:07 +00:00
Justin Ruggles and Mans Rullgard
a4f5af13fb
Add regression test for stereo s16le in voc.
...
Signed-off-by: Mans Rullgard <mans@mansr.com >
2011-01-19 12:51:42 +00:00
Justin Ruggles
f61cbc22d3
Revise check for codec id in voc demuxer.
...
This fixes demuxing of packets that do not contain a codec tag and come before the codec_id has been set.
2011-01-18 13:07:17 -05:00