aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/qsvdec.c
diff options
context:
space:
mode:
authorHaihao Xiang <haihao.xiang@intel.com>2022-01-24 16:24:54 +0800
committerHaihao Xiang <haihao.xiang@intel.com>2022-01-29 12:02:52 +0800
commit7c24a768d3e9625183835c1051a72158154a11d8 (patch)
treecc2e02d57600d6bb83f928699752cd218689b067 /libavcodec/qsvdec.c
parent8dd507bf0daa826691ea5960ed5634233518c57c (diff)
downloadffmpeg-7c24a768d3e9625183835c1051a72158154a11d8.tar.gz
lavc/qsvdec: track the runtime session version
We may check the runtime version for the given features Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
Diffstat (limited to 'libavcodec/qsvdec.c')
-rw-r--r--libavcodec/qsvdec.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index 783d252002..8b83d5695f 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -59,6 +59,7 @@ static const AVRational mfx_tb = { 1, 90000 };
typedef struct QSVContext {
// the session used for decoding
mfxSession session;
+ mfxVersion ver;
// the session we allocated internally, in case the caller did not provide
// one
@@ -202,6 +203,18 @@ static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession ses
q->session = q->internal_qs.session;
}
+ if (MFXQueryVersion(q->session, &q->ver) != MFX_ERR_NONE) {
+ av_log(avctx, AV_LOG_ERROR, "Error querying the session version. \n");
+ q->session = NULL;
+
+ if (q->internal_qs.session) {
+ MFXClose(q->internal_qs.session);
+ q->internal_qs.session = NULL;
+ }
+
+ return AVERROR_EXTERNAL;
+ }
+
/* make sure the decoder is uninitialized */
MFXVideoDECODE_Close(q->session);