From 8b068fb78b93930ac3d35871abfd57a65ccd81f8 Mon Sep 17 00:00:00 2001
From: Philipp Zabel
Date: Thu, 7 Mar 2019 11:24:38 +0100
Subject: [PATCH] v4l2sink: fix pool-less allocation query handling
This fixes a critical warning if the last-sample property is enabled:
(gst-launch-1.0:391): GStreamer-CRITICAL **: 01:12:57.428: gst_object_unref: assertion 'object != NULL' failed
If the allocation query does not contain any allocation pools,
gst_query_parse_nth_allocation_pool will leave the local pool,
min, and max variables undefined, so check the array length first.
If pool is NULL, do not call gst_object_unref.
---
sys/v4l2/gstv4l2sink.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c
index 87392187e2..48ed8f4b08 100644
--- a/sys/v4l2/gstv4l2sink.c
+++ b/sys/v4l2/gstv4l2sink.c
@@ -556,7 +556,7 @@ gst_v4l2sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
g_object_get (bsink, "enable-last-sample", &last_sample_enabled, NULL);
- if (last_sample_enabled) {
+ if (last_sample_enabled && gst_query_get_n_allocation_pools (query) > 0) {
GstBufferPool *pool;
guint size, min, max;
@@ -568,7 +568,8 @@ gst_v4l2sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
max = min;
gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max);
- gst_object_unref (pool);
+ if (pool)
+ gst_object_unref (pool);
}
return TRUE;