lkml.org 
[lkml]   [2023]   [Oct]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v11 50/56] media: verisilicon: vp9: Allow to change resolution while streaming
    Date
    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.gaignard@collabora.com>
    CC: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
    CC: Philipp Zabel <p.zabel@pengutronix.de>
    ---
    .../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;

    --
    2.39.2
    \
     
     \ /
      Last update: 2023-10-12 13:50    [W:4.520 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site