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
Justin Ruggles
3a1e453e54
FATE: add WMAv1 and WMAv2 encode/decode tests with fuzzy comparison
2012-03-17 11:33:35 -04:00
Justin Ruggles
a4cf4ef256
FATE: add AC-3 and E-AC-3 encode/decode tests with fuzzy comparison
2012-03-17 11:33:35 -04:00
Justin Ruggles
90e5b58a53
FATE: add capability for audio encode/decode tests with fuzzy psnr comparison
...
This allows for testing floating-point audio encoders across different
platforms where exact comparisons are unreliable due to float rounding
differences.
2012-03-15 17:06:17 -04:00
Justin Ruggles
cffd7580bb
FATE: allow a tolerance in the size comparison in do_tiny_psnr()
...
This will allow for comparing decoded output to the original source when the
decoded size is not exactly the same as the original size.
2012-03-15 14:40:31 -04:00
Justin Ruggles
bb6842966e
FATE: use absolute difference from a target value in do_tiny_psnr()
...
This will allow comparison to original pre-encoded content instead of
comparing to expected decoded output.
2012-03-15 14:40:31 -04:00
Justin Ruggles
5ecadc6620
FATE: allow tests to set CMP_SHIFT to pass to tiny_psnr
...
This will allow adjusting for any encoder or decoder delay when doing
comparisons.
2012-03-15 14:40:24 -04:00
Justin Ruggles
0720d263ea
FATE: use $fuzz directly in do_tiny_psnr() instead of passing it around
2012-03-15 12:06:56 -04:00
Justin Ruggles
94cf64b81f
cosmetics: reindent
2012-03-05 13:08:19 -05:00
Justin Ruggles
8c1d6ac66a
avformat: do not require a pixel/sample format if there is no decoder
...
Also, do not keep trying to find and open a decoder in try_decode_frame() if
we already tried and failed once.
Fixes always searching until max_analyze_duration in
avformat_find_stream_info() when demuxing codecs without a decoder.
2012-03-05 13:08:18 -05:00
Justin Ruggles
a7fa75684d
avformat: do not fill-in audio packet duration in compute_pkt_fields()
...
Use the estimated duration only to calculate missing timestamps if needed.
2012-03-05 13:08:18 -05:00
Justin Ruggles
6c65cf58fd
lavf: Use av_get_audio_frame_duration() in get_audio_frame_size()
...
Also, do not give AVCodecContext.frame_size priority for muxing.
Updated 2 FATE references:
dxa-feeble - adds 1 audio frame that is still within 2 seconds as specified
by -t 2 in the FATE test
wmv8-drm-nodec - durations are not needed. previously they were estimated
using the packet size and average bit rate.
2012-03-05 13:08:18 -05:00
Justin Ruggles
11ac796f7a
dca_parser: parse the sample rate and frame durations
2012-03-05 13:08:17 -05:00
Justin Ruggles
85469f1c9e
libspeexdec: do not set AVCodecContext.frame_size
...
It is not necessary
2012-03-05 13:08:17 -05:00
Justin Ruggles
adbf61ff8a
libopencore-amr: do not set AVCodecContext.frame_size
...
It is not necessary
2012-03-05 13:08:17 -05:00
Justin Ruggles
0efa4073bf
alsdec: do not set AVCodecContext.frame_size
...
It is not necessary
2012-03-05 13:08:17 -05:00
Justin Ruggles
f1e73100d9
siff: do not set AVCodecContext.frame_size
...
also, properly set AVCodecContext.bits_per_coded_sample, AVStreasm.start_time,
and AVPacket.duration.
2012-03-05 13:08:17 -05:00
Justin Ruggles
ec2e767bf3
amr demuxer: do not set AVCodecContext.frame_size.
...
it is not necessary.
2012-03-05 13:08:17 -05:00
Justin Ruggles
8d1a20aa7c
aiffdec: do not set AVCodecContext.frame_size
...
It is unnecessary. Also, for some codecs we're reading more than 1 frame per
packet. Instead we use a private context variable to calculate the bit rate,
stream duration, and packet durations.
Updated FATE seek test, which has slightly different timestamps due to a
more accurate bit rate calculation.
2012-03-05 13:08:17 -05:00
Justin Ruggles
237a855caf
mov: do not set AVCodecContext.frame_size
...
It is not necessary.
2012-03-05 13:08:17 -05:00
Justin Ruggles
9727264220
ape: do not set AVCodecContext.frame_size.
...
prevents lavf from setting incorrect packet durations.
2012-03-05 13:08:17 -05:00
Justin Ruggles
2dd18d4435
rdt: remove workaround for infinite loop with aac
...
avformat_find_stream_info() no longer hangs while waiting for AAC frame_size
2012-03-05 13:08:16 -05:00
Justin Ruggles
9c365fe8ae
avformat: do not require frame_size in avformat_find_stream_info() for CELT
...
In Ogg/CELT, frame_size is found in the same place as the sample_rate and
channels, so we do not need to force the frame_size to be parsed.
2012-03-05 13:08:16 -05:00
Justin Ruggles
fbc8c59679
avformat: do not require frame_size in avformat_find_stream_info() for MP1/2/3
...
It was only needed to avoid a bad time base (and thus non-monotone timestamps)
for stream copy to avi.
2012-03-05 13:08:16 -05:00
Justin Ruggles
84b6ae0808
avformat: do not require frame_size in avformat_find_stream_info() for AAC
...
We already will get the needed info because of CODEC_CAP_CHANNEL_CONF
2012-03-05 13:08:16 -05:00
Justin Ruggles
620b88a302
swfenc: use av_get_audio_frame_duration() instead of AVCodecContext.frame_size
...
This way we can do stream copy without having the demuxer wait until
frame_size has been set.
2012-03-05 13:08:16 -05:00
Justin Ruggles
14aecc50fa
rtpenc: use av_get_audio_frame_duration() for max_frames_per_packet
...
It is more reliable than AVCodecContext.frame_size for codecs with constant
packet duration.
2012-03-05 13:08:16 -05:00
Justin Ruggles
c019070fda
riffenc: use av_get_audio_frame_duration()
...
For encoding, frame_size is not a reliable indicator of packet duration.
Also, we don't want to have to force the demuxer to find frame_size for
stream copy to work.
2012-03-05 13:08:15 -05:00
Justin Ruggles
9524cf79df
avcodec: add av_get_audio_frame_duration() function.
...
This is a utility function for the user to get the frame duration based on
the codec id, frame size in bytes, and various AVCodecContext parameters.
2012-03-05 13:08:15 -05:00
Justin Ruggles
6699d07480
avcodec: add av_get_exact_bits_per_sample() function
...
This only returns bits per sample when it is exactly correct. That is, the
codec contains only raw samples with no frame headers or padding. This applies
to basically all PCM codecs and a small subset of ADPCM codecs.
2012-03-05 13:08:15 -05:00
Justin Ruggles
1ba08c94f5
vorbisenc: add output buffer overwrite protection
2012-03-04 01:16:54 -05:00
Justin Ruggles
fe78470a8b
libopencore-amrnbenc: fix end-of-stream handling
...
Use CODEC_CAP_DELAY and CODEC_CAP_SMALL_LAST_FRAME to properly pad and flush
the encoder at the end of encoding. This is needed in order to have all input
samples decoded.
2012-03-04 01:14:53 -05:00
Justin Ruggles
b0350c1c30
ra144enc: fix end-of-stream handling
...
Use CODEC_CAP_DELAY and CODEC_CAP_SMALL_LAST_FRAME to properly pad and flush
the encoder at the end of encoding. This is needed in order to have all input
samples decoded.
2012-03-04 01:14:53 -05:00
Justin Ruggles
29e2c85310
nellymoserenc: zero any leftover packet bytes
...
fixes writing of uninitialized packet data
2012-03-04 01:14:52 -05:00
Justin Ruggles
6c7a01621c
nellymoserenc: use proper MDCT overlap delay
2012-03-04 01:14:52 -05:00
Justin Ruggles
51ddf35c90
wmaenc: fix m/s stereo encoding for the first frame
...
We need to set ms_stereo in encode_init() in order to avoid incorrectly
encoding the first frame as non-m/s while flagging it as m/s. Fixes an
uncomfortable pop in the left channel at the start of playback.
CC:libav-stable@libav.org
2012-03-03 18:20:10 -05:00
Justin Ruggles
8ed7488ea3
wmaenc: return s->block_align instead of recalculating it
2012-03-03 18:20:10 -05:00
Justin Ruggles
5d652e063b
wmaenc: check final frame size against output packet size
...
Currently we have an assert() that prevents the frame from being too large,
but it is more user-friendly to give an error message instead of aborting on
assert(). This condition is quite unlikely due to the minimum bit rate check
in encode_init(), but it is still worth having.
2012-03-03 18:20:10 -05:00
Justin Ruggles
dfc4fdedf8
wmaenc: require a large enough output buffer to prevent overwrites
...
The maximum theoretical frame size is around 17000 bytes. Although in
practice it will generally be much smaller, we require a larger buffer
just to be safe.
CC: libav-stable@libav.org
2012-03-03 18:20:10 -05:00
Justin Ruggles
1ec075cfec
wmaenc: limit allowed sample rate to 48kHz
...
ff_wma_init() allows up to 50kHz, but this generates an exponent band
size table that requires 65 bands. The code assumes 25 bands in many
places, and using sample rates higher than 48kHz will lead to buffer
overwrites.
CC:libav-stable@libav.org
2012-03-03 18:20:10 -05:00
Justin Ruggles
c2b8dea182
wmaenc: limit block_align to MAX_CODED_SUPERFRAME_SIZE
...
This is near the theoretical limit for wma frame size and is the most that
our decoder can handle. Allowing higher bit rates will just end up padding
each frame with empty bytes.
Fixes invalid writes for avconv when using very high bit rates.
CC:libav-stable@libav.org
2012-03-03 18:20:09 -05:00
Justin Ruggles
b7beabab4b
tiertexseq: set correct block_align for audio
2012-03-03 17:03:27 -05:00
Justin Ruggles
f9cf91d822
tiertexseq: set audio stream start time to 0
...
Update FATE test to reflect delayed video due to the file having audio-only
frames prior to the first frame with video.
2012-03-03 17:03:27 -05:00
Justin Ruggles
0883109b27
voc/avs: Do not change the sample rate mid-stream.
...
Also, set the time base based on the sample rate.
lavf-voc seek test updated to reflect slightly different seek points.
2012-03-03 17:03:27 -05:00
Justin Ruggles
4da374f8a9
segafilm: use the sample rate as the time base for audio streams
2012-03-03 17:03:27 -05:00
Justin Ruggles
ea289186f0
ea: fix audio pts
...
The time base is 1 / sample_rate, not 90000.
Several more codecs encode the sample count in the first 4 bytes of the
chunk, so we set the durations accordingly. Also, we can set start_time and
packet duration instead of keeping track of the sample count in the demuxer.
2012-03-03 17:03:27 -05:00
Justin Ruggles
01be6fa926
psx-str: fix audio pts
...
Each packet has 18 sectors with 224/channels samples in each sector.
2012-03-03 17:03:27 -05:00
Justin Ruggles
d0ab585074
vqf: set packet duration
...
Fixes timestamp calculation.
The FATE reference is updated because timestamp calculations are now more
accurate. Previous timestamps were based on average bit rate.
2012-03-03 17:03:26 -05:00
Justin Ruggles
101c369b7c
tta demuxer: set packet duration
2012-03-03 17:03:26 -05:00
Justin Ruggles
0b8b7db01b
mpegaudio_parser: do not ignore information from the first parsed frame
...
Update some demuxing and seeking fate tests.
2012-03-03 17:03:26 -05:00
Justin Ruggles
5a9b952201
thp: set audio packet durations
2012-03-03 16:58:45 -05:00
Justin Ruggles
5602a464c9
avcodec: add a Vorbis parser to get packet duration
...
This also allows for removing some of the Vorbis-related hacks.
2012-03-03 16:43:11 -05:00
Justin Ruggles
737ca4482b
vorbisdec: read the previous window flag for long windows
...
When reading sequentially, we are using the actual flag from the previous
frame, but when seeking we do not know what the previous window flag was, so
we need to read it from the bitstream.
2012-03-03 16:43:11 -05:00
Justin Ruggles
f240df6a74
FATE: do not decode audio in the nuv test.
...
We already have sufficient coverage for 16-bit pcm.
2012-02-29 15:45:50 -05:00
Justin Ruggles
929dd8c108
dxa: set audio stream time base using the sample rate
2012-02-29 15:45:50 -05:00
Justin Ruggles
aa831c4093
psx-str: do not allow seeking by bytes
2012-02-29 15:45:50 -05:00
Justin Ruggles
bdbf1fa405
asfdec: Do not set AVCodecContext.frame_size
2012-02-29 15:45:50 -05:00
Justin Ruggles
4bf6775e9d
vqf: set packet parameters after av_new_packet()
...
Otherwise the values are overwritten.
2012-02-29 15:45:50 -05:00
Justin Ruggles
841c17177b
FATE: add mp3 test for sample that exhibited false overreads
...
related to b716542691
Error messages and audible artifacts were fixed in that commit.
2012-02-29 15:12:18 -05:00
Justin Ruggles
a45a1ea521
libvorbis: add/update error messages
...
also use AVERROR codes for some return values instead of -1
2012-02-29 14:54:25 -05:00
Justin Ruggles
592c4dbc7e
libvorbis: use AVFifoBuffer for output packet buffer
...
simplifies the code and does less memmove()
2012-02-29 14:54:24 -05:00
Justin Ruggles
1fe7c1be54
libvorbis: remove unneeded e_o_s check
...
vorbis_bitrate_flushpacket() does not return any packets that should not be
output in the bitstream.
2012-02-29 14:54:24 -05:00