Received: by 2002:a05:7412:3784:b0:e2:908c:2ebd with SMTP id jk4csp1256071rdb; Mon, 2 Oct 2023 04:23:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgwCym7bfNlGl/mTb5q9a9Jm5zbi+hG1xyT2hbiTtKWSYnNlqJ/CQQpEKOgHBcV1NhuC8Z X-Received: by 2002:a17:902:d2c1:b0:1c7:7e00:809e with SMTP id n1-20020a170902d2c100b001c77e00809emr129905plc.67.1696245783269; Mon, 02 Oct 2023 04:23:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696245783; cv=none; d=google.com; s=arc-20160816; b=Ws2swFcAMb4xOeAOmItBItACrpSFIz6SzDU48G1XgLHe+03Kk7u/j+EofbbH5qQMAm /oSDyRBnZruJwsqRXiDw9BGtdIBjTPjExNKuOINzBVk8nMii0IOv+irdN8Xbm3scXhpP EczGp4HsVMJyQi6McDZdOkiRCQn526zzifwC7S09ZR1XtdDwAd46CfxW125mP0+UNpqi KVsegRIYFGqdaiX3XouHA1yB30QsnLFCLLKY4p+/b/o+0D9bd8KgiWaLi0FWzXJmG35m 8NhClFn2MKsHimgJfSiqTwOkPDTTtYwvT2hYmMXJcGhwNTo4xaqi2JO3hT0Vnksv8uOp xk6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=+CERd/ScgDK+aMwtRUAiMIQ2uX+9zXQ4P96SGn/FMlU=; fh=+ais8+UeRv7KYyyytMTQym903lx+pG6qBdI8Fds+amo=; b=ZEBeRCjXIPCp8781Wbp6FlrnIaLyENh9BKEy0k2erzeL/AdfC7rk9KvRlHq8fbWclA QEO6LkTVQwIt363t6feiNdA0l3yiZhLvOi/Gg7YVIqsx6/c6TuHpfSyAQCAe30+YJ0dJ zX0tTwLiczKaSkD0uVFTkfYTrTovop8b52PPw4odP/QQ8GLslckGVgRQK3X5kZlurW+S emxRIM/SXI4BUHcOIggw/pXrVUwiN70LKivVrcBJ6j95W0V5IgxFcPHJRtakhlQqZi24 xaTZ3mew+Dca1uP4MbkdzzFutkvnu5j8CGsblIXRhWMSs9EKhQjydGL13aQpZozSvP1a bNKw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xs4all.nl Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id j4-20020a170903028400b001b9736814b6si21178977plr.309.2023.10.02.04.23.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 04:23:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xs4all.nl Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id B578380A7CD0; Mon, 2 Oct 2023 03:35:50 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236525AbjJBKfl (ORCPT + 99 others); Mon, 2 Oct 2023 06:35:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236477AbjJBKfk (ORCPT ); Mon, 2 Oct 2023 06:35:40 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1ED0B0; Mon, 2 Oct 2023 03:35:36 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BE2B1C433C9; Mon, 2 Oct 2023 10:35:33 +0000 (UTC) Message-ID: <46b3af72-d458-439d-9f2c-11a707acafa9@xs4all.nl> Date: Mon, 2 Oct 2023 12:35:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] media: imx-jpeg: notify source chagne event when the first picture parsed Content-Language: en-US, nl To: Ming Qian , mchehab@kernel.org, mirela.rabulea@oss.nxp.com Cc: shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, xiahong.bao@nxp.com, eagle.zhou@nxp.com, tao.jiang_2@nxp.com, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230928053723.20765-1-ming.qian@nxp.com> From: Hans Verkuil In-Reply-To: <20230928053723.20765-1-ming.qian@nxp.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Mon, 02 Oct 2023 03:35:51 -0700 (PDT) On 28/09/2023 07:37, Ming Qian wrote: > After gstreamer rework the dynamic resolution change handling, gstreamer > stop doing capture buffer allocation based on guesses and wait for the > source change event when available. It requires driver always notify > source change event in the initialization, even if the size parsed is > equal to the size set on capture queue. otherwise, the pipeline will be > stalled. > > Currently driver may not notify source change event if the parsed format > and size are equal to those previously established, but it may stall the > gstreamer pipeline. > > The link of gstreamer patch is > https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437 > > Fixes: b4e1fb8643da ("media: imx-jpeg: Support dynamic resolution change") > Signed-off-by: Ming Qian > --- > drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 7 ++++++- > drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h | 1 + > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c > index 3af0af8ac07b..372f3007ff43 100644 > --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c > +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c > @@ -1348,7 +1348,8 @@ static bool mxc_jpeg_source_change(struct mxc_jpeg_ctx *ctx, > q_data_cap = mxc_jpeg_get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE); > if (mxc_jpeg_compare_format(q_data_cap->fmt, jpeg_src_buf->fmt)) > jpeg_src_buf->fmt = q_data_cap->fmt; > - if (q_data_cap->fmt != jpeg_src_buf->fmt || > + if (!ctx->source_change_cnt || > + q_data_cap->fmt != jpeg_src_buf->fmt || > q_data_cap->w != jpeg_src_buf->w || > q_data_cap->h != jpeg_src_buf->h) { > dev_dbg(dev, "Detected jpeg res=(%dx%d)->(%dx%d), pixfmt=%c%c%c%c\n", > @@ -1392,6 +1393,7 @@ static bool mxc_jpeg_source_change(struct mxc_jpeg_ctx *ctx, > mxc_jpeg_sizeimage(q_data_cap); > notify_src_chg(ctx); > ctx->source_change = 1; > + ctx->source_change_cnt++; > if (vb2_is_streaming(v4l2_m2m_get_dst_vq(ctx->fh.m2m_ctx))) > mxc_jpeg_set_last_buffer(ctx); > } > @@ -1611,6 +1613,9 @@ static int mxc_jpeg_queue_setup(struct vb2_queue *q, > for (i = 0; i < *nplanes; i++) > sizes[i] = mxc_jpeg_get_plane_size(q_data, i); > > + if (V4L2_TYPE_IS_OUTPUT(q->type)) > + ctx->source_change_cnt = 0; > + > return 0; > } > > diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h > index d80e94cc9d99..b7e94fa50e02 100644 > --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h > +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h > @@ -99,6 +99,7 @@ struct mxc_jpeg_ctx { > enum mxc_jpeg_enc_state enc_state; > int slot; > unsigned int source_change; > + unsigned int source_change_cnt; This is a confusing field. It is not a counter at all, it is just a bool to indicate if the initial source change event was raised or not. So something like: bool need_initial_source_change_evt; (feel free to give it a better name!) It is certainly not a counter. Regards, Hans > bool header_parsed; > struct v4l2_ctrl_handler ctrl_handler; > u8 jpeg_quality;