Camera: Add support for Neutral point DNG metadata

Change-Id: Ie403ba62afb3cb58ca5fa2cac541cd602123d0da
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index d7229ff..cfff7f3 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -2373,6 +2373,15 @@
                  privateData, MAX_METADATA_PAYLOAD_SIZE);
              break;
           }
+
+          case CAM_INTF_META_NEUTRAL_COL_POINT:{
+             cam_neutral_col_point_t *neuColPoint = (cam_neutral_col_point_t*)
+                 POINTER_OF(CAM_INTF_META_NEUTRAL_COL_POINT, metadata);
+             camMetadata.update(ANDROID_SENSOR_NEUTRAL_COLOR_POINT,
+                     (camera_metadata_rational_t*)neuColPoint->neutral_col_point, 3);
+             break;
+          }
+
           default:
              ALOGV("%s: This is not a valid metadata type to report to fwk, %d",
                    __func__, curr_entry);
diff --git a/camera/QCamera2/stack/common/cam_intf.h b/camera/QCamera2/stack/common/cam_intf.h
index 8595b37..36f59c7 100644
--- a/camera/QCamera2/stack/common/cam_intf.h
+++ b/camera/QCamera2/stack/common/cam_intf.h
@@ -518,6 +518,7 @@
     INCLUDE(CAM_INTF_META_TEST_PATTERN_DATA,            cam_test_pattern_data_t,     1);
     INCLUDE(CAM_INTF_META_OTP_WB_GRGB,                  float,                       1);
     INCLUDE(CAM_INTF_META_PROFILE_TONE_CURVE,           cam_profile_tone_curve,      1);
+    INCLUDE(CAM_INTF_META_NEUTRAL_COL_POINT,            cam_neutral_col_point_t,     1);
     INCLUDE(CAM_INTF_META_PRIVATE_DATA,                 char,                        MAX_METADATA_PAYLOAD_SIZE);
 } metadata_type_t;
 
diff --git a/camera/QCamera2/stack/common/cam_types.h b/camera/QCamera2/stack/common/cam_types.h
index e4a4b8e..d539e46 100644
--- a/camera/QCamera2/stack/common/cam_types.h
+++ b/camera/QCamera2/stack/common/cam_types.h
@@ -1087,6 +1087,7 @@
     CAM_INTF_META_OTP_WB_GRGB,
     /* DNG file support */
     CAM_INTF_META_PROFILE_TONE_CURVE,
+    CAM_INTF_META_NEUTRAL_COL_POINT,
 
     CAM_INTF_PARM_MAX
 } cam_intf_parm_type_t;
@@ -1170,6 +1171,10 @@
    cam_tonemap_curve_t curve;
 } cam_profile_tone_curve;
 
+typedef struct {
+    cam_rational_type_t neutral_col_point[3];
+} cam_neutral_col_point_t;
+
 typedef enum {
     OFF,
     FAST,