[Bug 755918] decodebin: Fix assertion errors when caps is not fixed

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Sun Oct 4 19:55:42 PDT 2015


https://bugzilla.gnome.org/show_bug.cgi?id=755918

--- Comment #3 from Vineeth <vineeth.tm at samsung.com> ---
(In reply to Sebastian Dröge (slomo) from comment #2)
> Review of attachment 312466 [details] [review]:
> 
> ::: gst/playback/gstdecodebin2.c
> @@ +4449,3 @@
>        gst_caps_unref (caps);
> +      gst_structure_free (u);
> +      return NULL;
> 
> Seems a bit extreme to directly return NULL here. What about returning
> incomplete information instead?
> 
> Also how can you even get unfixed caps here?
> 
I am not sure if this scenario is possible.
While debugging another issue, just saw this piece of code,
where when the caps is unfixed, then 
      gst_caps_unref (caps);
      caps = NULL;
is being done, and the same will be passed on to
  gst_structure_id_set (u, topology_caps, GST_TYPE_CAPS, caps, NULL);
Passing NULL to this will cause assertion error.

By incomplete information you mean all other information without caps right?
But not sure if that makes much sense without caps :)


> @@ +4468,3 @@
>    s = gst_decode_chain_get_topology (dbin->decode_chain);
>  
> +  if (s) {
> 
> When does it return NULL? Should probably cause a GST_WARNING_OBJECT()
> somewhere.
Again this is a highly unlikely scenario :)
In the function gst_decode_chain_get_topology

  if (G_UNLIKELY ((chain->endpad || chain->deadend)
          && (chain->endcaps == NULL))) {
    GST_WARNING ("End chain without valid caps !");
    return NULL;
  }
So here it might return NULL. Hence that check was needed

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list