diff options
author | Edward Hervey <bilboed@bilboed.com> | 2010-05-17 19:42:41 +0200 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2010-05-17 19:43:24 +0200 |
commit | f9c246724147273700c3d4b12ec8c4976f3ac30b (patch) | |
tree | 4b469211743a9de73a2f541bb121c6b2fda90ea6 | |
parent | b7f737fd8abf09a474574b8deb20506d1dfa794c (diff) |
ffmpegdec: Don't leak the GstDataPassThrough items
-rw-r--r-- | ext/ffmpeg/gstffmpegdec.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index d242ab2..d021c05 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -1659,6 +1659,18 @@ opaque_find (GstFFMpegDec * ffmpegdec, gpointer opaque_val, guint64 * _ts, return FALSE; } +static void +flush_opaque (GstFFMpegDec * ffmpegdec) +{ + GList *tmp; + + for (tmp = ffmpegdec->opaque; tmp; tmp = tmp->next) + g_slice_free (GstDataPassThrough, tmp->data); + if (ffmpegdec->opaque) + g_list_free (ffmpegdec->opaque); + ffmpegdec->opaque = NULL; +} + /* gst_ffmpegdec_[video|audio]_frame: * ffmpegdec: * data: pointer to the data to decode @@ -2741,6 +2753,7 @@ gst_ffmpegdec_change_state (GstElement * element, GstStateChange transition) GST_OBJECT_UNLOCK (ffmpegdec); clear_queued (ffmpegdec); g_free (ffmpegdec->padded); + flush_opaque (ffmpegdec); ffmpegdec->padded = NULL; ffmpegdec->padded_size = 0; ffmpegdec->can_allocate_aligned = TRUE; |