android: camera_device: Register MAX_DIGITAL_ZOOM
Register the ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM static metadata inspecting the ScalerCrop control's limits. Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
2cd841491e
commit
31a1a628cd
1 changed files with 20 additions and 3 deletions
|
@ -1018,9 +1018,26 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
|
|||
}
|
||||
|
||||
/* Scaler static metadata. */
|
||||
float maxDigitalZoom = 1;
|
||||
{
|
||||
/*
|
||||
* \todo The digital zoom factor is a property that depends
|
||||
* on the desired output configuration and the sensor frame size
|
||||
* input to the ISP. This information is not available to the
|
||||
* Android HAL, not at initialization time at least.
|
||||
*
|
||||
* As a workaround rely on pipeline handlers initializing the
|
||||
* ScalerCrop control with the camera default configuration and
|
||||
* use the maximum and minimum crop rectangles to calculate the
|
||||
* digital zoom factor.
|
||||
*/
|
||||
const auto info = controlsInfo.find(&controls::ScalerCrop);
|
||||
Rectangle min = info->second.min().get<Rectangle>();
|
||||
Rectangle max = info->second.max().get<Rectangle>();
|
||||
float maxZoom = std::min(1.0f * max.width / min.width,
|
||||
1.0f * max.height / min.height);
|
||||
staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
|
||||
&maxDigitalZoom, 1);
|
||||
&maxZoom, 1);
|
||||
}
|
||||
|
||||
std::vector<uint32_t> availableStreamConfigurations;
|
||||
availableStreamConfigurations.reserve(streamConfigurations_.size() * 4);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue