This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: verisilicon: vp9: Allow to change resolution while streaming
Author:  Benjamin Gaignard <benjamin.gaign...@collabora.com>
Date:    Thu Nov 9 17:35:06 2023 +0100

Remove all checks that prohibit to set a new format while streaming.
This allow to change dynamically the resolution if the pixel format
remains the same.

Signed-off-by: Benjamin Gaignard <benjamin.gaign...@collabora.com>
Reviewed-by: Andrzej Pietrasiewicz <andrze...@collabora.com>
CC: Ezequiel Garcia <ezequ...@vanguardiasur.com.ar>
CC: Philipp Zabel <p.za...@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mche...@kernel.org>

 drivers/media/platform/verisilicon/hantro_v4l2.c | 24 +++---------------------
 1 file changed, 3 insertions(+), 21 deletions(-)

---

diff --git a/drivers/media/platform/verisilicon/hantro_v4l2.c 
b/drivers/media/platform/verisilicon/hantro_v4l2.c
index f0d8b165abcd..27a1e77cca38 100644
--- a/drivers/media/platform/verisilicon/hantro_v4l2.c
+++ b/drivers/media/platform/verisilicon/hantro_v4l2.c
@@ -514,25 +514,14 @@ static int hantro_set_fmt_out(struct hantro_ctx *ctx,
                return ret;
 
        if (!ctx->is_encoder) {
-               struct vb2_queue *peer_vq;
-
                /*
                 * In order to support dynamic resolution change,
                 * the decoder admits a resolution change, as long
-                * as the pixelformat remains. Can't be done if streaming.
-                */
-               if (vb2_is_streaming(vq) || (vb2_is_busy(vq) &&
-                   pix_mp->pixelformat != ctx->src_fmt.pixelformat))
-                       return -EBUSY;
-               /*
-                * Since format change on the OUTPUT queue will reset
-                * the CAPTURE queue, we can't allow doing so
-                * when the CAPTURE queue has buffers allocated.
+                * as the pixelformat remains.
                 */
-               peer_vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
-                                         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
-               if (vb2_is_busy(peer_vq))
+               if (vb2_is_streaming(vq) && pix_mp->pixelformat != 
ctx->src_fmt.pixelformat) {
                        return -EBUSY;
+               }
        } else {
                /*
                 * The encoder doesn't admit a format change if
@@ -577,15 +566,8 @@ static int hantro_set_fmt_out(struct hantro_ctx *ctx,
 static int hantro_set_fmt_cap(struct hantro_ctx *ctx,
                              struct v4l2_pix_format_mplane *pix_mp)
 {
-       struct vb2_queue *vq;
        int ret;
 
-       /* Change not allowed if queue is busy. */
-       vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx,
-                            V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
-       if (vb2_is_busy(vq))
-               return -EBUSY;
-
        if (ctx->is_encoder) {
                struct vb2_queue *peer_vq;
 

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to