Is the code in gst_video_encoder_release_frame correct?

Bruce Tsai wagamama.tsai at gmail.com
Thu May 4 01:20:57 UTC 2017


In gst_video_encoder_chain(), the “frame” is “ref” before appending to frame list.
So ref-count is increased in the list.

gst_video_codec_frame_ref (frame);
priv->frames = g_list_append (priv->frames, frame);

--
Yi-Lung (Bruce) Tsai
wagamama.tsai at gmail.com





> On May 4, 2017, at 3:27 AM, Martin Maurer <meinemailingliste2 at online.de> wrote:
> 
> Hi,
> 
> the following is an extract from gst-plugins-base-1.0-1.11.91\gst-libs\gst\video\gstvideoencoder.c
> 
> static void
> gst_video_encoder_release_frame (GstVideoEncoder * enc,
>    GstVideoCodecFrame * frame)
> {
>  GList *link;
> 
>  /* unref once from the list */
>  link = g_list_find (enc->priv->frames, frame);
>  if (link) {
>    gst_video_codec_frame_unref (frame);
>    enc->priv->frames = g_list_delete_link (enc->priv->frames, link);
>  }
>  /* unref because this function takes ownership */
>  gst_video_codec_frame_unref (frame);
> }
> 
> Could there be an error, because the "unref" command is executed twice. And both time with same parameter "frame".
> Is there perhaps a missing return or else statement needed?
> Must "frame" in first unref command be "link", or link maybe ok, because link is the same as frame, in case it is found?
> 
> Best regards,
> 
> Martin
> 
> 
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170504/466934ef/attachment.html>


More information about the gstreamer-devel mailing list