Justin Ruggles
3d371f417e
ws_snd: misc cosmetic clean-ups
2011-09-26 16:23:58 -04:00
Justin Ruggles
659c719bc7
ws_snd: remove the 2-bit ADPCM table and just subtract 2 instead.
2011-09-26 16:23:15 -04:00
Justin Ruggles
618b067d21
ws_snd: use memcpy() and memset() instead of loops
2011-09-26 16:23:14 -04:00
Justin Ruggles
6896aa7a38
ws_snd: use samples pointer for loop termination instead of a separate
...
iterator variable.
2011-09-26 16:23:14 -04:00
Justin Ruggles
6a818cb3ff
ws_snd: make sure number of channels is 1
2011-09-26 16:23:10 -04:00
Justin Ruggles
417364ce1f
ws_snd: add some checks to prevent buffer overread or overwrite.
2011-09-26 15:49:50 -04:00
Justin Ruggles
2322ced8da
ws_snd: decode to AV_SAMPLE_FMT_U8 instead of S16.
...
8-bit unsigned is the native sample format.
2011-09-26 15:49:50 -04:00
Justin Ruggles
4c5e7b27d5
flacdec: fix buffer size checking in get_metadata_size()
...
Adds an additional check before reading the next block header and avoids a
potential integer overflow when checking the metadata size against the
remaining buffer size.
2011-09-26 15:29:45 -04:00
Justin Ruggles
b15a9888a8
sol: return error if av_get_packet() fails.
...
This prevents sending a packet with data=NULL size=AVERROR_EOF.
2011-09-25 16:53:49 -04:00
Justin Ruggles
88f908fbdc
cosmetics: reindent and pretty-print
2011-09-25 14:38:08 -04:00
Justin Ruggles
8febd6afbc
libgsm: split init and close fuctions for encoder and decoder.
...
The decoder shouldn't be allocating coded_frame. It's also cleaner to split
them than to check avctx->codec->encode and avctx->codec->decode.
2011-09-25 14:38:08 -04:00
Justin Ruggles
4568c2bf97
vmdaudio: fix decoding of 16-bit audio format.
...
The initial sample of each block is raw 16-bit PCM, not DPCM.
Fixes decoding of all samples in:
http://streams.videolan.org/samples/game-formats/sierra-vmd/Lighthouse/
2011-09-25 10:39:00 -04:00
Justin Ruggles
9ff6d0791b
adpcmenc: Set bits_per_coded_sample
2011-09-23 20:54:29 -04:00
Justin Ruggles
59df4b82a5
avplay: flush audio decoder with empty packets at EOF if the decoder has
...
CODEC_CAP_DELAY set.
2011-09-22 14:11:35 -04:00
Justin Ruggles
1993c6849c
8svx/iff: fix decoding of compressed stereo 8svx files.
...
Make the iff demuxer send the whole audio chunk to the decoder as a
single packet and move stereo interleaving from the iff demuxer to the
decoder.
Based on a patch by Stefano Sabatini.
git.videolan.org/ffmpeg.git
commit e280a4da2a
2011-09-22 14:11:34 -04:00
Justin Ruggles
fda459cee7
8svx: log an error message if output buffer is too small
...
Based on a patch by Stefano Sabatini.
git.videolan.org/ffmpeg.git
commit e280a4da2a
2011-09-22 14:11:34 -04:00
Justin Ruggles
0ac3b8fc4a
8svx: check packet size before reading the initial sample value.
2011-09-22 14:11:34 -04:00
Justin Ruggles
e371878416
8svx: output 8-bit samples instead of 16-bit.
...
Based on a patch by Stefano Sabatini.
git.videolan.org/ffmpeg.git
commit e280a4da2a
2011-09-22 14:11:34 -04:00
Justin Ruggles
ac68607bfe
8svx: split delta decoding into a separate function.
...
Based on a patch by Stefano Sabatini.
git.videolan.org/ffmpeg.git
commit e280a4da2a
2011-09-22 14:11:34 -04:00
Justin Ruggles
3ed7860943
include stdint.h in adpcm_data.h
...
fixes make checkheaders
2011-09-13 10:59:47 -04:00
Justin Ruggles
826c56d16e
adpcm: split ADPCM encoders and decoders into separate files.
...
Move shared tables to a separate file as well.
2011-09-12 11:26:11 -04:00
Justin Ruggles
ae264bb29b
ac3enc: Add channel coupling support for the fixed-point AC-3 encoder.
...
Update FATE references accordingly.
2011-09-05 10:09:44 -04:00
Justin Ruggles
a0d17b6d45
ac3enc: scale floating-point coupling channel coefficients in
...
scale_coefficients() rather than in apply_channel_coupling()
2011-09-05 10:07:43 -04:00
Justin Ruggles
3e5722a8ca
ac3enc: fix encoding of stereo ac3 files when rematrixing is disabled.
...
The number of rematrixing bands still needs to be calculated.
2011-09-05 09:24:59 -04:00
Justin Ruggles
3be5a94351
ac3enc: remove outdated TODO comment for apply_channel_coupling()
2011-08-22 12:14:57 -04:00
Justin Ruggles
c766eb1ce1
ac3enc: add macros for option names to make them more understandable.
2011-08-11 11:33:32 -04:00
Justin Ruggles
9542ca9fb7
ac3enc: fix 'channel_coupling' option to actually allow 'auto'.
...
Use 'auto' as the default value.
2011-08-11 11:33:32 -04:00
Justin Ruggles
069083a419
ac3enc: clip coupling coordinates during calculation
...
This is faster than using the clip_coefficients() function. Also,
clipping the coordinates before determining reuse is better since it
will compare coordinates that are closer to their final encoded values.
2011-08-10 17:09:24 -04:00
Justin Ruggles
d271d5b215
Remove incorrect info in documentation of AVCodecContext.bits_per_raw_sample.
...
bits_per_raw_sample is used in video as well, where sample_fmt is not used.
2011-08-10 15:40:52 -04:00
Justin Ruggles
d1d33e0763
ac3enc: remove unneeded #include
2011-08-09 16:44:34 -04:00
Justin Ruggles
fce33f9ead
ac3enc: restructure coupling coordinate reuse calculation
2011-08-09 16:44:34 -04:00
Justin Ruggles
c3d63262fe
ac3enc: allow new coupling coordinates to be sent independently for each
...
channel.
2011-08-09 16:44:34 -04:00
Justin Ruggles
d55ad59a8a
ac3enc: separate exponent bit counting from exponent grouping.
...
Move bit counting to the bit allocation function. Move exponent grouping to
after bit allocation. This will allow for adjustment of bandwidth parameters
during bit allocation without having to do exponent grouping multiple times.
2011-08-09 16:28:18 -04:00
Justin Ruggles
093ee8e199
cosmetics: reindent
2011-07-27 11:51:46 -04:00
Justin Ruggles
1bca72e1bd
eac3enc: support writing of basic mixing and info metadata
2011-07-27 11:51:46 -04:00
Justin Ruggles
be7bd626c4
eac3enc: use different numbers of blocks per frame to allow higher bitrates
2011-07-21 14:57:10 -04:00
Justin Ruggles
953302656a
cosmetics: indentation
2011-07-19 14:15:00 -04:00
Justin Ruggles
08a747afb9
eac3enc: use frame exponent strategy when applicable.
...
This checks if the set of selected exponent strategies for all blocks in a
channel are in the frame exponent strategy table, and if so, writes the
table index instead of each strategy. This saves up to 7 bits per channel per
frame, so the overall effect on quality is small.
2011-07-19 14:15:00 -04:00
Justin Ruggles
31b69928e5
cosmetics: rename eac3dec_data.c/h to eac3_data.c/h since the tables will also
...
be used in the E-AC-3 encoder.
2011-07-19 14:15:00 -04:00
Justin Ruggles
b5849f7709
ac3enc: merge AC3MDCTContext with AC3EncodeContext.
...
Since both the fixed-point and floating-point encoders use the FFTContext,
this no longer needs to be in a separate context. Also, when a short-transform
context is added, the same MDCT window will be used.
2011-07-13 16:55:28 -04:00
Justin Ruggles
82cea7cb6c
ac3enc: prefer passing AC3EncodeContext rather than AVCodecContext
2011-07-13 16:55:28 -04:00
Justin Ruggles
f501157e53
ac3enc: fix memleak
2011-07-13 16:54:02 -04:00
Justin Ruggles
e35c674d13
alsa: limit buffer_size to 32768 frames.
...
In testing, the file output plugin gave a max buffer size of about 20 million
frames, which is way more than what is really needed and causes a memory
allocation error on my system.
2011-07-09 16:01:06 -04:00
Justin Ruggles
8bfd7f6a47
alsa: fallback to buffer_size/4 for period_size.
...
buffer_size/4 is the value used by aplay. This fixes output to null
devices, e.g. writing ALSA output to a file.
2011-07-09 16:00:56 -04:00
Justin Ruggles
f99a5ef92e
ac3dsp: add x86-optimized versions of ac3dsp.extract_exponents().
2011-07-01 13:02:11 -04:00
Justin Ruggles
8b7b2d6aae
ac3dsp: simplify extract_exponents() now that it does not need to do clipping.
2011-07-01 13:02:11 -04:00
Justin Ruggles
523b7eba19
ac3enc: clip coefficients after MDCT.
...
This ensures that any processing between the MDCT and exponent extraction will
be using clipped coefficients.
2011-07-01 13:02:11 -04:00
Justin Ruggles
6054cd25b4
ac3enc: add int32_t array clipping function to DSPUtil, including x86 versions.
2011-07-01 13:02:11 -04:00
Justin Ruggles
bd2deab706
cosmetics: remove outdated comment that is no longer true
2011-06-28 11:03:42 -04:00
Justin Ruggles
8683c6a638
ac3enc: move ff_ac3_encode_frame() to ac3enc_template.c
...
This avoids using function pointers for quite a few small functions, most of
which just call DSP functions.
2011-06-27 12:59:39 -04:00
Justin Ruggles
668afae438
ac3enc: merge log2_tab() into normalize_samples()
2011-06-27 12:59:39 -04:00
Justin Ruggles
7dcdf974d0
ac3enc: Remove bit allocation fallbacks.
...
They introduce too much complexity for very little benefit. The result is that
encoding will be more likely to fail at extremely low bitrates where quality
would be awful anyway.
2011-06-27 12:59:39 -04:00
Justin Ruggles
684f4abfac
ac3enc: remove unneeded local variable in asym_quant()
2011-06-22 12:18:10 -04:00
Justin Ruggles
f21fb76b1b
ac3enc: remove a branch in asym_quant() by doing 2 shifts
2011-06-22 12:18:10 -04:00
Justin Ruggles
0e4dbe2996
ac3enc: avoid masking output in asym_quant() by using signed values for
...
quantized mantissas.
2011-06-22 12:18:10 -04:00
Justin Ruggles
e6c52cee54
Replace usages of av_get_bits_per_sample_fmt() with av_get_bytes_per_sample().
...
av_get_bits_per_sample_fmt() is deprecated.
2011-06-20 18:56:06 -04:00
Justin Ruggles
b203f65451
ac3enc: use correct alignment and length in channel coupling dsp functions.
...
This fixes a segfault when using the C version of ac3dsp.float_to_fixed24().
2011-06-15 17:56:49 -04:00
Justin Ruggles
99477adc31
ac3enc: fix allocation of floating point samples.
...
sizeof(SampleType) is different for fixed and float encoders.
2011-06-13 17:49:37 -04:00
Justin Ruggles
38c304addd
ac3enc: remove empty ac3_float function that is never called
2011-06-13 16:49:35 -04:00
Justin Ruggles
e0cc66df61
ac3enc: split templated float vs. fixed functions into a separate file.
...
Function pointers are used for templated functions instead of needlessly
duplicating many functions.
2011-06-13 16:49:35 -04:00
Justin Ruggles
e754dfc0bb
ac3enc: dynamically allocate AC3EncodeContext fields windowed_samples and mdct
...
This will allow the same struct to be used for both the fixed and float ac3
encoders.
2011-06-13 16:49:35 -04:00
Justin Ruggles
36151b3e31
ac3enc: use function pointer to choose between AC-3 and E-AC-3 header output
...
functions.
2011-06-13 16:49:35 -04:00
Justin Ruggles
aecc596a65
Update copyright year for ac3enc_opts_template.c.
...
The code was originally committed to Libav on March 25, 2011.
2011-06-10 12:58:08 -04:00
Justin Ruggles
c8e9ea43d0
Move E-AC-3 encoder functions to a separate eac3enc.c file.
2011-06-07 15:16:41 -04:00
Justin Ruggles
787a13535a
ac3enc: remove convenience macro, #define DEBUG
2011-06-07 15:16:41 -04:00
Justin Ruggles
a8bd53402a
ac3enc: remove unused #define
2011-06-07 15:16:41 -04:00
Justin Ruggles
1397ac0aa0
APIchanges: fill-in git commit hash for av_get_bytes_per_sample() addition
2011-06-07 13:07:35 -04:00
Justin Ruggles
2f37321abc
iirfilter: fix biquad filter coefficients.
...
The current filter implementation should only have the cx coefficients
divided by gain in order to give the correct output scale.
2011-06-07 10:47:36 -04:00
Justin Ruggles
35d5cb1ab4
ac3enc: extract all exponents for the frame at once
2011-06-04 19:08:37 -04:00
Justin Ruggles and Martin Storsjö
70bb747a57
ac3dsp: do not use the ff_* prefix when referencing ff_ac3_bap_bits.
...
this should fix the windows builds
Signed-off-by: Martin Storsjö <martin@martin.st >
2011-05-28 22:43:40 +03:00
Justin Ruggles
dc0ad40de2
ac3dsp: fix loop condition in ac3_update_bap_counts_c()
2011-05-28 14:41:21 -04:00
Justin Ruggles
6ca23db9cc
ac3enc: modify mantissa bit counting to keep bap counts for all values of bap
...
instead of just 0 to 4.
This does all the actual bit counting as a final step.
2011-05-28 12:39:28 -04:00
Justin Ruggles
1323828a0f
ac3enc: split mantissa bit counting into a separate function.
...
No speed difference. This is to allow for more flexible bit counting.
2011-05-28 12:39:28 -04:00
Justin Ruggles
7743865ffc
ac3enc: store per-block/channel bap pointers by reference block in a 2D array
...
rather than in the AC3Block struct.
This will make it easier to access the bap values without having to chase
the reference block pointers each time.
2011-05-28 12:39:28 -04:00
Justin Ruggles
1a950da6a2
cosmetics: indentation and alignment after previous commit
2011-05-27 16:25:22 -04:00
Justin Ruggles
aa47c35dff
ac3enc: add support for E-AC-3 encoding.
...
This adds basic stream format support and allows for arbitrary bit rates
rather than just those supported in AC-3.
2011-05-27 16:25:22 -04:00
Justin Ruggles
b1bf8c7887
ac3enc: Move AC-3 AVOptions array to a separate file to make it easier to
...
use only selected options for the different AC-3 encoder types.
2011-05-27 16:25:22 -04:00
Justin Ruggles
478455d66b
ac3enc: initialize all coefficients to zero.
...
Uninitialized coefficients were being used to generate exponents, some
of which actually ended up in the final stream. Even though, they were
just extra exponents that are not used by any decoder, it is still
better to have consistent output for testing. This also fixes valgrind
errors.
2011-05-25 20:13:49 -04:00
Justin Ruggles and Reinhard Tartler
7f3a7b5c40
ac3enc: add channel coupling support
...
Channel coupling is an optional AC-3 feature that increases quality by
combining high frequency information from multiple channels into a
single channel. The per-channel high frequency information is sent with
less accuracy in both the frequency and time domains. This allows more
bits to be used for lower frequencies while preserving enough
information to reconstruct the high frequencies.
2011-05-24 07:52:31 +02:00
Justin Ruggles
cef7d70181
aacdec: fix typo in scalefactor clipping check
2011-05-23 15:56:52 -04:00
Justin Ruggles
e98a95e779
10l: wrap float_interleave functions in HAVE_YASM.
...
fixes compilation with --disable-yasm
2011-05-18 20:18:08 -04:00
Justin Ruggles
41e21e4db6
APIchanges: fill in date and commit for request_sample_fmt
2011-05-18 17:52:31 -04:00
Justin Ruggles
9aa8193a23
Add floating-point sample format support to the ac3, eac3, dca, aac, and vorbis
...
decoders.
Based on patches by clsid2 in ffdshow-tryout.
2011-05-18 17:27:06 -04:00
Justin Ruggles
bc778a0cea
Add support for request_sample_format in ffmpeg and ffplay.
2011-05-18 17:27:06 -04:00
Justin Ruggles
00e5da893d
Add APIchanges entry for request_sample_fmt.
2011-05-18 17:27:06 -04:00
Justin Ruggles
64150ff014
Add request_sample_fmt field to AVCodecContext.
...
This will allow audio decoders to support output of different sample formats
as a runtime option.
2011-05-18 17:27:06 -04:00
Justin Ruggles
32f8fb8ecf
Add float_interleave() to FmtConvertContext with x86-optimized versions.
...
Partially based on patches by clsid2 in ffdshow-tryout.
ff_float_interleave6() x86 improvements by Loren Merrit.
2011-05-18 17:27:05 -04:00
Justin Ruggles
a26d2b4bc8
Fix compilation of iirfilter-test.
2011-05-17 18:06:51 -04:00
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