diff --git a/videoencoder/VideoEncoderBase.cpp b/videoencoder/VideoEncoderBase.cpp
index a0f6c64..00fe25d 100644
--- a/videoencoder/VideoEncoderBase.cpp
+++ b/videoencoder/VideoEncoderBase.cpp
@@ -41,7 +41,7 @@
     ,mSliceSizeOverflow(false)
     ,mCurOutputTask(NULL)
     ,mOutCodedBuffer(0)
-    ,mCodedBufferMapped(false)
+    ,mOutCodedBufferPtr(NULL)
     ,mCurSegment(NULL)
     ,mOffsetInSeg(0)
     ,mTotalSize(0)
@@ -478,23 +478,25 @@
 
     //sync/query/wait task if not completed
     if (mCurOutputTask->completed == false) {
-        uint8_t *buf = NULL;
         VASurfaceStatus vaSurfaceStatus;
 
         if (timeout == FUNC_BLOCK) {
             //block mode, direct sync surface to output data
 
-            LOG_I ("block mode, vaSyncSurface ID = 0x%08x\n", mCurOutputTask->enc_surface);
-            vaStatus = vaSyncSurface(mVADisplay, mCurOutputTask->enc_surface);
-            CHECK_VA_STATUS_GOTO_CLEANUP("vaSyncSurface");
-
             mOutCodedBuffer = mCurOutputTask->coded_buffer;
 
             // Check frame skip
             // Need encoding to be completed before calling query surface below to
             // get the right skip frame flag for current frame
             // It is a requirement of video driver
-            vaSyncSurface(mVADisplay, mCurOutputTask->enc_surface);
+            // vaSyncSurface syncs the wrong frame when rendering the same surface multiple times,
+            // so use vaMapbuffer instead
+            LOG_I ("block mode, vaMapBuffer ID = 0x%08x\n", mOutCodedBuffer);
+            if (mOutCodedBufferPtr == NULL) {
+                vaStatus = vaMapBuffer (mVADisplay, mOutCodedBuffer, (void **)&mOutCodedBufferPtr);
+                CHECK_VA_STATUS_GOTO_CLEANUP("vaMapBuffer");
+                CHECK_NULL_RETURN_IFFAIL(mOutCodedBufferPtr);
+            }
 
             vaStatus = vaQuerySurfaceStatus(mVADisplay, mCurOutputTask->enc_surface,  &vaSurfaceStatus);
             CHECK_VA_STATUS_RETURN("vaQuerySurfaceStatus");
@@ -557,9 +559,9 @@
         useLocalBuffer = false;
     }
 
-    if (mCodedBufferMapped) {
+    if (mOutCodedBufferPtr != NULL) {
         vaStatus = vaUnmapBuffer(mVADisplay, mOutCodedBuffer);
-        mCodedBufferMapped = false;
+        mOutCodedBufferPtr = NULL;
         mCurSegment = NULL;
     }
 
@@ -643,7 +645,6 @@
     mSliceSizeOverflow = false;
     mCurOutputTask= NULL;
     mOutCodedBuffer = 0;
-    mCodedBufferMapped = false;
     mCurSegment = NULL;
     mOffsetInSeg =0;
     mTotalSize = 0;
@@ -661,23 +662,24 @@
     VAStatus vaStatus = VA_STATUS_SUCCESS;
     VACodedBufferSegment *vaCodedSeg = NULL;
     uint32_t status = 0;
-    uint8_t *buf = NULL;
 
     LOG_V( "begin\n");
     // Won't check parameters here as the caller already checked them
     // mCurSegment is NULL means it is first time to be here after finishing encoding a frame
-    if (mCurSegment == NULL && !mCodedBufferMapped) {
-        LOG_I ("Coded Buffer ID been mapped = 0x%08x\n", mOutCodedBuffer);
-        vaStatus = vaMapBuffer (mVADisplay, mOutCodedBuffer, (void **)&buf);
-        CHECK_VA_STATUS_RETURN("vaMapBuffer");
-        CHECK_NULL_RETURN_IFFAIL(buf);
+    if (mCurSegment == NULL) {
+        if (mOutCodedBufferPtr == NULL) {
+            vaStatus = vaMapBuffer (mVADisplay, mOutCodedBuffer, (void **)&mOutCodedBufferPtr);
+            CHECK_VA_STATUS_RETURN("vaMapBuffer");
+            CHECK_NULL_RETURN_IFFAIL(mOutCodedBufferPtr);
+        }
 
-        mCodedBufferMapped = true;
+        LOG_I ("Coded Buffer ID been mapped = 0x%08x\n", mOutCodedBuffer);
+
         mTotalSize = 0;
         mOffsetInSeg = 0;
         mTotalSizeCopied = 0;
-        vaCodedSeg = (VACodedBufferSegment *)buf;
-        mCurSegment = (VACodedBufferSegment *)buf;
+        vaCodedSeg = (VACodedBufferSegment *)mOutCodedBufferPtr;
+        mCurSegment = (VACodedBufferSegment *)mOutCodedBufferPtr;
 
         while (1) {
 
@@ -759,10 +761,10 @@
     VAStatus vaStatus = VA_STATUS_SUCCESS;
 
     //mCurSegment is NULL means all data has been copied out
-    if (mCurSegment == NULL && mCodedBufferMapped) {
+    if (mCurSegment == NULL && mOutCodedBufferPtr) {
         vaStatus = vaUnmapBuffer(mVADisplay, mOutCodedBuffer);
         CHECK_VA_STATUS_RETURN("vaUnmapBuffer");
-        mCodedBufferMapped = false;
+        mOutCodedBufferPtr = NULL;
         mTotalSize = 0;
         mOffsetInSeg = 0;
         mTotalSizeCopied = 0;
diff --git a/videoencoder/VideoEncoderBase.h b/videoencoder/VideoEncoderBase.h
index f4e58e0..5bd7711 100644
--- a/videoencoder/VideoEncoderBase.h
+++ b/videoencoder/VideoEncoderBase.h
@@ -151,6 +151,7 @@
     //Current outputting CodedBuffer status
     VABufferID mOutCodedBuffer;
     bool mCodedBufferMapped;
+    uint8_t *mOutCodedBufferPtr;
     VACodedBufferSegment *mCurSegment;
     uint32_t mOffsetInSeg;
     uint32_t mTotalSize;
