android: camera_device: Replace hardcoded stream configuration

Replace the hardcoded stream configuration map with the information
collected at CameraDevice initialization time.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2020-05-25 17:18:28 +02:00
parent a80d38109f
commit bde7b98cac

View file

@ -654,23 +654,24 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM, staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
&maxDigitalZoom, 1); &maxDigitalZoom, 1);
std::vector<uint32_t> availableStreamFormats = { std::vector<uint32_t> availableStreamFormats;
ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, availableStreamFormats.reserve(streamConfigurations_.size());
ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, std::transform(streamConfigurations_.begin(), streamConfigurations_.end(),
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, std::back_inserter(availableStreamFormats),
}; [](const auto &entry) { return entry.androidScalerCode; });
staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_FORMATS, staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_FORMATS,
availableStreamFormats.data(), availableStreamFormats.data(),
availableStreamFormats.size()); availableStreamFormats.size());
std::vector<uint32_t> availableStreamConfigurations = { std::vector<uint32_t> availableStreamConfigurations;
ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, 2560, 1920, availableStreamConfigurations.reserve(streamConfigurations_.size() * 4);
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, for (const auto &entry : streamConfigurations_) {
ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, 2560, 1920, availableStreamConfigurations.push_back(entry.androidScalerCode);
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, availableStreamConfigurations.push_back(entry.resolution.width);
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920, availableStreamConfigurations.push_back(entry.resolution.height);
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, availableStreamConfigurations.push_back(
}; ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT);
}
staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
availableStreamConfigurations.data(), availableStreamConfigurations.data(),
availableStreamConfigurations.size()); availableStreamConfigurations.size());
@ -682,11 +683,15 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
availableStallDurations.data(), availableStallDurations.data(),
availableStallDurations.size()); availableStallDurations.size());
std::vector<int64_t> minFrameDurations = { /* \todo Collect the minimum frame duration from the camera. */
ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, 2560, 1920, 33333333, std::vector<int64_t> minFrameDurations;
ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, 2560, 1920, 33333333, minFrameDurations.reserve(streamConfigurations_.size() * 4);
ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, 2560, 1920, 33333333, for (const auto &entry : streamConfigurations_) {
}; minFrameDurations.push_back(entry.androidScalerCode);
minFrameDurations.push_back(entry.resolution.width);
minFrameDurations.push_back(entry.resolution.height);
minFrameDurations.push_back(33333333);
}
staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS, staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
minFrameDurations.data(), minFrameDurations.data(),
minFrameDurations.size()); minFrameDurations.size());