diff --git a/system/codecs/omx/avcdec/GoldfishAVCDec.cpp b/system/codecs/omx/avcdec/GoldfishAVCDec.cpp
index 31470a5..2cde213 100644
--- a/system/codecs/omx/avcdec/GoldfishAVCDec.cpp
+++ b/system/codecs/omx/avcdec/GoldfishAVCDec.cpp
@@ -237,6 +237,21 @@
     }
 }
 
+void GoldfishAVCDec::copyImageData( OMX_BUFFERHEADERTYPE *outHeader, h264_image_t & img) {
+    int myStride = outputBufferWidth();
+    for (int i=0; i < mHeight; ++i) {
+        memcpy(outHeader->pBuffer + i * myStride, img.data + i * mWidth, mWidth);
+    }
+    int Y = myStride * outputBufferHeight();
+    for (int i=0; i < mHeight/2; ++i) {
+        memcpy(outHeader->pBuffer + Y + i * myStride / 2 , img.data + mWidth * mHeight + i * mWidth/2, mWidth/2);
+    }
+    int UV = Y/4;
+    for (int i=0; i < mHeight/2; ++i) {
+        memcpy(outHeader->pBuffer + Y + UV + i * myStride / 2 , img.data + mWidth * mHeight * 5/4 + i * mWidth/2, mWidth/2);
+    }
+}
+
 void GoldfishAVCDec::onQueueFilled(OMX_U32 portIndex) {
     static int count1=0;
     ALOGD("calling %s count %d", __func__, ++count1);
@@ -404,17 +419,10 @@
                     }
                 }
                 outHeader->nFilledLen =  (outputBufferWidth() * outputBufferHeight() * 3) / 2;
-                int myStride = outputBufferWidth();
-                for (int i=0; i < mHeight; ++i) {
-                    memcpy(outHeader->pBuffer + i * myStride, img.data + i * mWidth, mWidth);
-                }
-                int Y = myStride * outputBufferHeight();
-                for (int i=0; i < mHeight/2; ++i) {
-                    memcpy(outHeader->pBuffer + Y + i * myStride / 2 , img.data + mWidth * mHeight + i * mWidth/2, mWidth/2);
-                }
-                int UV = Y/4;
-                for (int i=0; i < mHeight/2; ++i) {
-                    memcpy(outHeader->pBuffer + Y + UV + i * myStride / 2 , img.data + mWidth * mHeight * 5/4 + i * mWidth/2, mWidth/2);
+                if (outputBufferWidth() == mWidth && outputBufferHeight() == mHeight) {
+                    memcpy(outHeader->pBuffer, img.data, outHeader->nFilledLen);
+                } else {
+                    copyImageData(outHeader, img);
                 }
 
                 outHeader->nTimeStamp = img.pts;
diff --git a/system/codecs/omx/avcdec/GoldfishAVCDec.h b/system/codecs/omx/avcdec/GoldfishAVCDec.h
index 3b25630..f6e68c9 100644
--- a/system/codecs/omx/avcdec/GoldfishAVCDec.h
+++ b/system/codecs/omx/avcdec/GoldfishAVCDec.h
@@ -97,6 +97,8 @@
 
     bool getVUIParams(h264_image_t& img);
 
+    void copyImageData( OMX_BUFFERHEADERTYPE *outHeader, h264_image_t & img);
+
     std::unique_ptr<MediaH264Decoder> mContext;
     std::vector<uint8_t> mCsd0;
     std::vector<uint8_t> mCsd1;
