[libcamera-devel] [PATCH v1 2/2] android: Fix generation of thumbnail for EXIF data

Umang Jain umang.jain at ideasonboard.com
Fri Sep 10 16:31:50 CEST 2021


Hi Hiro

On 9/10/21 6:24 PM, Hirokazu Honda wrote:
> Hi Umang, thank you for the patch.
>
> On Fri, Sep 10, 2021 at 7:47 PM Umang Jain <umang.jain at ideasonboard.com> wrote:
>> Generation of thumbnail is not occuring currently because
>> ANDROID_JPEG_THUMBNAIL_SIZE is not set for request metadata passed
>> to PostProcessorJpeg::process(). This is a regression introduced in
>> 1264628d3c92("android: jpeg: Configure thumbnailer based on request
>> metadata").
>>
>> The patch fixes this issue by setting ANDROID_JPEG_THUMBNAIL_SIZE in
>> the request metadata template populated by
>> CameraCapabilities::requestTemplatePreview(). The value for
>> ANDROID_JPEG_THUMBNAIL_SIZE is set to be the first non-zero size
>> reported by static metadata ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES.
>>
>> Fixes: 1264628d3c92("android: jpeg: Configure thumbnailer based on request metadata")
>> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
>> ---
>>   src/android/camera_capabilities.cpp | 17 +++++++++++++++--
>>   1 file changed, 15 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
>> index e92bca42..ba551b86 100644
>> --- a/src/android/camera_capabilities.cpp
>> +++ b/src/android/camera_capabilities.cpp
>> @@ -1341,9 +1341,9 @@ std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplatePreview() con
>>   {
>>          /*
>>           * \todo Keep this in sync with the actual number of entries.
>> -        * Currently: 20 entries, 35 bytes
>> +        * Currently: 21 entries, 37 bytes
>>           */
>> -       auto requestTemplate = std::make_unique<CameraMetadata>(21, 36);
>> +       auto requestTemplate = std::make_unique<CameraMetadata>(22, 38);
>>          if (!requestTemplate->isValid()) {
>>                  return nullptr;
>>          }
>> @@ -1364,6 +1364,19 @@ std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplatePreview() con
>>          requestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
>>                                    entry.data.i32, 2);
>>
>> +       /*
>> +        * Get thumbnail sizes from static metadata and add the first non-zero
>> +        * size to the template.
>> +        */
>> +       found = staticMetadata_->getEntry(ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
>> +                                         &entry);
>> +       if (!found) {
>> +               LOG(HAL, Error) << "availableThumbnailSizes not found in static metadata";
>> +               return nullptr;
>> +       }
> Is it possible to check if there is the second element?

Second element ? Do you mean second (or other sizes) being reported in 
ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES?

It should be plausible to extract that from the entry's data I think.  
Is something unclear?

> -Hiro
>> +       requestTemplate->addEntry(ANDROID_JPEG_THUMBNAIL_SIZE,
>> +                                 entry.data.i32 + 2, 2);
>> +
>>          uint8_t aeMode = ANDROID_CONTROL_AE_MODE_ON;
>>          requestTemplate->addEntry(ANDROID_CONTROL_AE_MODE, aeMode);
>>
>> --
>> 2.31.0
>>


More information about the libcamera-devel mailing list