merge in klp-release history after reset to klp-dev
diff --git a/QCamera2/HAL/QCameraPostProc.h b/QCamera2/HAL/QCameraPostProc.h
index 230f6df..873e05e 100644
--- a/QCamera2/HAL/QCameraPostProc.h
+++ b/QCamera2/HAL/QCameraPostProc.h
@@ -75,7 +75,7 @@
     qcamera_release_data_t   release_data; // any data needs to be release after notify
 } qcamera_data_argm_t;
 
-#define MAX_EXIF_TABLE_ENTRIES 14
+#define MAX_EXIF_TABLE_ENTRIES 16
 class QCameraExif
 {
 public:
diff --git a/QCamera2/HAL3/QCamera3HWI.cpp b/QCamera2/HAL3/QCamera3HWI.cpp
index 1f06a67..b63ace4 100644
--- a/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/QCamera2/HAL3/QCamera3HWI.cpp
@@ -180,7 +180,8 @@
       mMinProcessedFrameDuration(0),
       mMinJpegFrameDuration(0),
       mMinRawFrameDuration(0),
-      m_pPowerModule(NULL)
+      m_pPowerModule(NULL),
+      mHdrHint(false)
 {
     mCameraDevice.common.tag = HARDWARE_DEVICE_TAG;
     mCameraDevice.common.version = CAMERA_DEVICE_API_VERSION_3_0;
@@ -380,6 +381,11 @@
     if (rc == NO_ERROR) {
         if (m_pPowerModule) {
             if (m_pPowerModule->powerHint) {
+                if(mHdrHint == true) {
+                    m_pPowerModule->powerHint(m_pPowerModule, POWER_HINT_VIDEO_ENCODE,
+                            (void *)"state=3");
+                    mHdrHint = false;
+                }
                 m_pPowerModule->powerHint(m_pPowerModule, POWER_HINT_VIDEO_ENCODE,
                         (void *)"state=0");
             }
@@ -471,6 +477,18 @@
         mMetadataChannel->stop();
     }
 
+#ifdef HAS_MULTIMEDIA_HINTS
+    if(mHdrHint == true) {
+        if (m_pPowerModule) {
+            if (m_pPowerModule->powerHint) {
+                m_pPowerModule->powerHint(m_pPowerModule, POWER_HINT_VIDEO_ENCODE,
+                        (void *)"state=3");
+                mHdrHint = false;
+            }
+        }
+    }
+#endif
+
     pthread_mutex_lock(&mMutex);
 
     camera3_stream_t *inputStream = NULL;
@@ -586,6 +604,15 @@
               break;
            case HAL_PIXEL_FORMAT_YCbCr_420_888:
               stream_config_info.type[i] = CAM_STREAM_TYPE_CALLBACK;
+#ifdef HAS_MULTIMEDIA_HINTS
+              if (m_pPowerModule) {
+                  if (m_pPowerModule->powerHint) {
+                      m_pPowerModule->powerHint(m_pPowerModule,
+                          POWER_HINT_VIDEO_ENCODE, (void *)"state=2");
+                      mHdrHint = true;
+                  }
+              }
+#endif
               break;
            case HAL_PIXEL_FORMAT_BLOB:
               stream_config_info.type[i] = CAM_STREAM_TYPE_NON_ZSL_SNAPSHOT;
diff --git a/QCamera2/HAL3/QCamera3HWI.h b/QCamera2/HAL3/QCamera3HWI.h
index 27717db..cc4cc61 100755
--- a/QCamera2/HAL3/QCamera3HWI.h
+++ b/QCamera2/HAL3/QCamera3HWI.h
@@ -246,6 +246,9 @@
 
     power_module_t *m_pPowerModule;   // power module
 
+#ifdef HAS_MULTIMEDIA_HINTS
+    bool mHdrHint;
+#endif
     static const QCameraMap EFFECT_MODES_MAP[];
     static const QCameraMap WHITE_BALANCE_MODES_MAP[];
     static const QCameraMap SCENE_MODES_MAP[];
diff --git a/QCamera2/HAL3/QCamera3PostProc.h b/QCamera2/HAL3/QCamera3PostProc.h
index b970c24..0b30295 100755
--- a/QCamera2/HAL3/QCamera3PostProc.h
+++ b/QCamera2/HAL3/QCamera3PostProc.h
@@ -71,7 +71,7 @@
     mm_jpeg_output_t out_data;         // ptr to jpeg output buf
 } qcamera_jpeg_evt_payload_t;
 
-#define MAX_EXIF_TABLE_ENTRIES 14
+#define MAX_EXIF_TABLE_ENTRIES 16
 class QCamera3Exif
 {
 public: