aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-09-25 13:39:04 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2011-10-21 12:33:15 -0400
commit180bf988bc524f4775dd4765f07816df324e808b (patch)
tree865086be42c9257bffe2153eb0437a963e20e48a /libavcodec
parent53c8443ad2376a50c76e5d7c69435bd01b0abc42 (diff)
downloadffmpeg-180bf988bc524f4775dd4765f07816df324e808b.tar.gz
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.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/mpegaudiodec.c15
-rw-r--r--libavcodec/mpegaudiodec_float.c2
2 files changed, 15 insertions, 2 deletions
diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index c3c6ee3805..040b1090d6 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -2004,6 +2004,19 @@ alloc_fail:
}
+static void flush_mp3on4(AVCodecContext *avctx)
+{
+ int i;
+ MP3On4DecodeContext *s = avctx->priv_data;
+
+ for (i = 0; i < s->frames; i++) {
+ MPADecodeContext *m = s->mp3decctx[i];
+ memset(m->synth_buf, 0, sizeof(m->synth_buf));
+ m->last_buf_size = 0;
+ }
+}
+
+
static int decode_frame_mp3on4(AVCodecContext * avctx,
void *data, int *data_size,
AVPacket *avpkt)
@@ -2148,7 +2161,7 @@ AVCodec ff_mp3on4_decoder = {
.init = decode_init_mp3on4,
.close = decode_close_mp3on4,
.decode = decode_frame_mp3on4,
- .flush = flush,
+ .flush = flush_mp3on4,
.long_name = NULL_IF_CONFIG_SMALL("MP3onMP4"),
};
#endif
diff --git a/libavcodec/mpegaudiodec_float.c b/libavcodec/mpegaudiodec_float.c
index 929d72738b..7f512500b3 100644
--- a/libavcodec/mpegaudiodec_float.c
+++ b/libavcodec/mpegaudiodec_float.c
@@ -83,7 +83,7 @@ AVCodec ff_mp3on4float_decoder = {
.init = decode_init_mp3on4,
.close = decode_close_mp3on4,
.decode = decode_frame_mp3on4,
- .flush = flush,
+ .flush = flush_mp3on4,
.long_name = NULL_IF_CONFIG_SMALL("MP3onMP4"),
};
#endif