[{"id":23710,"web_url":"https://patchwork.libcamera.org/comment/23710/","msgid":"<20220701110317.un5kwggmoqj5sasn@uno.localdomain>","date":"2022-07-01T11:03:17","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera: Reset request\n\tsequence number on stop/start","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Umang\n\nOn Fri, Jul 01, 2022 at 04:02:36PM +0530, Umang Jain via libcamera-devel wrote:\n> We now have V4L2VideoDevice ensuring that sensor sequence numbers\n> start from zero [1], and we desire that these should match the Request\n> sequence number as well.\n>\n> [1] 1c9dc0fd89cf (\"libcamera: v4l2_videodevice: Identify non-zero stream starts\")\n>\n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks!!\n\n> ---\n>  src/libcamera/camera.cpp           | 4 +++-\n>  src/libcamera/pipeline_handler.cpp | 2 ++\n>  src/libcamera/request.cpp          | 4 ++--\n>  3 files changed, 7 insertions(+), 3 deletions(-)\n>\n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index 713543fd..f8150dcd 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -497,7 +497,7 @@ Camera::Private::~Private()\n>   * facilitate debugging of internal request usage.\n>   *\n>   * The requestSequence_ tracks the number of requests queued to a camera\n> - * over its lifetime.\n> + * over a single capture session.\n>   */\n>\n>  static const char *const camera_state_names[] = {\n> @@ -1181,6 +1181,8 @@ int Camera::start(const ControlList *controls)\n>\n>  \tLOG(Camera, Debug) << \"Starting capture\";\n>\n> +\tASSERT(d->requestSequence_ == 0);\n> +\n>  \tret = d->pipe_->invokeMethod(&PipelineHandler::start,\n>  \t\t\t\t     ConnectionTypeBlocking, this, controls);\n>  \tif (ret)\n> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n> index 7ebd76ad..67540533 100644\n> --- a/src/libcamera/pipeline_handler.cpp\n> +++ b/src/libcamera/pipeline_handler.cpp\n> @@ -312,6 +312,8 @@ void PipelineHandler::stop(Camera *camera)\n>  \t/* Make sure no requests are pending. */\n>  \tCamera::Private *data = camera->_d();\n>  \tASSERT(data->queuedRequests_.empty());\n> +\n> +\tdata->requestSequence_ = 0;\n>  }\n>\n>  /**\n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index 51d74b29..07613cb3 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -526,8 +526,8 @@ FrameBuffer *Request::findBuffer(const Stream *stream) const\n>   *\n>   * When requests are queued, they are given a sequential number to track the\n>   * order in which requests are queued to a camera. This number counts all\n> - * requests given to a camera through its lifetime, and is not reset to zero\n> - * between camera stop/start sequences.\n> + * requests given to a camera and is reset to zero between camera stop/start\n> + * sequences.\n>   *\n>   * It can be used to support debugging and identifying the flow of requests\n>   * through a pipeline, but does not guarantee to represent the sequence number\n> --\n> 2.31.1\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id ACA85BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  1 Jul 2022 11:03:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F1F326564E;\n\tFri,  1 Jul 2022 13:03:20 +0200 (CEST)","from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C424B60552\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  1 Jul 2022 13:03:19 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id 4C3FC1BF203;\n\tFri,  1 Jul 2022 11:03:19 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1656673401;\n\tbh=S5PvZ/QwprIbD8rEwWJf4rNf0gWse2l+WQHwt67VcRQ=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=jH1rqVOhcQKsWk/mpnWOEz9OPW+Bf2YYtFLp3wxorv4Xytt2dgBo61/YGplQN7txq\n\te5mCh7ETrsATDf5A7Z2XAgJTYp7rwVpx/laZn8LBL0dqky9WBH6MaUoLr+97xTsxFc\n\tW1fYui1GG7Da1NArYy5LS7d/Fzaa+hljP8ju6pwiT6L++tlS86YUlVqQpwD0s7K7Ml\n\tF3CaTF5DzGYltYxgQF1/r2QbbhP+Zu/SqxoT1wFfWbtDBU1VuPnc6+gSLC92cK8jes\n\tx8lXbWSlb277IPWFlxFCIn7OdMcrRWqLcXysX6+cG2/A3Gqsau+96mrKAiqE1FRY0o\n\trS6ywsgzIcUfA==","Date":"Fri, 1 Jul 2022 13:03:17 +0200","To":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<20220701110317.un5kwggmoqj5sasn@uno.localdomain>","References":"<20220701103236.1007698-1-umang.jain@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220701103236.1007698-1-umang.jain@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera: Reset request\n\tsequence number on stop/start","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":23711,"web_url":"https://patchwork.libcamera.org/comment/23711/","msgid":"<165668511051.1516045.5023523680539419800@Monstersaurus>","date":"2022-07-01T14:18:30","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera: Reset request\n\tsequence number on stop/start","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Umang Jain via libcamera-devel (2022-07-01 11:32:36)\n> We now have V4L2VideoDevice ensuring that sensor sequence numbers\n> start from zero [1], and we desire that these should match the Request\n> sequence number as well.\n> \n> [1] 1c9dc0fd89cf (\"libcamera: v4l2_videodevice: Identify non-zero stream starts\")\n> \n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> ---\n>  src/libcamera/camera.cpp           | 4 +++-\n>  src/libcamera/pipeline_handler.cpp | 2 ++\n>  src/libcamera/request.cpp          | 4 ++--\n>  3 files changed, 7 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index 713543fd..f8150dcd 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -497,7 +497,7 @@ Camera::Private::~Private()\n>   * facilitate debugging of internal request usage.\n>   *\n>   * The requestSequence_ tracks the number of requests queued to a camera\n> - * over its lifetime.\n> + * over a single capture session.\n>   */\n>  \n>  static const char *const camera_state_names[] = {\n> @@ -1181,6 +1181,8 @@ int Camera::start(const ControlList *controls)\n>  \n>         LOG(Camera, Debug) << \"Starting capture\";\n>  \n> +       ASSERT(d->requestSequence_ == 0);\n> +\n>         ret = d->pipe_->invokeMethod(&PipelineHandler::start,\n>                                      ConnectionTypeBlocking, this, controls);\n>         if (ret)\n> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n> index 7ebd76ad..67540533 100644\n> --- a/src/libcamera/pipeline_handler.cpp\n> +++ b/src/libcamera/pipeline_handler.cpp\n> @@ -312,6 +312,8 @@ void PipelineHandler::stop(Camera *camera)\n>         /* Make sure no requests are pending. */\n>         Camera::Private *data = camera->_d();\n>         ASSERT(data->queuedRequests_.empty());\n> +\n> +       data->requestSequence_ = 0;\n>  }\n>  \n>  /**\n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index 51d74b29..07613cb3 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -526,8 +526,8 @@ FrameBuffer *Request::findBuffer(const Stream *stream) const\n>   *\n>   * When requests are queued, they are given a sequential number to track the\n>   * order in which requests are queued to a camera. This number counts all\n> - * requests given to a camera through its lifetime, and is not reset to zero\n> - * between camera stop/start sequences.\n> + * requests given to a camera and is reset to zero between camera stop/start\n> + * sequences.\n>   *\n>   * It can be used to support debugging and identifying the flow of requests\n>   * through a pipeline, but does not guarantee to represent the sequence number\n> -- \n> 2.31.1\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 509E2BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  1 Jul 2022 14:18:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 868696564E;\n\tFri,  1 Jul 2022 16:18:34 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 32A8B60552\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  1 Jul 2022 16:18:33 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B08B025C;\n\tFri,  1 Jul 2022 16:18:32 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1656685114;\n\tbh=3ArLZziECPTaDf9WCnqS/fHuopeU1oZbfyy/nHFK36A=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=Mbx69xE0mWtBUrmsy/rAV2V3LnsfARoxfaMXT5jeSM6iiN+AEROKSaVgpE8NNPYpb\n\t/l/F4+v7HCnZ6imk99wtYY+hXPLYY7QevyaoGr27ihh6N7t7oG1oy3Zy9C/3Y5HvUU\n\ttL958r3Ii+PfVuIvyHB1UZ5RNZ6er/qdZGZ1RTjBIIOZUoEb9fDA103tbTUFbVzOhq\n\tt0/Begb1gLVEaZ/GLDb3hUvRzKoRm4mz2DrpDdRkr8rQ29RIREn8vCsqAxJVp7NTwf\n\tSskQ45/eMciKqh1SnwL7Nw/xknGJgIFBix9a9voHw1pCw5mxV8Vqsa3e8M4jDWNXSH\n\tMoR028kRVm5tA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1656685112;\n\tbh=3ArLZziECPTaDf9WCnqS/fHuopeU1oZbfyy/nHFK36A=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=CbiFcYp7E60ZLMzr5Kbq+JJZPVXCQBVJMPY/6D/uTNmek6oBJNI3GkeOtmw520Wop\n\to1P/yZ9I6+jIJmpx4EAsiTY/t56jlhFvLXqyKVDARWfXOegKAwJVuL3ClFkoJm81Qg\n\tpbzILS1gghYyvu3+l8C0HLaUFxyIUvMDabE6O/Ik="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"CbiFcYp7\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20220701103236.1007698-1-umang.jain@ideasonboard.com>","References":"<20220701103236.1007698-1-umang.jain@ideasonboard.com>","To":"Umang Jain <umang.jain@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Fri, 01 Jul 2022 15:18:30 +0100","Message-ID":"<165668511051.1516045.5023523680539419800@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera: Reset request\n\tsequence number on stop/start","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]