diff mbox series

[FFmpeg-devel,v2,2/3] lavc/qsvdec: track the runtime session version

Message ID 20220124082455.30931-2-haihao.xiang@intel.com
State Accepted
Commit 7c24a768d3e9625183835c1051a72158154a11d8
Headers show
Series [FFmpeg-devel,v2,1/3] lavc/qsv: allow to add more parameter buffers to QSV frame | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished
andriy/make_aarch64_jetson success Make finished
andriy/make_fate_aarch64_jetson success Make fate finished

Commit Message

Xiang, Haihao Jan. 24, 2022, 8:24 a.m. UTC
From: Haihao Xiang <haihao.xiang@intel.com>

We may check the runtime version for the given features

Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
---
 libavcodec/qsvdec.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
diff mbox series

Patch

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);