Message ID | 20210121165305.367801-7-jacopo@jmondi.org |
---|---|
State | Superseded |
Delegated to: | Jacopo Mondi |
Headers | show |
Series |
|
Related | show |
Hi Jacopo, Thank you for the patch. On Thu, Jan 21, 2021 at 05:53:04PM +0100, Jacopo Mondi wrote: > Use the CameraMetadata API to retrieve the values of the request > associated settings in CameraDevice::processControls() function. > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> > --- > src/android/camera_device.cpp | 15 ++++++--------- > src/android/camera_device.h | 3 +-- > 2 files changed, 7 insertions(+), 11 deletions(-) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index 9733c84612bd..d185fdf7fb2f 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -1623,10 +1623,10 @@ FrameBuffer *CameraDevice::createFrameBuffer(const buffer_handle_t camera3buffer > return new FrameBuffer(std::move(planes)); > } > > -int CameraDevice::processControls(const camera3_capture_request_t *camera3Request, > - Camera3RequestDescriptor *descriptor) > +int CameraDevice::processControls(Camera3RequestDescriptor *descriptor) > { > - if (!camera3Request->settings) > + const CameraMetadata &settings = descriptor->settings_; > + if (!settings.isValid()) > return 0; > > /* > @@ -1635,12 +1635,9 @@ int CameraDevice::processControls(const camera3_capture_request_t *camera3Reques > * \todo As soon as more controls are handled, this part should be > * broken out to a dedicated function. > */ > - const camera_metadata_t *camera3Settings = camera3Request->settings; > camera_metadata_ro_entry_t entry; > - int ret = find_camera_metadata_ro_entry(camera3Settings, > - ANDROID_SCALER_CROP_REGION, > - &entry); > - if (!ret) { > + bool found = settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry); > + if (found) { You could write if (settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry)) { Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > const int32_t *data = entry.data.i32; > Rectangle cropRegion{ data[0], data[1], > static_cast<unsigned int>(data[2]), > @@ -1752,7 +1749,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques > * Translate controls from Android to libcamera and queue the request > * to the CameraWorker thread. > */ > - int ret = processControls(camera3Request, descriptor); > + int ret = processControls(descriptor); > if (ret) > return ret; > > diff --git a/src/android/camera_device.h b/src/android/camera_device.h > index bad3be8e8066..597d11fcda2e 100644 > --- a/src/android/camera_device.h > +++ b/src/android/camera_device.h > @@ -104,8 +104,7 @@ private: > void notifyError(uint32_t frameNumber, camera3_stream_t *stream); > CameraMetadata *requestTemplatePreview(); > libcamera::PixelFormat toPixelFormat(int format) const; > - int processControls(const camera3_capture_request_t *camera3Request, > - Camera3RequestDescriptor *descriptor); > + int processControls(Camera3RequestDescriptor *descriptor); > std::unique_ptr<CameraMetadata> getResultMetadata( > Camera3RequestDescriptor *descriptor, int64_t timestamp); >
Hi Jacopo, On Thu, Jan 21, 2021 at 05:53:04PM +0100, Jacopo Mondi wrote: > Use the CameraMetadata API to retrieve the values of the request > associated settings in CameraDevice::processControls() function. > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > --- > src/android/camera_device.cpp | 15 ++++++--------- > src/android/camera_device.h | 3 +-- > 2 files changed, 7 insertions(+), 11 deletions(-) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index 9733c84612bd..d185fdf7fb2f 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -1623,10 +1623,10 @@ FrameBuffer *CameraDevice::createFrameBuffer(const buffer_handle_t camera3buffer > return new FrameBuffer(std::move(planes)); > } > > -int CameraDevice::processControls(const camera3_capture_request_t *camera3Request, > - Camera3RequestDescriptor *descriptor) > +int CameraDevice::processControls(Camera3RequestDescriptor *descriptor) > { > - if (!camera3Request->settings) > + const CameraMetadata &settings = descriptor->settings_; > + if (!settings.isValid()) > return 0; > > /* > @@ -1635,12 +1635,9 @@ int CameraDevice::processControls(const camera3_capture_request_t *camera3Reques > * \todo As soon as more controls are handled, this part should be > * broken out to a dedicated function. > */ > - const camera_metadata_t *camera3Settings = camera3Request->settings; > camera_metadata_ro_entry_t entry; > - int ret = find_camera_metadata_ro_entry(camera3Settings, > - ANDROID_SCALER_CROP_REGION, > - &entry); > - if (!ret) { > + bool found = settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry); > + if (found) { > const int32_t *data = entry.data.i32; > Rectangle cropRegion{ data[0], data[1], > static_cast<unsigned int>(data[2]), > @@ -1752,7 +1749,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques > * Translate controls from Android to libcamera and queue the request > * to the CameraWorker thread. > */ > - int ret = processControls(camera3Request, descriptor); > + int ret = processControls(descriptor); > if (ret) > return ret; > > diff --git a/src/android/camera_device.h b/src/android/camera_device.h > index bad3be8e8066..597d11fcda2e 100644 > --- a/src/android/camera_device.h > +++ b/src/android/camera_device.h > @@ -104,8 +104,7 @@ private: > void notifyError(uint32_t frameNumber, camera3_stream_t *stream); > CameraMetadata *requestTemplatePreview(); > libcamera::PixelFormat toPixelFormat(int format) const; > - int processControls(const camera3_capture_request_t *camera3Request, > - Camera3RequestDescriptor *descriptor); > + int processControls(Camera3RequestDescriptor *descriptor); > std::unique_ptr<CameraMetadata> getResultMetadata( > Camera3RequestDescriptor *descriptor, int64_t timestamp); > > -- > 2.29.2 >
Hi Paul, Laurent On Fri, Jan 22, 2021 at 01:25:35PM +0900, paul.elder@ideasonboard.com wrote: > Hi Jacopo, > > On Thu, Jan 21, 2021 at 05:53:04PM +0100, Jacopo Mondi wrote: > > Use the CameraMetadata API to retrieve the values of the request > > associated settings in CameraDevice::processControls() function. > > > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> > > Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > Thanks, this patch and the next one will probably be skept as they're based on my exposure+scaler series which is in review. I'll rather re-base those changes on top of this series. I'll push the reset of the series soon Thanks j > > --- > > src/android/camera_device.cpp | 15 ++++++--------- > > src/android/camera_device.h | 3 +-- > > 2 files changed, 7 insertions(+), 11 deletions(-) > > > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > > index 9733c84612bd..d185fdf7fb2f 100644 > > --- a/src/android/camera_device.cpp > > +++ b/src/android/camera_device.cpp > > @@ -1623,10 +1623,10 @@ FrameBuffer *CameraDevice::createFrameBuffer(const buffer_handle_t camera3buffer > > return new FrameBuffer(std::move(planes)); > > } > > > > -int CameraDevice::processControls(const camera3_capture_request_t *camera3Request, > > - Camera3RequestDescriptor *descriptor) > > +int CameraDevice::processControls(Camera3RequestDescriptor *descriptor) > > { > > - if (!camera3Request->settings) > > + const CameraMetadata &settings = descriptor->settings_; > > + if (!settings.isValid()) > > return 0; > > > > /* > > @@ -1635,12 +1635,9 @@ int CameraDevice::processControls(const camera3_capture_request_t *camera3Reques > > * \todo As soon as more controls are handled, this part should be > > * broken out to a dedicated function. > > */ > > - const camera_metadata_t *camera3Settings = camera3Request->settings; > > camera_metadata_ro_entry_t entry; > > - int ret = find_camera_metadata_ro_entry(camera3Settings, > > - ANDROID_SCALER_CROP_REGION, > > - &entry); > > - if (!ret) { > > + bool found = settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry); > > + if (found) { > > const int32_t *data = entry.data.i32; > > Rectangle cropRegion{ data[0], data[1], > > static_cast<unsigned int>(data[2]), > > @@ -1752,7 +1749,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques > > * Translate controls from Android to libcamera and queue the request > > * to the CameraWorker thread. > > */ > > - int ret = processControls(camera3Request, descriptor); > > + int ret = processControls(descriptor); > > if (ret) > > return ret; > > > > diff --git a/src/android/camera_device.h b/src/android/camera_device.h > > index bad3be8e8066..597d11fcda2e 100644 > > --- a/src/android/camera_device.h > > +++ b/src/android/camera_device.h > > @@ -104,8 +104,7 @@ private: > > void notifyError(uint32_t frameNumber, camera3_stream_t *stream); > > CameraMetadata *requestTemplatePreview(); > > libcamera::PixelFormat toPixelFormat(int format) const; > > - int processControls(const camera3_capture_request_t *camera3Request, > > - Camera3RequestDescriptor *descriptor); > > + int processControls(Camera3RequestDescriptor *descriptor); > > std::unique_ptr<CameraMetadata> getResultMetadata( > > Camera3RequestDescriptor *descriptor, int64_t timestamp); > > > > -- > > 2.29.2 > >
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 9733c84612bd..d185fdf7fb2f 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -1623,10 +1623,10 @@ FrameBuffer *CameraDevice::createFrameBuffer(const buffer_handle_t camera3buffer return new FrameBuffer(std::move(planes)); } -int CameraDevice::processControls(const camera3_capture_request_t *camera3Request, - Camera3RequestDescriptor *descriptor) +int CameraDevice::processControls(Camera3RequestDescriptor *descriptor) { - if (!camera3Request->settings) + const CameraMetadata &settings = descriptor->settings_; + if (!settings.isValid()) return 0; /* @@ -1635,12 +1635,9 @@ int CameraDevice::processControls(const camera3_capture_request_t *camera3Reques * \todo As soon as more controls are handled, this part should be * broken out to a dedicated function. */ - const camera_metadata_t *camera3Settings = camera3Request->settings; camera_metadata_ro_entry_t entry; - int ret = find_camera_metadata_ro_entry(camera3Settings, - ANDROID_SCALER_CROP_REGION, - &entry); - if (!ret) { + bool found = settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry); + if (found) { const int32_t *data = entry.data.i32; Rectangle cropRegion{ data[0], data[1], static_cast<unsigned int>(data[2]), @@ -1752,7 +1749,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques * Translate controls from Android to libcamera and queue the request * to the CameraWorker thread. */ - int ret = processControls(camera3Request, descriptor); + int ret = processControls(descriptor); if (ret) return ret; diff --git a/src/android/camera_device.h b/src/android/camera_device.h index bad3be8e8066..597d11fcda2e 100644 --- a/src/android/camera_device.h +++ b/src/android/camera_device.h @@ -104,8 +104,7 @@ private: void notifyError(uint32_t frameNumber, camera3_stream_t *stream); CameraMetadata *requestTemplatePreview(); libcamera::PixelFormat toPixelFormat(int format) const; - int processControls(const camera3_capture_request_t *camera3Request, - Camera3RequestDescriptor *descriptor); + int processControls(Camera3RequestDescriptor *descriptor); std::unique_ptr<CameraMetadata> getResultMetadata( Camera3RequestDescriptor *descriptor, int64_t timestamp);
Use the CameraMetadata API to retrieve the values of the request associated settings in CameraDevice::processControls() function. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> --- src/android/camera_device.cpp | 15 ++++++--------- src/android/camera_device.h | 3 +-- 2 files changed, 7 insertions(+), 11 deletions(-)