[Bug 777506] vaapidecoder_h264: Recursive loop and segfault after a few seconds

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Feb 7 05:48:06 UTC 2017


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

--- Comment #16 from Hyunjun Ko <zzoon at igalia.com> ---
(In reply to Víctor Manuel Jáquez Leal from comment #15)
> Review of attachment 345008 [details] [review]:
> 
> ::: gst-libs/gst/vaapi/gstvaapidecoder_h264.c
> @@ +3172,3 @@
> +      priv->frame_num -= MaxFrameNum;
> +
> +    if (slice_hdr->frame_num - priv->frame_num - 1 > sps->num_ref_frames)
> 
> is that -1 correct? it wasn't before, nor in the libav code.
I found if (slice_hdr->frame_num - priv->frame_num - 1) equals
sps->num_ref_frames, it doesn't need to reset prev_ref_frame_num. But without
-1, it's working likewise too, though it reset prev_ref_frame_num.

> 
> @@ +3176,3 @@
> +
> +    if (priv->frame_num < 0)
> +      priv->frame_num += MaxFrameNum;
> 
> in the libav this conditional is nested in the above if... is this correct?
This is a bit tricky, but I think it's correct.
And I don't think it's nested, since priv->frame_num is reset already.

Let's say, slice hdr frame is 1, sps->num ref frames is 1.
Then prev frame is -1, so it should be reset to assuming previous value which
is positive.

-- 
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