summaryrefslogtreecommitdiff
path: root/gst-libs/gst
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2012-05-01 15:35:47 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-05-01 16:58:48 +0200
commit34bfcb2af95d7b25cb8671247e17777da69dca3b (patch)
tree00d6c8c5aec766a100299cc6a5a1b57c96276721 /gst-libs/gst
parent8fde7850c0b775fa1e389579f14f7befd67bc019 (diff)
videodecoder: don't leak events
When need to push out all the previously received events, concatenate all the events from the previous frames (instead of leaking the old ones) Improve debugging a little Conflicts: gst-libs/gst/video/gstvideodecoder.c
Diffstat (limited to 'gst-libs/gst')
-rw-r--r--gst-libs/gst/video/gstvideodecoder.c8
-rw-r--r--gst-libs/gst/video/gstvideoutils.c2
2 files changed, 6 insertions, 4 deletions
diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c
index 11ebb696e..8ce54fb1a 100644
--- a/gst-libs/gst/video/gstvideodecoder.c
+++ b/gst-libs/gst/video/gstvideodecoder.c
@@ -1778,7 +1778,7 @@ gst_video_decoder_prepare_finish_frame (GstVideoDecoder *
#endif
GST_LOG_OBJECT (decoder,
- "finish frame sync=%d pts=%" GST_TIME_FORMAT,
+ "finish frame %p sync=%d pts=%" GST_TIME_FORMAT, frame,
GST_VIDEO_CODEC_FRAME_IS_SYNC_POINT (frame), GST_TIME_ARGS (frame->pts));
/* Push all pending events that arrived before this frame */
@@ -1786,7 +1786,7 @@ gst_video_decoder_prepare_finish_frame (GstVideoDecoder *
GstVideoCodecFrame *tmp = l->data;
if (tmp->events) {
- events = tmp->events;
+ events = g_list_concat (events, tmp->events);
tmp->events = NULL;
}
@@ -1894,7 +1894,7 @@ gst_video_decoder_drop_frame (GstVideoDecoder * dec, GstVideoCodecFrame * frame)
GstMessage *qos_msg;
gdouble proportion;
- GST_LOG_OBJECT (dec, "drop frame");
+ GST_LOG_OBJECT (dec, "drop frame %p", frame);
GST_VIDEO_DECODER_STREAM_LOCK (dec);
@@ -1954,7 +1954,7 @@ gst_video_decoder_finish_frame (GstVideoDecoder * decoder,
guint64 start, stop;
GstSegment *segment;
- GST_LOG_OBJECT (decoder, "finish frame");
+ GST_LOG_OBJECT (decoder, "finish frame %p", frame);
if (G_UNLIKELY (priv->output_state_changed || (priv->output_state
&& gst_pad_check_reconfigure (decoder->srcpad))))
diff --git a/gst-libs/gst/video/gstvideoutils.c b/gst-libs/gst/video/gstvideoutils.c
index 6f12fb839..a47a6ef91 100644
--- a/gst-libs/gst/video/gstvideoutils.c
+++ b/gst-libs/gst/video/gstvideoutils.c
@@ -36,6 +36,8 @@ _gst_video_codec_frame_free (GstVideoCodecFrame * frame)
{
g_return_if_fail (frame != NULL);
+ GST_DEBUG ("free frame %p", frame);
+
if (frame->input_buffer) {
gst_buffer_unref (frame->input_buffer);
}