Commit Graph
100 Commits
Author SHA1 Message Date
Justin Ruggles c7bd556d48 lavfi: amix: check active input count before calling request_samples
fixes use of the amix filter with only 1 input
2012-05-30 16:20:03 -04:00
Justin Ruggles b75726cb79 lavr: add x86-optimized function for mixing 2 to 1 s16p with q8 coeffs 2012-05-29 15:33:25 -04:00
Justin Ruggles c140fb2cbc lavr: add x86-optimized functions for mixing 2 to 1 s16p with float coeffs 2012-05-29 15:33:18 -04:00
Justin Ruggles 8dfc122719 lavr: add C functions for mixing 2 to 1 channels with s16p format 2012-05-29 15:16:20 -04:00
Justin Ruggles c7448c182a lavfi: add audio mix filter 2012-05-23 16:37:34 -04:00
Justin RugglesandDiego Biurrun 713548cbad x86: lavc: use %if HAVE_AVX guards around AVX functions in yasm code.
This is needed for older versions of yasm/nasm that do not support AVX.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
2012-05-22 20:46:02 +02:00
Justin Ruggles e0d8427dce af_resample: remove an extra space in the log output 2012-05-21 18:26:51 -04:00
Justin Ruggles afeb3590fc lavfi: add an audio split filter
Based on current version of the asplit filter in FFmpeg written by
Stefano Sabatini and others.
2012-05-21 14:49:52 -04:00
Justin Ruggles cc30080b3f lavfi: rename vf_split.c to split.c
This is in preparation for adding an audio split filter.
2012-05-21 14:49:52 -04:00
Justin Ruggles 95a98ab3f0 ac3dsp: simplify x86 versions of ac3_max_msb_abs_int16
Simplifies the code by using cpuflags and a new macro.
Also fixes the invalid use of the MMX2 pshufw operation in the MMX-only
function.
2012-05-15 15:23:59 -04:00
Justin RugglesandMichael Niedermayer 6f67d9833b libswresample: Implement MMX, SSE4 and AVX 6ch float and int32 packing function.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-05-13 19:31:59 +02:00
Justin Ruggles 5cc6d5244d lavr: replace the SSE version of ff_conv_fltp_to_flt_6ch() with SSE4 and AVX
The current SSE version is slower than the MMX version on Athlon64 and Sandy
Bridge, but the SSE4 and AVX versions are faster on Sandy Bridge.
2012-05-09 16:17:59 -04:00
Justin Ruggles 85e5b866dc avplay: properly close/reopen AVAudioResampleContext on channel layout change
fixes Bug#280
2012-05-07 12:42:32 -04:00
Justin Ruggles f132248028 avcodec: do not needlessly set packet size to 0 in avcodec_encode_audio2()
It is already set to 0 by av_free_packet()
2012-05-07 12:14:05 -04:00
Justin Ruggles 74e10b6204 avcodec: for audio encoding, reset output packet when it is not valid 2012-05-07 12:14:05 -04:00
Justin Ruggles fa0319b4fd avcodec: refactor avcodec_encode_audio2() to merge common branches 2012-05-07 12:14:05 -04:00
Justin Ruggles b461cd4deb avcodec: remove fallbacks for AVCodec.encode() in avcodec_encode_audio2()
We no longer have any audio encoders using AVCodec.encode().
2012-05-07 12:14:04 -04:00
Justin Ruggles e5356ebf22 cosmetics: indentation 2012-05-03 16:28:08 -04:00
Justin Ruggles 8916f1fbcb avformat: only fill-in interpolated timestamps if duration is non-zero
This avoids returning duplicate timestamps for multiple packets when the
demuxer does not provide all timestamps and packet duration is not known.
2012-05-03 16:28:08 -04:00
Justin Ruggles ff499157a1 avformat: remove a workaround for broken timestamps
This modifies pts in situations other than what was intended, leading to
invalid timestamps.

Reverts commit 90bb394dcc
2012-05-03 16:28:08 -04:00
Justin RugglesandMichael Niedermayer 6d5bf67f04 swr: add lfe_mix_level
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-05-02 01:12:10 +02:00
Justin RugglesandMichael Niedermayer 9b42653b22 swr: update side to back mixing.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-05-02 01:11:55 +02:00
Justin Ruggles 4010d724e1 lavr: use 8.8 instead of 10.6 as the 16-bit fixed-point mixing coeff type 2012-05-01 13:52:59 -04:00
Justin Ruggles f1ffb01ee9 avplay: use libavresample for sample format conversion and channel mixing
SDL only supports s16 sample format and a limited number of channel layouts.
Some versions of SDL on some systems support 4-channel and 6-channel output,
but it's safer overall to downmix any layout with more than 2 channels to
stereo.
2012-05-01 13:38:23 -04:00
Justin Ruggles f7ff099997 APIchanges: fill in some dates and commit hashes 2012-04-30 13:51:41 -04:00
Justin Ruggles 394dbde548 FATE: use updated reference for aac-latm_stereo_to_51
This uses correct stereo to 5.1 upmixing via libavresample.
2012-04-24 23:38:54 -04:00
Justin Ruggles bcb82fe1f4 avconv: use libavresample 2012-04-24 23:38:54 -04:00
Justin Ruggles c8af852b97 Add libavresample
This is a new library for audio sample format, channel layout, and sample rate
conversion.
2012-04-24 21:28:27 -04:00
Justin Ruggles c5671aeb77 FATE: avoid channel mixing in lavf-dv_fmt
This partially reverts acb1730218
which would only have needed to change the checksums if channel mixing had
been properly avoided. This changes the output file size reference and the
seek test reference back to the previous values.
2012-04-24 15:55:45 -04:00
Justin Ruggles 83b26046fc avutil: change default buffer size alignment for sample buffer functions
Aligning nb_samples will give both correct plane pointer alignment and enough
padding for SIMD-optimized functions.
2012-04-23 14:06:45 -04:00
Justin Ruggles b0e9edc44f avcodec: add a cook parser to get subpacket duration
Fixes jittery video playback of rm files with cook audio.
2012-04-20 12:11:20 -04:00
Justin Ruggles acb1730218 FATE: allow lavf tests to alter input parameters
Change some lavf tests to avoid resampling and channel mixing.
2012-04-20 10:23:57 -04:00
Justin Ruggles 5052980400 FATE: replace the acodec-pcm_s24daud test with an enc_dec_pcm checksum test
This avoids resampling and channel mixing by using a source with
the correct channel layout and sample rate.
2012-04-20 10:23:57 -04:00
Justin Ruggles 03caef1bed FATE: replace the acodec-g726 test with 4 new encode/decode tests
Avoids resampling and channel mixing. This only tests the behavior
with respect to input and output audio rather than also testing changes
to the encoder or muxer that do not affect the resulting decoded output.
2012-04-20 10:23:57 -04:00
Justin Ruggles a6c8cca2a8 FATE: replace current g722 encoding tests with an encode/decode test
Avoids resampling and channel mixing. This only tests the behavior
with respect to input and output audio rather than also testing changes
to the encoder or muxer that do not affect the resulting decoded output.
2012-04-20 10:23:57 -04:00
Justin Ruggles 870165e217 FATE: add a pattern rule for generating asynth wav files 2012-04-20 10:23:57 -04:00
Justin Ruggles 010943c6ce FATE: optionally write a WAVE header in audiogen 2012-04-20 10:23:57 -04:00
Justin Ruggles 0c0d1bce7c avutil: add audio fifo buffer
The functions operate on the sample level rather than the byte level and work
with all audio sample formats.
2012-04-20 09:43:11 -04:00
Justin Ruggles 9cc338b1de FATE: pass the decoded output format and audio source file to enc_dec_pcm
This will allow decoding to md5 and doing a diff comparison to a reference
checksum instead of a fuzzy stddev or oneoff comparison.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-04-18 22:26:56 -04:00
Justin Ruggles c755b1fbbc FATE: specify the input format when decoding in enc_dec_pcm()
The output format is not always the same as the file extension,
which is sometimes required for correct probing. We can avoid
probing by specifying the format since it is already known.
2012-04-18 22:26:49 -04:00
Justin Ruggles d8b06521a9 avconv: check for an incompatible changing channel layout
The decoder can change the layout and channel count during decoding,
but currently we only validate that the two are compatible when opening
the codec. This checks for incompatibilities after each decoded frame.
2012-04-18 21:02:16 -04:00
Justin Ruggles 8099fc763b riff: use bps instead of bits_per_coded_sample in the WAVEFORMATEXTENSIBLE header
This matches the value for the plain WAVEFORMATEX header.
Also fixes stream copy to WAVE for non-16-bit raw pcm.
2012-04-17 00:09:19 -04:00
Justin Ruggles b1041f8048 avconv: only set the "channels" option when it exists for the specified input format
This allows the user to specify an input channel layout without avconv aborting because the
"channels" option was not found.
2012-04-16 23:44:49 -04:00
Justin Ruggles 5e8280d177 avutil: add better documentation for AVSampleFormat 2012-04-16 15:26:55 -04:00
Justin RugglesandRonald S. Bultje de7f22ab0c ac3dsp: call femms/emms at the end of float_to_fixed24() for 3DNow and SSE
Fixes ac3-encode and eac3-encode FATE test failures with SSE2 disabled.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-04-12 21:33:04 -07:00
Justin Ruggles d3c59d5003 avconv: use default channel layouts when they are unknown
If either input or output layout is known and the channel counts match,
use the known layout for both. Otherwise choose the default layout based on
av_get_default_channel_layout().

Changed some FATE references due to some WAVE files now having a non-zero
channel mask.
2012-04-10 11:30:01 -04:00
Justin Ruggles 95a8dac57b avconv: parse channel layout string
This allows the user to use channel layout names instead of having to use the
channel mask values.
2012-04-10 11:30:01 -04:00
Justin Ruggles b073819bc9 avconv: allow '-async -1' to disable timestamp sync for audio encoding
This will allow a workaround for cases where input timestamps are invalid or
when decoder delay of 1 packet or more confuses avconv into using the wrong
timestamps as a sync reference.
2012-04-09 13:47:11 -04:00
Justin Ruggles 679a973e97 avconv: use default alignment for audio buffer 2012-04-09 10:20:35 -04:00
Justin Ruggles c58846f3a8 avcodec: use align == 0 for default alignment in avcodec_fill_audio_frame()
Use default alignment in audio_get_buffer()
2012-04-09 10:20:35 -04:00
Justin Ruggles 0109a09dc3 avutil: use align == 0 for default alignment in audio sample buffer functions 2012-04-09 10:20:35 -04:00
Justin Ruggles 18ed3788b0 avutil: allow NULL linesize in av_samples_fill_arrays() and av_samples_alloc() 2012-04-09 10:20:35 -04:00
Justin Ruggles 1337de0c4b avcodec: validate the channel layout vs. channel count for decoders
Set avctx->channel_layout to 0 if the channel count does not match
avctx->channels.
2012-04-08 18:45:58 -04:00
Justin Ruggles 4d693b023c avutil: add av_get_packed_sample_fmt() and av_get_planar_sample_fmt()
Based on a patch by Clément Bœsch <ubitux@gmail.com>
2012-04-08 15:13:28 -04:00
Justin Ruggles bb0618e68b avcodec: remove avcodec_guess_channel_layout()
It is not public because the header is not installed, and its functionality
has been replaced by av_get_default_channel_layout().
2012-04-05 16:40:51 -04:00
Justin Ruggles 5cc51a5847 avutil: Add av_get_default_channel_layout()
Also, use the new function in the AC-3 encoder.
2012-04-05 16:35:14 -04:00
Justin Ruggles 67aec401d8 libspeexdec: set frame size in libspeex_decode_init()
This fixes speex decoding, which was broken in 85469f1c.
2012-03-30 16:30:37 -04:00
Justin Ruggles eed691f7d1 oggdec: calculate correct timestamps in Ogg/FLAC
We need to parse the individual packet durations when there is more than one
packet in a page.
2012-03-27 16:11:06 -04:00
Justin Ruggles 4094fc9971 avconv: fix the resampling safety factors for output audio buffer allocation
This matches the output size required for audio_resample()
2012-03-23 01:19:43 -04:00
Justin Ruggles 9869e963a6 avconv: move audio output buffer allocation to a separate function
Allows for removing a goto and makes the code easier to follow.
2012-03-23 01:19:43 -04:00
Justin Ruggles f3ab3e1aee avconv: make the async buffer global and free it in exit_program() 2012-03-23 01:19:42 -04:00
Justin Ruggles f036342b4b aiffdec: set block_duration to 1 for PCM codecs that are supported in AIFF-C 2012-03-22 11:45:46 -04:00
Justin Ruggles b38b7cc392 aiffdec: factor out handling of integer PCM for AIFF-C and plain AIFF 2012-03-22 11:45:46 -04:00
Justin Ruggles 2c07c18048 aiffdec: use av_get_audio_frame_duration() to set block_duration for AIFF-C 2012-03-22 11:45:46 -04:00
Justin Ruggles 02f88eec1d aiffdec: do not set bit rate if block duration is unknown
CC: libav-stable@libav.org
2012-03-22 11:45:36 -04:00
Justin Ruggles 6aba117f12 adxenc: use AVCodec.encode2() 2012-03-21 15:04:42 -04:00
Justin Ruggles 54e6cf8a94 adxenc: Use the AVFrame in ADXContext for coded_frame 2012-03-21 15:04:42 -04:00
Justin Ruggles 5d4017b8f3 vorbisenc: use AVCodec.encode2() 2012-03-21 12:49:36 -04:00
Justin Ruggles e5aab2d7a4 libvorbis: use AVCodec.encode2() 2012-03-21 12:49:36 -04:00
Justin Ruggles 8ccf545b95 libopencore-amrnbenc: use AVCodec.encode2() 2012-03-21 12:49:36 -04:00
Justin Ruggles 330d9d1b50 ra144enc: use AVCodec.encode2() 2012-03-21 12:49:36 -04:00
Justin Ruggles f090428234 nellymoserenc: use AVCodec.encode2() 2012-03-21 12:49:35 -04:00
Justin Ruggles 32173df3d2 roqaudioenc: use AVCodec.encode2()
The first frame pts must be saved until we have 8 frames since RoQ audio
requires 8 frames in the first packet.
2012-03-21 12:49:35 -04:00
Justin Ruggles b03dcf07f6 libspeex: use AVCodec.encode2() 2012-03-21 12:49:35 -04:00
Justin Ruggles 57a52f258e libvo_amrwbenc: use AVCodec.encode2() 2012-03-21 12:49:35 -04:00
Justin Ruggles db440fa12d libvo_aacenc: use AVCodec.encode2() 2012-03-21 12:49:35 -04:00
Justin Ruggles 27bacfeb57 wmaenc: use AVCodec.encode2() 2012-03-21 12:49:32 -04:00
Justin Ruggles b0f75ba272 mpegaudioenc: use AVCodec.encode2()
Update FATE references due to encoder delay.
2012-03-20 18:56:22 -04:00
Justin Ruggles 3d853d7ab3 libmp3lame: use AVCodec.encode2() 2012-03-20 18:56:18 -04:00
Justin Ruggles 1987a940b7 libgsmenc: use AVCodec.encode2() 2012-03-20 18:55:39 -04:00
Justin Ruggles d1afb2f94e libfaac: use AVCodec.encode2()
Encoder output is delayed by several frames, so we keep a queue of input
frame timing info to match up with corresponding output packets.
2012-03-20 18:55:36 -04:00
Justin Ruggles 59041fd053 g726enc: use AVCodec.encode2() 2012-03-20 18:47:23 -04:00
Justin Ruggles bb03b6f7b1 g722enc: use AVCodec.encode2()
FATE reference updated due timestamp rounding because of resampling from
44100 Hz to 16000 Hz in avconv.
2012-03-20 18:47:23 -04:00
Justin Ruggles 910bdb9a42 flacenc: use AVCodec.encode2() 2012-03-20 18:47:19 -04:00
Justin Ruggles 24e74f0a0f adpcmenc: update to AVCodec.encode2() 2012-03-20 18:46:57 -04:00
Justin Ruggles aa872af5e3 ac3enc: update to AVCodec.encode2()
Update FATE references due to encoder delay.
2012-03-20 18:46:56 -04:00
Justin Ruggles ad95307f92 aacenc: use AVCodec.encode2() 2012-03-20 18:46:49 -04:00
Justin Ruggles 4bf64961a9 avcodec: add code for a frame queue for use by audio encoders with delay
This simplifies matching of timestamps between input frames and output
packets.
2012-03-20 16:04:21 -04:00
Justin Ruggles c9594fe0fb avconv: free packet in write_frame() when discarding due to frame number limit
Fixes a memleak when using the -frames option with audio.
2012-03-20 15:51:58 -04:00
Justin Ruggles e056f8d37d FATE: use +/- flag option syntax for vp8 emu-edge tests 2012-03-20 15:51:58 -04:00
Justin Ruggles f63412fc74 oggdec: output correct timestamps for Vorbis
Takes encoder delay into account by comparing first the coded page
duration with the calculated page duration. Handles last packet duration
if needed, also by comparing coded duration with calculated duration.
Also does better handling of timestamp generation for packets in the
first page for streamed ogg files where the start time is not
necessarily zero.
2012-03-20 14:39:57 -04:00
Justin Ruggles 9b9fc9ba32 avconv: pass input stream timestamps to audio encoders
5 FATE test references updated due to using demuxer-generated timestamps that
are either not sample-accurate or are slightly off in the input file.
2012-03-20 14:12:54 -04:00
Justin Ruggles a1977e0103 lavc: shrink encoded audio packet size after encoding. 2012-03-20 14:12:54 -04:00
Justin Ruggles 777365fe86 xa: set correct bit rate
Also fixes stream duration calculation.
2012-03-20 14:12:54 -04:00
Justin Ruggles a54bc52265 xa: do not set bit_rate, block_align, or bits_per_coded_sample
The values in the header refer to decoded data, not compressed data.
2012-03-20 14:12:53 -04:00
Justin Ruggles 64de57f645 xa: fix end-of-file handling
Do not output an extra packet when out_size is reached.
Also return AVERROR_EOF instead of AVERROR(EIO).
2012-03-20 14:12:53 -04:00
Justin Ruggles cd2ffb67ad xa: fix timestamp calculation
The packet duration is always 28 samples.
2012-03-20 14:12:53 -04:00
Justin Ruggles 6ca3b248e2 resample: allocate a large enough output buffer
Fixes invalid writes and crashes when doing conversions such as stereo to 5.1
channels or sample rate conversion on 5.1 channels.
2012-03-17 13:37:44 -04:00
Justin Ruggles c3da9f5060 wmaenc: remove bit-exact hack
It may have improved cross-platform stability, but wasn't the only place in
the encoder with bitexact issues. It is no longer needed because we have FATE
tests for float encoders using fuzzy comparison.
2012-03-17 11:46:15 -04:00
Justin Ruggles 85cf49fab7 FATE: remove WMA acodec tests 2012-03-17 11:46:15 -04:00