diff --git a/libavcodec/mediacodec_sw_buffer.c b/libavcodec/mediacodec_sw_buffer.c
index df75754ba22df2a7ba639a6f57895223ffdadb5c..349a68d3c22995dbc27cc88466f738d6ad86d60f 100644
--- a/libavcodec/mediacodec_sw_buffer.c
+++ b/libavcodec/mediacodec_sw_buffer.c
@@ -115,8 +115,8 @@ void ff_mediacodec_sw_buffer_copy_yuv420_planar(AVCodecContext *avctx,
 
             if (i == 0) {
                 width = avctx->width;
-            } else if (i == 1) {
-                width = FFMIN(frame->linesize[i], FFALIGN(avctx->width, 2));
+            } else if (i >= 1) {
+                width = FFMIN(frame->linesize[i], FFALIGN(avctx->width, 2) / 2);
             }
 
             for (j = 0; j < height; j++) {