diff --git a/ffplay.c b/ffplay.c
index 248d66f79b734663ac67be96de20c24d17d9714e..e849f89f23d588e3ed8f13aa7cd8d7639fa63d77 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1252,8 +1252,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts)
         pict.linesize[0] = vp->bmp->pitches[0];
         pict.linesize[1] = vp->bmp->pitches[2];
         pict.linesize[2] = vp->bmp->pitches[1];
-        if (img_convert_ctx == NULL) {
-            img_convert_ctx = sws_getContext(is->video_st->codec->width,
+            img_convert_ctx = sws_getCachedContext(img_convert_ctx, is->video_st->codec->width,
                     is->video_st->codec->height, is->video_st->codec->pix_fmt,
                     is->video_st->codec->width, is->video_st->codec->height,
                     dst_pix_fmt, sws_flags, NULL, NULL, NULL);
@@ -1261,7 +1260,6 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts)
                 fprintf(stderr, "Cannot initialize the conversion context\n");
                 exit(1);
             }
-        }
         sws_scale(img_convert_ctx, src_frame->data, src_frame->linesize,
                   0, is->video_st->codec->height, pict.data, pict.linesize);
         /* update the bitmap content */