aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2018-12-07 12:09:20 -0500
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2018-12-20 20:03:03 +0000
commit55b755085d36fbc0436d2c598401d385342d4897 (patch)
treeb19b9407e7b87fef7a1975ce912b4d04f1e44230
parentb24a34baedc51bb18f5474d0ec87458cdd366af3 (diff)
weston: Add patch to improve gst-record robustness
Add a patch to do some retries with a delay when the gst-record feature is initializing and attempts to query the omx encoder plugin for its buffer pools. It is not clear why exactly the encoder is not consistently ready at this point, but in my testing this change greatly improved the robustness of weston startup with gst-record enabled. Change-Id: Ibd26ad64be035e1f9d40cc3cd9337e9efeabfad4 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-rw-r--r--meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0005-gst-record-Add-omx-pool-retries.patch51
-rw-r--r--meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_2.0.0.bbappend1
2 files changed, 52 insertions, 0 deletions
diff --git a/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0005-gst-record-Add-omx-pool-retries.patch b/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0005-gst-record-Add-omx-pool-retries.patch
new file mode 100644
index 00000000..d6a7a1b3
--- /dev/null
+++ b/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0005-gst-record-Add-omx-pool-retries.patch
@@ -0,0 +1,51 @@
+gst-record: Add retry on omx buffer pool query
+
+The omx encoder plugin seems to sometimes not be ready immediately to
+answer the pad query to get the buffer pool, add a retry loop with a
+slight delay between attempts to avoid failing.
+
+Upstream-Status: Inappropriate [bugfix]
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+diff --git a/libweston/gst-recorder.c b/libweston/gst-recorder.c
+index 7dafd956..9c29d04b 100644
+--- a/libweston/gst-recorder.c
++++ b/libweston/gst-recorder.c
+@@ -833,6 +833,7 @@ static int
+ gst_recorder_find_omx_pool(struct gst_recorder *r)
+ {
+ int ret = 0;
++ int i;
+ GstCaps *caps;
+ GstQuery *query;
+ GstBufferPool *pool;
+@@ -853,14 +854,24 @@ gst_recorder_find_omx_pool(struct gst_recorder *r)
+ /* find a pool for the negotiated caps now */
+ query = gst_query_new_allocation (caps, TRUE);
+
+- if (!gst_pad_peer_query (r->appsrc_pad, query)) {
+- /* query failed, not a problem, we use the query defaults */
+- weston_log("allocation query failed\n");
++ /*
++ * The omx plugin seems to not always be ready to respond to queries
++ * immediately, try a few times with a delay to avoid failures.
++ */
++ for (i = 0; i < 5; i++) {
++ usleep(100000);
++ if (gst_pad_peer_query (r->appsrc_pad, query)) {
++ break;
++ } else {
++ weston_log("allocation query attempt %d failed\n", i + 1);
++ }
++ }
++ if (i == 5) {
+ ret = -1;
+ goto err;
+ }
+
+- weston_log("goot %d pools\n", gst_query_get_n_allocation_pools (query));
++ weston_log("got %d pools\n", gst_query_get_n_allocation_pools (query));
+ if (gst_query_get_n_allocation_pools (query) > 0) {
+ /* we got configuration from our peer, parse them */
+ gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
diff --git a/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_2.0.0.bbappend b/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_2.0.0.bbappend
index 51b75ce3..7ba1fbcb 100644
--- a/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_2.0.0.bbappend
+++ b/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_2.0.0.bbappend
@@ -5,6 +5,7 @@ SRC_URI_append_rcar-gen3 = " \
file://0002-Add-gst-recorder-for-h264-output-streaming.patch \
file://0003-gst-recorder-Use-USERPTR-instead-of-DMABUF-for-VSP-o.patch \
file://0004-gst-record-Specify-bytesused-and-length-of-VSP-input.patch \
+ file://0005-gst-record-Add-omx-pool-retries.patch \
"
COMPATIBLE_MACHINE = "salvator-x|m3ulcb|h3ulcb"