summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2017-01-07 21:06:16 +0100
committerAnton Khirnov <anton@khirnov.net>2017-01-12 16:21:39 +0100
commitb68e353136db6f963212c457281d9716516cdc59 (patch)
tree2af4d7a54440fc0f9c4b98dcde0fc870ad0fd11d
parentac3c3ee678e51b05a2a7c30ce79465db46ba01fa (diff)
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.
-rw-r--r--libavcodec/qsvdec.c8
-rw-r--r--libavcodec/version.h2
2 files changed, 6 insertions, 4 deletions
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);
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 7348a0c267..106543de53 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 30
-#define LIBAVCODEC_VERSION_MICRO 3
+#define LIBAVCODEC_VERSION_MICRO 4
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \