[libcamera-devel] [PATCH v3] android: camera_capabilities: Adjust minimum frame duration to match FPS
Umang Jain
umang.jain at ideasonboard.com
Thu Apr 28 09:28:30 CEST 2022
Hi Han-Lin,
On 4/28/22 00:40, Umang Jain via libcamera-devel wrote:
> Hi
>
> On 4/27/22 20:43, Han-Lin Chen via libcamera-devel wrote:
>> CTS calculates FPS with a rounding formula: See
>> Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration()
>>
>> fps = floor(1e9 / minFrameDuration + 0.05f)
>
>
> It seems(to me at-least) that the placement of the + 0.05f adjustment
> is changed as per this patch.
>
>>
>> The android adapter reports it as the AE target FPS. The patch
>> adjusts the
>> reported minimum frame duration to match the reported FPS.
>
>
> Hence we are not introducing any 'new adjustments' rather changing the
> placement of the adjustment.
Being clarified by Jacopo on IRC, that the patch makes the FPS and
minFrameDuration in-sync, such that
the adjustment is now reflected for both. That makes perfect sense now
that I am looking, hence,
Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
>
> Given my inference is correct (of course I might be missing the entire
> point here, please do correct me
> then), I would re-pharse this commit message to reflect that this
> patch doesn't introduce any functional
> changes.
>
> android: camera_capabilities: Move minimum frame duration adjustment
>
> CTS calculates FPS with a rounding formula: See
> Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration()
>
> fps = floor(1e9 / minFrameDuration + 0.05f)
>
> The android adapter reports it as the AE target FPS. The patch
> moves this adjustment while populating the stream configuration's
> minimum frame duration itself.
>
> What do you think ?
>
>>
>> Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
>> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
>> ---
>> src/android/camera_capabilities.cpp | 16 +++++++++++-----
>> 1 file changed, 11 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/android/camera_capabilities.cpp
>> b/src/android/camera_capabilities.cpp
>> index 55d651f3..ee17cdc7 100644
>> --- a/src/android/camera_capabilities.cpp
>> +++ b/src/android/camera_capabilities.cpp
>> @@ -687,6 +687,14 @@ int
>> CameraCapabilities::initializeStreamConfigurations()
>> minFrameDuration = minFrameDurationCap;
>> }
>> + /*
>> + * Calculate FPS as CTS does and adjust the minimum
>> + * frame duration accordingly: see
>> + *
>> Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration()
>> + */
>> + minFrameDuration =
>> + 1e9 / static_cast<unsigned int>(floor(1e9 /
>> minFrameDuration + 0.05f));
>> +
>> streamConfigurations_.push_back({
>> res, androidFormat, minFrameDuration,
>> maxFrameDuration,
>> });
>> @@ -1287,12 +1295,10 @@ int
>> CameraCapabilities::initializeStaticMetadata()
>> * recording profile. Inspecting the Intel IPU3 HAL
>> * implementation confirms this but no reference has been
>> found
>> * in the metadata documentation.
>> - *
>> - * Calculate FPS as CTS does: see
>> - *
>> Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration()
>> */
>> - unsigned int fps = static_cast<unsigned int>
>> - (floor(1e9 / entry.minFrameDurationNsec + 0.05f));
>> + unsigned int fps =
>> + static_cast<unsigned int>(floor(1e9 /
>> entry.minFrameDurationNsec));
>> +
>> if (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30)
>> continue;
More information about the libcamera-devel
mailing list