videoencoder: Add a reference to frame passed to subclass
authorEdward Hervey <edward.hervey@collabora.co.uk>
Tue, 1 May 2012 14:11:58 +0000 (16:11 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 1 May 2012 14:59:00 +0000 (16:59 +0200)
We have one reference owned by the internal frame list and one reference
passed to the subclass.

gst-libs/gst/video/gstvideoencoder.c

index 933bb9b..5e5527c 100644 (file)
@@ -1185,6 +1185,7 @@ gst_video_encoder_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
   GST_LOG_OBJECT (encoder, "passing frame pfn %d to subclass",
       frame->presentation_frame_number);
 
+  gst_video_codec_frame_ref (frame);
   ret = klass->handle_frame (encoder, frame);
 
 done:
@@ -1496,7 +1497,9 @@ gst_video_encoder_finish_frame (GstVideoEncoder * encoder,
 done:
   /* handed out */
   priv->frames = g_list_remove (priv->frames, frame);
-
+  /* Remove the reference from the list and the reference that
+   * was provided to us */
+  gst_video_codec_frame_unref (frame);
   gst_video_codec_frame_unref (frame);
 
   GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);