[EXT] Re: [PATCH] android: camera_device: The first valid settings should be saved
Jacopo Mondi
jacopo.mondi at ideasonboard.com
Fri Mar 22 11:11:53 CET 2024
Hello
On Wed, Feb 28, 2024 at 05:30:25AM +0000, Hui Fang wrote:
> commit 3a5da02954c7ab76a0c939eb1f806c3d529c7ec9 (HEAD -> master)
> Author: Fang Hui <hui.fang at nxp.com>
> Date: Thu Jan 25 02:11:04 2024 +0800
>
> android: camera_device: Save capture settings unconditionally
>
> As the Android framework sends to the camera device settings
> incrementally (only the ones that change are updated), the CameraDevice
> class in the Android camera HAL keeps a copy of the last received
> settings to be able to apply controls to the libcamera Camera and to
> populate metadata correctly.
>
> When a valid 'camera3Request->settings' is provided, it gets saved to
> 'lastSettings_' but 'descriptor->settings_' is not initialized until
> the next frame (assuming it does not contain more settings).
>
> Fix this by assigning to 'descriptor->settings_' the last saved
> settings unconditionally.
>
> Bug: https://bugs.libcamera.org/show_bug.cgi?id=210
>
> Signed-off-by: Fang Hui <hui.fang at nxp.com>
Now tested with CTS, no regressions detected
Tested-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
I'll merge it!
Thanks
j
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 25cedd44..d2679a97 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -952,8 +952,8 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
> */
> if (camera3Request->settings)
> lastSettings_ = camera3Request->settings;
> - else
> - descriptor->settings_ = lastSettings_;
> +
> + descriptor->settings_ = lastSettings_;
>
> LOG(HAL, Debug) << "Queueing request " << descriptor->request_->cookie()
> << " with " << descriptor->buffers_.size() << " streams";
> @@ -1108,6 +1108,8 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
> }
>
> if (state_ == State::Stopped) {
> + lastSettings_ = {};
> +
> ret = camera_->start();
> if (ret) {
> LOG(HAL, Error) << "Failed to start camera";
> ________________________________
> From: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> Sent: Monday, February 26, 2024 10:21 PM
> To: Hui Fang <hui.fang at nxp.com>
> Cc: libcamera-devel at lists.libcamera.org <libcamera-devel at lists.libcamera.org>; biomifang118 at gmail.com <biomifang118 at gmail.com>
> Subject: [EXT] Re: [PATCH] android: camera_device: The first valid settings should be saved
>
> Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button
>
>
> Also,
> as there's a bug assigned to this issue
>
> On Mon, Feb 26, 2024 at 11:08:12AM +0800, Fang Hui wrote:
> > If not, it will be deferred to the next frame.
> >
>
> Bug: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.libcamera.org%2Fshow_bug.cgi%3Fid%3D210&data=05%7C02%7Chui.fang%40nxp.com%7Cc9341f6fe9624af769f108dc36d64722%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638445541153242800%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=2JewcBFhgU4K%2BDofrUZLQUduptmwAwDcomPEXwQ3Ybw%3D&reserved=0<https://bugs.libcamera.org/show_bug.cgi?id=210>
>
> > Signed-off-by: Fang Hui <hui.fang at nxp.com>
> > ---
> > src/android/camera_device.cpp | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> > index 25cedd44..d45ed1a5 100644
> > --- a/src/android/camera_device.cpp
> > +++ b/src/android/camera_device.cpp
> > @@ -952,8 +952,8 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
> > */
> > if (camera3Request->settings)
> > lastSettings_ = camera3Request->settings;
> > - else
> > - descriptor->settings_ = lastSettings_;
> > +
> > + descriptor->settings_ = lastSettings_;
> >
> > LOG(HAL, Debug) << "Queueing request " << descriptor->request_->cookie()
> > << " with " << descriptor->buffers_.size() << " streams";
> > --
> > 2.25.1
> >
More information about the libcamera-devel
mailing list