android: Filter preview streams on FPS
Register as preview streams only streams capable of producing at least 30 FPS. This requirement comes from inspecting the existing HAL implementation on Intel IPU3 platform and from inspecting the CTS RecordingTests results. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
5d3d666465
commit
f78f714b44
1 changed files with 22 additions and 0 deletions
|
@ -1279,6 +1279,23 @@ int CameraCapabilities::initializeStaticMetadata()
|
|||
std::vector<uint32_t> availableStreamConfigurations;
|
||||
availableStreamConfigurations.reserve(streamConfigurations_.size() * 4);
|
||||
for (const auto &entry : streamConfigurations_) {
|
||||
/*
|
||||
* Filter out YUV streams not capable of running at 30 FPS.
|
||||
*
|
||||
* This requirement comes from CTS RecordingTest failures most
|
||||
* probably related to a requirement of the camcoder video
|
||||
* 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));
|
||||
if (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30)
|
||||
continue;
|
||||
|
||||
availableStreamConfigurations.push_back(entry.androidFormat);
|
||||
availableStreamConfigurations.push_back(entry.resolution.width);
|
||||
availableStreamConfigurations.push_back(entry.resolution.height);
|
||||
|
@ -1291,6 +1308,11 @@ int CameraCapabilities::initializeStaticMetadata()
|
|||
std::vector<int64_t> minFrameDurations;
|
||||
minFrameDurations.reserve(streamConfigurations_.size() * 4);
|
||||
for (const auto &entry : streamConfigurations_) {
|
||||
unsigned int fps = static_cast<unsigned int>
|
||||
(floor(1e9 / entry.minFrameDurationNsec + 0.05f));
|
||||
if (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30)
|
||||
continue;
|
||||
|
||||
minFrameDurations.push_back(entry.androidFormat);
|
||||
minFrameDurations.push_back(entry.resolution.width);
|
||||
minFrameDurations.push_back(entry.resolution.height);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue