[{"id":18881,"web_url":"https://patchwork.libcamera.org/comment/18881/","msgid":"<YRxFq3AILYbfULj9@pendragon.ideasonboard.com>","date":"2021-08-17T23:26:35","subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nThank you for the patch.\n\nOn Mon, Aug 16, 2021 at 01:31:30PM +0900, Hirokazu Honda wrote:\n> The offset variable is added to FrameBuffer::Plane. This modifies\n> the serialization and deserialization code for the offset variable.\n> \n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/libcamera/ipa_data_serializer.cpp | 5 ++++-\n>  1 file changed, 4 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp\n> index fb941e6b..144c3248 100644\n> --- a/src/libcamera/ipa_data_serializer.cpp\n> +++ b/src/libcamera/ipa_data_serializer.cpp\n> @@ -562,6 +562,7 @@ FileDescriptor IPADataSerializer<FileDescriptor>::deserialize(const std::vector<\n>   * FrameBuffer::Plane is serialized as:\n>   *\n>   * 1 byte  - FileDescriptor\n> + * 4 bytes - uint32_t Offset\n>   * 4 bytes - uint32_t Length\n>   */\n>  template<>\n> @@ -580,6 +581,7 @@ IPADataSerializer<FrameBuffer::Plane>::serialize(const FrameBuffer::Plane &data,\n>  \tfdsVec.insert(fdsVec.end(), fdFds.begin(), fdFds.end());\n>  \n>  \tappendPOD<uint32_t>(dataVec, data.length);\n> +\tappendPOD<uint32_t>(dataVec, data.offset);\n>  \n>  \treturn { dataVec, fdsVec };\n>  }\n> @@ -596,7 +598,8 @@ IPADataSerializer<FrameBuffer::Plane>::deserialize(std::vector<uint8_t>::const_i\n>  \n>  \tret.fd = IPADataSerializer<FileDescriptor>::deserialize(dataBegin, dataBegin + 1,\n>  \t\t\t\t\t\t\t\tfdsBegin, fdsBegin + 1);\n> -\tret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> +\tret.offset = readPOD<uint32_t>(dataBegin, 1, dataBegin + 2);\n> +\tret.length = readPOD<uint32_t>(dataBegin + 1, 1, dataEnd);\n>  \n>  \treturn ret;\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 5FBFBBD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 17 Aug 2021 23:26:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2B56668894;\n\tWed, 18 Aug 2021 01:26:44 +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 8A98B6025D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Aug 2021 01:26:43 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1CE0E499;\n\tWed, 18 Aug 2021 01:26:43 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"IV6l+T6m\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1629242803;\n\tbh=37EdiTfZlYUUDnWYfe2BKhZOuCRr7bo7kvz8L4GxJBI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=IV6l+T6msKjZlPBGPprX4fPYcb7uQDwbPUtOBURjIEM6Ik6uNG5NpRrXx4Djf95U5\n\t9ijY1xhDSgo0s/nPlAUUr+/kEqmfYER5Q6sRnPsS34S8daeh+1J7sE6ZNpgGM+8ccE\n\todqlf7PPShyamnzKBhCfzkwau0fQnG90wI9pE/QA=","Date":"Wed, 18 Aug 2021 02:26:35 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<YRxFq3AILYbfULj9@pendragon.ideasonboard.com>","References":"<20210816043138.957984-1-hiroh@chromium.org>\n\t<20210816043138.957984-3-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210816043138.957984-3-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","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@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18905,"web_url":"https://patchwork.libcamera.org/comment/18905/","msgid":"<20210818095829.eh43p3t4fr3m7mri@uno.localdomain>","date":"2021-08-18T09:58:29","subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hello,\n\nOn Mon, Aug 16, 2021 at 01:31:30PM +0900, Hirokazu Honda wrote:\n> The offset variable is added to FrameBuffer::Plane. This modifies\n> the serialization and deserialization code for the offset variable.\n>\n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> ---\n>  src/libcamera/ipa_data_serializer.cpp | 5 ++++-\n>  1 file changed, 4 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp\n> index fb941e6b..144c3248 100644\n> --- a/src/libcamera/ipa_data_serializer.cpp\n> +++ b/src/libcamera/ipa_data_serializer.cpp\n> @@ -562,6 +562,7 @@ FileDescriptor IPADataSerializer<FileDescriptor>::deserialize(const std::vector<\n>   * FrameBuffer::Plane is serialized as:\n>   *\n>   * 1 byte  - FileDescriptor\n> + * 4 bytes - uint32_t Offset\n>   * 4 bytes - uint32_t Length\n>   */\n>  template<>\n> @@ -580,6 +581,7 @@ IPADataSerializer<FrameBuffer::Plane>::serialize(const FrameBuffer::Plane &data,\n>  \tfdsVec.insert(fdsVec.end(), fdFds.begin(), fdFds.end());\n>\n>  \tappendPOD<uint32_t>(dataVec, data.length);\n> +\tappendPOD<uint32_t>(dataVec, data.offset);\n>\n>  \treturn { dataVec, fdsVec };\n>  }\n> @@ -596,7 +598,8 @@ IPADataSerializer<FrameBuffer::Plane>::deserialize(std::vector<uint8_t>::const_i\n>\n>  \tret.fd = IPADataSerializer<FileDescriptor>::deserialize(dataBegin, dataBegin + 1,\n>  \t\t\t\t\t\t\t\tfdsBegin, fdsBegin + 1);\n> -\tret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> +\tret.offset = readPOD<uint32_t>(dataBegin, 1, dataBegin + 2);\n> +\tret.length = readPOD<uint32_t>(dataBegin + 1, 1, dataEnd);\n\nAm I wrong ot offset is appeneded at the end of dataVec (after lenght) and\nthen read from the beginning (before lenght) ?\n\n>\n>  \treturn ret;\n>  }\n> --\n> 2.33.0.rc1.237.g0d66db33f3-goog\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 61BA6BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Aug 2021 09:57:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D8DDD68895;\n\tWed, 18 Aug 2021 11:57:43 +0200 (CEST)","from relay10.mail.gandi.net (relay10.mail.gandi.net\n\t[217.70.178.230])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 90C256025E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Aug 2021 11:57:42 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay10.mail.gandi.net (Postfix) with ESMTPSA id B3B2D240002;\n\tWed, 18 Aug 2021 09:57:41 +0000 (UTC)"],"Date":"Wed, 18 Aug 2021 11:58:29 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20210818095829.eh43p3t4fr3m7mri@uno.localdomain>","References":"<20210816043138.957984-1-hiroh@chromium.org>\n\t<20210816043138.957984-3-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210816043138.957984-3-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","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@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18906,"web_url":"https://patchwork.libcamera.org/comment/18906/","msgid":"<YRzfSmGw0bo9BtCt@pendragon.ideasonboard.com>","date":"2021-08-18T10:22:02","subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi,\n\nOn Wed, Aug 18, 2021 at 11:58:29AM +0200, Jacopo Mondi wrote:\n> On Mon, Aug 16, 2021 at 01:31:30PM +0900, Hirokazu Honda wrote:\n> > The offset variable is added to FrameBuffer::Plane. This modifies\n> > the serialization and deserialization code for the offset variable.\n> >\n> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > ---\n> >  src/libcamera/ipa_data_serializer.cpp | 5 ++++-\n> >  1 file changed, 4 insertions(+), 1 deletion(-)\n> >\n> > diff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp\n> > index fb941e6b..144c3248 100644\n> > --- a/src/libcamera/ipa_data_serializer.cpp\n> > +++ b/src/libcamera/ipa_data_serializer.cpp\n> > @@ -562,6 +562,7 @@ FileDescriptor IPADataSerializer<FileDescriptor>::deserialize(const std::vector<\n> >   * FrameBuffer::Plane is serialized as:\n> >   *\n> >   * 1 byte  - FileDescriptor\n> > + * 4 bytes - uint32_t Offset\n> >   * 4 bytes - uint32_t Length\n> >   */\n> >  template<>\n> > @@ -580,6 +581,7 @@ IPADataSerializer<FrameBuffer::Plane>::serialize(const FrameBuffer::Plane &data,\n> >  \tfdsVec.insert(fdsVec.end(), fdFds.begin(), fdFds.end());\n> >\n> >  \tappendPOD<uint32_t>(dataVec, data.length);\n> > +\tappendPOD<uint32_t>(dataVec, data.offset);\n> >\n> >  \treturn { dataVec, fdsVec };\n> >  }\n> > @@ -596,7 +598,8 @@ IPADataSerializer<FrameBuffer::Plane>::deserialize(std::vector<uint8_t>::const_i\n> >\n> >  \tret.fd = IPADataSerializer<FileDescriptor>::deserialize(dataBegin, dataBegin + 1,\n> >  \t\t\t\t\t\t\t\tfdsBegin, fdsBegin + 1);\n> > -\tret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> > +\tret.offset = readPOD<uint32_t>(dataBegin, 1, dataBegin + 2);\n> > +\tret.length = readPOD<uint32_t>(dataBegin + 1, 1, dataEnd);\n> \n> Am I wrong ot offset is appeneded at the end of dataVec (after lenght) and\n> then read from the beginning (before lenght) ?\n\nHow did I miss that ? :-S Let's serialize the fields in the order\nthey're defined in the structure. Also, the dataBegin + 2 isn't correct,\ndeserializing an uint32_t requires 4 bytes, and dataBegin + 1 is thus\nincorrect too.\n\nPaul, is there an easy way to get the serdes code for\nFrameBuffer::Plane generated ?\n\n> >\n> >  \treturn ret;\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 AEA84BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Aug 2021 10:22:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1AAE468895;\n\tWed, 18 Aug 2021 12:22:11 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 24D146888A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Aug 2021 12:22:10 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 92056466;\n\tWed, 18 Aug 2021 12:22:09 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"peo18ZML\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1629282129;\n\tbh=TIkFQaDSIfYfDd+bX5qFhf5lvv9nTy9Z/N/Bxez9Vjg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=peo18ZMLBFZXsZ2g4RIJOICDyMJgOKyXzuKrMs/TYRCR1A0T9zqZSz/+UtnCmu4g9\n\t8eywft7z888Tb0aboIcwtV3GJjHOe7kpu/3UaNIVhInzX+gDpw2SumZTFwWJWFqe/h\n\tR8hbaZjc3AMP/NGZJCB1D3pUVvkbBMygjZDkFS3Y=","Date":"Wed, 18 Aug 2021 13:22:02 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<YRzfSmGw0bo9BtCt@pendragon.ideasonboard.com>","References":"<20210816043138.957984-1-hiroh@chromium.org>\n\t<20210816043138.957984-3-hiroh@chromium.org>\n\t<20210818095829.eh43p3t4fr3m7mri@uno.localdomain>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210818095829.eh43p3t4fr3m7mri@uno.localdomain>","Subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","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@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18939,"web_url":"https://patchwork.libcamera.org/comment/18939/","msgid":"<20210819062752.GL1733965@pyrite.rasen.tech>","date":"2021-08-19T06:27:52","subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi,\n\nOn Wed, Aug 18, 2021 at 01:22:02PM +0300, Laurent Pinchart wrote:\n> Hi,\n> \n> On Wed, Aug 18, 2021 at 11:58:29AM +0200, Jacopo Mondi wrote:\n> > On Mon, Aug 16, 2021 at 01:31:30PM +0900, Hirokazu Honda wrote:\n> > > The offset variable is added to FrameBuffer::Plane. This modifies\n> > > the serialization and deserialization code for the offset variable.\n> > >\n> > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > > ---\n> > >  src/libcamera/ipa_data_serializer.cpp | 5 ++++-\n> > >  1 file changed, 4 insertions(+), 1 deletion(-)\n> > >\n> > > diff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp\n> > > index fb941e6b..144c3248 100644\n> > > --- a/src/libcamera/ipa_data_serializer.cpp\n> > > +++ b/src/libcamera/ipa_data_serializer.cpp\n> > > @@ -562,6 +562,7 @@ FileDescriptor IPADataSerializer<FileDescriptor>::deserialize(const std::vector<\n> > >   * FrameBuffer::Plane is serialized as:\n> > >   *\n> > >   * 1 byte  - FileDescriptor\n> > > + * 4 bytes - uint32_t Offset\n> > >   * 4 bytes - uint32_t Length\n> > >   */\n> > >  template<>\n> > > @@ -580,6 +581,7 @@ IPADataSerializer<FrameBuffer::Plane>::serialize(const FrameBuffer::Plane &data,\n> > >  \tfdsVec.insert(fdsVec.end(), fdFds.begin(), fdFds.end());\n> > >\n> > >  \tappendPOD<uint32_t>(dataVec, data.length);\n> > > +\tappendPOD<uint32_t>(dataVec, data.offset);\n> > >\n> > >  \treturn { dataVec, fdsVec };\n> > >  }\n> > > @@ -596,7 +598,8 @@ IPADataSerializer<FrameBuffer::Plane>::deserialize(std::vector<uint8_t>::const_i\n> > >\n> > >  \tret.fd = IPADataSerializer<FileDescriptor>::deserialize(dataBegin, dataBegin + 1,\n> > >  \t\t\t\t\t\t\t\tfdsBegin, fdsBegin + 1);\n> > > -\tret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> > > +\tret.offset = readPOD<uint32_t>(dataBegin, 1, dataBegin + 2);\n> > > +\tret.length = readPOD<uint32_t>(dataBegin + 1, 1, dataEnd);\n> > \n> > Am I wrong ot offset is appeneded at the end of dataVec (after lenght) and\n> > then read from the beginning (before lenght) ?\n\nYes, the serialize order needs to match the deserialize order.\n\nThe definition is fd, offset, length, so I would serialize in that order\ntoo (the deserializer has that order already).\n\n> \n> How did I miss that ? :-S Let's serialize the fields in the order\n> they're defined in the structure. Also, the dataBegin + 2 isn't correct,\n\nOkay, that's the fault of readPOD() being poorly (read: not having been)\ndocumentated. readPOD() takes the begin iterator, the position, and the\nend iterator. So it should be:\n\n-\tret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n+\tret.offset = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n+\tret.length = readPOD<uint32_t>(dataBegin, 5, dataEnd);\n\n(I'm confused about from where dataBegin + 2 came from in the first\nplace...)\n\n> deserializing an uint32_t requires 4 bytes, and dataBegin + 1 is thus\n> incorrect too.\n> \n> Paul, is there an easy way to get the serdes code for\n> FrameBuffer::Plane generated ?\n\nNo, because mojo doesn't support defining FrameBuffer.Plane. Unless...\nwe make a FrameBuffer namespace? Not sure. It's more work than it's\nworth for a simple struct like this though, imo.\n\nSpeaking of which, this patch needs to be squashed into the previous\npatch, otherwise isolation will break in between that and this patch.\n\n\nPaul\n\n> \n> > >\n> > >  \treturn ret;\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 C8672BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 19 Aug 2021 06:28:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 34FF568895;\n\tThu, 19 Aug 2021 08:28:02 +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 4F0E5605AB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 19 Aug 2021 08:28:00 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 629BB2A8;\n\tThu, 19 Aug 2021 08:27:58 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"qXdK+wdD\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1629354479;\n\tbh=3TX0YYmLDEYzTNAVgl0UmcAVlRcEqFB2KzkKbYoEnEw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=qXdK+wdDBU5mJBEe+9hfqPaQZkkHV/3+pmDcsgcO1u/pv6dpeArSjTuzwpoS9gQ9j\n\t3y7vPtNCSC0K4lS4wQMgBDbz+2a/yDNEqjNJZ9HKg2ybxt+IbXVPEuvCbfSs7y6hcO\n\tvEmk489xsSiySy1ldxoOD3UTmmCSA1UBgl6IakaM=","Date":"Thu, 19 Aug 2021 15:27:52 +0900","From":"paul.elder@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20210819062752.GL1733965@pyrite.rasen.tech>","References":"<20210816043138.957984-1-hiroh@chromium.org>\n\t<20210816043138.957984-3-hiroh@chromium.org>\n\t<20210818095829.eh43p3t4fr3m7mri@uno.localdomain>\n\t<YRzfSmGw0bo9BtCt@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<YRzfSmGw0bo9BtCt@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","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@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18965,"web_url":"https://patchwork.libcamera.org/comment/18965/","msgid":"<CAO5uPHN2a3Wo3iS4mgJpC=phLg8gsdJgsswjiH-_N9+G0jDWyA@mail.gmail.com>","date":"2021-08-20T06:54:15","subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Paul and Laurent,\n\nOn Thu, Aug 19, 2021 at 3:28 PM <paul.elder@ideasonboard.com> wrote:\n>\n> Hi,\n>\n> On Wed, Aug 18, 2021 at 01:22:02PM +0300, Laurent Pinchart wrote:\n> > Hi,\n> >\n> > On Wed, Aug 18, 2021 at 11:58:29AM +0200, Jacopo Mondi wrote:\n> > > On Mon, Aug 16, 2021 at 01:31:30PM +0900, Hirokazu Honda wrote:\n> > > > The offset variable is added to FrameBuffer::Plane. This modifies\n> > > > the serialization and deserialization code for the offset variable.\n> > > >\n> > > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > > > ---\n> > > >  src/libcamera/ipa_data_serializer.cpp | 5 ++++-\n> > > >  1 file changed, 4 insertions(+), 1 deletion(-)\n> > > >\n> > > > diff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp\n> > > > index fb941e6b..144c3248 100644\n> > > > --- a/src/libcamera/ipa_data_serializer.cpp\n> > > > +++ b/src/libcamera/ipa_data_serializer.cpp\n> > > > @@ -562,6 +562,7 @@ FileDescriptor IPADataSerializer<FileDescriptor>::deserialize(const std::vector<\n> > > >   * FrameBuffer::Plane is serialized as:\n> > > >   *\n> > > >   * 1 byte  - FileDescriptor\n> > > > + * 4 bytes - uint32_t Offset\n> > > >   * 4 bytes - uint32_t Length\n> > > >   */\n> > > >  template<>\n> > > > @@ -580,6 +581,7 @@ IPADataSerializer<FrameBuffer::Plane>::serialize(const FrameBuffer::Plane &data,\n> > > >   fdsVec.insert(fdsVec.end(), fdFds.begin(), fdFds.end());\n> > > >\n> > > >   appendPOD<uint32_t>(dataVec, data.length);\n> > > > + appendPOD<uint32_t>(dataVec, data.offset);\n> > > >\n> > > >   return { dataVec, fdsVec };\n> > > >  }\n> > > > @@ -596,7 +598,8 @@ IPADataSerializer<FrameBuffer::Plane>::deserialize(std::vector<uint8_t>::const_i\n> > > >\n> > > >   ret.fd = IPADataSerializer<FileDescriptor>::deserialize(dataBegin, dataBegin + 1,\n> > > >                                                           fdsBegin, fdsBegin + 1);\n> > > > - ret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> > > > + ret.offset = readPOD<uint32_t>(dataBegin, 1, dataBegin + 2);\n> > > > + ret.length = readPOD<uint32_t>(dataBegin + 1, 1, dataEnd);\n> > >\n> > > Am I wrong ot offset is appeneded at the end of dataVec (after lenght) and\n> > > then read from the beginning (before lenght) ?\n>\n> Yes, the serialize order needs to match the deserialize order.\n>\n> The definition is fd, offset, length, so I would serialize in that order\n> too (the deserializer has that order already).\n>\n> >\n> > How did I miss that ? :-S Let's serialize the fields in the order\n> > they're defined in the structure. Also, the dataBegin + 2 isn't correct,\n>\n> Okay, that's the fault of readPOD() being poorly (read: not having been)\n> documentated. readPOD() takes the begin iterator, the position, and the\n> end iterator. So it should be:\n>\n> -       ret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> +       ret.offset = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> +       ret.length = readPOD<uint32_t>(dataBegin, 5, dataEnd);\n>\n> (I'm confused about from where dataBegin + 2 came from in the first\n> place...)\n>\n> > deserializing an uint32_t requires 4 bytes, and dataBegin + 1 is thus\n> > incorrect too.\n> >\n> > Paul, is there an easy way to get the serdes code for\n> > FrameBuffer::Plane generated ?\n>\n> No, because mojo doesn't support defining FrameBuffer.Plane. Unless...\n> we make a FrameBuffer namespace? Not sure. It's more work than it's\n> worth for a simple struct like this though, imo.\n>\n> Speaking of which, this patch needs to be squashed into the previous\n> patch, otherwise isolation will break in between that and this patch.\n>\n\nThanks for the correction.\nI misunderstood readPOD arguments.\nI couldn't find readPOD document. Where is it?\n\nBest Regards,\n-Hiro\n>\n> Paul\n>\n> >\n> > > >\n> > > >   return ret;\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 76B50BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Aug 2021 06:54:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2D617688A2;\n\tFri, 20 Aug 2021 08:54:29 +0200 (CEST)","from mail-ed1-x532.google.com (mail-ed1-x532.google.com\n\t[IPv6:2a00:1450:4864:20::532])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9C31E605A9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Aug 2021 08:54:27 +0200 (CEST)","by mail-ed1-x532.google.com with SMTP id g21so12508730edw.4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 19 Aug 2021 23:54:27 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"BYqDSmVq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=ceufC+xUQg0asWQzjWthdkyLmnMqXD0PlU+6qFGLxlk=;\n\tb=BYqDSmVq9yOo3BPB23RJtlZWyd4cVV2NZCrQXPl4iXcpom+v4jU4LmkX9K6zBB2+8U\n\tYVfHJ8WnuiB9o2q1r32DL6K6ckwOrenwC9/o/9xrf9BMfLrX2nGhdrpB2E3ca2b2oNfM\n\tdG8B/gbaYKwGtWMwG/hsNMqsRVoEHENdE0Xyw=","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=ceufC+xUQg0asWQzjWthdkyLmnMqXD0PlU+6qFGLxlk=;\n\tb=Q9o4nTyXrS5F8uPPIrFq4Tp5nCBHymnnCcACx6LQUyIux6Hvjz0/7GVVQX9GvLV8Sd\n\ttyUVQTcgJx0wMrC4V0V+xwupKU4TwAZTq/nhPyr84xEh2a/KPv76YiAS5i81yw8cy7qF\n\tTPk5yHbq0ltUQrwhgeQUQvA5osoASB2r+slXpqKZyV2nhnyMVGys9nx4P0Tg+W+k1xh0\n\tJ9bLNsoJ4RN/irREQdys7G7jYePRgJv9TOClDiPeqVA6voOIjVQq/ybSyK+QoayRmpi3\n\ty/Pm2LomlISNV9j3wH/6602lx+4bRwWo9UAAbTxOVhjpppAlxy2Jxpt+14OX7VRWPzlq\n\tqeLw==","X-Gm-Message-State":"AOAM532IhXSNO187vw8KrpPYQPTSv3EuQ9w6O9eSNmyoStwFE4vMCxRw\n\tduJSTwB0CvUbb2jfjJRAFOcXg+xKaYvtt+tDdJpirw==","X-Google-Smtp-Source":"ABdhPJxnkBVNC0WUXe/Sda5B3Gn5lJRfZuuR2A/X5/R8B4tzxCCFjEWTZRH/XqyZUQ6k9m/G6ERN66U71pm1Bg4ii1A=","X-Received":"by 2002:a05:6402:202:: with SMTP id\n\tt2mr20748609edv.116.1629442467241; \n\tThu, 19 Aug 2021 23:54:27 -0700 (PDT)","MIME-Version":"1.0","References":"<20210816043138.957984-1-hiroh@chromium.org>\n\t<20210816043138.957984-3-hiroh@chromium.org>\n\t<20210818095829.eh43p3t4fr3m7mri@uno.localdomain>\n\t<YRzfSmGw0bo9BtCt@pendragon.ideasonboard.com>\n\t<20210819062752.GL1733965@pyrite.rasen.tech>","In-Reply-To":"<20210819062752.GL1733965@pyrite.rasen.tech>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Fri, 20 Aug 2021 15:54:15 +0900","Message-ID":"<CAO5uPHN2a3Wo3iS4mgJpC=phLg8gsdJgsswjiH-_N9+G0jDWyA@mail.gmail.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","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":18967,"web_url":"https://patchwork.libcamera.org/comment/18967/","msgid":"<20210820082902.GA4084888@pyrite.rasen.tech>","date":"2021-08-20T08:29:02","subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Hiro,\n\nOn Fri, Aug 20, 2021 at 03:54:15PM +0900, Hirokazu Honda wrote:\n> Hi Paul and Laurent,\n> \n> On Thu, Aug 19, 2021 at 3:28 PM <paul.elder@ideasonboard.com> wrote:\n> >\n> > Hi,\n> >\n> > On Wed, Aug 18, 2021 at 01:22:02PM +0300, Laurent Pinchart wrote:\n> > > Hi,\n> > >\n> > > On Wed, Aug 18, 2021 at 11:58:29AM +0200, Jacopo Mondi wrote:\n> > > > On Mon, Aug 16, 2021 at 01:31:30PM +0900, Hirokazu Honda wrote:\n> > > > > The offset variable is added to FrameBuffer::Plane. This modifies\n> > > > > the serialization and deserialization code for the offset variable.\n> > > > >\n> > > > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > > > > ---\n> > > > >  src/libcamera/ipa_data_serializer.cpp | 5 ++++-\n> > > > >  1 file changed, 4 insertions(+), 1 deletion(-)\n> > > > >\n> > > > > diff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp\n> > > > > index fb941e6b..144c3248 100644\n> > > > > --- a/src/libcamera/ipa_data_serializer.cpp\n> > > > > +++ b/src/libcamera/ipa_data_serializer.cpp\n> > > > > @@ -562,6 +562,7 @@ FileDescriptor IPADataSerializer<FileDescriptor>::deserialize(const std::vector<\n> > > > >   * FrameBuffer::Plane is serialized as:\n> > > > >   *\n> > > > >   * 1 byte  - FileDescriptor\n> > > > > + * 4 bytes - uint32_t Offset\n> > > > >   * 4 bytes - uint32_t Length\n> > > > >   */\n> > > > >  template<>\n> > > > > @@ -580,6 +581,7 @@ IPADataSerializer<FrameBuffer::Plane>::serialize(const FrameBuffer::Plane &data,\n> > > > >   fdsVec.insert(fdsVec.end(), fdFds.begin(), fdFds.end());\n> > > > >\n> > > > >   appendPOD<uint32_t>(dataVec, data.length);\n> > > > > + appendPOD<uint32_t>(dataVec, data.offset);\n> > > > >\n> > > > >   return { dataVec, fdsVec };\n> > > > >  }\n> > > > > @@ -596,7 +598,8 @@ IPADataSerializer<FrameBuffer::Plane>::deserialize(std::vector<uint8_t>::const_i\n> > > > >\n> > > > >   ret.fd = IPADataSerializer<FileDescriptor>::deserialize(dataBegin, dataBegin + 1,\n> > > > >                                                           fdsBegin, fdsBegin + 1);\n> > > > > - ret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> > > > > + ret.offset = readPOD<uint32_t>(dataBegin, 1, dataBegin + 2);\n> > > > > + ret.length = readPOD<uint32_t>(dataBegin + 1, 1, dataEnd);\n> > > >\n> > > > Am I wrong ot offset is appeneded at the end of dataVec (after lenght) and\n> > > > then read from the beginning (before lenght) ?\n> >\n> > Yes, the serialize order needs to match the deserialize order.\n> >\n> > The definition is fd, offset, length, so I would serialize in that order\n> > too (the deserializer has that order already).\n> >\n> > >\n> > > How did I miss that ? :-S Let's serialize the fields in the order\n> > > they're defined in the structure. Also, the dataBegin + 2 isn't correct,\n> >\n> > Okay, that's the fault of readPOD() being poorly (read: not having been)\n> > documentated. readPOD() takes the begin iterator, the position, and the\n> > end iterator. So it should be:\n> >\n> > -       ret.length = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> > +       ret.offset = readPOD<uint32_t>(dataBegin, 1, dataEnd);\n> > +       ret.length = readPOD<uint32_t>(dataBegin, 5, dataEnd);\n> >\n> > (I'm confused about from where dataBegin + 2 came from in the first\n> > place...)\n> >\n> > > deserializing an uint32_t requires 4 bytes, and dataBegin + 1 is thus\n> > > incorrect too.\n> > >\n> > > Paul, is there an easy way to get the serdes code for\n> > > FrameBuffer::Plane generated ?\n> >\n> > No, because mojo doesn't support defining FrameBuffer.Plane. Unless...\n> > we make a FrameBuffer namespace? Not sure. It's more work than it's\n> > worth for a simple struct like this though, imo.\n> >\n> > Speaking of which, this patch needs to be squashed into the previous\n> > patch, otherwise isolation will break in between that and this patch.\n> >\n> \n> Thanks for the correction.\n> I misunderstood readPOD arguments.\n> I couldn't find readPOD document. Where is it?\n\nThat's what I said... there is no documentation for readPOD...\n\nI guess I'll have to add one... (I want to strengthen the ASSERT that's\nin there too)\n\n\nPaul\n\n> >\n> > >\n> > > > >\n> > > > >   return ret;\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 7C14DBD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Aug 2021 08:29:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E3A16688A3;\n\tFri, 20 Aug 2021 10:29:10 +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 F0D1368890\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Aug 2021 10:29:09 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4D4038C8;\n\tFri, 20 Aug 2021 10:29:08 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Oq1vw+cj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1629448149;\n\tbh=7Y1n04a5P+/ysUFHRWnf2IssFCOePRHINwAwDzqnDZk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Oq1vw+cjNuOSSRMOGbX7DwF5MiyoWvZN/9n1XQPiK6qnYmjv7x26AwGkuoAo7gN/D\n\ta41zz5V31Aj7hvir0sTwH2lKz4XfoU63ZT3+021puTv3XHFu0gtdyhKWedYThfuQnQ\n\tYBxIGSpGEKBLPXdsv8uSKZzphGsfgboKV+dAwUbw=","Date":"Fri, 20 Aug 2021 17:29:02 +0900","From":"paul.elder@ideasonboard.com","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20210820082902.GA4084888@pyrite.rasen.tech>","References":"<20210816043138.957984-1-hiroh@chromium.org>\n\t<20210816043138.957984-3-hiroh@chromium.org>\n\t<20210818095829.eh43p3t4fr3m7mri@uno.localdomain>\n\t<YRzfSmGw0bo9BtCt@pendragon.ideasonboard.com>\n\t<20210819062752.GL1733965@pyrite.rasen.tech>\n\t<CAO5uPHN2a3Wo3iS4mgJpC=phLg8gsdJgsswjiH-_N9+G0jDWyA@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<CAO5uPHN2a3Wo3iS4mgJpC=phLg8gsdJgsswjiH-_N9+G0jDWyA@mail.gmail.com>","Subject":"Re: [libcamera-devel] [RFC PATCH 02/10] libcamera:\n\tipa_data_serializer: Modify (de)serialization for offset","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>"}}]