[{"id":19733,"web_url":"https://patchwork.libcamera.org/comment/19733/","msgid":"<20210921113342.prartxh6flhbh3dt@uno.localdomain>","date":"2021-09-21T11:33:42","subject":"Re: [libcamera-devel] [PATCH v3 08/10] android: camera_stream: Drop\n\treturn value for process()","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Umang,\n\nOn Mon, Sep 20, 2021 at 11:07:50PM +0530, Umang Jain wrote:\n> CameraStream::process() is invoked by CameraDevice::requestComplete()\n> in case any post-processing is required for the camera stream. The\n> 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 and sets the ProcessStatus on the\n> Camera3RequestDescriptor passed to it, we can drop the return value of\n> CameraStream::process() in favour of reading the process status set on\n> the descriptor in the PostProcessor::processComplete's slot.\n>\n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> ---\n>  src/android/camera_device.cpp            | 26 +++++++++++++-----------\n>  src/android/camera_stream.cpp            | 12 +++++------\n>  src/android/camera_stream.h              |  6 +++---\n>  src/android/jpeg/post_processor_jpeg.cpp | 12 +++++------\n>  src/android/jpeg/post_processor_jpeg.h   |  6 +++---\n>  src/android/post_processor.h             |  6 +++---\n>  src/android/yuv/post_processor_yuv.cpp   | 14 ++++++-------\n>  src/android/yuv/post_processor_yuv.h     |  6 +++---\n>  8 files changed, 43 insertions(+), 45 deletions(-)\n>\n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index e2de4012..4658e881 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -1158,7 +1158,7 @@ void CameraDevice::requestComplete(Request *request)\n>\n>  \t\tdescriptor->status_ = Camera3RequestDescriptor::ProcessStatus::Processing;\n>\n> -\t\tint ret = cameraStream->process(src, *buffer.buffer, descriptor);\n> +\t\tcameraStream->process(src, *buffer.buffer, descriptor);\n>\n>  \t\t/*\n>  \t\t * Return the FrameBuffer to the CameraStream now that we're\n> @@ -1166,12 +1166,6 @@ void CameraDevice::requestComplete(Request *request)\n>  \t\t */\n>  \t\tif (cameraStream->type() == CameraStream::Type::Internal)\n>  \t\t\tcameraStream->putBuffer(src);\n> -\n> -\t\tif (ret) {\n> -\t\t\tbuffer.status = CAMERA3_BUFFER_STATUS_ERROR;\n> -\t\t\tnotifyError(descriptor->frameNumber_, buffer.stream,\n> -\t\t\t\t    CAMERA3_MSG_ERROR_BUFFER);\n> -\t\t}\n>  \t}\n>\n>  \tcaptureResult.result = descriptor->resultMetadata_->get();\n> @@ -1182,12 +1176,20 @@ void CameraDevice::requestComplete(Request *request)\n>\n>\n>  void CameraDevice::streamProcessingComplete([[maybe_unused]] CameraStream *cameraStream,\n> -\t\t\t\t\t    [[maybe_unused]] Camera3RequestDescriptor *request)\n> +\t\t\t\t\t    Camera3RequestDescriptor *request)\n>  {\n> -\t/*\n> -\t * \\todo Stream processing is completed hence, check for errors and\n> -\t * if any, mark the corresponding buffer with CAMERA3_BUFFER_STATUS_ERROR.\n> -\t */\n> +\tif (request->status_ == Camera3RequestDescriptor::ProcessStatus::Error) {\n> +\t\tfor (camera3_stream_buffer_t &buffer : request->buffers_) {\n> +\t\t\tCameraStream *cs = static_cast<CameraStream *>(buffer.stream->priv);\n> +\n> +\t\t\tif (cs->camera3Stream().format != HAL_PIXEL_FORMAT_BLOB)\n> +\t\t\t\tcontinue;\n> +\n> +\t\t\tbuffer.status = CAMERA3_BUFFER_STATUS_ERROR;\n> +\t\t\tnotifyError(request->frameNumber_, buffer.stream,\n> +\t\t\t\t    CAMERA3_MSG_ERROR_BUFFER);\n> +\t\t}\n> +\t}\n\nI understand where this is going, but am I wrong or with this patch\npost-processing results won't ever be sent to the camera service ?\n\nIt's not a big deal, but isn't it easier to introduce\nCameraDevice::sendCaptureResult() before this change ?\n\n\n>  }\n>\n>  std::string CameraDevice::logPrefix() const\n> diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n> index 70471959..c18c7041 100644\n> --- a/src/android/camera_stream.cpp\n> +++ b/src/android/camera_stream.cpp\n> @@ -101,14 +101,14 @@ int CameraStream::configure()\n>  \treturn 0;\n>  }\n>\n> -int CameraStream::process(const FrameBuffer *source,\n> -\t\t\t  buffer_handle_t camera3Dest,\n> -\t\t\t  Camera3RequestDescriptor *request)\n> +void CameraStream::process(const FrameBuffer *source,\n> +\t\t\t   buffer_handle_t camera3Dest,\n> +\t\t\t   Camera3RequestDescriptor *request)\n>  {\n>  \tif (!postProcessor_) {\n>  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n>  \t\thandleProcessComplete(request);\n> -\t\treturn 0;\n> +\t\treturn;\n>  \t}\n>\n>  \t/*\n> @@ -122,10 +122,10 @@ int CameraStream::process(const FrameBuffer *source,\n>  \t\tLOG(HAL, Error) << \"Failed to map android blob buffer\";\n>  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n>  \t\thandleProcessComplete(request);\n> -\t\treturn -EINVAL;\n> +\t\treturn;\n>  \t}\n>\n> -\treturn postProcessor_->process(source, &dest, request);\n> +\tpostProcessor_->process(source, &dest, request);\n>  }\n>\n>  void CameraStream::handleProcessComplete(Camera3RequestDescriptor *request)\n> diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h\n> index f8ad6245..d4ec5c25 100644\n> --- a/src/android/camera_stream.h\n> +++ b/src/android/camera_stream.h\n> @@ -120,9 +120,9 @@ public:\n>  \tlibcamera::Stream *stream() const;\n>\n>  \tint configure();\n> -\tint process(const libcamera::FrameBuffer *source,\n> -\t\t    buffer_handle_t camera3Dest,\n> -\t\t    Camera3RequestDescriptor *request);\n> +\tvoid process(const libcamera::FrameBuffer *source,\n> +\t\t     buffer_handle_t camera3Dest,\n> +\t\t     Camera3RequestDescriptor *request);\n>  \tlibcamera::FrameBuffer *getBuffer();\n>  \tvoid putBuffer(libcamera::FrameBuffer *buffer);\n>\n> diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp\n> index 87252acd..19eb7983 100644\n> --- a/src/android/jpeg/post_processor_jpeg.cpp\n> +++ b/src/android/jpeg/post_processor_jpeg.cpp\n> @@ -97,14 +97,14 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer *source,\n>  \t}\n>  }\n>\n> -int PostProcessorJpeg::process(const FrameBuffer *source,\n> -\t\t\t       CameraBuffer *destination,\n> -\t\t\t       Camera3RequestDescriptor *request)\n> +void PostProcessorJpeg::process(const FrameBuffer *source,\n> +\t\t\t\tCameraBuffer *destination,\n> +\t\t\t\tCamera3RequestDescriptor *request)\n>  {\n>  \tif (!encoder_) {\n>  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n>  \t\tprocessComplete.emit(request);\n> -\t\treturn 0;\n> +\t\treturn;\n>  \t}\n>\n>  \tASSERT(destination->numPlanes() == 1);\n> @@ -202,7 +202,7 @@ int PostProcessorJpeg::process(const FrameBuffer *source,\n>  \t\tLOG(JPEG, Error) << \"Failed to encode stream image\";\n>  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n>  \t\tprocessComplete.emit(request);\n> -\t\treturn jpeg_size;\n> +\t\treturn;\n>  \t}\n>\n>  \t/* Fill in the JPEG blob header. */\n> @@ -218,6 +218,4 @@ int PostProcessorJpeg::process(const FrameBuffer *source,\n>\n>  \trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Success;\n>  \tprocessComplete.emit(request);\n> -\n> -\treturn 0;\n>  }\n> diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h\n> index d49c8d2b..e9938919 100644\n> --- a/src/android/jpeg/post_processor_jpeg.h\n> +++ b/src/android/jpeg/post_processor_jpeg.h\n> @@ -22,9 +22,9 @@ public:\n>\n>  \tint configure(const libcamera::StreamConfiguration &incfg,\n>  \t\t      const libcamera::StreamConfiguration &outcfg) override;\n> -\tint process(const libcamera::FrameBuffer *source,\n> -\t\t    CameraBuffer *destination,\n> -\t\t    Camera3RequestDescriptor *request) override;\n> +\tvoid process(const libcamera::FrameBuffer *source,\n> +\t\t     CameraBuffer *destination,\n> +\t\t     Camera3RequestDescriptor *request) override;\n>\n>  private:\n>  \tvoid generateThumbnail(const libcamera::FrameBuffer *source,\n> diff --git a/src/android/post_processor.h b/src/android/post_processor.h\n> index f639b237..48ddd8ac 100644\n> --- a/src/android/post_processor.h\n> +++ b/src/android/post_processor.h\n> @@ -25,9 +25,9 @@ public:\n>\n>  \tvirtual int configure(const libcamera::StreamConfiguration &inCfg,\n>  \t\t\t      const libcamera::StreamConfiguration &outCfg) = 0;\n> -\tvirtual int process(const libcamera::FrameBuffer *source,\n> -\t\t\t    CameraBuffer *destination,\n> -\t\t\t    Camera3RequestDescriptor *request) = 0;\n> +\tvirtual void process(const libcamera::FrameBuffer *source,\n> +\t\t\t     CameraBuffer *destination,\n> +\t\t\t     Camera3RequestDescriptor *request) = 0;\n>\n>  \tlibcamera::Signal<Camera3RequestDescriptor *> processComplete;\n>  };\n> diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp\n> index b144649a..09838aa5 100644\n> --- a/src/android/yuv/post_processor_yuv.cpp\n> +++ b/src/android/yuv/post_processor_yuv.cpp\n> @@ -51,14 +51,14 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg,\n>  \treturn 0;\n>  }\n>\n> -int PostProcessorYuv::process(const FrameBuffer *source,\n> -\t\t\t      CameraBuffer *destination,\n> -\t\t\t      Camera3RequestDescriptor *request)\n> +void PostProcessorYuv::process(const FrameBuffer *source,\n> +\t\t\t       CameraBuffer *destination,\n> +\t\t\t       Camera3RequestDescriptor *request)\n>  {\n>  \tif (!isValidBuffers(source, *destination)) {\n>  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n>  \t\tprocessComplete.emit(request);\n> -\t\treturn -EINVAL;\n> +\t\treturn;\n>  \t}\n>\n>  \tconst MappedFrameBuffer sourceMapped(source, MappedFrameBuffer::MapFlag::Read);\n> @@ -66,7 +66,7 @@ int PostProcessorYuv::process(const FrameBuffer *source,\n>  \t\tLOG(YUV, Error) << \"Failed to mmap camera frame buffer\";\n>  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n>  \t\tprocessComplete.emit(request);\n> -\t\treturn -EINVAL;\n> +\t\treturn;\n>  \t}\n>\n>  \tint ret = libyuv::NV12Scale(sourceMapped.planes()[0].data(),\n> @@ -85,13 +85,11 @@ int PostProcessorYuv::process(const FrameBuffer *source,\n>  \t\tLOG(YUV, Error) << \"Failed NV12 scaling: \" << ret;\n>  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n>  \t\tprocessComplete.emit(request);\n> -\t\treturn -EINVAL;\n> +\t\treturn;\n>  \t}\n>\n>  \trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Success;\n>  \tprocessComplete.emit(request);\n> -\n> -\treturn 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 eddd1086..32e5b60d 100644\n> --- a/src/android/yuv/post_processor_yuv.h\n> +++ b/src/android/yuv/post_processor_yuv.h\n> @@ -20,9 +20,9 @@ public:\n>\n>  \tint configure(const libcamera::StreamConfiguration &incfg,\n>  \t\t      const libcamera::StreamConfiguration &outcfg) override;\n> -\tint process(const libcamera::FrameBuffer *source,\n> -\t\t    CameraBuffer *destination,\n> -\t\t    Camera3RequestDescriptor *context) override;\n> +\tvoid process(const libcamera::FrameBuffer *source,\n> +\t\t     CameraBuffer *destination,\n> +\t\t     Camera3RequestDescriptor *context) override;\n>\n>  private:\n>  \tbool 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 F38BEBF01C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Sep 2021 11:32:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7AD3A6918A;\n\tTue, 21 Sep 2021 13:32:57 +0200 (CEST)","from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net\n\t[217.70.183.194])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3737A60247\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Sep 2021 13:32:56 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay2-d.mail.gandi.net (Postfix) with ESMTPSA id B0A6A40005;\n\tTue, 21 Sep 2021 11:32:55 +0000 (UTC)"],"Date":"Tue, 21 Sep 2021 13:33:42 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<20210921113342.prartxh6flhbh3dt@uno.localdomain>","References":"<20210920173752.1346190-1-umang.jain@ideasonboard.com>\n\t<20210920173752.1346190-9-umang.jain@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210920173752.1346190-9-umang.jain@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 08/10] android: camera_stream: 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@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":19758,"web_url":"https://patchwork.libcamera.org/comment/19758/","msgid":"<YUpd1PnchV8UYVSr@pendragon.ideasonboard.com>","date":"2021-09-21T22:33:56","subject":"Re: [libcamera-devel] [PATCH v3 08/10] android: camera_stream: Drop\n\treturn value for process()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hello,\n\nOn Tue, Sep 21, 2021 at 01:33:42PM +0200, Jacopo Mondi wrote:\n> On Mon, Sep 20, 2021 at 11:07:50PM +0530, Umang Jain wrote:\n> > CameraStream::process() is invoked by CameraDevice::requestComplete()\n> > in case any post-processing is required for the camera stream. The\n> > 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 and sets the ProcessStatus on the\n> > Camera3RequestDescriptor passed to it, we can drop the return value of\n> > CameraStream::process() in favour of reading the process status set on\n> > the descriptor in the PostProcessor::processComplete's slot.\n> >\n> > Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> > ---\n> >  src/android/camera_device.cpp            | 26 +++++++++++++-----------\n> >  src/android/camera_stream.cpp            | 12 +++++------\n> >  src/android/camera_stream.h              |  6 +++---\n> >  src/android/jpeg/post_processor_jpeg.cpp | 12 +++++------\n> >  src/android/jpeg/post_processor_jpeg.h   |  6 +++---\n> >  src/android/post_processor.h             |  6 +++---\n> >  src/android/yuv/post_processor_yuv.cpp   | 14 ++++++-------\n> >  src/android/yuv/post_processor_yuv.h     |  6 +++---\n> >  8 files changed, 43 insertions(+), 45 deletions(-)\n> >\n> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > index e2de4012..4658e881 100644\n> > --- a/src/android/camera_device.cpp\n> > +++ b/src/android/camera_device.cpp\n> > @@ -1158,7 +1158,7 @@ void CameraDevice::requestComplete(Request *request)\n> >\n> >  \t\tdescriptor->status_ = Camera3RequestDescriptor::ProcessStatus::Processing;\n> >\n> > -\t\tint ret = cameraStream->process(src, *buffer.buffer, descriptor);\n> > +\t\tcameraStream->process(src, *buffer.buffer, descriptor);\n> >\n> >  \t\t/*\n> >  \t\t * Return the FrameBuffer to the CameraStream now that we're\n> > @@ -1166,12 +1166,6 @@ void CameraDevice::requestComplete(Request *request)\n> >  \t\t */\n> >  \t\tif (cameraStream->type() == CameraStream::Type::Internal)\n> >  \t\t\tcameraStream->putBuffer(src);\n> > -\n> > -\t\tif (ret) {\n> > -\t\t\tbuffer.status = CAMERA3_BUFFER_STATUS_ERROR;\n> > -\t\t\tnotifyError(descriptor->frameNumber_, buffer.stream,\n> > -\t\t\t\t    CAMERA3_MSG_ERROR_BUFFER);\n> > -\t\t}\n> >  \t}\n> >\n> >  \tcaptureResult.result = descriptor->resultMetadata_->get();\n> > @@ -1182,12 +1176,20 @@ void CameraDevice::requestComplete(Request *request)\n> >\n> >\n> >  void CameraDevice::streamProcessingComplete([[maybe_unused]] CameraStream *cameraStream,\n> > -\t\t\t\t\t    [[maybe_unused]] Camera3RequestDescriptor *request)\n> > +\t\t\t\t\t    Camera3RequestDescriptor *request)\n> >  {\n> > -\t/*\n> > -\t * \\todo Stream processing is completed hence, check for errors and\n> > -\t * if any, mark the corresponding buffer with CAMERA3_BUFFER_STATUS_ERROR.\n> > -\t */\n> > +\tif (request->status_ == Camera3RequestDescriptor::ProcessStatus::Error) {\n> > +\t\tfor (camera3_stream_buffer_t &buffer : request->buffers_) {\n> > +\t\t\tCameraStream *cs = static_cast<CameraStream *>(buffer.stream->priv);\n> > +\n> > +\t\t\tif (cs->camera3Stream().format != HAL_PIXEL_FORMAT_BLOB)\n> > +\t\t\t\tcontinue;\n> > +\n> > +\t\t\tbuffer.status = CAMERA3_BUFFER_STATUS_ERROR;\n> > +\t\t\tnotifyError(request->frameNumber_, buffer.stream,\n> > +\t\t\t\t    CAMERA3_MSG_ERROR_BUFFER);\n> > +\t\t}\n> > +\t}\n> \n> I understand where this is going, but am I wrong or with this patch\n> post-processing results won't ever be sent to the camera service ?\n>\n> It's not a big deal, but isn't it easier to introduce\n> CameraDevice::sendCaptureResult() before this change ?\n\nThat's my understanding too, this will break bisection. We should try to\navoid it.\n\n> >  }\n> >\n> >  std::string CameraDevice::logPrefix() const\n> > diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n> > index 70471959..c18c7041 100644\n> > --- a/src/android/camera_stream.cpp\n> > +++ b/src/android/camera_stream.cpp\n> > @@ -101,14 +101,14 @@ int CameraStream::configure()\n> >  \treturn 0;\n> >  }\n> >\n> > -int CameraStream::process(const FrameBuffer *source,\n> > -\t\t\t  buffer_handle_t camera3Dest,\n> > -\t\t\t  Camera3RequestDescriptor *request)\n> > +void CameraStream::process(const FrameBuffer *source,\n> > +\t\t\t   buffer_handle_t camera3Dest,\n> > +\t\t\t   Camera3RequestDescriptor *request)\n> >  {\n> >  \tif (!postProcessor_) {\n> >  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n> >  \t\thandleProcessComplete(request);\n> > -\t\treturn 0;\n> > +\t\treturn;\n> >  \t}\n> >\n> >  \t/*\n> > @@ -122,10 +122,10 @@ int CameraStream::process(const FrameBuffer *source,\n> >  \t\tLOG(HAL, Error) << \"Failed to map android blob buffer\";\n> >  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n> >  \t\thandleProcessComplete(request);\n> > -\t\treturn -EINVAL;\n> > +\t\treturn;\n> >  \t}\n> >\n> > -\treturn postProcessor_->process(source, &dest, request);\n> > +\tpostProcessor_->process(source, &dest, request);\n> >  }\n> >\n> >  void CameraStream::handleProcessComplete(Camera3RequestDescriptor *request)\n> > diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h\n> > index f8ad6245..d4ec5c25 100644\n> > --- a/src/android/camera_stream.h\n> > +++ b/src/android/camera_stream.h\n> > @@ -120,9 +120,9 @@ public:\n> >  \tlibcamera::Stream *stream() const;\n> >\n> >  \tint configure();\n> > -\tint process(const libcamera::FrameBuffer *source,\n> > -\t\t    buffer_handle_t camera3Dest,\n> > -\t\t    Camera3RequestDescriptor *request);\n> > +\tvoid process(const libcamera::FrameBuffer *source,\n> > +\t\t     buffer_handle_t camera3Dest,\n> > +\t\t     Camera3RequestDescriptor *request);\n> >  \tlibcamera::FrameBuffer *getBuffer();\n> >  \tvoid putBuffer(libcamera::FrameBuffer *buffer);\n> >\n> > diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp\n> > index 87252acd..19eb7983 100644\n> > --- a/src/android/jpeg/post_processor_jpeg.cpp\n> > +++ b/src/android/jpeg/post_processor_jpeg.cpp\n> > @@ -97,14 +97,14 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer *source,\n> >  \t}\n> >  }\n> >\n> > -int PostProcessorJpeg::process(const FrameBuffer *source,\n> > -\t\t\t       CameraBuffer *destination,\n> > -\t\t\t       Camera3RequestDescriptor *request)\n> > +void PostProcessorJpeg::process(const FrameBuffer *source,\n> > +\t\t\t\tCameraBuffer *destination,\n> > +\t\t\t\tCamera3RequestDescriptor *request)\n> >  {\n> >  \tif (!encoder_) {\n> >  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n> >  \t\tprocessComplete.emit(request);\n> > -\t\treturn 0;\n> > +\t\treturn;\n> >  \t}\n> >\n> >  \tASSERT(destination->numPlanes() == 1);\n> > @@ -202,7 +202,7 @@ int PostProcessorJpeg::process(const FrameBuffer *source,\n> >  \t\tLOG(JPEG, Error) << \"Failed to encode stream image\";\n> >  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n> >  \t\tprocessComplete.emit(request);\n> > -\t\treturn jpeg_size;\n> > +\t\treturn;\n> >  \t}\n> >\n> >  \t/* Fill in the JPEG blob header. */\n> > @@ -218,6 +218,4 @@ int PostProcessorJpeg::process(const FrameBuffer *source,\n> >\n> >  \trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Success;\n> >  \tprocessComplete.emit(request);\n> > -\n> > -\treturn 0;\n> >  }\n> > diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h\n> > index d49c8d2b..e9938919 100644\n> > --- a/src/android/jpeg/post_processor_jpeg.h\n> > +++ b/src/android/jpeg/post_processor_jpeg.h\n> > @@ -22,9 +22,9 @@ public:\n> >\n> >  \tint configure(const libcamera::StreamConfiguration &incfg,\n> >  \t\t      const libcamera::StreamConfiguration &outcfg) override;\n> > -\tint process(const libcamera::FrameBuffer *source,\n> > -\t\t    CameraBuffer *destination,\n> > -\t\t    Camera3RequestDescriptor *request) override;\n> > +\tvoid process(const libcamera::FrameBuffer *source,\n> > +\t\t     CameraBuffer *destination,\n> > +\t\t     Camera3RequestDescriptor *request) override;\n> >\n> >  private:\n> >  \tvoid generateThumbnail(const libcamera::FrameBuffer *source,\n> > diff --git a/src/android/post_processor.h b/src/android/post_processor.h\n> > index f639b237..48ddd8ac 100644\n> > --- a/src/android/post_processor.h\n> > +++ b/src/android/post_processor.h\n> > @@ -25,9 +25,9 @@ public:\n> >\n> >  \tvirtual int configure(const libcamera::StreamConfiguration &inCfg,\n> >  \t\t\t      const libcamera::StreamConfiguration &outCfg) = 0;\n> > -\tvirtual int process(const libcamera::FrameBuffer *source,\n> > -\t\t\t    CameraBuffer *destination,\n> > -\t\t\t    Camera3RequestDescriptor *request) = 0;\n> > +\tvirtual void process(const libcamera::FrameBuffer *source,\n> > +\t\t\t     CameraBuffer *destination,\n> > +\t\t\t     Camera3RequestDescriptor *request) = 0;\n> >\n> >  \tlibcamera::Signal<Camera3RequestDescriptor *> processComplete;\n> >  };\n> > diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp\n> > index b144649a..09838aa5 100644\n> > --- a/src/android/yuv/post_processor_yuv.cpp\n> > +++ b/src/android/yuv/post_processor_yuv.cpp\n> > @@ -51,14 +51,14 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg,\n> >  \treturn 0;\n> >  }\n> >\n> > -int PostProcessorYuv::process(const FrameBuffer *source,\n> > -\t\t\t      CameraBuffer *destination,\n> > -\t\t\t      Camera3RequestDescriptor *request)\n> > +void PostProcessorYuv::process(const FrameBuffer *source,\n> > +\t\t\t       CameraBuffer *destination,\n> > +\t\t\t       Camera3RequestDescriptor *request)\n> >  {\n> >  \tif (!isValidBuffers(source, *destination)) {\n> >  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n> >  \t\tprocessComplete.emit(request);\n> > -\t\treturn -EINVAL;\n> > +\t\treturn;\n> >  \t}\n> >\n> >  \tconst MappedFrameBuffer sourceMapped(source, MappedFrameBuffer::MapFlag::Read);\n> > @@ -66,7 +66,7 @@ int PostProcessorYuv::process(const FrameBuffer *source,\n> >  \t\tLOG(YUV, Error) << \"Failed to mmap camera frame buffer\";\n> >  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n> >  \t\tprocessComplete.emit(request);\n> > -\t\treturn -EINVAL;\n> > +\t\treturn;\n> >  \t}\n> >\n> >  \tint ret = libyuv::NV12Scale(sourceMapped.planes()[0].data(),\n> > @@ -85,13 +85,11 @@ int PostProcessorYuv::process(const FrameBuffer *source,\n> >  \t\tLOG(YUV, Error) << \"Failed NV12 scaling: \" << ret;\n> >  \t\trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Error;\n> >  \t\tprocessComplete.emit(request);\n> > -\t\treturn -EINVAL;\n> > +\t\treturn;\n> >  \t}\n> >\n> >  \trequest->status_ = Camera3RequestDescriptor::ProcessStatus::Success;\n> >  \tprocessComplete.emit(request);\n> > -\n> > -\treturn 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 eddd1086..32e5b60d 100644\n> > --- a/src/android/yuv/post_processor_yuv.h\n> > +++ b/src/android/yuv/post_processor_yuv.h\n> > @@ -20,9 +20,9 @@ public:\n> >\n> >  \tint configure(const libcamera::StreamConfiguration &incfg,\n> >  \t\t      const libcamera::StreamConfiguration &outcfg) override;\n> > -\tint process(const libcamera::FrameBuffer *source,\n> > -\t\t    CameraBuffer *destination,\n> > -\t\t    Camera3RequestDescriptor *context) override;\n> > +\tvoid process(const libcamera::FrameBuffer *source,\n> > +\t\t     CameraBuffer *destination,\n> > +\t\t     Camera3RequestDescriptor *context) override;\n> >\n> >  private:\n> >  \tbool isValidBuffers(const libcamera::FrameBuffer *source,","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 DB6A7BF01C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Sep 2021 22:34:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 535136918C;\n\tWed, 22 Sep 2021 00:34:29 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 85A4269186\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Sep 2021 00:34: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 10157291;\n\tWed, 22 Sep 2021 00:34: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=\"Bu4tWBky\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1632263667;\n\tbh=rg4tyfO4ICRynWSpPwpuns0+VqsGyq2wxjjco0Co0rg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Bu4tWBkyAhDoVPYnWMAziJbArjGOwdhz5kerXdXbBm0feGlRgR/H2P2DfaGXVEJqV\n\tV0QDXs1agS1TTaEdkYgMEXNcfVV0T68j9GeIXIl4S6HpWYQAyQd3d49PTubdjBJdI9\n\ttAaAY0aq85YQFRzwus3tBtmkEGYTr8fh58rzP3ic=","Date":"Wed, 22 Sep 2021 01:33:56 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<YUpd1PnchV8UYVSr@pendragon.ideasonboard.com>","References":"<20210920173752.1346190-1-umang.jain@ideasonboard.com>\n\t<20210920173752.1346190-9-umang.jain@ideasonboard.com>\n\t<20210921113342.prartxh6flhbh3dt@uno.localdomain>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210921113342.prartxh6flhbh3dt@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH v3 08/10] android: camera_stream: 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@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]