[{"id":17957,"web_url":"https://patchwork.libcamera.org/comment/17957/","msgid":"<CAHW6GYJvpsv4b7rd21SvdWb0rwYYHFX6kgZ_Gb37d_DadmBAjA@mail.gmail.com>","date":"2021-07-02T16:09:18","subject":"Re: [libcamera-devel] [PATCH v3 4/8] ipa: raspberrypi: Add\n\tframe_length to DeviceStatus","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Naush\n\nThanks for this update - I can see that this change has become more\ntroublesome than initially expected!\n\nOn Fri, 2 Jul 2021 at 16:09, Naushir Patuck <naush@raspberrypi.com> wrote:\n>\n> Update the IPA to fill frame length into the DeviceStatus struct from the\n> VBLANK Control value passed from DelayedControls.\n>\n> Update imx477 and imx219 CamHelper classes to extract the frame length from the\n> embedded data buffer.\n>\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  src/ipa/raspberrypi/cam_helper_imx219.cpp      | 6 +++++-\n>  src/ipa/raspberrypi/cam_helper_imx477.cpp      | 6 +++++-\n>  src/ipa/raspberrypi/controller/device_status.h | 5 ++++-\n>  src/ipa/raspberrypi/raspberrypi.cpp            | 2 ++\n>  4 files changed, 16 insertions(+), 3 deletions(-)\n>\n> diff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> index 4d68e01fce71..a3caab714602 100644\n> --- a/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> @@ -30,7 +30,10 @@ using namespace RPiController;\n>  constexpr uint32_t gainReg = 0x157;\n>  constexpr uint32_t expHiReg = 0x15a;\n>  constexpr uint32_t expLoReg = 0x15b;\n> -constexpr std::initializer_list<uint32_t> registerList [[maybe_unused]] = { expHiReg, expLoReg, gainReg };\n> +constexpr uint32_t frameLengthHiReg = 0x160;\n> +constexpr uint32_t frameLengthLoReg = 0x161;\n> +constexpr std::initializer_list<uint32_t> registerList [[maybe_unused]]\n> +       = { expHiReg, expLoReg, gainReg, frameLengthHiReg, frameLengthLoReg };\n\nDidn't we have a thing about these registers having to be in numerical\norder? So gainReg would have to go first. Though I'm assuming that we\nstill aren't using metadata for the imx219 so it doesn't actually\nmatter - but we should probably get it the right way round.\n\n(Should probably have spotted that on a previous review - oh well, sorry!)\n\n>\n>  class CamHelperImx219 : public CamHelper\n>  {\n> @@ -93,6 +96,7 @@ void CamHelperImx219::PopulateMetadata(const MdParser::RegisterMap &registers,\n>\n>         deviceStatus.shutter_speed = Exposure(registers.at(expHiReg) * 256 + registers.at(expLoReg));\n>         deviceStatus.analogue_gain = Gain(registers.at(gainReg));\n> +       deviceStatus.frame_length = registers.at(frameLengthHiReg) * 256 + registers.at(frameLengthLoReg);\n>\n>         metadata.Set(\"device.status\", deviceStatus);\n>  }\n> diff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> index 4098fde6f322..91d05d9226ff 100644\n> --- a/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> @@ -23,7 +23,10 @@ constexpr uint32_t expHiReg = 0x0202;\n>  constexpr uint32_t expLoReg = 0x0203;\n>  constexpr uint32_t gainHiReg = 0x0204;\n>  constexpr uint32_t gainLoReg = 0x0205;\n> -constexpr std::initializer_list<uint32_t> registerList [[maybe_unused]] = { expHiReg, expLoReg, gainHiReg, gainLoReg };\n> +constexpr uint32_t frameLengthHiReg = 0x0340;\n> +constexpr uint32_t frameLengthLoReg = 0x0341;\n> +constexpr std::initializer_list<uint32_t> registerList =\n> +       { expHiReg, expLoReg, gainHiReg, gainLoReg, frameLengthHiReg, frameLengthLoReg  };\n>\n>  class CamHelperImx477 : public CamHelper\n>  {\n> @@ -81,6 +84,7 @@ void CamHelperImx477::PopulateMetadata(const MdParser::RegisterMap &registers,\n>\n>         deviceStatus.shutter_speed = Exposure(registers.at(expHiReg) * 256 + registers.at(expLoReg));\n>         deviceStatus.analogue_gain = Gain(registers.at(gainHiReg) * 256 + registers.at(gainLoReg));\n> +       deviceStatus.frame_length = registers.at(frameLengthHiReg) * 256 + registers.at(frameLengthLoReg);\n>\n>         metadata.Set(\"device.status\", deviceStatus);\n>  }\n> diff --git a/src/ipa/raspberrypi/controller/device_status.h b/src/ipa/raspberrypi/controller/device_status.h\n> index e2511d19b96d..916471ab258b 100644\n> --- a/src/ipa/raspberrypi/controller/device_status.h\n> +++ b/src/ipa/raspberrypi/controller/device_status.h\n> @@ -17,7 +17,7 @@\n>\n>  struct DeviceStatus {\n>         DeviceStatus()\n> -               : shutter_speed(std::chrono::seconds(0)), analogue_gain(0.0),\n> +               : shutter_speed(std::chrono::seconds(0)), frame_length(0), analogue_gain(0.0),\n>                   lens_position(0.0), aperture(0.0), flash_intensity(0.0)\n>         {\n>         }\n> @@ -28,6 +28,7 @@ struct DeviceStatus {\n>\n>                 out << \"Exposure: \" << d.shutter_speed\n>                     << \" Gain: \" << d.analogue_gain\n> +                   << \" Frame Length: \" << d.frame_length\n>                     << \" Aperture: \" << d.aperture\n>                     << \" Lens: \" << d.lens_position\n>                     << \" Flash: \" << d.flash_intensity;\n> @@ -37,6 +38,8 @@ struct DeviceStatus {\n>\n>         /* time shutter is open */\n>         libcamera::utils::Duration shutter_speed;\n> +       // frame length given in number of lines\n\nDidn't I see a patch go by where you carefully replaced C++ comments\nby C-style ones?  :)\nOr perhaps that was a later patch... I can't even remember!\n\nWith those little things addressed:\n\nReviewed-by: David Plowman <david.plowman@raspberrypi.com>\n\nThanks!\nDavid\n\n> +       uint32_t frame_length;\n>         double analogue_gain;\n>         /* 1.0/distance-in-metres, or 0 if unknown */\n>         double lens_position;\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index f51c970befb5..db103a885b7a 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -1015,9 +1015,11 @@ void IPARPi::fillDeviceStatus(const ControlList &sensorControls)\n>\n>         int32_t exposureLines = sensorControls.get(V4L2_CID_EXPOSURE).get<int32_t>();\n>         int32_t gainCode = sensorControls.get(V4L2_CID_ANALOGUE_GAIN).get<int32_t>();\n> +       int32_t vblank = sensorControls.get(V4L2_CID_VBLANK).get<int32_t>();\n>\n>         deviceStatus.shutter_speed = helper_->Exposure(exposureLines);\n>         deviceStatus.analogue_gain = helper_->Gain(gainCode);\n> +       deviceStatus.frame_length = mode_.height + vblank;\n>\n>         LOG(IPARPI, Debug) << \"Metadata - \" << deviceStatus;\n>\n> --\n> 2.25.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 9E4CCC0100\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  2 Jul 2021 16:09:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1D1D7684EA;\n\tFri,  2 Jul 2021 18:09:32 +0200 (CEST)","from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com\n\t[IPv6:2a00:1450:4864:20::42d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 776BF684E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  2 Jul 2021 18:09:30 +0200 (CEST)","by mail-wr1-x42d.google.com with SMTP id i8so13153446wrc.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 02 Jul 2021 09:09:30 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"C0EvDpLQ\"; 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=Pk83mtKTu12VHuSctaBTjL8G04TQPicvzBpnT5I8fdU=;\n\tb=C0EvDpLQftZfPun9/ZiZJdqgLraNInf4GxAr2pKYhMhOl2D0M1yH9AHG6WuXVBHyXj\n\tLH8lkih1/lREzw1VQoO6AbQcIrIy9mz6IRYuqqj/RkTsAGZesxOwlRIrn6B+N9ScyQ2a\n\tIol4NFQ8SCZ71/YRQeijKPWfq8v7SLuqETjGpTSvKekhPZqXAY+TnZ/Aw8AZxn2bVeBK\n\tAKLGSQETFfa2J0TMQ5ppF3iARvw5WerYAX96VUePArRisS6KuCLRdasxCcsXGSNYiKbT\n\tpoyaPmgY0emP9tRpPaKQejHssLc/ZlzNnsaZkz1AtrFXb4zIuqp7kQGhK3UjNNBWfUli\n\tFBXw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=Pk83mtKTu12VHuSctaBTjL8G04TQPicvzBpnT5I8fdU=;\n\tb=qpR1wf5sNnrk5npB9Koa+oWrDaJdwpAhSgkTop6/8i4swR1ZyzqvjleId3fgKP43kE\n\tHn44RTAqzaw84e4AOMwKIMaZ0LOPHnBvdYRJgT8iYxN/UPrzCks28hpT3AOMqAQabKPj\n\tZivKtfKTrt4pWYQkJYaJB+fUrqZMs/X4EcFfb403hLsxcOpMM/hcSM9nnQ8L8Hid7cAD\n\tHm30VoqedXmbpb1BWOScfnYiQUH271ef7oCQpv1BQFNjZZjzH2hknt7yiVnmRJtWOAOx\n\tY0EEYjQIC0kM+CmQu7XQqj57At2lJxvL40ZV1zXkbf3VPV4r1z7ATG7ELWxXX3dBZs82\n\tXISA==","X-Gm-Message-State":"AOAM530EaDUYQ5RnHOEcM+SccMMf5K1xcJ0G9Wx66kUv/ct1935Nq8C3\n\tcsXJjIueKR6V79b49UBFN48I6KdtDf++zQPYyx775g==","X-Google-Smtp-Source":"ABdhPJykWrHd6Pi7Q8yLdV4AApw332VwoxnJdr2wOhMwAPD74jiJWnMFuA62a4Tana3nEDrqNdEMOGabiuUE91Qa1Dk=","X-Received":"by 2002:a05:6000:188b:: with SMTP id\n\ta11mr453331wri.274.1625242170192; \n\tFri, 02 Jul 2021 09:09:30 -0700 (PDT)","MIME-Version":"1.0","References":"<20210702150940.226941-1-naush@raspberrypi.com>\n\t<20210702150940.226941-5-naush@raspberrypi.com>","In-Reply-To":"<20210702150940.226941-5-naush@raspberrypi.com>","From":"David Plowman <david.plowman@raspberrypi.com>","Date":"Fri, 2 Jul 2021 17:09:18 +0100","Message-ID":"<CAHW6GYJvpsv4b7rd21SvdWb0rwYYHFX6kgZ_Gb37d_DadmBAjA@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v3 4/8] ipa: raspberrypi: Add\n\tframe_length to DeviceStatus","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>"}},{"id":17958,"web_url":"https://patchwork.libcamera.org/comment/17958/","msgid":"<CAEmqJPoM0zMoDcNV7WmcT2FRTAKMJ43K-TB6igoPvheq7ryKrQ@mail.gmail.com>","date":"2021-07-02T16:17:01","subject":"Re: [libcamera-devel] [PATCH v3 4/8] ipa: raspberrypi: Add\n\tframe_length to DeviceStatus","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi David,\n\nThank you for your feedback.\n\nOn Fri, 2 Jul 2021 at 17:09, David Plowman <david.plowman@raspberrypi.com>\nwrote:\n\n> Hi Naush\n>\n> Thanks for this update - I can see that this change has become more\n> troublesome than initially expected!\n>\n\nIndeed it has :(\nBut frame length is probably important enough that we should record it down.\n\n\n> On Fri, 2 Jul 2021 at 16:09, Naushir Patuck <naush@raspberrypi.com> wrote:\n> >\n> > Update the IPA to fill frame length into the DeviceStatus struct from the\n> > VBLANK Control value passed from DelayedControls.\n> >\n> > Update imx477 and imx219 CamHelper classes to extract the frame length\n> from the\n> > embedded data buffer.\n> >\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  src/ipa/raspberrypi/cam_helper_imx219.cpp      | 6 +++++-\n> >  src/ipa/raspberrypi/cam_helper_imx477.cpp      | 6 +++++-\n> >  src/ipa/raspberrypi/controller/device_status.h | 5 ++++-\n> >  src/ipa/raspberrypi/raspberrypi.cpp            | 2 ++\n> >  4 files changed, 16 insertions(+), 3 deletions(-)\n> >\n> > diff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> > index 4d68e01fce71..a3caab714602 100644\n> > --- a/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> > +++ b/src/ipa/raspberrypi/cam_helper_imx219.cpp\n> > @@ -30,7 +30,10 @@ using namespace RPiController;\n> >  constexpr uint32_t gainReg = 0x157;\n> >  constexpr uint32_t expHiReg = 0x15a;\n> >  constexpr uint32_t expLoReg = 0x15b;\n> > -constexpr std::initializer_list<uint32_t> registerList [[maybe_unused]]\n> = { expHiReg, expLoReg, gainReg };\n> > +constexpr uint32_t frameLengthHiReg = 0x160;\n> > +constexpr uint32_t frameLengthLoReg = 0x161;\n> > +constexpr std::initializer_list<uint32_t> registerList [[maybe_unused]]\n> > +       = { expHiReg, expLoReg, gainReg, frameLengthHiReg,\n> frameLengthLoReg };\n>\n> Didn't we have a thing about these registers having to be in numerical\n> order? So gainReg would have to go first. Though I'm assuming that we\n> still aren't using metadata for the imx219 so it doesn't actually\n> matter - but we should probably get it the right way round.\n>\n\nWith my last set of updates (i.e. C++ifying and generalising the SMIA\nparser),\nthese registers can be listed in any order.\n\n\n>\n> (Should probably have spotted that on a previous review - oh well, sorry!)\n>\n> >\n> >  class CamHelperImx219 : public CamHelper\n> >  {\n> > @@ -93,6 +96,7 @@ void CamHelperImx219::PopulateMetadata(const\n> MdParser::RegisterMap &registers,\n> >\n> >         deviceStatus.shutter_speed = Exposure(registers.at(expHiReg) *\n> 256 + registers.at(expLoReg));\n> >         deviceStatus.analogue_gain = Gain(registers.at(gainReg));\n> > +       deviceStatus.frame_length = registers.at(frameLengthHiReg) *\n> 256 + registers.at(frameLengthLoReg);\n> >\n> >         metadata.Set(\"device.status\", deviceStatus);\n> >  }\n> > diff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> > index 4098fde6f322..91d05d9226ff 100644\n> > --- a/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> > +++ b/src/ipa/raspberrypi/cam_helper_imx477.cpp\n> > @@ -23,7 +23,10 @@ constexpr uint32_t expHiReg = 0x0202;\n> >  constexpr uint32_t expLoReg = 0x0203;\n> >  constexpr uint32_t gainHiReg = 0x0204;\n> >  constexpr uint32_t gainLoReg = 0x0205;\n> > -constexpr std::initializer_list<uint32_t> registerList [[maybe_unused]]\n> = { expHiReg, expLoReg, gainHiReg, gainLoReg };\n> > +constexpr uint32_t frameLengthHiReg = 0x0340;\n> > +constexpr uint32_t frameLengthLoReg = 0x0341;\n> > +constexpr std::initializer_list<uint32_t> registerList =\n> > +       { expHiReg, expLoReg, gainHiReg, gainLoReg, frameLengthHiReg,\n> frameLengthLoReg  };\n> >\n> >  class CamHelperImx477 : public CamHelper\n> >  {\n> > @@ -81,6 +84,7 @@ void CamHelperImx477::PopulateMetadata(const\n> MdParser::RegisterMap &registers,\n> >\n> >         deviceStatus.shutter_speed = Exposure(registers.at(expHiReg) *\n> 256 + registers.at(expLoReg));\n> >         deviceStatus.analogue_gain = Gain(registers.at(gainHiReg) * 256\n> + registers.at(gainLoReg));\n> > +       deviceStatus.frame_length = registers.at(frameLengthHiReg) *\n> 256 + registers.at(frameLengthLoReg);\n> >\n> >         metadata.Set(\"device.status\", deviceStatus);\n> >  }\n> > diff --git a/src/ipa/raspberrypi/controller/device_status.h\n> b/src/ipa/raspberrypi/controller/device_status.h\n> > index e2511d19b96d..916471ab258b 100644\n> > --- a/src/ipa/raspberrypi/controller/device_status.h\n> > +++ b/src/ipa/raspberrypi/controller/device_status.h\n> > @@ -17,7 +17,7 @@\n> >\n> >  struct DeviceStatus {\n> >         DeviceStatus()\n> > -               : shutter_speed(std::chrono::seconds(0)),\n> analogue_gain(0.0),\n> > +               : shutter_speed(std::chrono::seconds(0)),\n> frame_length(0), analogue_gain(0.0),\n> >                   lens_position(0.0), aperture(0.0), flash_intensity(0.0)\n> >         {\n> >         }\n> > @@ -28,6 +28,7 @@ struct DeviceStatus {\n> >\n> >                 out << \"Exposure: \" << d.shutter_speed\n> >                     << \" Gain: \" << d.analogue_gain\n> > +                   << \" Frame Length: \" << d.frame_length\n> >                     << \" Aperture: \" << d.aperture\n> >                     << \" Lens: \" << d.lens_position\n> >                     << \" Flash: \" << d.flash_intensity;\n> > @@ -37,6 +38,8 @@ struct DeviceStatus {\n> >\n> >         /* time shutter is open */\n> >         libcamera::utils::Duration shutter_speed;\n> > +       // frame length given in number of lines\n>\n> Didn't I see a patch go by where you carefully replaced C++ comments\n> by C-style ones?  :)\n> Or perhaps that was a later patch... I can't even remember!\n>\n\nGroan, yes, the first patch did this, and I went and used C++ comments\nin this one.  Will fix it in the next revision.\n\nRegards,\nNaush\n\n\n>\n> With those little things addressed:\n>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n>\n> Thanks!\n> David\n>\n> > +       uint32_t frame_length;\n> >         double analogue_gain;\n> >         /* 1.0/distance-in-metres, or 0 if unknown */\n> >         double lens_position;\n> > diff --git a/src/ipa/raspberrypi/raspberrypi.cpp\n> b/src/ipa/raspberrypi/raspberrypi.cpp\n> > index f51c970befb5..db103a885b7a 100644\n> > --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> > +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> > @@ -1015,9 +1015,11 @@ void IPARPi::fillDeviceStatus(const ControlList\n> &sensorControls)\n> >\n> >         int32_t exposureLines =\n> sensorControls.get(V4L2_CID_EXPOSURE).get<int32_t>();\n> >         int32_t gainCode =\n> sensorControls.get(V4L2_CID_ANALOGUE_GAIN).get<int32_t>();\n> > +       int32_t vblank =\n> sensorControls.get(V4L2_CID_VBLANK).get<int32_t>();\n> >\n> >         deviceStatus.shutter_speed = helper_->Exposure(exposureLines);\n> >         deviceStatus.analogue_gain = helper_->Gain(gainCode);\n> > +       deviceStatus.frame_length = mode_.height + vblank;\n> >\n> >         LOG(IPARPI, Debug) << \"Metadata - \" << deviceStatus;\n> >\n> > --\n> > 2.25.1\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 A8026BD794\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  2 Jul 2021 16:17:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0FBE568502;\n\tFri,  2 Jul 2021 18:17:20 +0200 (CEST)","from mail-lf1-x132.google.com (mail-lf1-x132.google.com\n\t[IPv6:2a00:1450:4864:20::132])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 940EC684E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  2 Jul 2021 18:17:19 +0200 (CEST)","by mail-lf1-x132.google.com with SMTP id k10so18942742lfv.13\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 02 Jul 2021 09:17:19 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"Y0cwf09q\"; 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=CBjylCq3DQ8ili4j7itTfBLo8ON7KmlS/FTH03tmtKo=;\n\tb=Y0cwf09qSgBW/XgNdX9KmlouqeJTBQnjuSU7s+IWHPv+lpvj3tYSkBKJg21VdxmuRI\n\tcwLA9Mn6JYLaWOH3QnYso+sKOihY4lGJGJYmi3azql9qTtN/vjT8ubSsyaoOd1gf1eFa\n\tpdIsrdl+t1yU6IjBxZuEUASvD38nqsQ8nfuaioPwl9fJW4EDgciR7XoFjzIvV1ukHn/y\n\tKShWNosfJHuo00yad6oqHbiLvyVv3vYG6COhUMO+ykXsXLLeKIOJaj0NITjDKJ/6bxs7\n\tQ2u6H5E6B/AY4SZSaGa5jEiaxaqqyFCfLM/kT/SQKo8eLvtk9opJgbkS3e7DlqbKmPkM\n\tOm0g==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=CBjylCq3DQ8ili4j7itTfBLo8ON7KmlS/FTH03tmtKo=;\n\tb=mHoDIqD5w15QnPOnHjVDQmQ/P0uw+xDeEw8fcla4bwU0nPBcINNhy7sUNm3a2yWiL/\n\t8lngS2NjUXgFbCjTDsfQOuNeVdhyARJ5JbHQNhZHfr7YTqPEcMSktmh9C+JYYXWfHM1a\n\tzfIY1dzzDwHOkBaPY0QW6RGm5BodwFDJ24e38GLK7rcDAUm4XcqbaOCo2z9N2/7pEPOA\n\tpI/aV8YT/Okxp8+yFWryOWbzNKwtuKAO0rQbZ3V27qPPmv51aByayIhldwu0rUHxKv4I\n\tqcadZgh68IVM71diTzk8B3aV17nRqO7XNwUSCoR28Z3wM2DMf7YQ1p3FmQrGLa6u+03C\n\trvuQ==","X-Gm-Message-State":"AOAM532MDdSo531qtgiZjmo1uHEAcWuBBGwo0L93gA1KQfroP6RiNmIy\n\t2dt8N4YdLtV/8kkcRP6bZNYjwG2nLalvly/KjN7JepCExkM=","X-Google-Smtp-Source":"ABdhPJyiQFQrFflQN3+A6ibI6scL89ApFVLGu9pTR4aqVuRO2zzMmSMM+zMYPMluxmoP1r8JMh0wHh0DYrqSewa7e3c=","X-Received":"by 2002:a19:c21a:: with SMTP id l26mr311144lfc.210.1625242638865;\n\tFri, 02 Jul 2021 09:17:18 -0700 (PDT)","MIME-Version":"1.0","References":"<20210702150940.226941-1-naush@raspberrypi.com>\n\t<20210702150940.226941-5-naush@raspberrypi.com>\n\t<CAHW6GYJvpsv4b7rd21SvdWb0rwYYHFX6kgZ_Gb37d_DadmBAjA@mail.gmail.com>","In-Reply-To":"<CAHW6GYJvpsv4b7rd21SvdWb0rwYYHFX6kgZ_Gb37d_DadmBAjA@mail.gmail.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Fri, 2 Jul 2021 17:17:01 +0100","Message-ID":"<CAEmqJPoM0zMoDcNV7WmcT2FRTAKMJ43K-TB6igoPvheq7ryKrQ@mail.gmail.com>","To":"David Plowman <david.plowman@raspberrypi.com>","Content-Type":"multipart/alternative; boundary=\"00000000000029f0c205c6264a6b\"","Subject":"Re: [libcamera-devel] [PATCH v3 4/8] ipa: raspberrypi: Add\n\tframe_length to DeviceStatus","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>"}}]