summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/decode/vaapi.c6
-rw-r--r--video/vaapi.c8
2 files changed, 7 insertions, 7 deletions
diff --git a/video/decode/vaapi.c b/video/decode/vaapi.c
index d1099dabf5..8d7af19bfa 100644
--- a/video/decode/vaapi.c
+++ b/video/decode/vaapi.c
@@ -80,6 +80,9 @@ static int init_decoder(struct lavc_ctx *ctx, int w, int h)
fctx->initial_pool_size = hwdec_get_max_refs(ctx) + ADDITIONAL_SURFACES;
+ // Some mpv downstream code uses this.
+ fctx->user_opaque = p->ctx;
+
va_lock(p->ctx);
int res = av_hwframe_ctx_init(p->frames_ref);
va_unlock(p->ctx);
@@ -151,9 +154,6 @@ static int init(struct lavc_ctx *ctx, bool direct)
vactx->display = p->ctx->display;
- // Some mpv downstream code uses this.
- hwctx->user_opaque = p->ctx;
-
if (av_hwdevice_ctx_init(p->device_ref) < 0)
return -1;
diff --git a/video/vaapi.c b/video/vaapi.c
index 85350743d1..b239925c37 100644
--- a/video/vaapi.c
+++ b/video/vaapi.c
@@ -521,15 +521,15 @@ struct mp_image *va_surface_download(struct mp_image *src,
if (!src->hwctx)
return NULL;
AVHWFramesContext *fctx = (void *)src->hwctx->data;
- AVHWDeviceContext *dctx = fctx->device_ctx;
- AVVAAPIDeviceContext *vactx = dctx->hwctx;
+ // as set by video/decode/vaapi.c
+ struct mp_vaapi_ctx *ctx = fctx->user_opaque;
tmp_p = (struct va_surface){
- .ctx = dctx->user_opaque, // as set by video/decode/vaapi.c
+ .ctx = ctx,
.id = va_surface_id(src),
.rt_format = VA_RT_FORMAT_YUV420,
.w = fctx->width,
.h = fctx->height,
- .display = vactx->display,
+ .display = ctx->display,
.image = { .image_id = VA_INVALID_ID, .buf = VA_INVALID_ID },
};
p = &tmp_p;