[{"id":20432,"web_url":"https://patchwork.libcamera.org/comment/20432/","msgid":"<CAO5uPHOjd4YKxOfvjpWckKygifCGCgPMdWbirgrMpAaQSYadyQ@mail.gmail.com>","date":"2021-10-25T11:56:48","subject":"Re: [libcamera-devel] [PATCH v6 6/7] android: post_processor: Drop\n\treturn value for process()","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi, Umang, thank you for the patch.\n\nOn Sat, Oct 23, 2021 at 7:33 PM Umang Jain <umang.jain@ideasonboard.com> wrote:\n>\n> PostProcessor::process() is invoked by CameraStream class\n> in case any post-processing is required for the camera stream.\n> The failure or success is checked via the value returned by\n> CameraStream::process().\n>\n> Now that the post-processor notifies about the post-processing\n> completion operation, we can drop the return value of\n> PostProcessor::process(). The status of post-processing is passed\n> to CameraDevice::streamProcessingComplete() by the\n> PostProcessor::processComplete signal's slot.\n>\n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/android/camera_stream.cpp            |  4 +++-\n>  src/android/jpeg/post_processor_jpeg.cpp |  6 ++----\n>  src/android/jpeg/post_processor_jpeg.h   |  2 +-\n>  src/android/post_processor.h             |  2 +-\n>  src/android/yuv/post_processor_yuv.cpp   | 10 ++++------\n>  src/android/yuv/post_processor_yuv.h     |  2 +-\n>  6 files changed, 12 insertions(+), 14 deletions(-)\n>\n> diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n> index 4e275cde..45d0607d 100644\n> --- a/src/android/camera_stream.cpp\n> +++ b/src/android/camera_stream.cpp\n> @@ -194,7 +194,9 @@ int CameraStream::process(const FrameBuffer &source,\n>\n>         dest.srcBuffer = &source;\n>\n> -       return postProcessor_->process(&dest);\n> +       postProcessor_->process(&dest);\n> +\n> +       return 0;\n>  }\n\nShall we also drop the return value of CameraStream::process() as we\nprocess any case by streamProcessingComplete()?\nI think whether streamProcessingComplete() is called depends on the\nreturn value of CameraStream::process(), which may be error-prone?\n\n>\n>  FrameBuffer *CameraStream::getBuffer()\n> diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp\n> index cbbe7128..9d7523cb 100644\n> --- a/src/android/jpeg/post_processor_jpeg.cpp\n> +++ b/src/android/jpeg/post_processor_jpeg.cpp\n> @@ -98,7 +98,7 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer &source,\n>         }\n>  }\n>\n> -int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n> +void PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n>  {\n>         ASSERT(encoder_);\n>\n> @@ -199,7 +199,7 @@ int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuf\n>         if (jpeg_size < 0) {\n>                 LOG(JPEG, Error) << \"Failed to encode stream image\";\n>                 processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n> -               return jpeg_size;\n> +               return;\n>         }\n>\n>         /* Fill in the JPEG blob header. */\n> @@ -213,6 +213,4 @@ int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuf\n>         /* Update the JPEG result Metadata. */\n>         resultMetadata->addEntry(ANDROID_JPEG_SIZE, jpeg_size);\n>         processComplete.emit(streamBuffer, PostProcessor::Status::Success);\n> -\n> -       return 0;\n>  }\n> diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h\n> index 92385548..43fcbe60 100644\n> --- a/src/android/jpeg/post_processor_jpeg.h\n> +++ b/src/android/jpeg/post_processor_jpeg.h\n> @@ -22,7 +22,7 @@ public:\n>\n>         int configure(const libcamera::StreamConfiguration &incfg,\n>                       const libcamera::StreamConfiguration &outcfg) override;\n> -       int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n> +       void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n>\n>  private:\n>         void generateThumbnail(const libcamera::FrameBuffer &source,\n> diff --git a/src/android/post_processor.h b/src/android/post_processor.h\n> index 4ac74fcf..5ec71c93 100644\n> --- a/src/android/post_processor.h\n> +++ b/src/android/post_processor.h\n> @@ -27,7 +27,7 @@ public:\n>\n>         virtual int configure(const libcamera::StreamConfiguration &inCfg,\n>                               const libcamera::StreamConfiguration &outCfg) = 0;\n> -       virtual int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) = 0;\n> +       virtual void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) = 0;\n>\n>         libcamera::Signal<Camera3RequestDescriptor::StreamBuffer *, Status> processComplete;\n>  };\n> diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp\n> index 8e77bf57..1ac7995a 100644\n> --- a/src/android/yuv/post_processor_yuv.cpp\n> +++ b/src/android/yuv/post_processor_yuv.cpp\n> @@ -49,21 +49,21 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg,\n>         return 0;\n>  }\n>\n> -int PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n> +void PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n>  {\n>         const FrameBuffer &source = *streamBuffer->srcBuffer;\n>         CameraBuffer *destination = streamBuffer->destBuffer.get();\n>\n>         if (!isValidBuffers(source, *destination)) {\n>                 processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n> -               return -EINVAL;\n> +               return;\n>         }\n>\n>         const MappedFrameBuffer sourceMapped(&source, MappedFrameBuffer::MapFlag::Read);\n>         if (!sourceMapped.isValid()) {\n>                 LOG(YUV, Error) << \"Failed to mmap camera frame buffer\";\n>                 processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n> -               return -EINVAL;\n> +               return;\n>         }\n>\n>         int ret = libyuv::NV12Scale(sourceMapped.planes()[0].data(),\n> @@ -81,12 +81,10 @@ int PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuff\n>         if (ret) {\n>                 LOG(YUV, Error) << \"Failed NV12 scaling: \" << ret;\n>                 processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n> -               return -EINVAL;\n> +               return;\n>         }\n>\n>         processComplete.emit(streamBuffer, PostProcessor::Status::Success);\n> -\n> -       return 0;\n>  }\n>\n>  bool PostProcessorYuv::isValidBuffers(const FrameBuffer &source,\n> diff --git a/src/android/yuv/post_processor_yuv.h b/src/android/yuv/post_processor_yuv.h\n> index 5954e11b..39ec7994 100644\n> --- a/src/android/yuv/post_processor_yuv.h\n> +++ b/src/android/yuv/post_processor_yuv.h\n> @@ -18,7 +18,7 @@ public:\n>\n>         int configure(const libcamera::StreamConfiguration &incfg,\n>                       const libcamera::StreamConfiguration &outcfg) override;\n> -       int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n> +       void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n>\n>  private:\n>         bool isValidBuffers(const libcamera::FrameBuffer &source,\n> --\n> 2.31.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 11A4FBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 25 Oct 2021 11:57:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 702256486E;\n\tMon, 25 Oct 2021 13:57:01 +0200 (CEST)","from mail-ed1-x535.google.com (mail-ed1-x535.google.com\n\t[IPv6:2a00:1450:4864:20::535])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EF73C60124\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 25 Oct 2021 13:56:59 +0200 (CEST)","by mail-ed1-x535.google.com with SMTP id 5so25733144edw.7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 25 Oct 2021 04:56:59 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"LmLsLWZS\"; 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=R7q7AKwXwvJMLmDQbgx3lSX5kYCrGYvINDaXjua6bGI=;\n\tb=LmLsLWZSSDTMcTuGlI5dqhRh107zJidbzBL2p3VDROLQuOzXTZJkSS/TNeCdJqlles\n\tqgAbDP15p0Z2B8EVh+8dcONowaLN16Kn3zDxKN9sTpqTzPS1nRD5Uh+6niSnjUqzff3A\n\tC/94Ee850DvWcBz2ksAdKkldxlvhnPLwWARMQ=","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=R7q7AKwXwvJMLmDQbgx3lSX5kYCrGYvINDaXjua6bGI=;\n\tb=ACX3nrAE3W7W7FfXKiErf2P/cKpTfpxFmgjkTA07auwELVydb3AZOxeM5+e1HKX1MC\n\tTrIWtpUvfdg9zT7xjA3QsprNmisdq3D33a6/JsfW0DmKYSllClno5sHtCnJwRsvELv+9\n\t0B5DuUYaXLwVqApa+ryChvaBWcay5m005Qk0KorUOkjmRaONPEfoSnk8tZ/rqJG4WHCb\n\tzFf3QaIasPW2nw+k0Ukbsvnq2mgVIdb2Nk0MN6aPCIibbqOy1K4L+cqDfA1l4+R9epJe\n\teaZMbp5jTJuINAlgSzShU/lQ2S8gnczUfrFzANyeHeWdUKMpzgdkTtPsFHSa1C+9g1Dn\n\tHm9w==","X-Gm-Message-State":"AOAM531Ki6BMWLVFoG2iEidlRROwucJmaMnFYf/lERVRBsF/7uF7YqTa\n\tQmJZ5UZWXDw1HjGBVX3sjVcZfnrjvSu8xSPFBu1PLGWgLG/S5Q==","X-Google-Smtp-Source":"ABdhPJwG2nIGEyE1566Z/KDqcYUeA8JOsSlnIR6VDRN10MemSkQ2sU3bQrURENsPXpCUceLxxWoY7/4e9xHC1S/SavQ=","X-Received":"by 2002:a17:906:26ce:: with SMTP id\n\tu14mr21952374ejc.559.1635163019381; \n\tMon, 25 Oct 2021 04:56:59 -0700 (PDT)","MIME-Version":"1.0","References":"<20211023103302.152769-1-umang.jain@ideasonboard.com>\n\t<20211023103302.152769-7-umang.jain@ideasonboard.com>","In-Reply-To":"<20211023103302.152769-7-umang.jain@ideasonboard.com>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Mon, 25 Oct 2021 20:56:48 +0900","Message-ID":"<CAO5uPHOjd4YKxOfvjpWckKygifCGCgPMdWbirgrMpAaQSYadyQ@mail.gmail.com>","To":"Umang Jain <umang.jain@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v6 6/7] android: post_processor: Drop\n\treturn value for process()","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":20434,"web_url":"https://patchwork.libcamera.org/comment/20434/","msgid":"<e710c25d-27b8-c6b3-43f9-bdd2f23bced8@ideasonboard.com>","date":"2021-10-25T12:54:08","subject":"Re: [libcamera-devel] [PATCH v6 6/7] android: post_processor: Drop\n\treturn value for process()","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Hiro,\n\nOn 10/25/21 5:26 PM, Hirokazu Honda wrote:\n> Hi, Umang, thank you for the patch.\n>\n> On Sat, Oct 23, 2021 at 7:33 PM Umang Jain <umang.jain@ideasonboard.com> wrote:\n>> PostProcessor::process() is invoked by CameraStream class\n>> in case any post-processing is required for the camera stream.\n>> The failure or success is checked via the value returned by\n>> CameraStream::process().\n>>\n>> Now that the post-processor notifies about the post-processing\n>> completion operation, we can drop the return value of\n>> PostProcessor::process(). The status of post-processing is passed\n>> to CameraDevice::streamProcessingComplete() by the\n>> PostProcessor::processComplete signal's slot.\n>>\n>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n>> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>> ---\n>>   src/android/camera_stream.cpp            |  4 +++-\n>>   src/android/jpeg/post_processor_jpeg.cpp |  6 ++----\n>>   src/android/jpeg/post_processor_jpeg.h   |  2 +-\n>>   src/android/post_processor.h             |  2 +-\n>>   src/android/yuv/post_processor_yuv.cpp   | 10 ++++------\n>>   src/android/yuv/post_processor_yuv.h     |  2 +-\n>>   6 files changed, 12 insertions(+), 14 deletions(-)\n>>\n>> diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n>> index 4e275cde..45d0607d 100644\n>> --- a/src/android/camera_stream.cpp\n>> +++ b/src/android/camera_stream.cpp\n>> @@ -194,7 +194,9 @@ int CameraStream::process(const FrameBuffer &source,\n>>\n>>          dest.srcBuffer = &source;\n>>\n>> -       return postProcessor_->process(&dest);\n>> +       postProcessor_->process(&dest);\n>> +\n>> +       return 0;\n>>   }\n> Shall we also drop the return value of CameraStream::process() as we\n> process any case by streamProcessingComplete()?\n> I think whether streamProcessingComplete() is called depends on the\n> return value of CameraStream::process(), which may be error-prone?\n\n\nNo, this was discussed before. We want to handle CameraStream::process() \nsynchronously, and streamProcessingComplete() will error-handle for the \nasync only. This is the design we agreed upon.\n\n>\n>>   FrameBuffer *CameraStream::getBuffer()\n>> diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp\n>> index cbbe7128..9d7523cb 100644\n>> --- a/src/android/jpeg/post_processor_jpeg.cpp\n>> +++ b/src/android/jpeg/post_processor_jpeg.cpp\n>> @@ -98,7 +98,7 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer &source,\n>>          }\n>>   }\n>>\n>> -int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n>> +void PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n>>   {\n>>          ASSERT(encoder_);\n>>\n>> @@ -199,7 +199,7 @@ int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuf\n>>          if (jpeg_size < 0) {\n>>                  LOG(JPEG, Error) << \"Failed to encode stream image\";\n>>                  processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n>> -               return jpeg_size;\n>> +               return;\n>>          }\n>>\n>>          /* Fill in the JPEG blob header. */\n>> @@ -213,6 +213,4 @@ int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuf\n>>          /* Update the JPEG result Metadata. */\n>>          resultMetadata->addEntry(ANDROID_JPEG_SIZE, jpeg_size);\n>>          processComplete.emit(streamBuffer, PostProcessor::Status::Success);\n>> -\n>> -       return 0;\n>>   }\n>> diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h\n>> index 92385548..43fcbe60 100644\n>> --- a/src/android/jpeg/post_processor_jpeg.h\n>> +++ b/src/android/jpeg/post_processor_jpeg.h\n>> @@ -22,7 +22,7 @@ public:\n>>\n>>          int configure(const libcamera::StreamConfiguration &incfg,\n>>                        const libcamera::StreamConfiguration &outcfg) override;\n>> -       int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n>> +       void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n>>\n>>   private:\n>>          void generateThumbnail(const libcamera::FrameBuffer &source,\n>> diff --git a/src/android/post_processor.h b/src/android/post_processor.h\n>> index 4ac74fcf..5ec71c93 100644\n>> --- a/src/android/post_processor.h\n>> +++ b/src/android/post_processor.h\n>> @@ -27,7 +27,7 @@ public:\n>>\n>>          virtual int configure(const libcamera::StreamConfiguration &inCfg,\n>>                                const libcamera::StreamConfiguration &outCfg) = 0;\n>> -       virtual int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) = 0;\n>> +       virtual void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) = 0;\n>>\n>>          libcamera::Signal<Camera3RequestDescriptor::StreamBuffer *, Status> processComplete;\n>>   };\n>> diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp\n>> index 8e77bf57..1ac7995a 100644\n>> --- a/src/android/yuv/post_processor_yuv.cpp\n>> +++ b/src/android/yuv/post_processor_yuv.cpp\n>> @@ -49,21 +49,21 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg,\n>>          return 0;\n>>   }\n>>\n>> -int PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n>> +void PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)\n>>   {\n>>          const FrameBuffer &source = *streamBuffer->srcBuffer;\n>>          CameraBuffer *destination = streamBuffer->destBuffer.get();\n>>\n>>          if (!isValidBuffers(source, *destination)) {\n>>                  processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n>> -               return -EINVAL;\n>> +               return;\n>>          }\n>>\n>>          const MappedFrameBuffer sourceMapped(&source, MappedFrameBuffer::MapFlag::Read);\n>>          if (!sourceMapped.isValid()) {\n>>                  LOG(YUV, Error) << \"Failed to mmap camera frame buffer\";\n>>                  processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n>> -               return -EINVAL;\n>> +               return;\n>>          }\n>>\n>>          int ret = libyuv::NV12Scale(sourceMapped.planes()[0].data(),\n>> @@ -81,12 +81,10 @@ int PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuff\n>>          if (ret) {\n>>                  LOG(YUV, Error) << \"Failed NV12 scaling: \" << ret;\n>>                  processComplete.emit(streamBuffer, PostProcessor::Status::Error);\n>> -               return -EINVAL;\n>> +               return;\n>>          }\n>>\n>>          processComplete.emit(streamBuffer, PostProcessor::Status::Success);\n>> -\n>> -       return 0;\n>>   }\n>>\n>>   bool PostProcessorYuv::isValidBuffers(const FrameBuffer &source,\n>> diff --git a/src/android/yuv/post_processor_yuv.h b/src/android/yuv/post_processor_yuv.h\n>> index 5954e11b..39ec7994 100644\n>> --- a/src/android/yuv/post_processor_yuv.h\n>> +++ b/src/android/yuv/post_processor_yuv.h\n>> @@ -18,7 +18,7 @@ public:\n>>\n>>          int configure(const libcamera::StreamConfiguration &incfg,\n>>                        const libcamera::StreamConfiguration &outcfg) override;\n>> -       int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n>> +       void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;\n>>\n>>   private:\n>>          bool isValidBuffers(const libcamera::FrameBuffer &source,\n>> --\n>> 2.31.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 B77FBBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 25 Oct 2021 12:54:15 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0C9B56486E;\n\tMon, 25 Oct 2021 14:54:15 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 28E9760124\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 25 Oct 2021 14:54:13 +0200 (CEST)","from [192.168.1.106] (unknown [103.251.226.211])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2B7A73F0;\n\tMon, 25 Oct 2021 14:54:12 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"DTK3LMzt\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1635166452;\n\tbh=pNapGsJ2zQLCmMxzM3pqabPfuuccPVpIAGbUsf0rxQo=;\n\th=Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=DTK3LMztP7LkSX+x3ZxClSP4Lk2pccneNSyThbZRlMrVNIJzxX+fvc4EQdYBXH303\n\tR7fur5Th7i0/Ta8gzQ3hBcQvfvegAAPne0ZTudP4w+DXR9uvePaPRQXWmi1h70tXzP\n\tF7G4QhRX1QntfI6az2HEyz5nmPEGhM4Rtkz70w0s=","To":"Hirokazu Honda <hiroh@chromium.org>","References":"<20211023103302.152769-1-umang.jain@ideasonboard.com>\n\t<20211023103302.152769-7-umang.jain@ideasonboard.com>\n\t<CAO5uPHOjd4YKxOfvjpWckKygifCGCgPMdWbirgrMpAaQSYadyQ@mail.gmail.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<e710c25d-27b8-c6b3-43f9-bdd2f23bced8@ideasonboard.com>","Date":"Mon, 25 Oct 2021 18:24:08 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.10.2","MIME-Version":"1.0","In-Reply-To":"<CAO5uPHOjd4YKxOfvjpWckKygifCGCgPMdWbirgrMpAaQSYadyQ@mail.gmail.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH v6 6/7] android: post_processor: Drop\n\treturn value for process()","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>"}}]