diff --git a/camera/QCameraHWI_Parm.cpp b/camera/QCameraHWI_Parm.cpp
index b926dd7..b506b1a 100644
--- a/camera/QCameraHWI_Parm.cpp
+++ b/camera/QCameraHWI_Parm.cpp
@@ -363,7 +363,6 @@
 static const str_map hdr_bracket[] = {
     { QCameraParameters::AE_BRACKET_HDR_OFF,HDR_BRACKETING_OFF},
     { QCameraParameters::AE_BRACKET_HDR,HDR_MODE },
-    { QCameraParameters::AE_BRACKET,EXP_BRACKETING_MODE }
 };
 
 typedef enum {
@@ -3043,6 +3042,7 @@
 
 status_t QCameraHardwareInterface::setAEBracket(const QCameraParameters& params)
 {
+    const char *str;
     if(!cam_config_is_parm_supported(mCameraId,MM_CAMERA_PARM_HDR) || (myMode & CAMERA_ZSL_MODE)) {
         ALOGV("Parameter HDR is not supported for this sensor/ ZSL mode");
 
@@ -3058,7 +3058,12 @@
         return NO_ERROR;
     }
 
-    const char *str = params.get(QCameraParameters::KEY_AE_BRACKET_HDR);
+    const char *str2 = params.get(QCameraParameters::KEY_SCENE_MODE);
+    if(!strcmp(str2, "hdr")) {
+        str="HDR";
+    }   else {
+        str = params.get(QCameraParameters::KEY_AE_BRACKET_HDR);
+    }
 
     if (str != NULL) {
         int value = attr_lookup(hdr_bracket,
diff --git a/camera/QCameraHWI_Still.cpp b/camera/QCameraHWI_Still.cpp
index e1aa098..d81605c 100644
--- a/camera/QCameraHWI_Still.cpp
+++ b/camera/QCameraHWI_Still.cpp
@@ -31,7 +31,6 @@
 
 #define THUMBNAIL_DEFAULT_WIDTH 512
 #define THUMBNAIL_DEFAULT_HEIGHT 384
-
 /* following code implement the still image capture & encoding logic of this class*/
 namespace android {
 
@@ -275,7 +274,8 @@
     camera_memory_t *encodedMem = NULL;
     camera_data_callback jpg_data_cb = NULL;
     bool fail_cb_flag = false;
-
+    if (mHalCamCtrl->mHdrMode == HDR_MODE)
+        hdrJpegCount++;
     //Mutex::Autolock l(&snapshotLock);
     mStopCallbackLock.lock( );
     if(!mActive && !isLiveSnapshot()) {
@@ -307,7 +307,6 @@
         free(mCurrentFrameEncoded);
         mCurrentFrameEncoded = NULL;
     }
-
     /* Before leaving check the jpeg queue. If it's not empty give the available
        frame for encoding*/
     if (!mSnapshotQueue.isEmpty()) {
@@ -319,6 +318,7 @@
           fail_cb_flag = true;
         }
     }  else if (mNumOfSnapshot == mNumOfRecievedJPEG )  { /* finished */
+      ALOGD("nusnap %d, mNumjpeg %d", mNumOfSnapshot, mNumOfRecievedJPEG);
       ALOGD("%s: Before omxJpegFinish", __func__);
       omxJpegFinish();
       ALOGD("%s: After omxJpegFinish", __func__);
@@ -357,6 +357,9 @@
         }
         memcpy(encodedMem->data, mHalCamCtrl->mJpegMemory.camera_memory[0]->data, mJpegOffset );
         mStopCallbackLock.unlock( );
+        if(mHalCamCtrl->mHdrMode == HDR_MODE && (hdrJpegCount%2) != 0)
+          return;
+
         if ((mActive || isLiveSnapshot()) && jpg_data_cb != NULL) {
             ALOGV("%s: Calling upperlayer callback to store JPEG image", __func__);
             jpg_data_cb (msg_type,encodedMem, 0, NULL,mHalCamCtrl->mCallbackCookie);
@@ -1268,6 +1271,10 @@
 
     ALOGD("%s: E", __func__);
 
+    if (mHalCamCtrl->mHdrMode == HDR_MODE) {
+        hdrRawCount = 0;
+        hdrJpegCount = 0;
+    }
     /* Take snapshot */
     ALOGD("%s: Call MM_CAMERA_OPS_SNAPSHOT", __func__);
     if (NO_ERROR != cam_ops_action(mCameraId,
@@ -1939,6 +1946,12 @@
         notifyShutter(&crop, FALSE);
         mHalCamCtrl->mShutterSoundPlayed = FALSE;
 
+        if(mHalCamCtrl->mHdrMode == HDR_MODE) {
+            if ((hdrRawCount % 3) != 2)
+                return NO_ERROR;
+            else
+                hdrRawCount++;
+        }
 
         if (rc != NO_ERROR)
         {
diff --git a/camera/QCameraStream.h b/camera/QCameraStream.h
index 5a1b277..acaa05e 100644
--- a/camera/QCameraStream.h
+++ b/camera/QCameraStream.h
@@ -385,6 +385,8 @@
 	bool                    mDropThumbnail;
 	int                     mJpegQuality;
     snap_hdr_record_t       mHdrInfo;
+    int hdrRawCount;
+    int hdrJpegCount;
 }; // QCameraStream_Snapshot
 
 
