diff options
author | Haihao Xiang <haihao.xiang@intel.com> | 2022-01-24 16:24:54 +0800 |
---|---|---|
committer | Haihao Xiang <haihao.xiang@intel.com> | 2022-01-29 12:02:52 +0800 |
commit | 7c24a768d3e9625183835c1051a72158154a11d8 (patch) | |
tree | cc2e02d57600d6bb83f928699752cd218689b067 /libavcodec/qsvdec.c | |
parent | 8dd507bf0daa826691ea5960ed5634233518c57c (diff) | |
download | ffmpeg-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.c | 13 |
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); |