[{"id":21626,"web_url":"https://patchwork.libcamera.org/comment/21626/","msgid":"<1bfeae21-d724-a83d-fa87-17add711accc@ideasonboard.com>","date":"2021-12-07T13:13:16","subject":"Re: [libcamera-devel] [PATCH 2/8] libcamera: pipeline: Set the\n\tSensor sequence number for all pipelines","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Kieran,\n\nOn 12/7/21 5:09 AM, Kieran Bingham wrote:\n> The SensorSequence metadata provides the sequence number associated with\n> the image capture directly.\n>\n> While we already report sequence numbers in the metadata of the buffers,\n> this can lead to mis-leading parsing of those sequence numbers which may\n> be purely monotonic sequences from an ISP, and not represent the true\n> sequence counts from a capture device.\n>\n> Use the newly added SensorSequence metadata control and populate\n> completed requests with the sequence number from the appropriate stream.\n> For ISP based devices, such as the IPU3, RPi, and RkISP1, this comes\n> from the CSI2 receiver capture device, while for the Simple pipeline and\n> the UVC Video pipeline, this comes from the single video capture device.\n>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n>   src/libcamera/pipeline/ipu3/ipu3.cpp               |  4 +++-\n>   src/libcamera/pipeline/raspberrypi/raspberrypi.cpp |  3 +++\n>   src/libcamera/pipeline/rkisp1/rkisp1.cpp           |  4 +++-\n>   src/libcamera/pipeline/simple/simple.cpp           | 12 ++++++++----\n>   src/libcamera/pipeline/uvcvideo/uvcvideo.cpp       |  2 ++\n>   5 files changed, 19 insertions(+), 6 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 313220624aff..a7f35840afbb 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -1372,13 +1372,15 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)\n>   \t}\n>   \n>   \t/*\n> -\t * Record the sensor's timestamp in the request metadata.\n> +\t * Record the sensor's timestamp and sequence in the request metadata.\n>   \t *\n>   \t * \\todo The sensor timestamp should be better estimated by connecting\n>   \t * to the V4L2Device::frameStart signal.\n>   \t */\n>   \trequest->metadata().set(controls::SensorTimestamp,\n>   \t\t\t\tbuffer->metadata().timestamp);\n> +\trequest->metadata().set(controls::SensorSequence,\n> +\t\t\t\tbuffer->metadata().sequence);\n\n\nI vaguely remember looking into consolidating SensorTimestamp with \nframeStart signal(turned out to be non-trivial), as mentioned in the \n\\todo above.\n\nDoes sequence number also  seems a good candidate to be emitted from the \nsignal, from that angle? If yes, I would add that in the \\todo as well.\n\nFor the patch\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n\n>   \n>   \tinfo->effectiveSensorControls = delayedCtrls_->get(buffer->metadata().sequence);\n>   \n> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> index 321b72adbbf7..f458587a8920 100644\n> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> @@ -1549,6 +1549,7 @@ void RPiCameraData::unicamBufferDequeue(FrameBuffer *buffer)\n>   \t\t * as it does not receive the FrameBuffer object.\n>   \t\t */\n>   \t\tctrl.set(controls::SensorTimestamp, buffer->metadata().timestamp);\n> +\t\tctrl.set(controls::SensorSequence, buffer->metadata().sequence);\n>   \t\tbayerQueue_.push({ buffer, std::move(ctrl) });\n>   \t} else {\n>   \t\tembeddedQueue_.push(buffer);\n> @@ -1786,6 +1787,8 @@ void RPiCameraData::fillRequestMetadata(const ControlList &bufferControls,\n>   {\n>   \trequest->metadata().set(controls::SensorTimestamp,\n>   \t\t\t\tbufferControls.get(controls::SensorTimestamp));\n> +\trequest->metadata().set(controls::SensorSequence,\n> +\t\t\t\tbufferControls.get(controls::SensorSequence));\n>   \n>   \trequest->metadata().set(controls::ScalerCrop, scalerCrop_);\n>   }\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 36ef6a02ae90..27592e473c14 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -1077,13 +1077,15 @@ void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n>   \tRequest *request = buffer->request();\n>   \n>   \t/*\n> -\t * Record the sensor's timestamp in the request metadata.\n> +\t * Record the sensor's timestamp and sequence in the request metadata.\n>   \t *\n>   \t * \\todo The sensor timestamp should be better estimated by connecting\n>   \t * to the V4L2Device::frameStart signal.\n>   \t */\n>   \trequest->metadata().set(controls::SensorTimestamp,\n>   \t\t\t\tbuffer->metadata().timestamp);\n> +\trequest->metadata().set(controls::SensorSequence,\n> +\t\t\t\tbuffer->metadata().sequence);\n>   \n>   \tcompleteBuffer(request, buffer);\n>   \ttryCompleteRequest(request);\n> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n> index 701fb4be0b71..4c5d9c0b9919 100644\n> --- a/src/libcamera/pipeline/simple/simple.cpp\n> +++ b/src/libcamera/pipeline/simple/simple.cpp\n> @@ -667,9 +667,10 @@ void SimpleCameraData::bufferReady(FrameBuffer *buffer)\n>   \t}\n>   \n>   \t/*\n> -\t * Record the sensor's timestamp in the request metadata. The request\n> -\t * needs to be obtained from the user-facing buffer, as internal\n> -\t * buffers are free-wheeling and have no request associated with them.\n> +\t * Record the sensor's timestamp and sequence in the request metadata.\n> +\t * The request needs to be obtained from the user-facing buffer, as\n> +\t * internal buffers are free-wheeling and have no request associated\n> +\t * with them.\n>   \t *\n>   \t * \\todo The sensor timestamp should be better estimated by connecting\n>   \t * to the V4L2Device::frameStart signal if the platform provides it.\n> @@ -686,9 +687,12 @@ void SimpleCameraData::bufferReady(FrameBuffer *buffer)\n>   \t\t}\n>   \t}\n>   \n> -\tif (request)\n> +\tif (request) {\n>   \t\trequest->metadata().set(controls::SensorTimestamp,\n>   \t\t\t\t\tbuffer->metadata().timestamp);\n> +\t\trequest->metadata().set(controls::SensorSequence,\n> +\t\t\t\t\tbuffer->metadata().sequence);\n> +\t}\n>   \n>   \t/*\n>   \t * Queue the captured and the request buffer to the converter if format\n> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> index 264f5370cf32..f5fab3b69e6d 100644\n> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> @@ -666,6 +666,8 @@ void UVCCameraData::bufferReady(FrameBuffer *buffer)\n>   \t/* \\todo Use the UVC metadata to calculate a more precise timestamp */\n>   \trequest->metadata().set(controls::SensorTimestamp,\n>   \t\t\t\tbuffer->metadata().timestamp);\n> +\trequest->metadata().set(controls::SensorSequence,\n> +\t\t\t\tbuffer->metadata().sequence);\n>   \n>   \tpipe()->completeBuffer(request, buffer);\n>   \tpipe()->completeRequest(request);","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 89977BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  7 Dec 2021 13:13:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9AAF56086C;\n\tTue,  7 Dec 2021 14:13:28 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1842960592\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Dec 2021 14:13:27 +0100 (CET)","from [IPv6:2401:4900:1f3e:16f1:4e1b:f869:54d4:8c0c] (unknown\n\t[IPv6:2401:4900:1f3e:16f1:4e1b:f869:54d4:8c0c])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 98D0C556;\n\tTue,  7 Dec 2021 14:13:25 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"G7KoP41W\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1638882806;\n\tbh=inAOPLwsL48LtBPBilJnz87rOsyPOfKYCjleJS+Kprg=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=G7KoP41Wmppfe/SVYaLT/jfILYmU0OuLtxrIAr0dZeyqMCBzjigxm1KgdOBMTPG5S\n\tSiDfN5DXW1rjRdlb3mQVU3b/liUQR70UkySd/HGlushPJnXjBPy4zcIRgMr1cprws6\n\tqR3hv6ZyV0A1278s5ttuTFd7kdBLp4mawLXo9WJc=","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","References":"<20211206233948.1351206-1-kieran.bingham@ideasonboard.com>\n\t<20211206233948.1351206-3-kieran.bingham@ideasonboard.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<1bfeae21-d724-a83d-fa87-17add711accc@ideasonboard.com>","Date":"Tue, 7 Dec 2021 18:43:16 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.10.2","MIME-Version":"1.0","In-Reply-To":"<20211206233948.1351206-3-kieran.bingham@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"8bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH 2/8] libcamera: pipeline: Set the\n\tSensor sequence number for all pipelines","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21635,"web_url":"https://patchwork.libcamera.org/comment/21635/","msgid":"<CAEmqJPptd-0JkrEeTYXL8o1o=1uoOi3P1vz5c4-u1geNOKeQHw@mail.gmail.com>","date":"2021-12-07T13:41:08","subject":"Re: [libcamera-devel] [PATCH 2/8] libcamera: pipeline: Set the\n\tSensor sequence number for all pipelines","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Kieran,\n\nThank you for your patch.\n\nOn Mon, 6 Dec 2021 at 23:39, Kieran Bingham <kieran.bingham@ideasonboard.com>\nwrote:\n\n> The SensorSequence metadata provides the sequence number associated with\n> the image capture directly.\n>\n> While we already report sequence numbers in the metadata of the buffers,\n> this can lead to mis-leading parsing of those sequence numbers which may\n> be purely monotonic sequences from an ISP, and not represent the true\n> sequence counts from a capture device.\n>\n> Use the newly added SensorSequence metadata control and populate\n> completed requests with the sequence number from the appropriate stream.\n> For ISP based devices, such as the IPU3, RPi, and RkISP1, this comes\n> from the CSI2 receiver capture device, while for the Simple pipeline and\n> the UVC Video pipeline, this comes from the single video capture device.\n>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>\n\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n\n\n> ---\n>  src/libcamera/pipeline/ipu3/ipu3.cpp               |  4 +++-\n>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp |  3 +++\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp           |  4 +++-\n>  src/libcamera/pipeline/simple/simple.cpp           | 12 ++++++++----\n>  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp       |  2 ++\n>  5 files changed, 19 insertions(+), 6 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 313220624aff..a7f35840afbb 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -1372,13 +1372,15 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer\n> *buffer)\n>         }\n>\n>         /*\n> -        * Record the sensor's timestamp in the request metadata.\n> +        * Record the sensor's timestamp and sequence in the request\n> metadata.\n>          *\n>          * \\todo The sensor timestamp should be better estimated by\n> connecting\n>          * to the V4L2Device::frameStart signal.\n>          */\n>         request->metadata().set(controls::SensorTimestamp,\n>                                 buffer->metadata().timestamp);\n> +       request->metadata().set(controls::SensorSequence,\n> +                               buffer->metadata().sequence);\n>\n>         info->effectiveSensorControls =\n> delayedCtrls_->get(buffer->metadata().sequence);\n>\n> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> index 321b72adbbf7..f458587a8920 100644\n> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> @@ -1549,6 +1549,7 @@ void RPiCameraData::unicamBufferDequeue(FrameBuffer\n> *buffer)\n>                  * as it does not receive the FrameBuffer object.\n>                  */\n>                 ctrl.set(controls::SensorTimestamp,\n> buffer->metadata().timestamp);\n> +               ctrl.set(controls::SensorSequence,\n> buffer->metadata().sequence);\n>                 bayerQueue_.push({ buffer, std::move(ctrl) });\n>         } else {\n>                 embeddedQueue_.push(buffer);\n> @@ -1786,6 +1787,8 @@ void RPiCameraData::fillRequestMetadata(const\n> ControlList &bufferControls,\n>  {\n>         request->metadata().set(controls::SensorTimestamp,\n>\n> bufferControls.get(controls::SensorTimestamp));\n> +       request->metadata().set(controls::SensorSequence,\n> +\n>  bufferControls.get(controls::SensorSequence));\n>\n>         request->metadata().set(controls::ScalerCrop, scalerCrop_);\n>  }\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 36ef6a02ae90..27592e473c14 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -1077,13 +1077,15 @@ void\n> PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n>         Request *request = buffer->request();\n>\n>         /*\n> -        * Record the sensor's timestamp in the request metadata.\n> +        * Record the sensor's timestamp and sequence in the request\n> metadata.\n>          *\n>          * \\todo The sensor timestamp should be better estimated by\n> connecting\n>          * to the V4L2Device::frameStart signal.\n>          */\n>         request->metadata().set(controls::SensorTimestamp,\n>                                 buffer->metadata().timestamp);\n> +       request->metadata().set(controls::SensorSequence,\n> +                               buffer->metadata().sequence);\n>\n>         completeBuffer(request, buffer);\n>         tryCompleteRequest(request);\n> diff --git a/src/libcamera/pipeline/simple/simple.cpp\n> b/src/libcamera/pipeline/simple/simple.cpp\n> index 701fb4be0b71..4c5d9c0b9919 100644\n> --- a/src/libcamera/pipeline/simple/simple.cpp\n> +++ b/src/libcamera/pipeline/simple/simple.cpp\n> @@ -667,9 +667,10 @@ void SimpleCameraData::bufferReady(FrameBuffer\n> *buffer)\n>         }\n>\n>         /*\n> -        * Record the sensor's timestamp in the request metadata. The\n> request\n> -        * needs to be obtained from the user-facing buffer, as internal\n> -        * buffers are free-wheeling and have no request associated with\n> them.\n> +        * Record the sensor's timestamp and sequence in the request\n> metadata.\n> +        * The request needs to be obtained from the user-facing buffer, as\n> +        * internal buffers are free-wheeling and have no request\n> associated\n> +        * with them.\n>          *\n>          * \\todo The sensor timestamp should be better estimated by\n> connecting\n>          * to the V4L2Device::frameStart signal if the platform provides\n> it.\n> @@ -686,9 +687,12 @@ void SimpleCameraData::bufferReady(FrameBuffer\n> *buffer)\n>                 }\n>         }\n>\n> -       if (request)\n> +       if (request) {\n>                 request->metadata().set(controls::SensorTimestamp,\n>                                         buffer->metadata().timestamp);\n> +               request->metadata().set(controls::SensorSequence,\n> +                                       buffer->metadata().sequence);\n> +       }\n>\n>         /*\n>          * Queue the captured and the request buffer to the converter if\n> format\n> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> index 264f5370cf32..f5fab3b69e6d 100644\n> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n> @@ -666,6 +666,8 @@ void UVCCameraData::bufferReady(FrameBuffer *buffer)\n>         /* \\todo Use the UVC metadata to calculate a more precise\n> timestamp */\n>         request->metadata().set(controls::SensorTimestamp,\n>                                 buffer->metadata().timestamp);\n> +       request->metadata().set(controls::SensorSequence,\n> +                               buffer->metadata().sequence);\n>\n>         pipe()->completeBuffer(request, buffer);\n>         pipe()->completeRequest(request);\n> --\n> 2.30.2\n>\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 A7FB1BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  7 Dec 2021 13:41:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DA8F46086A;\n\tTue,  7 Dec 2021 14:41:27 +0100 (CET)","from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com\n\t[IPv6:2a00:1450:4864:20::22d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4559260592\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Dec 2021 14:41:25 +0100 (CET)","by mail-lj1-x22d.google.com with SMTP id j18so27409105ljc.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 07 Dec 2021 05:41:25 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"f2fnan6v\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=TFf5wQg1tOpnacWaQsBSYRXGIgOgipy7SzKtkkkcYzY=;\n\tb=f2fnan6v/dRv/iTMQjnJyRv6y/cZ/Q9UvtqP0VJ1dT0QNCmJHpNnIDBI5Iw9mQdd2V\n\tJ+l9nyA27Ob2rcYQMmld/drrDxJ+qkRGSabMJFzFFtxOF3qPIYh687j/U1k+QNe4lolc\n\tDrr1YRvH4soDS/rTl3jy7h8gh5Ci7TI/EQtLUhHeyxU5T9iD5ItVxZBrpFMwPe1mcuwn\n\tN/MX+2shF0G9N+Op1jKf3wns6Mjo1X25w6yCAPaV4VlYf+SRUrDGqi7cf7hLtMNZ+rqH\n\tl1Qk1FX79Gj9oFFiWR9tBFUg/ceVMjJOfjC8nQ3phNKQEvkYj+coW+1dg29+koBRE+5I\n\tXO2Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=TFf5wQg1tOpnacWaQsBSYRXGIgOgipy7SzKtkkkcYzY=;\n\tb=xVx6k0Lg6yzdnbG8mUjO77KibwNmPiwP7Xj9VzimxW/cO6OmmOKPraZsA7m9rfYZIx\n\tZl5gZYvozM0RnQpIoOl/JL1kN/DKQ5LzQFeiYUmyvpPYC0uxLsZUxLxomr3Di02/uxF0\n\tXg6Y0l/E5/IcEysM2Ot5iY5DAa/anJDaKvXPR8yK1Wt7WUEB4o2GVd/6gsZxO6q4CLRY\n\tNv9/PLs0aFrweaUYAcviKHJkvIVxuO7otWnM89qXcrncKQmBe7yhvpIemBcM37P0N+Uq\n\tYPYVa4BCYT03Ha2E8bBMroIaosprf29ec1/hhRLO+ySlx2FnfO87uerabAw4wxOzxHdX\n\tMC5w==","X-Gm-Message-State":"AOAM530klayBuWJOimZZxQU5QdNCQ92MXM9VbqtNG+F9EjIvnGaWspSQ\n\tUTf5a1iT8BptBE65m1ACurpTxGbUYR53btHPxbbd0w==","X-Google-Smtp-Source":"ABdhPJx75eXTEIxxO/DGWwA7fx/RM6RUVvHMXbx3tocqModbsYkkUpIwFSLpn+TpIwawlDHUrWOZRbVJ8uaOsIbbTis=","X-Received":"by 2002:a2e:a22a:: with SMTP id\n\ti10mr43170763ljm.16.1638884484431; \n\tTue, 07 Dec 2021 05:41:24 -0800 (PST)","MIME-Version":"1.0","References":"<20211206233948.1351206-1-kieran.bingham@ideasonboard.com>\n\t<20211206233948.1351206-3-kieran.bingham@ideasonboard.com>","In-Reply-To":"<20211206233948.1351206-3-kieran.bingham@ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Tue, 7 Dec 2021 13:41:08 +0000","Message-ID":"<CAEmqJPptd-0JkrEeTYXL8o1o=1uoOi3P1vz5c4-u1geNOKeQHw@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000085d57c05d28e8795\"","Subject":"Re: [libcamera-devel] [PATCH 2/8] libcamera: pipeline: Set the\n\tSensor sequence number for all pipelines","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]