videodecoder: don't leak frames
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 1 May 2012 12:46:06 +0000 (14:46 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 1 May 2012 13:03:40 +0000 (15:03 +0200)
Frames receive a refcount when added to the frames list so release that refcount
in gst_video_decoder_do_finish_frame(). Also release the ref on the frame
because gst_video_decoder_do_finish_frame() takes ownership of the passed frame.

gst-libs/gst/video/gstvideodecoder.c

index 0520234..11ebb69 100644 (file)
@@ -1865,8 +1865,11 @@ static void
 gst_video_decoder_do_finish_frame (GstVideoDecoder * dec,
     GstVideoCodecFrame * frame)
 {
+  /* unref once from the list */
   dec->priv->frames = g_list_remove (dec->priv->frames, frame);
+  gst_video_codec_frame_unref (frame);
 
+  /* unref because this function takes ownership */
   gst_video_codec_frame_unref (frame);
 }