[{"id":12059,"web_url":"https://patchwork.libcamera.org/comment/12059/","msgid":"<20200820083041.cywro2fmzgke4vr5@uno.localdomain>","date":"2020-08-20T08:30:41","subject":"Re: [libcamera-devel] [PATCH 04/13] libcamera: pipeline: rkisp1:\n\tPrepare buffer ready handlers for multiple streams","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Niklas,\n\nOn Thu, Aug 13, 2020 at 02:52:37AM +0200, Niklas Söderlund wrote:\n> The buffer ready handlers are designed for a single application facing\n> stream from the main path. To prepare for multiple application facing\n> streams from main and/or self path the handlers need to be prepared.\n>\n> The data keeping tasks of frame number and advancing the timeline can be\n> moved from the application facing buffer ready handler to the statistics\n> handler. For each request processed there will always be a statistic\n> buffer and as the ISP is inline and is the source of both main, self and\n> statistic paths there is no lose in precision from this.\n>\n> The application facing handler no longer needs a special case for\n\nWhy isn't this required anymore ?\n\n> cancelled frames and can be made simpler. With this change the handlers\n> are ready to deal with any combinations of application facing streams.\n\nIt's alla bit terse.. Don't repeat 'application facing' all the times\nand it might read better.\nWe don't have internal streams for this pipeline after all, am I wrong ?\n\n>\n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 17 +++++------------\n>  1 file changed, 5 insertions(+), 12 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 38382a6894dac22a..a1cda12d244f2d97 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -1074,20 +1074,8 @@ void PipelineHandlerRkISP1::tryCompleteRequest(Request *request)\n>  void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n>  {\n>  \tASSERT(activeCamera_);\n> -\tRkISP1CameraData *data = cameraData(activeCamera_);\n>  \tRequest *request = buffer->request();\n>\n> -\tif (buffer->metadata().status == FrameMetadata::FrameCancelled) {\n> -\t\tcompleteBuffer(activeCamera_, request, buffer);\n> -\t\tcompleteRequest(activeCamera_, request);\n> -\t\treturn;\n> -\t}\n> -\n> -\tdata->timeline_.bufferReady(buffer);\n> -\n> -\tif (data->frame_ <= buffer->metadata().sequence)\n> -\t\tdata->frame_ = buffer->metadata().sequence + 1;\n> -\n>  \tcompleteBuffer(activeCamera_, request, buffer);\n>  \ttryCompleteRequest(request);\n>  }\n> @@ -1118,6 +1106,11 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>  \tif (!info)\n>  \t\treturn;\n>\n> +\tdata->timeline_.bufferReady(buffer);\n> +\n> +\tif (data->frame_ <= buffer->metadata().sequence)\n> +\t\tdata->frame_ = buffer->metadata().sequence + 1;\n> +\n\nSo we're moving advancing the timeline and sequence number from buffer\ncomplete to stat complete, as we are sure there's one single stat for\neach frame processed by the ISP, right ?\n\nSeems fair to me, but there might be implications I cannot see at the\nmoment (ie. is stat mandatory to be queued with buffers ? How does\nthis play with RAW capture, asking as I don't know where we do get RAW\nframes on RkISP1)\n\nSeems legit to me\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n>  \tIPAOperationData op;\n>  \top.operation = RKISP1_IPA_EVENT_SIGNAL_STAT_BUFFER;\n>  \top.data = { info->frame, info->statBuffer->cookie() };\n> --\n> 2.28.0\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 BF297BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 20 Aug 2020 08:27:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3CB2661F61;\n\tThu, 20 Aug 2020 10:27:00 +0200 (CEST)","from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net\n\t[217.70.183.197])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5C31261ED9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 Aug 2020 10:26:59 +0200 (CEST)","from uno.localdomain (host-82-52-18-94.retail.telecomitalia.it\n\t[82.52.18.94]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 90A501C000D;\n\tThu, 20 Aug 2020 08:26:58 +0000 (UTC)"],"X-Originating-IP":"82.52.18.94","Date":"Thu, 20 Aug 2020 10:30:41 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200820083041.cywro2fmzgke4vr5@uno.localdomain>","References":"<20200813005246.3265807-1-niklas.soderlund@ragnatech.se>\n\t<20200813005246.3265807-5-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200813005246.3265807-5-niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH 04/13] libcamera: pipeline: rkisp1:\n\tPrepare buffer ready handlers for multiple streams","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","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12073,"web_url":"https://patchwork.libcamera.org/comment/12073/","msgid":"<20200820150009.GJ6593@pendragon.ideasonboard.com>","date":"2020-08-20T15:00:09","subject":"Re: [libcamera-devel] [PATCH 04/13] libcamera: pipeline: rkisp1:\n\tPrepare buffer ready handlers for multiple streams","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nThank you for the patch.\n\nOn Thu, Aug 13, 2020 at 02:52:37AM +0200, Niklas Söderlund wrote:\n> The buffer ready handlers are designed for a single application facing\n> stream from the main path. To prepare for multiple application facing\n> streams from main and/or self path the handlers need to be prepared.\n> \n> The data keeping tasks of frame number and advancing the timeline can be\n> moved from the application facing buffer ready handler to the statistics\n> handler. For each request processed there will always be a statistic\n> buffer and as the ISP is inline and is the source of both main, self and\n> statistic paths there is no lose in precision from this.\n> \n> The application facing handler no longer needs a special case for\n> cancelled frames and can be made simpler. With this change the handlers\n> are ready to deal with any combinations of application facing streams.\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 17 +++++------------\n>  1 file changed, 5 insertions(+), 12 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 38382a6894dac22a..a1cda12d244f2d97 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -1074,20 +1074,8 @@ void PipelineHandlerRkISP1::tryCompleteRequest(Request *request)\n>  void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n>  {\n>  \tASSERT(activeCamera_);\n> -\tRkISP1CameraData *data = cameraData(activeCamera_);\n>  \tRequest *request = buffer->request();\n>  \n> -\tif (buffer->metadata().status == FrameMetadata::FrameCancelled) {\n> -\t\tcompleteBuffer(activeCamera_, request, buffer);\n> -\t\tcompleteRequest(activeCamera_, request);\n> -\t\treturn;\n> -\t}\n> -\n> -\tdata->timeline_.bufferReady(buffer);\n> -\n> -\tif (data->frame_ <= buffer->metadata().sequence)\n> -\t\tdata->frame_ = buffer->metadata().sequence + 1;\n> -\n>  \tcompleteBuffer(activeCamera_, request, buffer);\n>  \ttryCompleteRequest(request);\n>  }\n> @@ -1118,6 +1106,11 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>  \tif (!info)\n>  \t\treturn;\n>  \n> +\tdata->timeline_.bufferReady(buffer);\n> +\n> +\tif (data->frame_ <= buffer->metadata().sequence)\n> +\t\tdata->frame_ = buffer->metadata().sequence + 1;\n> +\n\nThis should work for now, but may cause issues later, as we should fill\nthe request with metadata before completing it. That will however\nrequire more rework, so, for now,\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>  \tIPAOperationData op;\n>  \top.operation = RKISP1_IPA_EVENT_SIGNAL_STAT_BUFFER;\n>  \top.data = { info->frame, info->statBuffer->cookie() };","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 0D019BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 20 Aug 2020 15:00:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 80E0F61F7B;\n\tThu, 20 Aug 2020 17:00:28 +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 D404560381\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 Aug 2020 17:00:27 +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 4A15823D;\n\tThu, 20 Aug 2020 17:00:27 +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=\"pb05j9ws\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1597935627;\n\tbh=qkzzpNbi05hg9+vD7xgNvF/oXJehw50TVeTjfg05gzs=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=pb05j9wsSdj1QAqx57hgmyEku/OSQuYAQD7oDv4DvKubqDelnv1ZhRDQeSCopC5Uu\n\tfIPax6LWmFFYhIgEbO/hli8xMaVcDf01jifaprpS9YrTHibekRnGH8FdA7aoSf1gDc\n\tolJndZHSkqo+XI1OEjd0SbR4+Z9n3zOEyQ3v6L0Y=","Date":"Thu, 20 Aug 2020 18:00:09 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200820150009.GJ6593@pendragon.ideasonboard.com>","References":"<20200813005246.3265807-1-niklas.soderlund@ragnatech.se>\n\t<20200813005246.3265807-5-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200813005246.3265807-5-niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH 04/13] libcamera: pipeline: rkisp1:\n\tPrepare buffer ready handlers for multiple streams","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","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12485,"web_url":"https://patchwork.libcamera.org/comment/12485/","msgid":"<20200913133702.GC1127199@oden.dyn.berto.se>","date":"2020-09-13T13:37:02","subject":"Re: [libcamera-devel] [PATCH 04/13] libcamera: pipeline: rkisp1:\n\tPrepare buffer ready handlers for multiple streams","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nOn 2020-08-20 10:30:41 +0200, Jacopo Mondi wrote:\n> Hi Niklas,\n> \n> On Thu, Aug 13, 2020 at 02:52:37AM +0200, Niklas Söderlund wrote:\n> > The buffer ready handlers are designed for a single application facing\n> > stream from the main path. To prepare for multiple application facing\n> > streams from main and/or self path the handlers need to be prepared.\n> >\n> > The data keeping tasks of frame number and advancing the timeline can be\n> > moved from the application facing buffer ready handler to the statistics\n> > handler. For each request processed there will always be a statistic\n> > buffer and as the ISP is inline and is the source of both main, self and\n> > statistic paths there is no lose in precision from this.\n> >\n> > The application facing handler no longer needs a special case for\n> \n> Why isn't this required anymore ?\n\nWe only needed it to not interfere with the timeline if the buffer was \ncancelled. As the actions taken for cancelled buffers are the same as \ntaken for the buffer after the timeline was modified this was poorly \nstructured in the first place (my bad).\n\n> \n> > cancelled frames and can be made simpler. With this change the handlers\n> > are ready to deal with any combinations of application facing streams.\n> \n> It's alla bit terse.. Don't repeat 'application facing' all the times\n> and it might read better.\n> We don't have internal streams for this pipeline after all, am I wrong ?\n\nWe have internal \"streams\" for parameters and statistic for the RkISP1 \npipeline.\n\n> \n> >\n> > Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> > ---\n> >  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 17 +++++------------\n> >  1 file changed, 5 insertions(+), 12 deletions(-)\n> >\n> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > index 38382a6894dac22a..a1cda12d244f2d97 100644\n> > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > @@ -1074,20 +1074,8 @@ void PipelineHandlerRkISP1::tryCompleteRequest(Request *request)\n> >  void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n> >  {\n> >  \tASSERT(activeCamera_);\n> > -\tRkISP1CameraData *data = cameraData(activeCamera_);\n> >  \tRequest *request = buffer->request();\n> >\n> > -\tif (buffer->metadata().status == FrameMetadata::FrameCancelled) {\n> > -\t\tcompleteBuffer(activeCamera_, request, buffer);\n> > -\t\tcompleteRequest(activeCamera_, request);\n> > -\t\treturn;\n> > -\t}\n> > -\n> > -\tdata->timeline_.bufferReady(buffer);\n> > -\n> > -\tif (data->frame_ <= buffer->metadata().sequence)\n> > -\t\tdata->frame_ = buffer->metadata().sequence + 1;\n> > -\n> >  \tcompleteBuffer(activeCamera_, request, buffer);\n> >  \ttryCompleteRequest(request);\n> >  }\n> > @@ -1118,6 +1106,11 @@ void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n> >  \tif (!info)\n> >  \t\treturn;\n> >\n> > +\tdata->timeline_.bufferReady(buffer);\n> > +\n> > +\tif (data->frame_ <= buffer->metadata().sequence)\n> > +\t\tdata->frame_ = buffer->metadata().sequence + 1;\n> > +\n> \n> So we're moving advancing the timeline and sequence number from buffer\n> complete to stat complete, as we are sure there's one single stat for\n> each frame processed by the ISP, right ?\n> \n> Seems fair to me, but there might be implications I cannot see at the\n> moment (ie. is stat mandatory to be queued with buffers ? How does\n> this play with RAW capture, asking as I don't know where we do get RAW\n> frames on RkISP1)\n\nRAW is not (yet) supported by this pipeline so it won't effect it at \nall. I have placed with adding RAW support as part of this series but \nran into a can of worms unrelated to this series so I will do so on top.  \nBut in short the statistic buffers can still be queued for RAW so I have \nno concern this effect will effect that work.\n\n> \n> Seems legit to me\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> \n> Thanks\n>   j\n> \n> >  \tIPAOperationData op;\n> >  \top.operation = RKISP1_IPA_EVENT_SIGNAL_STAT_BUFFER;\n> >  \top.data = { info->frame, info->statBuffer->cookie() };\n> > --\n> > 2.28.0\n> >\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel","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 DA9EFBF01C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 13 Sep 2020 13:37:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7921462D99;\n\tSun, 13 Sep 2020 15:37:05 +0200 (CEST)","from mail-lf1-x141.google.com (mail-lf1-x141.google.com\n\t[IPv6:2a00:1450:4864:20::141])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5C65F62901\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 13 Sep 2020 15:37:04 +0200 (CEST)","by mail-lf1-x141.google.com with SMTP id x77so10607633lfa.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 13 Sep 2020 06:37:04 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\to24sm2963313ljj.49.2020.09.13.06.37.02\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSun, 13 Sep 2020 06:37:03 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"M3I4eCxw\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=ztY1aeHimhgP+JxTHDoyiUaWT9yeOAHOhagTVFKuQIw=;\n\tb=M3I4eCxwzkFaQpc9kUJyptOJA1+hksv7M2LR53D1tzCJZk32DxD3cr5g1WCJZxdfvg\n\t35vbULn5ziqFded0q+Xmg+1c5icZ8P9dpJGnZk6jz9Pi+qjc5kXuwSiL6Qdfb22CCQbh\n\tlp6fvQir8VRm1+sfiOy+4fAuP5IJvmNrrI5ObErrrQKUPfQwhNI8tZLSJBwOUqahEBPL\n\tnuuO3hvWu2byA8v/3/o+mohOJ24HeeU1HaFzLSqzBQbsGWEw+Iz2UBoyXl3jGzdXKdNz\n\tF0392t+mChIqyS8OKGkkFay+uukfyRBZCGoFYDzSGHbdFt74sS+UIyIkiA67fdxx8Aby\n\t7khQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=ztY1aeHimhgP+JxTHDoyiUaWT9yeOAHOhagTVFKuQIw=;\n\tb=g48kcKlJo46gP7PI+p4JkBQJopNbxILbkZJQ1WmI/p6uVeqg/HThvmkhHVQjqAJUFz\n\tKdQpmtdRCYQNC07LVzaau4CIbiV3zWVS8lR26fka+ctk7qmXxUo3tEgqtGZLSPWp0AGu\n\trexome8FU1Cm/yJFbfDqhymNsE5PcUTRZtrf3vb5JdnXwZqrd8OIiXEiUI50l5FsnpI2\n\t/Ym3IVe93LZsq10fiOUjCg2/+l7Doveu+04K9SAQWDplNCq3U+4O6Pdk9q2G9jKUAZdP\n\tHZde9rVl/mRcu3TZPyBc0LuTbbPEdBfvSuAfO9jM7RdjYZkYRFo0mqV4Mw3ERzg4/sfG\n\tO3UQ==","X-Gm-Message-State":"AOAM530amWnL6fqTJiXdlz5RvisDacT3WafejmlKk3KENL1z20S6tNqM\n\tfgIZkGtf48fvDEv5dUSswKeWT/22kFP3HA==","X-Google-Smtp-Source":"ABdhPJxbX5Keu++4KWXqRk63oeLYm1YEL0iN6EvECFT5HQRI5I83Z6NFzY5TKFOuSHRlcOzCZ7CSGA==","X-Received":"by 2002:a19:ee0d:: with SMTP id\n\tg13mr3437159lfb.139.1600004223728; \n\tSun, 13 Sep 2020 06:37:03 -0700 (PDT)","Date":"Sun, 13 Sep 2020 15:37:02 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200913133702.GC1127199@oden.dyn.berto.se>","References":"<20200813005246.3265807-1-niklas.soderlund@ragnatech.se>\n\t<20200813005246.3265807-5-niklas.soderlund@ragnatech.se>\n\t<20200820083041.cywro2fmzgke4vr5@uno.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200820083041.cywro2fmzgke4vr5@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH 04/13] libcamera: pipeline: rkisp1:\n\tPrepare buffer ready handlers for multiple streams","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","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]