[{"id":24290,"web_url":"https://patchwork.libcamera.org/comment/24290/","msgid":"<b2c7f6e9-8f1d-1b8c-b73f-0883d013a04a@ideasonboard.com>","date":"2022-08-02T07:53:38","subject":"Re: [libcamera-devel] [PATCH v3 7/9] ipu3: Assign\n\t|outCaptureStream| to StillCapture configuration","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Harvey,\n\nOn 6/29/22 16:00, Harvey Yang via libcamera-devel wrote:\n> When StillCapture and other non-raw configurations are requested,\n> assigns |outCaptureStream| instead of |outStream| to the StillCapture\n> configuration.\n>\n> Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> ---\n>   src/libcamera/pipeline/ipu3/ipu3.cpp | 50 +++++++++++++++++++++++-----\n>   1 file changed, 42 insertions(+), 8 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index ec9d14d1..e26c2736 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -254,8 +254,10 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()\n>   \t * \\todo Clarify the IF and BDS margins requirements.\n>   \t */\n>   \tunsigned int rawCount = 0;\n> -\tunsigned int yuvCount = 0;\n> +\tunsigned int videoCount = 0;\n> +\tunsigned int stillCount = 0;\n>   \tSize maxYuvSize;\n> +\tSize maxVideoSize;\n>   \tSize rawSize;\n>   \n>   \tfor (const StreamConfiguration &cfg : config_) {\n> @@ -264,16 +266,29 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()\n>   \t\tif (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) {\n>   \t\t\trawCount++;\n>   \t\t\trawSize.expandTo(cfg.size);\n> +\t\t} else if (cfg.streamRole == StreamRole::StillCapture) {\n> +\t\t\tif (stillCount != 0)\n> +\t\t\t\treturn Invalid;\n> +\n> +\t\t\tstillCount++;\n> +\t\t\tmaxYuvSize.expandTo(cfg.size);\n>   \t\t} else {\n> -\t\t\tyuvCount++;\n> +\t\t\tvideoCount++;\n>   \t\t\tmaxYuvSize.expandTo(cfg.size);\n> +\t\t\tmaxVideoSize.expandTo(cfg.size);\n>   \t\t}\n>   \t}\n>   \n> -\tif (rawCount > 1 || yuvCount > 2) {\n> +\tif (videoCount == 0 && stillCount == 1) {\n> +\t\tstillCount = 0;\n> +\t\tvideoCount = 1;\n> +\t\tmaxVideoSize.expandTo(maxYuvSize);\n> +\t}\n\n\nMaybe you can explain this if block with a brief comment on the case why \nwe invert stillCount and videoCount.\n\n> +\n> +\tif (rawCount > 1 || videoCount > 2) {\n>   \t\tLOG(IPU3, Debug) << \"Camera configuration not supported\";\n>   \t\treturn Invalid;\n> -\t} else if (rawCount && !yuvCount) {\n> +\t} else if (rawCount && !stillCount && !videoCount) {\n>   \t\t/*\n>   \t\t * Disallow raw-only camera configuration. Currently, ImgU does\n>   \t\t * not get configured for raw-only streams and has early return\n> @@ -316,6 +331,9 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()\n>   \tImgUDevice::Pipe pipe{};\n>   \tpipe.input = cio2Configuration_.size;\n>   \n> +\tImgUDevice::Pipe pipe1{};\n> +\tpipe1.input = cio2Configuration_.size;\n> +\n>   \t/*\n>   \t * Adjust the configurations if needed and assign streams while\n>   \t * iterating them.\n> @@ -380,18 +398,34 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()\n>   \t\t\tcfg->stride = info.stride(cfg->size.width, 0, 1);\n>   \t\t\tcfg->frameSize = info.frameSize(cfg->size, 1);\n>   \n> +\t\t\tif (stillCount == 1 && cfg->streamRole == StreamRole::StillCapture) {\n\n\nMaybe check both is redundant? Can stillCount be converted to \nASSERT(stillCount != 0) inside the block?\n\n> +\t\t\t\tLOG(IPU3, Debug) << \"Assigned \"\n> +\t\t\t\t\t\t << cfg->toString()\n> +\t\t\t\t\t\t << \" to the imgu1 main output\";\n> +\t\t\t\tcfg->setStream(const_cast<Stream *>(&data_->outCaptureStream_));\n> +\n> +\t\t\t\tpipe1.main = cfg->size;\n> +\t\t\t\tpipe1.viewfinder = pipe1.main;\n> +\n> +\t\t\t\tpipeConfig1_ = data_->imgu1_->calculatePipeConfig(&pipe1);\n> +\t\t\t\tif (pipeConfig1_.isNull()) {\n> +\t\t\t\t\tLOG(IPU3, Error) << \"Failed to calculate pipe configuration: \"\n> +\t\t\t\t\t\t\t << \"unsupported resolutions.\";\n> +\t\t\t\t\treturn Invalid;\n> +\t\t\t\t}\n>   \t\t\t/*\n>   \t\t\t * Use the main output stream in case only one stream is\n>   \t\t\t * requested or if the current configuration is the one\n>   \t\t\t * with the maximum YUV output size.\n>   \t\t\t */\n> -\t\t\tif (mainOutputAvailable &&\n> -\t\t\t    (originalCfg.size == maxYuvSize || yuvCount == 1)) {\n> +\t\t\t} else if (mainOutputAvailable &&\n> +\t\t\t\t   (originalCfg.size == maxVideoSize ||\n> +\t\t\t\t    videoCount == 1)) {\n>   \t\t\t\tcfg->setStream(const_cast<Stream *>(&data_->outStream_));\n>   \t\t\t\tmainOutputAvailable = false;\n>   \n>   \t\t\t\tpipe.main = cfg->size;\n> -\t\t\t\tif (yuvCount == 1)\n> +\t\t\t\tif (videoCount == 1)\n>   \t\t\t\t\tpipe.viewfinder = pipe.main;\n>   \n>   \t\t\t\tLOG(IPU3, Debug) << \"Assigned \" << cfg->toString()\n> @@ -415,7 +449,7 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()\n>   \t}\n>   \n>   \t/* Only compute the ImgU configuration if a YUV stream has been requested. */\n> -\tif (yuvCount) {\n> +\tif (videoCount) {\n>   \t\tpipeConfig0_ = data_->imgu0_->calculatePipeConfig(&pipe);\n>   \t\tif (pipeConfig0_.isNull()) {\n>   \t\t\tLOG(IPU3, Error) << \"Failed to calculate pipe configuration: \"","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 3B40CBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  2 Aug 2022 07:53:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EA07263312;\n\tTue,  2 Aug 2022 09:53:45 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D342B6330D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  2 Aug 2022 09:53:44 +0200 (CEST)","from [IPV6:2401:4900:1f3f:85c2:5ee8:5bb8:aca7:5517] (unknown\n\t[IPv6:2401:4900:1f3f:85c2:5ee8:5bb8:aca7:5517])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BEAC325B;\n\tTue,  2 Aug 2022 09:53:43 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1659426825;\n\tbh=aHLE9uRcM46I1ttv4DTsDgT+Lm+SeUFvPq5kZ9KFBLQ=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=Od9V2LwdZKPgkvddyHKi1KKiUmKWwODB+5Aq649wFgP+bUcVMRc+9ABNIQ9ppAHki\n\tkddmnmW8xRKVchvZ7Bv6wVHGiWfuk6ph1W8n73DpOyDGn+CKxsTR52JS05XcWUNmZi\n\twnkwMKizah3ivqYSr+Lo3eRwLSecel9+57tdCNUEyqvnO33gTogtcMRgU3Ppj5Fz2G\n\tnGiollmqizWpzR65DzsFjBZvmDEAKeiVn+M07IEXyeAA0fs0YMeOrpw5KGax1LXl2x\n\tHyz40+iPbsp4iuW9+1FomAri2FVR7DA7f/NE+hMjkfnua8lIjwMFDxNo09N0eGxwOB\n\tsd4k0yTPD4CXw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1659426824;\n\tbh=aHLE9uRcM46I1ttv4DTsDgT+Lm+SeUFvPq5kZ9KFBLQ=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=gw1BTKwoGY8UZ9VqIhSodtvvfp+AWHKakD0AQMsczaH+d/kWb6cSJF2PP+r6jnSMq\n\tRdZGb8YI1TNSuO2fetEP/kfplabbcEnC23a8P+nRNGIpYzEt9L1MZQtU4cKmBzocvv\n\tXz5yXDZquDfQGIHFczjZnfbBLCyeRHtCOImo2ULk="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"gw1BTKwo\"; dkim-atps=neutral","Message-ID":"<b2c7f6e9-8f1d-1b8c-b73f-0883d013a04a@ideasonboard.com>","Date":"Tue, 2 Aug 2022 13:23:38 +0530","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101\n\tThunderbird/91.4.1","Content-Language":"en-US","To":"Harvey Yang <chenghaoyang@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20220629103018.4025635-1-chenghaoyang@google.com>\n\t<20220629103018.4025635-8-chenghaoyang@google.com>","In-Reply-To":"<20220629103018.4025635-8-chenghaoyang@google.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v3 7/9] ipu3: Assign\n\t|outCaptureStream| to StillCapture configuration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Umang Jain via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Umang Jain <umang.jain@ideasonboard.com>","Cc":"Harvey Yang <chenghaoyang@google.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":24299,"web_url":"https://patchwork.libcamera.org/comment/24299/","msgid":"<CAEB1ahv55fa1fXQy=Y_AsmTpECSA=3UybseijYF-amXDXv-Ukw@mail.gmail.com>","date":"2022-08-02T10:31:17","subject":"Re: [libcamera-devel] [PATCH v3 7/9] ipu3: Assign\n\t|outCaptureStream| to StillCapture configuration","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Umang,\n\nOn Tue, Aug 2, 2022 at 3:53 PM Umang Jain <umang.jain@ideasonboard.com>\nwrote:\n\n> Hi Harvey,\n>\n> On 6/29/22 16:00, Harvey Yang via libcamera-devel wrote:\n> > When StillCapture and other non-raw configurations are requested,\n> > assigns |outCaptureStream| instead of |outStream| to the StillCapture\n> > configuration.\n> >\n> > Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> > ---\n> >   src/libcamera/pipeline/ipu3/ipu3.cpp | 50 +++++++++++++++++++++++-----\n> >   1 file changed, 42 insertions(+), 8 deletions(-)\n> >\n> > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > index ec9d14d1..e26c2736 100644\n> > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > @@ -254,8 +254,10 @@ CameraConfiguration::Status\n> IPU3CameraConfiguration::validate()\n> >        * \\todo Clarify the IF and BDS margins requirements.\n> >        */\n> >       unsigned int rawCount = 0;\n> > -     unsigned int yuvCount = 0;\n> > +     unsigned int videoCount = 0;\n> > +     unsigned int stillCount = 0;\n> >       Size maxYuvSize;\n> > +     Size maxVideoSize;\n> >       Size rawSize;\n> >\n> >       for (const StreamConfiguration &cfg : config_) {\n> > @@ -264,16 +266,29 @@ CameraConfiguration::Status\n> IPU3CameraConfiguration::validate()\n> >               if (info.colourEncoding ==\n> PixelFormatInfo::ColourEncodingRAW) {\n> >                       rawCount++;\n> >                       rawSize.expandTo(cfg.size);\n> > +             } else if (cfg.streamRole == StreamRole::StillCapture) {\n> > +                     if (stillCount != 0)\n> > +                             return Invalid;\n> > +\n> > +                     stillCount++;\n> > +                     maxYuvSize.expandTo(cfg.size);\n> >               } else {\n> > -                     yuvCount++;\n> > +                     videoCount++;\n> >                       maxYuvSize.expandTo(cfg.size);\n> > +                     maxVideoSize.expandTo(cfg.size);\n> >               }\n> >       }\n> >\n> > -     if (rawCount > 1 || yuvCount > 2) {\n> > +     if (videoCount == 0 && stillCount == 1) {\n> > +             stillCount = 0;\n> > +             videoCount = 1;\n> > +             maxVideoSize.expandTo(maxYuvSize);\n> > +     }\n>\n>\n> Maybe you can explain this if block with a brief comment on the case why\n> we invert stillCount and videoCount.\n>\n>\nAdded a simple one. Please check.\n\n\n> > +\n> > +     if (rawCount > 1 || videoCount > 2) {\n> >               LOG(IPU3, Debug) << \"Camera configuration not supported\";\n> >               return Invalid;\n> > -     } else if (rawCount && !yuvCount) {\n> > +     } else if (rawCount && !stillCount && !videoCount) {\n> >               /*\n> >                * Disallow raw-only camera configuration. Currently, ImgU\n> does\n> >                * not get configured for raw-only streams and has early\n> return\n> > @@ -316,6 +331,9 @@ CameraConfiguration::Status\n> IPU3CameraConfiguration::validate()\n> >       ImgUDevice::Pipe pipe{};\n> >       pipe.input = cio2Configuration_.size;\n> >\n> > +     ImgUDevice::Pipe pipe1{};\n> > +     pipe1.input = cio2Configuration_.size;\n> > +\n> >       /*\n> >        * Adjust the configurations if needed and assign streams while\n> >        * iterating them.\n> > @@ -380,18 +398,34 @@ CameraConfiguration::Status\n> IPU3CameraConfiguration::validate()\n> >                       cfg->stride = info.stride(cfg->size.width, 0, 1);\n> >                       cfg->frameSize = info.frameSize(cfg->size, 1);\n> >\n> > +                     if (stillCount == 1 && cfg->streamRole ==\n> StreamRole::StillCapture) {\n>\n>\n> Maybe check both is redundant? Can stillCount be converted to\n> ASSERT(stillCount != 0) inside the block?\n>\n>\nSure. Use |ASSERT(stillCount == 1)| instead, as it only supports one\nStillCapture stream.\n\n\n> > +                             LOG(IPU3, Debug) << \"Assigned \"\n> > +                                              << cfg->toString()\n> > +                                              << \" to the imgu1 main\n> output\";\n> > +                             cfg->setStream(const_cast<Stream\n> *>(&data_->outCaptureStream_));\n> > +\n> > +                             pipe1.main = cfg->size;\n> > +                             pipe1.viewfinder = pipe1.main;\n> > +\n> > +                             pipeConfig1_ =\n> data_->imgu1_->calculatePipeConfig(&pipe1);\n> > +                             if (pipeConfig1_.isNull()) {\n> > +                                     LOG(IPU3, Error) << \"Failed to\n> calculate pipe configuration: \"\n> > +                                                      << \"unsupported\n> resolutions.\";\n> > +                                     return Invalid;\n> > +                             }\n> >                       /*\n> >                        * Use the main output stream in case only one\n> stream is\n> >                        * requested or if the current configuration is\n> the one\n> >                        * with the maximum YUV output size.\n> >                        */\n> > -                     if (mainOutputAvailable &&\n> > -                         (originalCfg.size == maxYuvSize || yuvCount ==\n> 1)) {\n> > +                     } else if (mainOutputAvailable &&\n> > +                                (originalCfg.size == maxVideoSize ||\n> > +                                 videoCount == 1)) {\n> >                               cfg->setStream(const_cast<Stream\n> *>(&data_->outStream_));\n> >                               mainOutputAvailable = false;\n> >\n> >                               pipe.main = cfg->size;\n> > -                             if (yuvCount == 1)\n> > +                             if (videoCount == 1)\n> >                                       pipe.viewfinder = pipe.main;\n> >\n> >                               LOG(IPU3, Debug) << \"Assigned \" <<\n> cfg->toString()\n> > @@ -415,7 +449,7 @@ CameraConfiguration::Status\n> IPU3CameraConfiguration::validate()\n> >       }\n> >\n> >       /* Only compute the ImgU configuration if a YUV stream has been\n> requested. */\n> > -     if (yuvCount) {\n> > +     if (videoCount) {\n> >               pipeConfig0_ = data_->imgu0_->calculatePipeConfig(&pipe);\n> >               if (pipeConfig0_.isNull()) {\n> >                       LOG(IPU3, Error) << \"Failed to calculate pipe\n> configuration: \"\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 1406EBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  2 Aug 2022 10:31:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D214463316;\n\tTue,  2 Aug 2022 12:31:29 +0200 (CEST)","from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com\n\t[IPv6:2a00:1450:4864:20::22b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EC6376330E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  2 Aug 2022 12:31:28 +0200 (CEST)","by mail-lj1-x22b.google.com with SMTP id h12so15135936ljg.7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 02 Aug 2022 03:31:28 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1659436289;\n\tbh=4NW3fNe/SVYf7Diqx0SMKmF9oi0zbD6TLfHFXZTCVV4=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=TcUW29rwXcDq8Pxxud18QwSW7pClbnR8OULxj+ccLseYI1h1GFwyz+3bhla8/D4e8\n\tsDlS4FPlYNSj8lfKG1nTiwMIqu8EfscW3ux/62uu4yTDFgj7t3tlhPKZDmtv3swsjK\n\tJIzjBqoV3ZoClhUrxYtKlGD/ztjp76G8RmB9sPnj/CkfSMpxD5eSPJoxnjhXc+goBu\n\tZsvBxSdfwrH8AlyT+tNbrCShErFkqQOl2halLjqPCKeX+HhwWSQe5kLrYaVN+VMOho\n\trKNu1gY3ciTqP3LO1cwKWY+E3PeFGGNM/j1S9i02zBgePTP3fUIM24BUcbKbQpCmTL\n\tj/0xVp5C9TxrQ==","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=eDLanZ32bBoyUTaLj+pav3NWvLLQjF+ix5716ggNN6g=;\n\tb=kw1k8IUemyF6p88CPl+X84mRAeRKJBGf5Gezj0XUYtqTS8/qA7SkICPZlC2dyqoXQr\n\tSbBq5M3WsHkpgVLUy1kEC4wFV+Q659Y39pbPULmYub3Bg4/RFqraRqcMmNpYYbjdNPg9\n\tb9Wc0RJfrm72FyvFmWoEhqAgGy4BHCS9OLeGA="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=chromium.org\n\theader.i=@chromium.org header.b=\"kw1k8IUe\"; \n\tdkim-atps=neutral","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=eDLanZ32bBoyUTaLj+pav3NWvLLQjF+ix5716ggNN6g=;\n\tb=1JTTuFJ1DefZwo9JOschVyN7BM1ZQDE3mMRwAbGIDbchCZq8nFnBgNiOkiiNhAR+4+\n\tRfL2hWWbihJ9flfna9wXCC68SDfnjyqDXTKleooCFFOXYtOaNqXxWnRo3BDcHVfW3pbP\n\tgCa0MhktdarBBM2emj0qema1O3pvC3w8aejUEn6DRu5mDC/idIlzxiX6mOcSwjGSYNWJ\n\tatN3EY81q73P45MxIzZCki+EVswPWvfDsXaYKAI77jAtBp5xhQXk+raeQKW+DSz7T1D2\n\tfi1/s3f3CCahFqZKl0n0NIABjvcydndOlgPmutFr0DdKuszhlwhrLAhOy50sxF02gc+l\n\tg8UQ==","X-Gm-Message-State":"ACgBeo1jYxEuAk4227Bo1JCJPkQoO6BfxHkQD4RZ3z7uoJyl5smgi1Vs\n\ticFXFQTw1+8mRjrDtnW2j9azOs+ucy7rcpX7JbC/Tw==","X-Google-Smtp-Source":"AA6agR48mSLPrdg2cMPQ7DG9wKvKxyvvt2PmvX0aOpLaLC9sZlij86fbzP/K/RzHD8ScLI3MSDiu9dU6EwMYR6tKY9w=","X-Received":"by 2002:a2e:a164:0:b0:25e:49bc:871 with SMTP id\n\tu4-20020a2ea164000000b0025e49bc0871mr4285425ljl.276.1659436288394;\n\tTue, 02 Aug 2022 03:31:28 -0700 (PDT)","MIME-Version":"1.0","References":"<20220629103018.4025635-1-chenghaoyang@google.com>\n\t<20220629103018.4025635-8-chenghaoyang@google.com>\n\t<b2c7f6e9-8f1d-1b8c-b73f-0883d013a04a@ideasonboard.com>","In-Reply-To":"<b2c7f6e9-8f1d-1b8c-b73f-0883d013a04a@ideasonboard.com>","Date":"Tue, 2 Aug 2022 18:31:17 +0800","Message-ID":"<CAEB1ahv55fa1fXQy=Y_AsmTpECSA=3UybseijYF-amXDXv-Ukw@mail.gmail.com>","To":"Umang Jain <umang.jain@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"0000000000007f637805e53f9ebb\"","Subject":"Re: [libcamera-devel] [PATCH v3 7/9] ipu3: Assign\n\t|outCaptureStream| to StillCapture configuration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Cheng-Hao Yang via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Cc":"Harvey Yang <chenghaoyang@google.com>,\n\tlibcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]