v4l2codecs: Fix holding of reference picture buffer
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 6 Apr 2021 20:24:39 +0000 (16:24 -0400)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 7 Apr 2021 19:00:21 +0000 (19:00 +0000)
The picture buffer (V4L2 CAPTURE buffer) was being released immediatly
when the request was done. This was problematic since even after the
request is done, the picture buffer might still be used as a reference
and should not be reused for further decoding yet.

This change effectively bind the picture buffer lifetime to the request.
So that if the picture is never showned (decode only frame) or the request
queue is full before the buffer is displayed, the picture buffer will
remain alive.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2142>

sys/v4l2codecs/gstv4l2decoder.c

index 10b8cf2..b5f585d 100644 (file)
@@ -1124,7 +1124,6 @@ gst_v4l2_request_set_done (GstV4l2Request * request)
       }
     }
 
-    g_clear_pointer (&pending_req->pic_buf, gst_buffer_unref);
     pending_req->pending = FALSE;
     gst_v4l2_request_unref (pending_req);