Message ID | 20210920173752.1346190-7-umang.jain@ideasonboard.com |
---|---|
State | RFC |
Delegated to: | Umang Jain |
Headers | show |
Series |
|
Related | show |
Hi Umang, Thank you for the patch. On Mon, Sep 20, 2021 at 11:07:48PM +0530, Umang Jain wrote: > Data (or broader context) required for post processing of a camera request > is saved via Camera3RequestDescriptor. Instead of passing individual > arguments to CameraStream::process(), pass the Camera3RequestDescriptor > pointer to it. All the arguments necessary to run the post-processor can > be accessed from the descriptor. > > In subsequent commits, we will prepare the post-processor to run > asynchronously. Hence, it will require the Camera3RequestDescriptor > pointer to be emitted back in the post-processing completion handler > to finally complete the request (i.e. sending the capture results back > to the framework). > > Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > src/android/camera_device.cpp | 5 ++--- > src/android/camera_stream.cpp | 5 ++--- > src/android/camera_stream.h | 5 +++-- > src/android/jpeg/post_processor_jpeg.cpp | 5 +++-- > src/android/jpeg/post_processor_jpeg.h | 3 +-- > src/android/post_processor.h | 5 +++-- > src/android/yuv/post_processor_yuv.cpp | 3 +-- > src/android/yuv/post_processor_yuv.h | 3 +-- > 8 files changed, 16 insertions(+), 18 deletions(-) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index 1ae4ac73..fa462368 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -1150,9 +1150,8 @@ void CameraDevice::requestComplete(Request *request) > continue; > } > > - int ret = cameraStream->process(src, *buffer.buffer, > - descriptor->settings_, > - descriptor->resultMetadata_.get()); > + int ret = cameraStream->process(src, *buffer.buffer, descriptor); > + > /* > * Return the FrameBuffer to the CameraStream now that we're > * done processing it. > diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp > index 0fed5382..d494f5d5 100644 > --- a/src/android/camera_stream.cpp > +++ b/src/android/camera_stream.cpp > @@ -100,8 +100,7 @@ int CameraStream::configure() > > int CameraStream::process(const FrameBuffer *source, > buffer_handle_t camera3Dest, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) > + Camera3RequestDescriptor *request) > { > if (!postProcessor_) > return 0; > @@ -118,7 +117,7 @@ int CameraStream::process(const FrameBuffer *source, > return -EINVAL; > } > > - return postProcessor_->process(source, &dest, requestMetadata, resultMetadata); > + return postProcessor_->process(source, &dest, request); > } > > FrameBuffer *CameraStream::getBuffer() > diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h > index 5c232cb6..68789700 100644 > --- a/src/android/camera_stream.h > +++ b/src/android/camera_stream.h > @@ -23,6 +23,8 @@ class CameraDevice; > class CameraMetadata; > class PostProcessor; > > +struct Camera3RequestDescriptor; > + > class CameraStream > { > public: > @@ -120,8 +122,7 @@ public: > int configure(); > int process(const libcamera::FrameBuffer *source, > buffer_handle_t camera3Dest, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata); > + Camera3RequestDescriptor *request); > libcamera::FrameBuffer *getBuffer(); > void putBuffer(libcamera::FrameBuffer *buffer); > > diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp > index cb45f86b..31f68330 100644 > --- a/src/android/jpeg/post_processor_jpeg.cpp > +++ b/src/android/jpeg/post_processor_jpeg.cpp > @@ -99,14 +99,15 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer *source, > > int PostProcessorJpeg::process(const FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) > + Camera3RequestDescriptor *request) > { > if (!encoder_) > return 0; > > ASSERT(destination->numPlanes() == 1); > > + const CameraMetadata &requestMetadata = request->settings_; > + CameraMetadata *resultMetadata = request->resultMetadata_.get(); > camera_metadata_ro_entry_t entry; > int ret; > > diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h > index c4b2e9ef..d49c8d2b 100644 > --- a/src/android/jpeg/post_processor_jpeg.h > +++ b/src/android/jpeg/post_processor_jpeg.h > @@ -24,8 +24,7 @@ public: > const libcamera::StreamConfiguration &outcfg) override; > int process(const libcamera::FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) override; > + Camera3RequestDescriptor *request) override; > > private: > void generateThumbnail(const libcamera::FrameBuffer *source, > diff --git a/src/android/post_processor.h b/src/android/post_processor.h > index 61dfb6d4..bdd6afe7 100644 > --- a/src/android/post_processor.h > +++ b/src/android/post_processor.h > @@ -14,6 +14,8 @@ > > class CameraMetadata; > > +struct Camera3RequestDescriptor; > + > class PostProcessor > { > public: > @@ -23,8 +25,7 @@ public: > const libcamera::StreamConfiguration &outCfg) = 0; > virtual int process(const libcamera::FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) = 0; > + Camera3RequestDescriptor *request) = 0; > }; > > #endif /* __ANDROID_POST_PROCESSOR_H__ */ > diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp > index 0a874886..5e18caee 100644 > --- a/src/android/yuv/post_processor_yuv.cpp > +++ b/src/android/yuv/post_processor_yuv.cpp > @@ -51,8 +51,7 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg, > > int PostProcessorYuv::process(const FrameBuffer *source, > CameraBuffer *destination, > - [[maybe_unused]] const CameraMetadata &requestMetadata, > - [[maybe_unused]] CameraMetadata *metadata) > + [[maybe_unused]] Camera3RequestDescriptor *request) > { > if (!isValidBuffers(source, *destination)) > return -EINVAL; > diff --git a/src/android/yuv/post_processor_yuv.h b/src/android/yuv/post_processor_yuv.h > index 44a04113..eddd1086 100644 > --- a/src/android/yuv/post_processor_yuv.h > +++ b/src/android/yuv/post_processor_yuv.h > @@ -22,8 +22,7 @@ public: > const libcamera::StreamConfiguration &outcfg) override; > int process(const libcamera::FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *metadata) override; > + Camera3RequestDescriptor *context) override; s/context/request/ Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > private: > bool isValidBuffers(const libcamera::FrameBuffer *source,
Hi Umang, On Mon, Sep 20, 2021 at 11:07:48PM +0530, Umang Jain wrote: > Data (or broader context) required for post processing of a camera request > is saved via Camera3RequestDescriptor. Instead of passing individual > arguments to CameraStream::process(), pass the Camera3RequestDescriptor > pointer to it. All the arguments necessary to run the post-processor can > be accessed from the descriptor. > > In subsequent commits, we will prepare the post-processor to run > asynchronously. Hence, it will require the Camera3RequestDescriptor > pointer to be emitted back in the post-processing completion handler > to finally complete the request (i.e. sending the capture results back > to the framework). > > Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Ah -.- Sorry for the noise on the previous one then Should these two patches be squashed then ? Thanks j > --- > src/android/camera_device.cpp | 5 ++--- > src/android/camera_stream.cpp | 5 ++--- > src/android/camera_stream.h | 5 +++-- > src/android/jpeg/post_processor_jpeg.cpp | 5 +++-- > src/android/jpeg/post_processor_jpeg.h | 3 +-- > src/android/post_processor.h | 5 +++-- > src/android/yuv/post_processor_yuv.cpp | 3 +-- > src/android/yuv/post_processor_yuv.h | 3 +-- > 8 files changed, 16 insertions(+), 18 deletions(-) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index 1ae4ac73..fa462368 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -1150,9 +1150,8 @@ void CameraDevice::requestComplete(Request *request) > continue; > } > > - int ret = cameraStream->process(src, *buffer.buffer, > - descriptor->settings_, > - descriptor->resultMetadata_.get()); > + int ret = cameraStream->process(src, *buffer.buffer, descriptor); > + > /* > * Return the FrameBuffer to the CameraStream now that we're > * done processing it. > diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp > index 0fed5382..d494f5d5 100644 > --- a/src/android/camera_stream.cpp > +++ b/src/android/camera_stream.cpp > @@ -100,8 +100,7 @@ int CameraStream::configure() > > int CameraStream::process(const FrameBuffer *source, > buffer_handle_t camera3Dest, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) > + Camera3RequestDescriptor *request) > { > if (!postProcessor_) > return 0; > @@ -118,7 +117,7 @@ int CameraStream::process(const FrameBuffer *source, > return -EINVAL; > } > > - return postProcessor_->process(source, &dest, requestMetadata, resultMetadata); > + return postProcessor_->process(source, &dest, request); > } > > FrameBuffer *CameraStream::getBuffer() > diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h > index 5c232cb6..68789700 100644 > --- a/src/android/camera_stream.h > +++ b/src/android/camera_stream.h > @@ -23,6 +23,8 @@ class CameraDevice; > class CameraMetadata; > class PostProcessor; > > +struct Camera3RequestDescriptor; > + > class CameraStream > { > public: > @@ -120,8 +122,7 @@ public: > int configure(); > int process(const libcamera::FrameBuffer *source, > buffer_handle_t camera3Dest, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata); > + Camera3RequestDescriptor *request); > libcamera::FrameBuffer *getBuffer(); > void putBuffer(libcamera::FrameBuffer *buffer); > > diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp > index cb45f86b..31f68330 100644 > --- a/src/android/jpeg/post_processor_jpeg.cpp > +++ b/src/android/jpeg/post_processor_jpeg.cpp > @@ -99,14 +99,15 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer *source, > > int PostProcessorJpeg::process(const FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) > + Camera3RequestDescriptor *request) > { > if (!encoder_) > return 0; > > ASSERT(destination->numPlanes() == 1); > > + const CameraMetadata &requestMetadata = request->settings_; > + CameraMetadata *resultMetadata = request->resultMetadata_.get(); > camera_metadata_ro_entry_t entry; > int ret; > > diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h > index c4b2e9ef..d49c8d2b 100644 > --- a/src/android/jpeg/post_processor_jpeg.h > +++ b/src/android/jpeg/post_processor_jpeg.h > @@ -24,8 +24,7 @@ public: > const libcamera::StreamConfiguration &outcfg) override; > int process(const libcamera::FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) override; > + Camera3RequestDescriptor *request) override; > > private: > void generateThumbnail(const libcamera::FrameBuffer *source, > diff --git a/src/android/post_processor.h b/src/android/post_processor.h > index 61dfb6d4..bdd6afe7 100644 > --- a/src/android/post_processor.h > +++ b/src/android/post_processor.h > @@ -14,6 +14,8 @@ > > class CameraMetadata; > > +struct Camera3RequestDescriptor; > + > class PostProcessor > { > public: > @@ -23,8 +25,7 @@ public: > const libcamera::StreamConfiguration &outCfg) = 0; > virtual int process(const libcamera::FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *resultMetadata) = 0; > + Camera3RequestDescriptor *request) = 0; > }; > > #endif /* __ANDROID_POST_PROCESSOR_H__ */ > diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp > index 0a874886..5e18caee 100644 > --- a/src/android/yuv/post_processor_yuv.cpp > +++ b/src/android/yuv/post_processor_yuv.cpp > @@ -51,8 +51,7 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg, > > int PostProcessorYuv::process(const FrameBuffer *source, > CameraBuffer *destination, > - [[maybe_unused]] const CameraMetadata &requestMetadata, > - [[maybe_unused]] CameraMetadata *metadata) > + [[maybe_unused]] Camera3RequestDescriptor *request) > { > if (!isValidBuffers(source, *destination)) > return -EINVAL; > diff --git a/src/android/yuv/post_processor_yuv.h b/src/android/yuv/post_processor_yuv.h > index 44a04113..eddd1086 100644 > --- a/src/android/yuv/post_processor_yuv.h > +++ b/src/android/yuv/post_processor_yuv.h > @@ -22,8 +22,7 @@ public: > const libcamera::StreamConfiguration &outcfg) override; > int process(const libcamera::FrameBuffer *source, > CameraBuffer *destination, > - const CameraMetadata &requestMetadata, > - CameraMetadata *metadata) override; > + Camera3RequestDescriptor *context) override; > > private: > bool isValidBuffers(const libcamera::FrameBuffer *source, > -- > 2.31.1 >
Hi Umang, thank you for the patch. On Tue, Sep 21, 2021 at 8:13 PM Jacopo Mondi <jacopo@jmondi.org> wrote: > > Hi Umang, > > On Mon, Sep 20, 2021 at 11:07:48PM +0530, Umang Jain wrote: > > Data (or broader context) required for post processing of a camera request > > is saved via Camera3RequestDescriptor. Instead of passing individual > > arguments to CameraStream::process(), pass the Camera3RequestDescriptor > > pointer to it. All the arguments necessary to run the post-processor can > > be accessed from the descriptor. > > > > In subsequent commits, we will prepare the post-processor to run > > asynchronously. Hence, it will require the Camera3RequestDescriptor > > pointer to be emitted back in the post-processing completion handler > > to finally complete the request (i.e. sending the capture results back > > to the framework). > > > > Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> > > Ah -.- > > Sorry for the noise on the previous one then > > Should these two patches be squashed then ? > > Thanks > j > > > --- > > src/android/camera_device.cpp | 5 ++--- > > src/android/camera_stream.cpp | 5 ++--- > > src/android/camera_stream.h | 5 +++-- > > src/android/jpeg/post_processor_jpeg.cpp | 5 +++-- > > src/android/jpeg/post_processor_jpeg.h | 3 +-- > > src/android/post_processor.h | 5 +++-- > > src/android/yuv/post_processor_yuv.cpp | 3 +-- > > src/android/yuv/post_processor_yuv.h | 3 +-- > > 8 files changed, 16 insertions(+), 18 deletions(-) > > > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > > index 1ae4ac73..fa462368 100644 > > --- a/src/android/camera_device.cpp > > +++ b/src/android/camera_device.cpp > > @@ -1150,9 +1150,8 @@ void CameraDevice::requestComplete(Request *request) > > continue; > > } > > > > - int ret = cameraStream->process(src, *buffer.buffer, > > - descriptor->settings_, > > - descriptor->resultMetadata_.get()); > > + int ret = cameraStream->process(src, *buffer.buffer, descriptor); > > + > > /* > > * Return the FrameBuffer to the CameraStream now that we're > > * done processing it. > > diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp > > index 0fed5382..d494f5d5 100644 > > --- a/src/android/camera_stream.cpp > > +++ b/src/android/camera_stream.cpp > > @@ -100,8 +100,7 @@ int CameraStream::configure() > > > > int CameraStream::process(const FrameBuffer *source, > > buffer_handle_t camera3Dest, > > - const CameraMetadata &requestMetadata, > > - CameraMetadata *resultMetadata) > > + Camera3RequestDescriptor *request) > > { > > if (!postProcessor_) > > return 0; > > @@ -118,7 +117,7 @@ int CameraStream::process(const FrameBuffer *source, > > return -EINVAL; > > } > > > > - return postProcessor_->process(source, &dest, requestMetadata, resultMetadata); > > + return postProcessor_->process(source, &dest, request); > > } > > > > FrameBuffer *CameraStream::getBuffer() > > diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h > > index 5c232cb6..68789700 100644 > > --- a/src/android/camera_stream.h > > +++ b/src/android/camera_stream.h > > @@ -23,6 +23,8 @@ class CameraDevice; > > class CameraMetadata; > > class PostProcessor; > > > > +struct Camera3RequestDescriptor; > > + > > class CameraStream > > { > > public: > > @@ -120,8 +122,7 @@ public: > > int configure(); > > int process(const libcamera::FrameBuffer *source, > > buffer_handle_t camera3Dest, > > - const CameraMetadata &requestMetadata, > > - CameraMetadata *resultMetadata); > > + Camera3RequestDescriptor *request); > > libcamera::FrameBuffer *getBuffer(); > > void putBuffer(libcamera::FrameBuffer *buffer); > > > > diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp > > index cb45f86b..31f68330 100644 > > --- a/src/android/jpeg/post_processor_jpeg.cpp > > +++ b/src/android/jpeg/post_processor_jpeg.cpp > > @@ -99,14 +99,15 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer *source, > > > > int PostProcessorJpeg::process(const FrameBuffer *source, > > CameraBuffer *destination, > > - const CameraMetadata &requestMetadata, > > - CameraMetadata *resultMetadata) > > + Camera3RequestDescriptor *request) > > { > > if (!encoder_) > > return 0; > > > > ASSERT(destination->numPlanes() == 1); > > > > + const CameraMetadata &requestMetadata = request->settings_; > > + CameraMetadata *resultMetadata = request->resultMetadata_.get(); > > camera_metadata_ro_entry_t entry; > > int ret; > > > > diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h > > index c4b2e9ef..d49c8d2b 100644 > > --- a/src/android/jpeg/post_processor_jpeg.h > > +++ b/src/android/jpeg/post_processor_jpeg.h > > @@ -24,8 +24,7 @@ public: > > const libcamera::StreamConfiguration &outcfg) override; > > int process(const libcamera::FrameBuffer *source, > > CameraBuffer *destination, > > - const CameraMetadata &requestMetadata, > > - CameraMetadata *resultMetadata) override; > > + Camera3RequestDescriptor *request) override; > > > > private: > > void generateThumbnail(const libcamera::FrameBuffer *source, > > diff --git a/src/android/post_processor.h b/src/android/post_processor.h > > index 61dfb6d4..bdd6afe7 100644 > > --- a/src/android/post_processor.h > > +++ b/src/android/post_processor.h > > @@ -14,6 +14,8 @@ > > > > class CameraMetadata; > > > > +struct Camera3RequestDescriptor; > > + > > class PostProcessor > > { > > public: > > @@ -23,8 +25,7 @@ public: > > const libcamera::StreamConfiguration &outCfg) = 0; > > virtual int process(const libcamera::FrameBuffer *source, > > CameraBuffer *destination, > > - const CameraMetadata &requestMetadata, > > - CameraMetadata *resultMetadata) = 0; > > + Camera3RequestDescriptor *request) = 0; > > }; > > > > #endif /* __ANDROID_POST_PROCESSOR_H__ */ > > diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp > > index 0a874886..5e18caee 100644 > > --- a/src/android/yuv/post_processor_yuv.cpp > > +++ b/src/android/yuv/post_processor_yuv.cpp > > @@ -51,8 +51,7 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg, > > > > int PostProcessorYuv::process(const FrameBuffer *source, > > CameraBuffer *destination, > > - [[maybe_unused]] const CameraMetadata &requestMetadata, > > - [[maybe_unused]] CameraMetadata *metadata) > > + [[maybe_unused]] Camera3RequestDescriptor *request) > > { > > if (!isValidBuffers(source, *destination)) > > return -EINVAL; > > diff --git a/src/android/yuv/post_processor_yuv.h b/src/android/yuv/post_processor_yuv.h > > index 44a04113..eddd1086 100644 > > --- a/src/android/yuv/post_processor_yuv.h > > +++ b/src/android/yuv/post_processor_yuv.h > > @@ -22,8 +22,7 @@ public: > > const libcamera::StreamConfiguration &outcfg) override; > > int process(const libcamera::FrameBuffer *source, > > CameraBuffer *destination, > > - const CameraMetadata &requestMetadata, > > - CameraMetadata *metadata) override; > > + Camera3RequestDescriptor *context) override; > > > > private: > > bool isValidBuffers(const libcamera::FrameBuffer *source, > > -- > > 2.31.1 > >
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 1ae4ac73..fa462368 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -1150,9 +1150,8 @@ void CameraDevice::requestComplete(Request *request) continue; } - int ret = cameraStream->process(src, *buffer.buffer, - descriptor->settings_, - descriptor->resultMetadata_.get()); + int ret = cameraStream->process(src, *buffer.buffer, descriptor); + /* * Return the FrameBuffer to the CameraStream now that we're * done processing it. diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp index 0fed5382..d494f5d5 100644 --- a/src/android/camera_stream.cpp +++ b/src/android/camera_stream.cpp @@ -100,8 +100,7 @@ int CameraStream::configure() int CameraStream::process(const FrameBuffer *source, buffer_handle_t camera3Dest, - const CameraMetadata &requestMetadata, - CameraMetadata *resultMetadata) + Camera3RequestDescriptor *request) { if (!postProcessor_) return 0; @@ -118,7 +117,7 @@ int CameraStream::process(const FrameBuffer *source, return -EINVAL; } - return postProcessor_->process(source, &dest, requestMetadata, resultMetadata); + return postProcessor_->process(source, &dest, request); } FrameBuffer *CameraStream::getBuffer() diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h index 5c232cb6..68789700 100644 --- a/src/android/camera_stream.h +++ b/src/android/camera_stream.h @@ -23,6 +23,8 @@ class CameraDevice; class CameraMetadata; class PostProcessor; +struct Camera3RequestDescriptor; + class CameraStream { public: @@ -120,8 +122,7 @@ public: int configure(); int process(const libcamera::FrameBuffer *source, buffer_handle_t camera3Dest, - const CameraMetadata &requestMetadata, - CameraMetadata *resultMetadata); + Camera3RequestDescriptor *request); libcamera::FrameBuffer *getBuffer(); void putBuffer(libcamera::FrameBuffer *buffer); diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp index cb45f86b..31f68330 100644 --- a/src/android/jpeg/post_processor_jpeg.cpp +++ b/src/android/jpeg/post_processor_jpeg.cpp @@ -99,14 +99,15 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer *source, int PostProcessorJpeg::process(const FrameBuffer *source, CameraBuffer *destination, - const CameraMetadata &requestMetadata, - CameraMetadata *resultMetadata) + Camera3RequestDescriptor *request) { if (!encoder_) return 0; ASSERT(destination->numPlanes() == 1); + const CameraMetadata &requestMetadata = request->settings_; + CameraMetadata *resultMetadata = request->resultMetadata_.get(); camera_metadata_ro_entry_t entry; int ret; diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h index c4b2e9ef..d49c8d2b 100644 --- a/src/android/jpeg/post_processor_jpeg.h +++ b/src/android/jpeg/post_processor_jpeg.h @@ -24,8 +24,7 @@ public: const libcamera::StreamConfiguration &outcfg) override; int process(const libcamera::FrameBuffer *source, CameraBuffer *destination, - const CameraMetadata &requestMetadata, - CameraMetadata *resultMetadata) override; + Camera3RequestDescriptor *request) override; private: void generateThumbnail(const libcamera::FrameBuffer *source, diff --git a/src/android/post_processor.h b/src/android/post_processor.h index 61dfb6d4..bdd6afe7 100644 --- a/src/android/post_processor.h +++ b/src/android/post_processor.h @@ -14,6 +14,8 @@ class CameraMetadata; +struct Camera3RequestDescriptor; + class PostProcessor { public: @@ -23,8 +25,7 @@ public: const libcamera::StreamConfiguration &outCfg) = 0; virtual int process(const libcamera::FrameBuffer *source, CameraBuffer *destination, - const CameraMetadata &requestMetadata, - CameraMetadata *resultMetadata) = 0; + Camera3RequestDescriptor *request) = 0; }; #endif /* __ANDROID_POST_PROCESSOR_H__ */ diff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp index 0a874886..5e18caee 100644 --- a/src/android/yuv/post_processor_yuv.cpp +++ b/src/android/yuv/post_processor_yuv.cpp @@ -51,8 +51,7 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg, int PostProcessorYuv::process(const FrameBuffer *source, CameraBuffer *destination, - [[maybe_unused]] const CameraMetadata &requestMetadata, - [[maybe_unused]] CameraMetadata *metadata) + [[maybe_unused]] Camera3RequestDescriptor *request) { if (!isValidBuffers(source, *destination)) return -EINVAL; diff --git a/src/android/yuv/post_processor_yuv.h b/src/android/yuv/post_processor_yuv.h index 44a04113..eddd1086 100644 --- a/src/android/yuv/post_processor_yuv.h +++ b/src/android/yuv/post_processor_yuv.h @@ -22,8 +22,7 @@ public: const libcamera::StreamConfiguration &outcfg) override; int process(const libcamera::FrameBuffer *source, CameraBuffer *destination, - const CameraMetadata &requestMetadata, - CameraMetadata *metadata) override; + Camera3RequestDescriptor *context) override; private: bool isValidBuffers(const libcamera::FrameBuffer *source,