summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavutil/hwcontext_qsv.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c
index a67552b5ac..99d974f25f 100644
--- a/libavutil/hwcontext_qsv.c
+++ b/libavutil/hwcontext_qsv.c
@@ -70,6 +70,11 @@ typedef struct QSVDevicePriv {
} QSVDevicePriv;
typedef struct QSVDeviceContext {
+ /**
+ * The public AVQSVDeviceContext. See hwcontext_qsv.h for it.
+ */
+ AVQSVDeviceContext p;
+
mfxHDL handle;
mfxHandleType handle_type;
mfxVersion ver;
@@ -268,8 +273,8 @@ static int qsv_fill_border(AVFrame *dst, const AVFrame *src)
static int qsv_device_init(AVHWDeviceContext *ctx)
{
- AVQSVDeviceContext *hwctx = ctx->hwctx;
- QSVDeviceContext *s = ctx->internal->priv;
+ QSVDeviceContext *s = ctx->hwctx;
+ AVQSVDeviceContext *hwctx = &s->p;
int hw_handle_supported = 0;
mfxHandleType handle_type;
enum AVHWDeviceType device_type;
@@ -378,7 +383,7 @@ static int qsv_init_child_ctx(AVHWFramesContext *ctx)
{
AVQSVFramesContext *hwctx = ctx->hwctx;
QSVFramesContext *s = ctx->internal->priv;
- QSVDeviceContext *device_priv = ctx->device_ctx->internal->priv;
+ QSVDeviceContext *device_priv = ctx->device_ctx->hwctx;
AVBufferRef *child_device_ref = NULL;
AVBufferRef *child_frames_ref = NULL;
@@ -1108,7 +1113,8 @@ static int qsv_init_internal_session(AVHWFramesContext *ctx,
mfxSession *session, int upload)
{
AVQSVFramesContext *frames_hwctx = ctx->hwctx;
- QSVDeviceContext *device_priv = ctx->device_ctx->internal->priv;
+ QSVDeviceContext *device_priv = ctx->device_ctx->hwctx;
+ AVQSVDeviceContext *hwctx = &device_priv->p;
int opaque = 0;
mfxFrameAllocator frame_allocator = {
@@ -1123,7 +1129,6 @@ static int qsv_init_internal_session(AVHWFramesContext *ctx,
mfxVideoParam par;
mfxStatus err;
int ret = AVERROR_UNKNOWN;
- AVQSVDeviceContext *hwctx = ctx->device_ctx->hwctx;
/* hwctx->loader is non-NULL for oneVPL user and NULL for non-oneVPL user */
void **loader = &hwctx->loader;
@@ -2246,8 +2251,7 @@ const HWContextType ff_hwcontext_type_qsv = {
.type = AV_HWDEVICE_TYPE_QSV,
.name = "QSV",
- .device_hwctx_size = sizeof(AVQSVDeviceContext),
- .device_priv_size = sizeof(QSVDeviceContext),
+ .device_hwctx_size = sizeof(QSVDeviceContext),
.frames_hwctx_size = sizeof(AVQSVFramesContext),
.frames_priv_size = sizeof(QSVFramesContext),