Commit 8aa3c2df authored by Mark Thompson's avatar Mark Thompson

qsvdec: Allow use of hw_device_ctx to make the internal session

(cherry picked from commit 8848ba0b)
parent 91c3b50d
......@@ -42,7 +42,7 @@
#include "qsvdec.h"
static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession session,
AVBufferRef *hw_frames_ref)
AVBufferRef *hw_frames_ref, AVBufferRef *hw_device_ref)
{
int ret;
......@@ -67,6 +67,18 @@ static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession ses
return ret;
}
q->session = q->internal_session;
} else if (hw_device_ref) {
if (q->internal_session) {
MFXClose(q->internal_session);
q->internal_session = NULL;
}
ret = ff_qsv_init_session_device(avctx, &q->internal_session,
hw_device_ref, q->load_plugins);
if (ret < 0)
return ret;
q->session = q->internal_session;
} else {
if (!q->internal_session) {
......@@ -133,7 +145,7 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q)
iopattern = MFX_IOPATTERN_OUT_SYSTEM_MEMORY;
q->iopattern = iopattern;
ret = qsv_init_session(avctx, q, session, avctx->hw_frames_ctx);
ret = qsv_init_session(avctx, q, session, avctx->hw_frames_ctx, avctx->hw_device_ctx);
if (ret < 0) {
av_log(avctx, AV_LOG_ERROR, "Error initializing an MFX session\n");
return ret;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment