Commit Graph

314 Commits

Author SHA1 Message Date
Anton Khirnov
594d4d5df3 lavc: add a wrapper for AVCodecContext.get_buffer().
It will be useful in the upcoming transition to refcounted AVFrames.
2012-12-04 21:41:59 +01:00
Justin Ruggles
3ffed68c2a mpegaudiodec: use planar sample format for output unless packed is requested 2012-11-25 19:05:58 -05:00
Justin Ruggles
a903f8f087 Include libavutil/channel_layout.h instead of libavutil/audioconvert.h
Also reorder some other #include when applicable.
2012-11-11 13:35:12 -05:00
Luca Barbato
9ab0874ea8 mp3: properly forward mp_decode_frame errors
The function can return either a parsing error or a memory management
error.
2012-10-23 14:22:16 +02:00
Luca Barbato
0c03cc6838 mp3: exit on parsing error in mp_decode_frame
Properly forward mp_decode_layer3 errors, mp_decode_layer1 and
mp_decode_layer2 do not return errors.

Based on a patch by Michael Niedermayer.
2012-10-23 14:22:16 +02:00
Michael Niedermayer
ec444c84cf mpegaudiodec: Fix buffer handling on random access 2012-10-23 10:52:25 +02:00
Diego Biurrun
2f17f265ed mpegaudio: Refactor mp3on4 flush function 2012-10-23 10:52:25 +02:00
Diego Biurrun
1218777ffd avcodec: Convert some commented-out printf/av_log instances to av_dlog 2012-10-01 10:24:28 +02:00
Diego Biurrun
6f6b0311a3 avcodec: Drop some silly commented-out av_log() invocations 2012-10-01 10:24:28 +02:00
Luca Barbato
97cfa55eea mpegaudiodec: fix short_start calculation
The value should be always 3, as it follows from the specification.

Fix a stack buffer overflow in exponents_from_scale_factors as reported
by asan. Thanks to Dale Curtis for the sample vector.
2012-09-28 16:02:39 +02:00
Anton Khirnov
927e92cdc7 mpegaudiodec: don't print an error on > 1 frame in a packet.
It's a perfectly normal situation, nothing to spam about.
2012-08-08 07:53:48 +02:00
Anton Khirnov
36ef5369ee Replace all CODEC_ID_* with AV_CODEC_ID_* 2012-08-07 16:00:24 +02:00
Kostya Shishkov
b37d945dd4 mp3: fix start band index for block type 2 in 8kHz audio
In hybrid frames long window part ends at 36 samples for most of the cases
but at 72 for 8kHz case. For some reason decoder assumed it's 48 or even 36
samples, which caused wrong bitstream decoding for such blocks.

l3_25207.mpg from conformance suite demonstrates it the best.
2012-05-20 10:53:21 +02:00
Diego Biurrun
aa3f2cb584 mpegaudiodec: Do not discard mp_decode_frame() return value.
This fixes the warning:
libavcodec/mpegaudiodec.c:1704:14: warning: variable ‘out_size’ set but not used
2012-04-18 18:28:24 +02:00
Kostya Shishkov
a05c41acd1 mp3dec: perform I/S and M/S only when frame mode is joint stereo.
Looks like some LAME versions produce dual stereo mode MP3s with
flags for intensity and middle stereo set. In this mode those flags
should be ignored like the reference decoder and derived ones do.
2012-03-29 19:08:05 +02:00
Diego Biurrun
a92be9b856 Replace memset(0) by zero initializations.
Also remove one pointless zero initialization in rangecoder.c.
2012-03-28 09:38:33 +02:00
Anton Khirnov
02beb9826b lavc: deprecate AVCodecContext.sub_id.
In most places where it's used, it's as a pointless write-only field.

Only rv10 decoder actually reads from it, but it stores some internal
version info in it. There is no reason for it to be in a public field.
2012-03-04 21:02:45 +01:00
Vitor Sessak
9b4cd58611 mpegaudiodec: use DSPUtil.butterflies_float().
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-02-29 12:12:50 -08:00
Dale Curtis
b716542691 mpegaudiodec: Prevent premature clipping of mp3 input buffer.
Instead of clipping extrasize based on EXTRABYTES, clip based on the
amount of buffer actually left. Without this fix, there are warbles
and other distortions in the test case below.

http://kevincennis.com/mix/assets/sounds/1901_voxfx.mp3
2012-02-24 13:47:04 -05:00
Ronald S. Bultje
3e13005cac mp3on4: require a minimum framesize.
If bufsize < headersize, init_get_bits() will be called with a negative
number, causing it to fail and any subsequent call to get_bits() will
crash because it reads from a NULL pointer.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-17 15:32:23 -08:00
Alex Converse
f372ce119b mp3dec: Fix a heap-buffer-overflow
In some cases, what is left to read from ptr is smaller than EXTRABYTES.

Based on a patch by Thierry Foucu <tfoucu@gmail.com>.

Signed-off-by: Alex Converse <alex.converse@gmail.com>
2012-01-30 16:49:15 -08:00
Anton Khirnov
ac84395d6a lavc: remove disabled FF_API_PARSE_FRAME cruft. 2012-01-27 10:38:34 +01:00
Dustin Brody
d2a0041c20 mpegaudiodec: switch error detection check to AV_EF_BUFFER
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2012-01-21 08:38:12 +01:00
Vitor Sessak
39df0c434c mpegaudiodec: optimized iMDCT transform
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-08 17:40:55 -08:00
Vitor Sessak
6dfcf53092 mpegaudiodec: move imdct and windowing function to mpegaudiodsp
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-08 17:37:07 -08:00
Vitor Sessak
421c99a4a7 mpegaudiodec: interleave iMDCT buffer to simplify future SIMD implementations
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-08 17:37:03 -08:00
Vitor Sessak
96219141e2 mpegaudiodec: Use clearer pointer math
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-07 08:23:27 -08:00
Justin Ruggles
03fafdec82 mpegaudiodec: skip all channels when skipping granules
Also fix calculation of new position when switching buffers.
This fixes "overread" error messages when seeking.
2012-01-01 22:37:50 -05:00
Ronald S. Bultje
464f26889c mpegaudiodec: fix seeking.
The safe bitstream reader does not allow using skip_bits_long() to seek to a
point before the start of the buffer, which was needed by the mp3 decoder.
This change instead calculates the start point of the first valid granule and
skips to that position.

Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
2011-12-31 14:19:09 -05:00
Justin Ruggles
481a7ff5bd mpegaudiodec: fix compilation when testing the unchecked bitstream reader 2011-12-31 14:19:09 -05:00
Mans Rullgard
ac08f798bb mp3dec: hack: fix decoding with safe bitstream reader
The buffer splicing relies on the bitstream reader over-reading
the end of the buffer as declared in init_get_bits(), although
more data is actually present.  Manually moving the bitstream
boundary after init_get_bits() allows this to work as expected.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-17 17:51:22 +00:00
Janne Grunau
fd095539d1 latmdec: fix audio specific config parsing
Pass the correct size in bits to mpeg4audio_get_config and add a flag
to disable parsing of the sync extension when the size is not known.

Latm with AudioMuxVersion 0 does not specify the size of the audio
specific config. Data after the audio specific config can be
misinterpreted as sync extension resulting in random and wrong configs.
2011-12-03 00:42:48 +01:00
Justin Ruggles
0eea212943 Add avcodec_decode_audio4().
Deprecate avcodec_decode_audio3().
Implement audio support in avcodec_default_get_buffer().
Implement the new audio decoder API in all audio decoders.
2011-12-02 17:40:40 -05:00
Justin Ruggles
0df5e869cb mpegaudio: do not use init_static_data() for initializing tables.
It is called once for each mpegaudio codec that is registered, which adds
significant overhead.
2011-11-27 13:59:34 -05:00
Martin Storsjö
268fb3f985 mpegaudiodec: Don't use a nonexistent log context for av_dlog
This fixes builds with DEBUG defined, broken since
1158745a2d.

Signed-off-by: Martin Storsjö <martin@martin.st>
2011-11-16 12:01:32 +02:00
Justin Ruggles
f1d1516e55 cosmetics: indentation 2011-11-15 12:17:20 -05:00
Justin Ruggles
1158745a2d mpegaudiodec: init static tables in AVCodec.init_static_data() 2011-11-15 12:17:20 -05:00
Justin Ruggles
ec6d743118 mp3on4: do not needlessly set data_size to 0 2011-10-27 22:06:32 -04:00
Justin Ruggles
99975966c3 mp3adu: return error instead of just consuming bad packets 2011-10-27 22:06:32 -04:00
Justin Ruggles
e2e6c8799b mpegaudiodec: check output data size based on avctx->frame_size 2011-10-27 22:06:32 -04:00
Justin Ruggles
512557b291 avcodec: remove avcodec_parse_frame and deprecate associated elements.
The documentation for CODEC_CAP_PARSE_ONLY and AVCodecContext.parse_only
indicates that they are utilized through avcodec_parse_frame(), which was
never actually implemented.
2011-10-27 22:06:32 -04:00
Justin Ruggles
cd816d9bbb mpegaudiodec: cosmetics: basic pretty-printing 2011-10-27 22:06:32 -04:00
Justin Ruggles
c17e534f2e mpegaudiodec: remove frame_count field from MPADecodeContext.
Its functionality was removed several years ago, so it doesn't do anything.
AVCodecContext.frame_number could serve the same purpose if someone
wants to debug the frame count.
2011-10-27 22:06:32 -04:00
Justin Ruggles
dac15a03af mpegaudiodec: return AVERROR return codes instead of -1 2011-10-27 22:06:32 -04:00
Justin Ruggles
4be1e1dfa7 mpegaudiodec: Skip only bad frames instead of the whole packet.
On frame decoding failure, return an error if the frame is the same size as
the whole packet, otherwise just log an error message and return the number
of bytes consumed.
2011-10-27 22:06:31 -04:00
Dustin Brody
9abc98737f lavc: replace references to deprecated AVCodecContext.error_recognition to use AVCodecContext.err_recognition
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-10-22 14:49:55 +02:00
Justin Ruggles
95891804bf mp3on4: check for allocation failures in decode_init_mp3on4() 2011-10-21 12:34:43 -04:00
Justin Ruggles
180bf988bc mp3on4: create a separate flush function for MP3onMP4.
The correct decoder private context needs to be used.
This fixes mp3on4 playback and seeking in avplay.
2011-10-21 12:33:15 -04:00
Justin Ruggles
53c8443ad2 mp3on4: ensure that the frame channel count does not exceed the codec channel
count.

This also allows for checking output data size based on the actual
number of channel instead of the maximum number of channels.
2011-10-21 12:32:35 -04:00
Justin Ruggles
1183d6cd98 mp3on4: set channel layout 2011-10-21 12:29:51 -04:00