diff --git a/libavutil/hwcontext_d3d12va.c b/libavutil/hwcontext_d3d12va.c index 3acd5ac43a..6b4cd22899 100644 --- a/libavutil/hwcontext_d3d12va.c +++ b/libavutil/hwcontext_d3d12va.c @@ -46,6 +46,10 @@ typedef struct D3D12VAFramesContext { } D3D12VAFramesContext; typedef struct D3D12VADevicePriv { + /** + * The public AVD3D12VADeviceContext. See hwcontext_d3d12va.h for it. + */ + AVD3D12VADeviceContext p; HANDLE d3d12lib; HANDLE dxgilib; PFN_CREATE_DXGI_FACTORY2 create_dxgi_factory2; @@ -526,7 +530,7 @@ fail: static int d3d12va_load_functions(AVHWDeviceContext *hwdev) { - D3D12VADevicePriv *priv = hwdev->internal->priv; + D3D12VADevicePriv *priv = hwdev->hwctx; #if !HAVE_UWP priv->d3d12lib = dlopen("d3d12.dll", 0); @@ -558,8 +562,8 @@ fail: static void d3d12va_device_free(AVHWDeviceContext *hwdev) { - AVD3D12VADeviceContext *ctx = hwdev->hwctx; - D3D12VADevicePriv *priv = hwdev->internal->priv; + D3D12VADevicePriv *priv = hwdev->hwctx; + AVD3D12VADeviceContext *ctx = &priv->p; D3D12_OBJECT_RELEASE(ctx->device); @@ -609,8 +613,8 @@ static void d3d12va_device_uninit(AVHWDeviceContext *hwdev) static int d3d12va_device_create(AVHWDeviceContext *hwdev, const char *device, AVDictionary *opts, int flags) { - AVD3D12VADeviceContext *ctx = hwdev->hwctx; - D3D12VADevicePriv *priv = hwdev->internal->priv; + D3D12VADevicePriv *priv = hwdev->hwctx; + AVD3D12VADeviceContext *ctx = &priv->p; HRESULT hr; UINT create_flags = 0; @@ -670,8 +674,7 @@ const HWContextType ff_hwcontext_type_d3d12va = { .type = AV_HWDEVICE_TYPE_D3D12VA, .name = "D3D12VA", - .device_hwctx_size = sizeof(AVD3D12VADeviceContext), - .device_priv_size = sizeof(D3D12VADevicePriv), + .device_hwctx_size = sizeof(D3D12VADevicePriv), .frames_hwctx_size = sizeof(AVD3D12VAFramesContext), .frames_priv_size = sizeof(D3D12VAFramesContext),