summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2014-06-12 19:11:45 -0700
committerRuben Brunk <rubenbrunk@google.com>2014-06-12 19:11:45 -0700
commit152dbcf2e0d8a46691e22b102972540640f054ec (patch)
treebc453f55918bf568467a78f4021a0e063272096d /services
parent11cbb06b35cbcb488c7f39b71886ce379e57f867 (diff)
downloadframeworks_av-152dbcf2e0d8a46691e22b102972540640f054ec.zip
frameworks_av-152dbcf2e0d8a46691e22b102972540640f054ec.tar.gz
frameworks_av-152dbcf2e0d8a46691e22b102972540640f054ec.tar.bz2
camera2: Add jpeg sizes to legacy mode static characteristics.
Bug: 15116722 - Adds jpeg size mapping to available output formats. Change-Id: I73e46dd4309767ba41156d9ba03c4724bf234758
Diffstat (limited to 'services')
-rw-r--r--services/camera/libcameraservice/CameraService.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 9fd35e1..280478c 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -278,6 +278,7 @@ status_t CameraService::generateShimMetadata(int cameraId, /*out*/CameraMetadata
}
Vector<Size> sizes;
+ Vector<Size> jpegSizes;
Vector<int32_t> formats;
const char* supportedPreviewFormats;
{ // Scope for service lock
@@ -287,6 +288,8 @@ status_t CameraService::generateShimMetadata(int cameraId, /*out*/CameraMetadata
mShimParams[index].getSupportedPreviewSizes(/*out*/sizes);
mShimParams[index].getSupportedPreviewFormats(/*out*/formats);
+
+ mShimParams[index].getSupportedPictureSizes(/*out*/jpegSizes);
}
// Always include IMPLEMENTATION_DEFINED
@@ -295,21 +298,29 @@ status_t CameraService::generateShimMetadata(int cameraId, /*out*/CameraMetadata
const size_t INTS_PER_CONFIG = 4;
// Build available stream configurations metadata
- size_t streamConfigSize = sizes.size() * formats.size() * INTS_PER_CONFIG;
- int32_t streamConfigs[streamConfigSize];
- size_t configIndex = 0;
+ size_t streamConfigSize = (sizes.size() * formats.size() + jpegSizes.size()) * INTS_PER_CONFIG;
+
+ Vector<int32_t> streamConfigs;
+ streamConfigs.setCapacity(streamConfigSize);
+
for (size_t i = 0; i < formats.size(); ++i) {
for (size_t j = 0; j < sizes.size(); ++j) {
- streamConfigs[configIndex++] = formats[i];
- streamConfigs[configIndex++] = sizes[j].width;
- streamConfigs[configIndex++] = sizes[j].height;
- streamConfigs[configIndex++] =
- ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT;
+ streamConfigs.add(formats[i]);
+ streamConfigs.add(sizes[j].width);
+ streamConfigs.add(sizes[j].height);
+ streamConfigs.add(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT);
}
}
+ for (size_t i = 0; i < jpegSizes.size(); ++i) {
+ streamConfigs.add(HAL_PIXEL_FORMAT_BLOB);
+ streamConfigs.add(jpegSizes[i].width);
+ streamConfigs.add(jpegSizes[i].height);
+ streamConfigs.add(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT);
+ }
+
if ((ret = shimInfo.update(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
- streamConfigs, streamConfigSize)) != OK) {
+ streamConfigs.array(), streamConfigSize)) != OK) {
return ret;
}