diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index ca6f78110bf8759c2c54eaa1dab9b7af81dd9963..3b0ede0a004a649a604d2fd81b6678785d1171ed 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -278,7 +278,9 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext *q,
         av_fifo_generic_read(q->async_fifo, &sync,      sizeof(sync),      NULL);
         out_frame->queued = 0;
 
-        MFXVideoCORE_SyncOperation(q->session, sync, 60000);
+        do {
+            ret = MFXVideoCORE_SyncOperation(q->session, sync, 1000);
+        } while (ret == MFX_WRN_IN_EXECUTION);
 
         src_frame = out_frame->frame;