Re: [PATCH] media: v4l2-mem2mem: allow device run without buf

From: Nicolas Dufresne
Date: Fri Nov 25 2022 - 08:43:34 EST


Le mercredi 23 novembre 2022 à 17:24 +0800, Hsia-Jun Li a écrit :
> From: Randy Li <ayaka@xxxxxxxxxxx>
>
> For the decoder supports Dynamic Resolution Change,
> we don't need to allocate any CAPTURE or graphics buffer
> for them at inital CAPTURE setup step.
>
> We need to make the device run or we can't get those
> metadata.

Nack: This is not how it works. I know the m2m framework make it difficult, but
it is expected that the driver have a special state for OUTPUT streamon (before
capture streamon). Please have a look at other drivers.

Nicolas

>
> Signed-off-by: Randy Li <ayaka@xxxxxxxxxxx>
> ---
> drivers/media/v4l2-core/v4l2-mem2mem.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
> index be7fde1ed3ea..cd56d60fad9d 100644
> --- a/drivers/media/v4l2-core/v4l2-mem2mem.c
> +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
> @@ -301,8 +301,9 @@ static void __v4l2_m2m_try_queue(struct v4l2_m2m_dev *m2m_dev,
>
> dprintk("Trying to schedule a job for m2m_ctx: %p\n", m2m_ctx);
>
> - if (!m2m_ctx->out_q_ctx.q.streaming
> - || !m2m_ctx->cap_q_ctx.q.streaming) {
> + if (!(m2m_ctx->out_q_ctx.q.streaming || m2m_ctx->out_q_ctx.buffered)
> + || !(m2m_ctx->cap_q_ctx.q.streaming
> + || m2m_ctx->cap_q_ctx.buffered)) {
> dprintk("Streaming needs to be on for both queues\n");
> return;
> }