Camera3: Change metadata reporting to framework
Populate the metadata buffer with only the valid entries
while reporting it to framework.
Bug: 10620937
Change-Id: I4450ea634da1a0c1be515ce0760cbbdfc37c294c
Signed-off-by: Iliyan Malchev <malchev@google.com>
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 13e9feb..14ce48b 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -1543,260 +1543,334 @@
camMetadata.update(ANDROID_SENSOR_TIMESTAMP, ×tamp, 1);
camMetadata.update(ANDROID_REQUEST_ID, &request_id, 1);
- /*CAM_INTF_META_HISTOGRAM - TODO*/
- /*cam_hist_stats_t *histogram =
- (cam_hist_stats_t *)POINTER_OF(CAM_INTF_META_HISTOGRAM,
- metadata);*/
+ uint8_t curr_entry = GET_FIRST_PARAM_ID(metadata);
+ uint8_t next_entry;
+ while (curr_entry != CAM_INTF_PARM_MAX) {
+ ALOGV("%s: META_DEBUG: cur_entry is %d", __func__, curr_entry);
+ switch (curr_entry) {
+ case CAM_INTF_META_FACE_DETECTION:{
+ cam_face_detection_data_t *faceDetectionInfo =
+ (cam_face_detection_data_t *)POINTER_OF(CAM_INTF_META_FACE_DETECTION, metadata);
+ uint8_t numFaces = faceDetectionInfo->num_faces_detected;
+ int32_t faceIds[numFaces];
+ uint8_t faceScores[numFaces];
+ int32_t faceRectangles[numFaces * 4];
+ int32_t faceLandmarks[numFaces * 6];
+ int j = 0, k = 0;
+ for (int i = 0; i < numFaces; i++) {
+ faceIds[i] = faceDetectionInfo->faces[i].face_id;
+ faceScores[i] = faceDetectionInfo->faces[i].score;
+ convertToRegions(faceDetectionInfo->faces[i].face_boundary,
+ faceRectangles+j, -1);
+ convertLandmarks(faceDetectionInfo->faces[i], faceLandmarks+k);
+ j+= 4;
+ k+= 6;
+ }
+ if (numFaces > 0) {
+ camMetadata.update(ANDROID_STATISTICS_FACE_IDS, faceIds, numFaces);
+ camMetadata.update(ANDROID_STATISTICS_FACE_SCORES, faceScores, numFaces);
+ camMetadata.update(ANDROID_STATISTICS_FACE_RECTANGLES,
+ faceRectangles, numFaces*4);
+ camMetadata.update(ANDROID_STATISTICS_FACE_LANDMARKS,
+ faceLandmarks, numFaces*6);
+ }
+ break;
+ }
+ case CAM_INTF_META_COLOR_CORRECT_MODE:{
+ uint8_t *color_correct_mode =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_COLOR_CORRECT_MODE, metadata);
+ camMetadata.update(ANDROID_COLOR_CORRECTION_MODE, color_correct_mode, 1);
+ break;
+ }
+ case CAM_INTF_META_AEC_PRECAPTURE_ID: {
+ int32_t *ae_precapture_id =
+ (int32_t *)POINTER_OF(CAM_INTF_META_AEC_PRECAPTURE_ID, metadata);
+ camMetadata.update(ANDROID_CONTROL_AE_PRECAPTURE_ID, ae_precapture_id, 1);
+ break;
+ }
+ case CAM_INTF_META_AEC_ROI: {
+ cam_area_t *hAeRegions =
+ (cam_area_t *)POINTER_OF(CAM_INTF_META_AEC_ROI, metadata);
+ int32_t aeRegions[5];
+ convertToRegions(hAeRegions->rect, aeRegions, hAeRegions->weight);
+ camMetadata.update(ANDROID_CONTROL_AE_REGIONS, aeRegions, 5);
+ break;
+ }
+ case CAM_INTF_META_AEC_STATE:{
+ uint8_t *ae_state =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_AEC_STATE, metadata);
+ camMetadata.update(ANDROID_CONTROL_AE_STATE, ae_state, 1);
+ break;
+ }
+ case CAM_INTF_PARM_FOCUS_MODE:{
+ uint8_t *focusMode =
+ (uint8_t *)POINTER_OF(CAM_INTF_PARM_FOCUS_MODE, metadata);
+ camMetadata.update(ANDROID_CONTROL_AF_MODE, focusMode, 1);
+ break;
+ }
+ case CAM_INTF_META_AF_ROI:{
+ /*af regions*/
+ cam_area_t *hAfRegions =
+ (cam_area_t *)POINTER_OF(CAM_INTF_META_AF_ROI, metadata);
+ int32_t afRegions[5];
+ convertToRegions(hAfRegions->rect, afRegions, hAfRegions->weight);
+ camMetadata.update(ANDROID_CONTROL_AF_REGIONS, afRegions, 5);
+ break;
+ }
+ case CAM_INTF_META_AF_STATE: {
+ uint8_t *afState = (uint8_t *)POINTER_OF(CAM_INTF_META_AF_STATE, metadata);
+ camMetadata.update(ANDROID_CONTROL_AF_STATE, afState, 1);
+ break;
+ }
+ case CAM_INTF_META_AF_TRIGGER_ID: {
+ int32_t *afTriggerId =
+ (int32_t *)POINTER_OF(CAM_INTF_META_AF_TRIGGER_ID, metadata);
+ camMetadata.update(ANDROID_CONTROL_AF_TRIGGER_ID, afTriggerId, 1);
+ break;
+ }
+ case CAM_INTF_PARM_WHITE_BALANCE: {
+ uint8_t *whiteBalance =
+ (uint8_t *)POINTER_OF(CAM_INTF_PARM_WHITE_BALANCE, metadata);
+ camMetadata.update(ANDROID_CONTROL_AWB_MODE, whiteBalance, 1);
+ break;
+ }
+ case CAM_INTF_META_AWB_REGIONS: {
+ /*awb regions*/
+ cam_area_t *hAwbRegions =
+ (cam_area_t *)POINTER_OF(CAM_INTF_META_AWB_REGIONS, metadata);
+ int32_t awbRegions[5];
+ convertToRegions(hAwbRegions->rect, awbRegions, hAwbRegions->weight);
+ camMetadata.update(ANDROID_CONTROL_AWB_REGIONS, awbRegions, 5);
+ break;
+ }
+ case CAM_INTF_META_AWB_STATE: {
+ uint8_t *whiteBalanceState =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_AWB_STATE, metadata);
+ camMetadata.update(ANDROID_CONTROL_AWB_STATE, whiteBalanceState, 1);
+ break;
+ }
+ case CAM_INTF_META_MODE: {
+ uint8_t *mode = (uint8_t *)POINTER_OF(CAM_INTF_META_MODE, metadata);
+ camMetadata.update(ANDROID_CONTROL_MODE, mode, 1);
+ break;
+ }
+ case CAM_INTF_META_EDGE_MODE: {
+ uint8_t *edgeMode = (uint8_t *)POINTER_OF(CAM_INTF_META_EDGE_MODE, metadata);
+ camMetadata.update(ANDROID_EDGE_MODE, edgeMode, 1);
+ break;
+ }
+ case CAM_INTF_META_FLASH_POWER: {
+ uint8_t *flashPower =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_FLASH_POWER, metadata);
+ camMetadata.update(ANDROID_FLASH_FIRING_POWER, flashPower, 1);
+ break;
+ }
+ case CAM_INTF_META_FLASH_FIRING_TIME: {
+ int64_t *flashFiringTime =
+ (int64_t *)POINTER_OF(CAM_INTF_META_FLASH_FIRING_TIME, metadata);
+ camMetadata.update(ANDROID_FLASH_FIRING_TIME, flashFiringTime, 1);
+ break;
+ }
+ case CAM_INTF_META_FLASH_STATE: {
+ uint8_t *flashState =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_FLASH_STATE, metadata);
+ camMetadata.update(ANDROID_FLASH_STATE, flashState, 1);
+ break;
+ }
+ case CAM_INTF_META_HOTPIXEL_MODE: {
+ uint8_t *hotPixelMode =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_HOTPIXEL_MODE, metadata);
+ camMetadata.update(ANDROID_HOT_PIXEL_MODE, hotPixelMode, 1);
+ break;
+ }
+ case CAM_INTF_META_LENS_APERTURE:{
+ float *lensAperture =
+ (float *)POINTER_OF(CAM_INTF_META_LENS_APERTURE, metadata);
+ camMetadata.update(ANDROID_LENS_APERTURE , lensAperture, 1);
+ break;
+ }
+ case CAM_INTF_META_LENS_FILTERDENSITY: {
+ float *filterDensity =
+ (float *)POINTER_OF(CAM_INTF_META_LENS_FILTERDENSITY, metadata);
+ camMetadata.update(ANDROID_LENS_FILTER_DENSITY , filterDensity, 1);
+ break;
+ }
+ case CAM_INTF_META_LENS_FOCAL_LENGTH:{
+ float *focalLength =
+ (float *)POINTER_OF(CAM_INTF_META_LENS_FOCAL_LENGTH, metadata);
+ camMetadata.update(ANDROID_LENS_FOCAL_LENGTH, focalLength, 1);
+ break;
+ }
+ case CAM_INTF_META_LENS_FOCUS_DISTANCE: {
+ float *focusDistance =
+ (float *)POINTER_OF(CAM_INTF_META_LENS_FOCUS_DISTANCE, metadata);
+ camMetadata.update(ANDROID_LENS_FOCUS_DISTANCE , focusDistance, 1);
+ break;
+ }
+ case CAM_INTF_META_LENS_FOCUS_RANGE: {
+ float *focusRange =
+ (float *)POINTER_OF(CAM_INTF_META_LENS_FOCUS_RANGE, metadata);
+ camMetadata.update(ANDROID_LENS_FOCUS_RANGE , focusRange, 1);
+ }
+ case CAM_INTF_META_LENS_OPT_STAB_MODE: {
+ uint8_t *opticalStab =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_LENS_OPT_STAB_MODE, metadata);
+ camMetadata.update(ANDROID_LENS_OPTICAL_STABILIZATION_MODE ,opticalStab, 1);
+ }
+ case CAM_INTF_META_NOISE_REDUCTION_MODE: {
+ uint8_t *noiseRedMode =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_NOISE_REDUCTION_MODE, metadata);
+ camMetadata.update(ANDROID_NOISE_REDUCTION_MODE , noiseRedMode, 1);
+ break;
+ }
+ case CAM_INTF_META_SCALER_CROP_REGION: {
+ cam_crop_region_t *hScalerCropRegion =(cam_crop_region_t *)
+ POINTER_OF(CAM_INTF_META_SCALER_CROP_REGION, metadata);
+ int32_t scalerCropRegion[4];
+ scalerCropRegion[0] = hScalerCropRegion->left;
+ scalerCropRegion[1] = hScalerCropRegion->top;
+ scalerCropRegion[2] = hScalerCropRegion->width;
+ scalerCropRegion[3] = hScalerCropRegion->height;
+ camMetadata.update(ANDROID_SCALER_CROP_REGION, scalerCropRegion, 4);
+ break;
+ }
+ case CAM_INTF_META_SENSOR_EXPOSURE_TIME:{
+ int64_t *sensorExpTime =
+ (int64_t *)POINTER_OF(CAM_INTF_META_SENSOR_EXPOSURE_TIME, metadata);
+ mMetadataResponse.exposure_time = *sensorExpTime;
+ ALOGV("%s: sensorExpTime = %lld", __func__, *sensorExpTime);
+ camMetadata.update(ANDROID_SENSOR_EXPOSURE_TIME , sensorExpTime, 1);
+ break;
+ }
+ case CAM_INTF_META_SENSOR_FRAME_DURATION:{
+ int64_t *sensorFameDuration =
+ (int64_t *)POINTER_OF(CAM_INTF_META_SENSOR_FRAME_DURATION, metadata);
+ ALOGV("%s: sensorFameDuration = %lld", __func__, *sensorFameDuration);
+ camMetadata.update(ANDROID_SENSOR_FRAME_DURATION, sensorFameDuration, 1);
+ break;
+ }
+ case CAM_INTF_META_SENSOR_SENSITIVITY:{
+ int32_t *sensorSensitivity =
+ (int32_t *)POINTER_OF(CAM_INTF_META_SENSOR_SENSITIVITY, metadata);
+ ALOGV("%s: sensorSensitivity = %d", __func__, *sensorSensitivity);
+ mMetadataResponse.iso_speed = *sensorSensitivity;
+ camMetadata.update(ANDROID_SENSOR_SENSITIVITY, sensorSensitivity, 1);
+ break;
+ }
+ case CAM_INTF_META_SHADING_MODE: {
+ uint8_t *shadingMode =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_SHADING_MODE, metadata);
+ camMetadata.update(ANDROID_SHADING_MODE, shadingMode, 1);
+ break;
+ }
+ case CAM_INTF_META_STATS_FACEDETECT_MODE: {
+ uint8_t *faceDetectMode =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_STATS_FACEDETECT_MODE, metadata);
+ uint8_t fwk_faceDetectMode = lookupFwkName(FACEDETECT_MODES_MAP,
+ sizeof(FACEDETECT_MODES_MAP)/sizeof(FACEDETECT_MODES_MAP[0]),
+ *faceDetectMode);
+ camMetadata.update(ANDROID_STATISTICS_FACE_DETECT_MODE, &fwk_faceDetectMode, 1);
+ break;
+ }
+ case CAM_INTF_META_STATS_HISTOGRAM_MODE: {
+ uint8_t *histogramMode =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_STATS_HISTOGRAM_MODE, metadata);
+ camMetadata.update(ANDROID_STATISTICS_HISTOGRAM_MODE, histogramMode, 1);
+ break;
+ }
+ case CAM_INTF_META_STATS_SHARPNESS_MAP_MODE:{
+ uint8_t *sharpnessMapMode =
+ (uint8_t *)POINTER_OF(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, metadata);
+ camMetadata.update(ANDROID_STATISTICS_SHARPNESS_MAP_MODE,
+ sharpnessMapMode, 1);
+ break;
+ }
+ case CAM_INTF_META_STATS_SHARPNESS_MAP:{
+ cam_sharpness_map_t *sharpnessMap = (cam_sharpness_map_t *)
+ POINTER_OF(CAM_INTF_META_STATS_SHARPNESS_MAP, metadata);
+ camMetadata.update(ANDROID_STATISTICS_SHARPNESS_MAP,
+ (int32_t*)sharpnessMap->sharpness,
+ CAM_MAX_MAP_WIDTH*CAM_MAX_MAP_HEIGHT);
+ break;
+ }
+ case CAM_INTF_META_LENS_SHADING_MAP: {
+ cam_lens_shading_map_t *lensShadingMap = (cam_lens_shading_map_t *)
+ POINTER_OF(CAM_INTF_META_LENS_SHADING_MAP, metadata);
+ int map_height = gCamCapability[mCameraId]->lens_shading_map_size.height;
+ int map_width = gCamCapability[mCameraId]->lens_shading_map_size.width;
+ camMetadata.update(ANDROID_STATISTICS_LENS_SHADING_MAP,
+ (float*)lensShadingMap->lens_shading,
+ 4*map_width*map_height);
+ break;
+ }
+ case CAM_INTF_META_TONEMAP_CURVES:{
+ //Populate CAM_INTF_META_TONEMAP_CURVES
+ /* ch0 = G, ch 1 = B, ch 2 = R*/
+ cam_rgb_tonemap_curves *tonemap = (cam_rgb_tonemap_curves *)
+ POINTER_OF(CAM_INTF_META_TONEMAP_CURVES, metadata);
+ camMetadata.update(ANDROID_TONEMAP_CURVE_GREEN,
+ (float*)tonemap->curves[0].tonemap_points,
+ tonemap->tonemap_points_cnt * 2);
- /*face detection*/
- cam_face_detection_data_t *faceDetectionInfo =(cam_face_detection_data_t *)
- POINTER_OF(CAM_INTF_META_FACE_DETECTION, metadata);
- uint8_t numFaces = faceDetectionInfo->num_faces_detected;
- int32_t faceIds[numFaces];
- uint8_t faceScores[numFaces];
- int32_t faceRectangles[numFaces * 4];
- int32_t faceLandmarks[numFaces * 6];
- int j = 0, k = 0;
- for (int i = 0; i < numFaces; i++) {
- faceIds[i] = faceDetectionInfo->faces[i].face_id;
- faceScores[i] = faceDetectionInfo->faces[i].score;
- convertToRegions(faceDetectionInfo->faces[i].face_boundary,
- faceRectangles+j, -1);
- convertLandmarks(faceDetectionInfo->faces[i], faceLandmarks+k);
- j+= 4;
- k+= 6;
- }
- if (numFaces > 0) {
- camMetadata.update(ANDROID_STATISTICS_FACE_IDS, faceIds, numFaces);
- camMetadata.update(ANDROID_STATISTICS_FACE_SCORES, faceScores, numFaces);
- camMetadata.update(ANDROID_STATISTICS_FACE_RECTANGLES,
- faceRectangles, numFaces*4);
- camMetadata.update(ANDROID_STATISTICS_FACE_LANDMARKS,
- faceLandmarks, numFaces*6);
- }
+ camMetadata.update(ANDROID_TONEMAP_CURVE_BLUE,
+ (float*)tonemap->curves[1].tonemap_points,
+ tonemap->tonemap_points_cnt * 2);
- uint8_t *color_correct_mode =
- (uint8_t *)POINTER_OF(CAM_INTF_META_COLOR_CORRECT_MODE, metadata);
- camMetadata.update(ANDROID_COLOR_CORRECTION_MODE, color_correct_mode, 1);
-
- int32_t *ae_precapture_id =
- (int32_t *)POINTER_OF(CAM_INTF_META_AEC_PRECAPTURE_ID, metadata);
- camMetadata.update(ANDROID_CONTROL_AE_PRECAPTURE_ID, ae_precapture_id, 1);
-
- /*aec regions*/
- cam_area_t *hAeRegions =
- (cam_area_t *)POINTER_OF(CAM_INTF_META_AEC_ROI, metadata);
- int32_t aeRegions[5];
- convertToRegions(hAeRegions->rect, aeRegions, hAeRegions->weight);
- camMetadata.update(ANDROID_CONTROL_AE_REGIONS, aeRegions, 5);
-
- uint8_t *ae_state =
- (uint8_t *)POINTER_OF(CAM_INTF_META_AEC_STATE, metadata);
- camMetadata.update(ANDROID_CONTROL_AE_STATE, ae_state, 1);
-
- uint8_t *focusMode =
- (uint8_t *)POINTER_OF(CAM_INTF_PARM_FOCUS_MODE, metadata);
- uint8_t fwkAfMode = lookupFwkName(FOCUS_MODES_MAP,
- sizeof(FOCUS_MODES_MAP)/sizeof(FOCUS_MODES_MAP[0]), *focusMode);
- camMetadata.update(ANDROID_CONTROL_AF_MODE, &fwkAfMode, 1);
-
- /*af regions*/
- cam_area_t *hAfRegions =
- (cam_area_t *)POINTER_OF(CAM_INTF_META_AF_ROI, metadata);
- int32_t afRegions[5];
- convertToRegions(hAfRegions->rect, afRegions, hAfRegions->weight);
- camMetadata.update(ANDROID_CONTROL_AF_REGIONS, afRegions, 5);
-
- uint8_t *afState = (uint8_t *)POINTER_OF(CAM_INTF_META_AF_STATE, metadata);
- camMetadata.update(ANDROID_CONTROL_AF_STATE, afState, 1);
-
- int32_t *afTriggerId =
- (int32_t *)POINTER_OF(CAM_INTF_META_AF_TRIGGER_ID, metadata);
- camMetadata.update(ANDROID_CONTROL_AF_TRIGGER_ID, afTriggerId, 1);
-
- uint8_t *whiteBalance =
- (uint8_t *)POINTER_OF(CAM_INTF_PARM_WHITE_BALANCE, metadata);
- uint8_t fwkWhiteBalanceMode = lookupFwkName(WHITE_BALANCE_MODES_MAP,
- sizeof(WHITE_BALANCE_MODES_MAP)/sizeof(WHITE_BALANCE_MODES_MAP[0]),
- *whiteBalance);
- camMetadata.update(ANDROID_CONTROL_AWB_MODE, &fwkWhiteBalanceMode, 1);
-
- /*awb regions*/
- cam_area_t *hAwbRegions =
- (cam_area_t *)POINTER_OF(CAM_INTF_META_AWB_REGIONS, metadata);
- int32_t awbRegions[5];
- convertToRegions(hAwbRegions->rect, awbRegions, hAwbRegions->weight);
- camMetadata.update(ANDROID_CONTROL_AWB_REGIONS, awbRegions, 5);
-
- uint8_t *whiteBalanceState =
- (uint8_t *)POINTER_OF(CAM_INTF_META_AWB_STATE, metadata);
- camMetadata.update(ANDROID_CONTROL_AWB_STATE, whiteBalanceState, 1);
-
- uint8_t *mode = (uint8_t *)POINTER_OF(CAM_INTF_META_MODE, metadata);
- camMetadata.update(ANDROID_CONTROL_MODE, mode, 1);
-
- uint8_t *edgeMode = (uint8_t *)POINTER_OF(CAM_INTF_META_EDGE_MODE, metadata);
- camMetadata.update(ANDROID_EDGE_MODE, edgeMode, 1);
-
- uint8_t *flashPower =
- (uint8_t *)POINTER_OF(CAM_INTF_META_FLASH_POWER, metadata);
- camMetadata.update(ANDROID_FLASH_FIRING_POWER, flashPower, 1);
-
- int64_t *flashFiringTime =
- (int64_t *)POINTER_OF(CAM_INTF_META_FLASH_FIRING_TIME, metadata);
- camMetadata.update(ANDROID_FLASH_FIRING_TIME, flashFiringTime, 1);
-
- /*int32_t *ledMode =
- (int32_t *)POINTER_OF(CAM_INTF_PARM_LED_MODE, metadata);
- camMetadata.update(ANDROID_FLASH_FIRING_TIME, ledMode, 1);*/
-
- uint8_t *flashState =
- (uint8_t *)POINTER_OF(CAM_INTF_META_FLASH_STATE, metadata);
- camMetadata.update(ANDROID_FLASH_STATE, flashState, 1);
-
- uint8_t *hotPixelMode =
- (uint8_t *)POINTER_OF(CAM_INTF_META_HOTPIXEL_MODE, metadata);
- camMetadata.update(ANDROID_HOT_PIXEL_MODE, hotPixelMode, 1);
-
- float *lensAperture =
- (float *)POINTER_OF(CAM_INTF_META_LENS_APERTURE, metadata);
- camMetadata.update(ANDROID_LENS_APERTURE , lensAperture, 1);
-
- float *filterDensity =
- (float *)POINTER_OF(CAM_INTF_META_LENS_FILTERDENSITY, metadata);
- camMetadata.update(ANDROID_LENS_FILTER_DENSITY , filterDensity, 1);
-
- float *focalLength =
- (float *)POINTER_OF(CAM_INTF_META_LENS_FOCAL_LENGTH, metadata);
- camMetadata.update(ANDROID_LENS_FOCAL_LENGTH, focalLength, 1);
-
- float *focusDistance =
- (float *)POINTER_OF(CAM_INTF_META_LENS_FOCUS_DISTANCE, metadata);
- camMetadata.update(ANDROID_LENS_FOCUS_DISTANCE , focusDistance, 1);
-
- float *focusRange =
- (float *)POINTER_OF(CAM_INTF_META_LENS_FOCUS_RANGE, metadata);
- camMetadata.update(ANDROID_LENS_FOCUS_RANGE , focusRange, 1);
-
- uint8_t *opticalStab =
- (uint8_t *)POINTER_OF(CAM_INTF_META_LENS_OPT_STAB_MODE, metadata);
- camMetadata.update(ANDROID_LENS_OPTICAL_STABILIZATION_MODE ,opticalStab, 1);
-
- /*int32_t *focusState =
- (int32_t *)POINTER_OF(CAM_INTF_META_LENS_FOCUS_STATE, metadata);
- camMetadata.update(ANDROID_LENS_STATE , focusState, 1); //check */
-
- uint8_t *noiseRedMode =
- (uint8_t *)POINTER_OF(CAM_INTF_META_NOISE_REDUCTION_MODE, metadata);
- camMetadata.update(ANDROID_NOISE_REDUCTION_MODE , noiseRedMode, 1);
-
- /*CAM_INTF_META_SCALER_CROP_REGION - check size*/
-
- cam_crop_region_t *hScalerCropRegion =(cam_crop_region_t *)
- POINTER_OF(CAM_INTF_META_SCALER_CROP_REGION, metadata);
- int32_t scalerCropRegion[4];
- scalerCropRegion[0] = hScalerCropRegion->left;
- scalerCropRegion[1] = hScalerCropRegion->top;
- scalerCropRegion[2] = hScalerCropRegion->width;
- scalerCropRegion[3] = hScalerCropRegion->height;
- camMetadata.update(ANDROID_SCALER_CROP_REGION, scalerCropRegion, 4);
-
- int64_t *sensorExpTime =
- (int64_t *)POINTER_OF(CAM_INTF_META_SENSOR_EXPOSURE_TIME, metadata);
- mMetadataResponse.exposure_time = *sensorExpTime;
- ALOGV("%s: sensorExpTime = %lld", __func__, *sensorExpTime);
- camMetadata.update(ANDROID_SENSOR_EXPOSURE_TIME , sensorExpTime, 1);
-
- int64_t *sensorFameDuration =
- (int64_t *)POINTER_OF(CAM_INTF_META_SENSOR_FRAME_DURATION, metadata);
- ALOGV("%s: sensorFameDuration = %lld", __func__, *sensorFameDuration);
- camMetadata.update(ANDROID_SENSOR_FRAME_DURATION, sensorFameDuration, 1);
-
- int32_t *sensorSensitivity =
- (int32_t *)POINTER_OF(CAM_INTF_META_SENSOR_SENSITIVITY, metadata);
- ALOGV("%s: sensorSensitivity = %d", __func__, *sensorSensitivity);
- mMetadataResponse.iso_speed = *sensorSensitivity;
- camMetadata.update(ANDROID_SENSOR_SENSITIVITY, sensorSensitivity, 1);
-
- uint8_t *shadingMode =
- (uint8_t *)POINTER_OF(CAM_INTF_META_SHADING_MODE, metadata);
- camMetadata.update(ANDROID_SHADING_MODE, shadingMode, 1);
-
- uint8_t *faceDetectMode =
- (uint8_t *)POINTER_OF(CAM_INTF_META_STATS_FACEDETECT_MODE, metadata);
- uint8_t fwk_faceDetectMode = lookupFwkName(FACEDETECT_MODES_MAP,
- sizeof(FACEDETECT_MODES_MAP)/sizeof(FACEDETECT_MODES_MAP[0]),
- *faceDetectMode);
- camMetadata.update(ANDROID_STATISTICS_FACE_DETECT_MODE, &fwk_faceDetectMode, 1);
-
- uint8_t *histogramMode =
- (uint8_t *)POINTER_OF(CAM_INTF_META_STATS_HISTOGRAM_MODE, metadata);
- camMetadata.update(ANDROID_STATISTICS_HISTOGRAM_MODE, histogramMode, 1);
-
- uint8_t *sharpnessMapMode =
- (uint8_t *)POINTER_OF(CAM_INTF_META_STATS_SHARPNESS_MAP_MODE, metadata);
- camMetadata.update(ANDROID_STATISTICS_SHARPNESS_MAP_MODE,
- sharpnessMapMode, 1);
-
- /*CAM_INTF_META_STATS_SHARPNESS_MAP - check size*/
- cam_sharpness_map_t *sharpnessMap = (cam_sharpness_map_t *)
- POINTER_OF(CAM_INTF_META_STATS_SHARPNESS_MAP, metadata);
- camMetadata.update(ANDROID_STATISTICS_SHARPNESS_MAP,
- (int32_t*)sharpnessMap->sharpness,
- CAM_MAX_MAP_WIDTH*CAM_MAX_MAP_HEIGHT);
-
- cam_lens_shading_map_t *lensShadingMap = (cam_lens_shading_map_t *)
- POINTER_OF(CAM_INTF_META_LENS_SHADING_MAP, metadata);
- int map_height = gCamCapability[mCameraId]->lens_shading_map_size.height;
- int map_width = gCamCapability[mCameraId]->lens_shading_map_size.width;
- camMetadata.update(ANDROID_STATISTICS_LENS_SHADING_MAP,
- (float*)lensShadingMap->lens_shading,
- 4*map_width*map_height);
-
- //Populate CAM_INTF_META_TONEMAP_CURVES
- /* ch0 = G, ch 1 = B, ch 2 = R*/
- cam_rgb_tonemap_curves *tonemap = (cam_rgb_tonemap_curves *)
- POINTER_OF(CAM_INTF_META_TONEMAP_CURVES, metadata);
- camMetadata.update(ANDROID_TONEMAP_CURVE_GREEN,
- (float*)tonemap->curves[0].tonemap_points,
- tonemap->tonemap_points_cnt * 2);
-
- camMetadata.update(ANDROID_TONEMAP_CURVE_BLUE,
- (float*)tonemap->curves[1].tonemap_points,
- tonemap->tonemap_points_cnt * 2);
-
- camMetadata.update(ANDROID_TONEMAP_CURVE_RED,
- (float*)tonemap->curves[2].tonemap_points,
- tonemap->tonemap_points_cnt * 2);
-
- cam_color_correct_gains_t *colorCorrectionGains = (cam_color_correct_gains_t*)
- POINTER_OF(CAM_INTF_META_COLOR_CORRECT_GAINS, metadata);
- camMetadata.update(ANDROID_COLOR_CORRECTION_GAINS, colorCorrectionGains->gains, 4);
-
- cam_color_correct_matrix_t *colorCorrectionMatrix = (cam_color_correct_matrix_t*)
- POINTER_OF(CAM_INTF_META_COLOR_CORRECT_TRANSFORM, metadata);
- camMetadata.update(ANDROID_COLOR_CORRECTION_TRANSFORM,
+ camMetadata.update(ANDROID_TONEMAP_CURVE_RED,
+ (float*)tonemap->curves[2].tonemap_points,
+ tonemap->tonemap_points_cnt * 2);
+ break;
+ }
+ case CAM_INTF_META_COLOR_CORRECT_GAINS:{
+ cam_color_correct_gains_t *colorCorrectionGains = (cam_color_correct_gains_t*)
+ POINTER_OF(CAM_INTF_META_COLOR_CORRECT_GAINS, metadata);
+ camMetadata.update(ANDROID_COLOR_CORRECTION_GAINS, colorCorrectionGains->gains, 4);
+ break;
+ }
+ case CAM_INTF_META_COLOR_CORRECT_TRANSFORM:{
+ cam_color_correct_matrix_t *colorCorrectionMatrix = (cam_color_correct_matrix_t*)
+ POINTER_OF(CAM_INTF_META_COLOR_CORRECT_TRANSFORM, metadata);
+ camMetadata.update(ANDROID_COLOR_CORRECTION_TRANSFORM,
(camera_metadata_rational_t*)colorCorrectionMatrix->transform_matrix, 3*3);
-
- cam_color_correct_gains_t *predColorCorrectionGains = (cam_color_correct_gains_t*)
- POINTER_OF(CAM_INTF_META_PRED_COLOR_CORRECT_GAINS, metadata);
- camMetadata.update(ANDROID_STATISTICS_PREDICTED_COLOR_GAINS,
+ break;
+ }
+ case CAM_INTF_META_PRED_COLOR_CORRECT_GAINS:{
+ cam_color_correct_gains_t *predColorCorrectionGains = (cam_color_correct_gains_t*)
+ POINTER_OF(CAM_INTF_META_PRED_COLOR_CORRECT_GAINS, metadata);
+ camMetadata.update(ANDROID_STATISTICS_PREDICTED_COLOR_GAINS,
predColorCorrectionGains->gains, 4);
+ break;
+ }
+ case CAM_INTF_META_PRED_COLOR_CORRECT_TRANSFORM:{
+ cam_color_correct_matrix_t *predColorCorrectionMatrix = (cam_color_correct_matrix_t*)
+ POINTER_OF(CAM_INTF_META_PRED_COLOR_CORRECT_TRANSFORM, metadata);
+ camMetadata.update(ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM,
+ (camera_metadata_rational_t*)predColorCorrectionMatrix->transform_matrix, 3*3);
+ break;
- cam_color_correct_matrix_t *predColorCorrectionMatrix = (cam_color_correct_matrix_t*)
- POINTER_OF(CAM_INTF_META_PRED_COLOR_CORRECT_TRANSFORM, metadata);
- camMetadata.update(ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM,
- (camera_metadata_rational_t*)predColorCorrectionMatrix->transform_matrix, 3*3);
-
- uint8_t *blackLevelLock = (uint8_t*)
- POINTER_OF(CAM_INTF_META_BLACK_LEVEL_LOCK, metadata);
- camMetadata.update(ANDROID_BLACK_LEVEL_LOCK, blackLevelLock, 1);
-
- uint8_t *sceneFlicker = (uint8_t*)
- POINTER_OF(CAM_INTF_META_SCENE_FLICKER, metadata);
- camMetadata.update(ANDROID_STATISTICS_SCENE_FLICKER, sceneFlicker, 1);
-
-
+ }
+ case CAM_INTF_META_BLACK_LEVEL_LOCK:{
+ uint8_t *blackLevelLock = (uint8_t*)
+ POINTER_OF(CAM_INTF_META_BLACK_LEVEL_LOCK, metadata);
+ camMetadata.update(ANDROID_BLACK_LEVEL_LOCK, blackLevelLock, 1);
+ break;
+ }
+ case CAM_INTF_META_SCENE_FLICKER:{
+ uint8_t *sceneFlicker = (uint8_t*)
+ POINTER_OF(CAM_INTF_META_SCENE_FLICKER, metadata);
+ camMetadata.update(ANDROID_STATISTICS_SCENE_FLICKER, sceneFlicker, 1);
+ break;
+ }
+ case CAM_INTF_PARM_LED_MODE:
+ break;
+ default:
+ ALOGV("%s: This is not a valid metadata type to report to fwk, %d",
+ __func__, curr_entry);
+ break;
+ }
+ next_entry = GET_NEXT_PARAM_ID(curr_entry, metadata);
+ curr_entry = next_entry;
+ }
resultMetadata = camMetadata.release();
return resultMetadata;
}