diff --git a/libavcodec/gdv.c b/libavcodec/gdv.c
index aea15a88ef0131e10471ca19477e2ba0c212a51c..1623febd1a98a750495ce9ddcf531ebbc19204bf 100644
--- a/libavcodec/gdv.c
+++ b/libavcodec/gdv.c
@@ -479,9 +479,7 @@ static int gdv_decode_frame(AVCodecContext *avctx, void *data,
 
         for (y = 0; y < avctx->height; y++) {
             if (!gdv->scale_v) {
-                for (x = 0; x < avctx->width; x++) {
-                    dst[didx + x] = gdv->frame[sidx + x];
-                }
+                memcpy(dst + didx, gdv->frame + sidx, avctx->width);
             } else {
                 for (x = 0; x < avctx->width; x++) {
                     dst[didx + x] = gdv->frame[sidx + x/2];