Combine poky (Yocto scarthgap), meta-openembedded (scarthgap), and meta-openwrt into a single repository. Components: - poky/ Yocto core framework (BitBake + OE-Core) - meta-openembedded/ Community layers (meta-oe, meta-python, meta-networking) - meta-openwrt/ OpenWrt customization layer - setup-env.sh One-click build environment setup - README.md Project documentation
88 lines
3.9 KiB
Diff
88 lines
3.9 KiB
Diff
From 4e96cc4df0b6807cb487368afca64e022078ed6a Mon Sep 17 00:00:00 2001
|
|
From: James Cowgill <james.cowgill@blaize.com>
|
|
Date: Sun, 14 May 2023 13:23:17 +0100
|
|
Subject: [PATCH] v4l2codecs: Always chain up to parent decide_allocation
|
|
function
|
|
|
|
The `gst_video_decoder_negotiate_pool` function expects the
|
|
`decide_allocation` function to always provide a pool and will fail to
|
|
negotiate if the pool is missing. If we return immediately (even if we
|
|
don't need to do anything special) negotiation will fail if the
|
|
downstream element does not propose a pool.
|
|
|
|
Fix by chaining up to the default `decide_allocation` function which
|
|
adds a fallback pool if one was not already proposed.
|
|
|
|
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4630>
|
|
Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/70ff80a873d8202329df1731c06f1bfed464ad2a]
|
|
Signed-off-by: Daniel Semkowicz <dse@thaumatec.com>
|
|
---
|
|
sys/v4l2codecs/gstv4l2codech264dec.c | 3 ++-
|
|
sys/v4l2codecs/gstv4l2codech265dec.c | 3 ++-
|
|
sys/v4l2codecs/gstv4l2codecvp8dec.c | 3 ++-
|
|
3 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/sys/v4l2codecs/gstv4l2codech264dec.c b/sys/v4l2codecs/gstv4l2codech264dec.c
|
|
index 1a6b144e9b..bd9041533b 100644
|
|
--- a/sys/v4l2codecs/gstv4l2codech264dec.c
|
|
+++ b/sys/v4l2codecs/gstv4l2codech264dec.c
|
|
@@ -417,7 +417,7 @@ gst_v4l2_codec_h264_dec_decide_allocation (GstVideoDecoder * decoder,
|
|
/* If we are streaming here, then it means there is nothing allocation
|
|
* related in the new state and allocation can be ignored */
|
|
if (self->streaming)
|
|
- return TRUE;
|
|
+ goto no_internal_changes;
|
|
|
|
self->has_videometa = gst_query_find_allocation_meta (query,
|
|
GST_VIDEO_META_API_TYPE, NULL);
|
|
@@ -452,6 +452,7 @@ gst_v4l2_codec_h264_dec_decide_allocation (GstVideoDecoder * decoder,
|
|
|
|
self->src_pool = gst_v4l2_codec_pool_new (self->src_allocator, &self->vinfo);
|
|
|
|
+no_internal_changes:
|
|
/* Our buffer pool is internal, we will let the base class create a video
|
|
* pool, and use it if we are running out of buffers or if downstream does
|
|
* not support GstVideoMeta */
|
|
diff --git a/sys/v4l2codecs/gstv4l2codech265dec.c b/sys/v4l2codecs/gstv4l2codech265dec.c
|
|
index 8d70d05220..3f0c08d6a4 100644
|
|
--- a/sys/v4l2codecs/gstv4l2codech265dec.c
|
|
+++ b/sys/v4l2codecs/gstv4l2codech265dec.c
|
|
@@ -446,7 +446,7 @@ gst_v4l2_codec_h265_dec_decide_allocation (GstVideoDecoder * decoder,
|
|
guint min = 0;
|
|
|
|
if (self->streaming)
|
|
- return TRUE;
|
|
+ goto no_internal_changes;
|
|
|
|
self->has_videometa = gst_query_find_allocation_meta (query,
|
|
GST_VIDEO_META_API_TYPE, NULL);
|
|
@@ -465,6 +465,7 @@ gst_v4l2_codec_h265_dec_decide_allocation (GstVideoDecoder * decoder,
|
|
GST_PAD_SRC, self->min_pool_size + min + 1);
|
|
self->src_pool = gst_v4l2_codec_pool_new (self->src_allocator, &self->vinfo);
|
|
|
|
+no_internal_changes:
|
|
/* Our buffer pool is internal, we will let the base class create a video
|
|
* pool, and use it if we are running out of buffers or if downstream does
|
|
* not support GstVideoMeta */
|
|
diff --git a/sys/v4l2codecs/gstv4l2codecvp8dec.c b/sys/v4l2codecs/gstv4l2codecvp8dec.c
|
|
index ba63a029df..bdea1fdf76 100644
|
|
--- a/sys/v4l2codecs/gstv4l2codecvp8dec.c
|
|
+++ b/sys/v4l2codecs/gstv4l2codecvp8dec.c
|
|
@@ -284,7 +284,7 @@ gst_v4l2_codec_vp8_dec_decide_allocation (GstVideoDecoder * decoder,
|
|
guint num_bitstream;
|
|
|
|
if (self->streaming)
|
|
- return TRUE;
|
|
+ goto no_internal_changes;
|
|
|
|
self->has_videometa = gst_query_find_allocation_meta (query,
|
|
GST_VIDEO_META_API_TYPE, NULL);
|
|
@@ -319,6 +319,7 @@ gst_v4l2_codec_vp8_dec_decide_allocation (GstVideoDecoder * decoder,
|
|
|
|
self->src_pool = gst_v4l2_codec_pool_new (self->src_allocator, &self->vinfo);
|
|
|
|
+no_internal_changes:
|
|
/* Our buffer pool is internal, we will let the base class create a video
|
|
* pool, and use it if we are running out of buffers or if downstream does
|
|
* not support GstVideoMeta */
|