From b68e353136db6f963212c457281d9716516cdc59 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 7 Jan 2017 21:06:16 +0100 Subject: qsvdec: do not sync PIX_FMT_QSV surfaces Introducing enforced sync points in arbitrary places is bad for performance. Since the vast majority of receiving code (QSV VPP or encoders, retrieving frames through hwcontext) will do the syncing, this change should not be visible to most callers. But bumping micro just in case. This is also consistent with what VAAPI hwaccel does. --- libavcodec/qsvdec.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'libavcodec/qsvdec.c') diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index b83b0fcda8..0cbe5094c7 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -363,9 +363,11 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext *q, av_fifo_generic_read(q->async_fifo, &sync, sizeof(sync), NULL); out_frame->queued = 0; - do { - ret = MFXVideoCORE_SyncOperation(q->session, *sync, 1000); - } while (ret == MFX_WRN_IN_EXECUTION); + if (avctx->pix_fmt != AV_PIX_FMT_QSV) { + do { + ret = MFXVideoCORE_SyncOperation(q->session, *sync, 1000); + } while (ret == MFX_WRN_IN_EXECUTION); + } av_freep(&sync); -- cgit v1.2.1