diff options
author | Arnout Vandecappelle <arnout@mind.be> | 2009-06-09 16:34:04 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-06-25 16:05:56 +0200 |
commit | 0192717045efda4443473ab6b6973b8c1e7339b3 (patch) | |
tree | c0d6569df31d57835988cd15b48cb41c4ae9ba0b | |
parent | 77866555126148d878a6a1a7b6ad2433b393b2d6 (diff) |
ffmpegdec: don't drop buffers when caps change.
Fixes #585257
-rw-r--r-- | ext/ffmpeg/gstffmpegdec.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index 04684be..9742d3e 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -224,6 +224,8 @@ static int gst_ffmpegdec_get_buffer (AVCodecContext * context, static void gst_ffmpegdec_release_buffer (AVCodecContext * context, AVFrame * picture); +static void gst_ffmpegdec_drain (GstFFMpegDec * ffmpegdec); + static void gst_ts_handler_init (GstFFMpegDec * ffmpegdec); static void gst_ts_handler_append (GstFFMpegDec * ffmpegdec, GstBuffer * buffer); @@ -685,6 +687,11 @@ gst_ffmpegdec_setcaps (GstPad * pad, GstCaps * caps) oclass->in_plugin->id = gst_ffmpeg_caps_to_codecid (caps, NULL); /* close old session */ + if (ffmpegdec->opened) { + GST_OBJECT_UNLOCK (ffmpegdec); + gst_ffmpegdec_drain (ffmpegdec); + GST_OBJECT_LOCK (ffmpegdec); + } gst_ffmpegdec_close (ffmpegdec); /* set defaults */ |