[libcamera-devel] [PATCH] android: camera_device: Set AE precapture trigger according to request

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Wed Jan 27 11:37:48 CET 2021


Hi Laurent,

On Wed, Jan 27, 2021 at 12:32:50PM +0200, Laurent Pinchart wrote:
> Hi Paul,
> 
> Thank you for the patch.
> 
> On Wed, Jan 27, 2021 at 07:14:35PM +0900, Paul Elder wrote:
> > Set the AE precapture triggler tag in the android result metadata
> > according to what was passed in the request metadata.
> > 
> > This allows the following CTS test to pass:
> > - android.hardware.camera2.cts.StillCaptureTest#testAePrecaptureTriggerCancelJpegCapture
> > 
> > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> > ---
> >  src/android/camera_device.cpp | 13 ++++++++++---
> >  1 file changed, 10 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> > index 82bf0d3a..941e89a8 100644
> > --- a/src/android/camera_device.cpp
> > +++ b/src/android/camera_device.cpp
> > @@ -1806,6 +1806,13 @@ void CameraDevice::requestComplete(Request *request)
> >  	uint64_t timestamp = buffers.begin()->second->metadata().timestamp;
> >  	resultMetadata = getResultMetadata(descriptor, timestamp);
> >  
> > +	camera_metadata_ro_entry_t entry;
> > +	/* \todo Handle IPA appropriately */
> > +	int ret = descriptor->settings_.getEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry);
> > +	if (ret)
> > +		resultMetadata->updateEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
> > +					    entry.data.u8, 1);
> 
> Should this be moved to getResultMetadata() and replace the existing
> code that sets ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER ?

Oh yeah that would probably be better.


Thanks,

Paul
> > +
> >  	/* Handle any JPEG compression. */
> >  	for (unsigned int i = 0; i < descriptor->numBuffers_; ++i) {
> >  		CameraStream *cameraStream =
> > @@ -1832,9 +1839,9 @@ void CameraDevice::requestComplete(Request *request)
> >  			continue;
> >  		}
> >  
> > -		int ret = cameraStream->process(*buffer, &mapped,
> > -						descriptor->settings_,
> > -						resultMetadata.get());
> > +		ret = cameraStream->process(*buffer, &mapped,
> > +					    descriptor->settings_,
> > +					    resultMetadata.get());
> >  		if (ret) {
> >  			status = CAMERA3_BUFFER_STATUS_ERROR;
> >  			continue;


More information about the libcamera-devel mailing list