diff --git a/libavutil/hwcontext_opencl.c b/libavutil/hwcontext_opencl.c index a089e32107..95f811463e 100644 --- a/libavutil/hwcontext_opencl.c +++ b/libavutil/hwcontext_opencl.c @@ -143,6 +143,11 @@ typedef struct OpenCLDeviceContext { } OpenCLDeviceContext; typedef struct OpenCLFramesContext { + /** + * The public AVOpenCLFramesContext. See hwcontext_opencl.h for it. + */ + AVOpenCLFramesContext p; + // Command queue used for transfer/mapping operations on this frames // context. If the user supplies one, this is a reference to it. // Otherwise, it is a reference to the default command queue for the @@ -1700,9 +1705,9 @@ fail: static int opencl_frames_init_command_queue(AVHWFramesContext *hwfc) { - AVOpenCLFramesContext *hwctx = hwfc->hwctx; + OpenCLFramesContext *priv = hwfc->hwctx; + AVOpenCLFramesContext *hwctx = &priv->p; OpenCLDeviceContext *devpriv = hwfc->device_ctx->hwctx; - OpenCLFramesContext *priv = hwfc->internal->priv; cl_int cle; priv->command_queue = hwctx->command_queue ? hwctx->command_queue @@ -1732,7 +1737,7 @@ static int opencl_frames_init(AVHWFramesContext *hwfc) static void opencl_frames_uninit(AVHWFramesContext *hwfc) { - OpenCLFramesContext *priv = hwfc->internal->priv; + OpenCLFramesContext *priv = hwfc->hwctx; cl_int cle; #if HAVE_OPENCL_DXVA2 || HAVE_OPENCL_D3D11 @@ -1826,7 +1831,7 @@ static int opencl_wait_events(AVHWFramesContext *hwfc, static int opencl_transfer_data_from(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src) { - OpenCLFramesContext *priv = hwfc->internal->priv; + OpenCLFramesContext *priv = hwfc->hwctx; cl_image_format image_format; cl_image_desc image_desc; cl_int cle; @@ -1881,7 +1886,7 @@ static int opencl_transfer_data_from(AVHWFramesContext *hwfc, static int opencl_transfer_data_to(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src) { - OpenCLFramesContext *priv = hwfc->internal->priv; + OpenCLFramesContext *priv = hwfc->hwctx; cl_image_format image_format; cl_image_desc image_desc; cl_int cle; @@ -1943,7 +1948,7 @@ typedef struct OpenCLMapping { static void opencl_unmap_frame(AVHWFramesContext *hwfc, HWMapDescriptor *hwmap) { - OpenCLFramesContext *priv = hwfc->internal->priv; + OpenCLFramesContext *priv = hwfc->hwctx; OpenCLMapping *map = hwmap->priv; cl_event events[AV_NUM_DATA_POINTERS]; int p, e; @@ -1972,7 +1977,7 @@ static void opencl_unmap_frame(AVHWFramesContext *hwfc, static int opencl_map_frame(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags) { - OpenCLFramesContext *priv = hwfc->internal->priv; + OpenCLFramesContext *priv = hwfc->hwctx; cl_map_flags map_flags; cl_image_format image_format; cl_image_desc image_desc; @@ -2229,7 +2234,7 @@ static void opencl_unmap_from_qsv(AVHWFramesContext *dst_fc, { AVOpenCLFrameDescriptor *desc = hwmap->priv; OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; cl_event event; cl_int cle; int p; @@ -2265,7 +2270,7 @@ static int opencl_map_from_qsv(AVHWFramesContext *dst_fc, AVFrame *dst, (AVHWFramesContext*)src->hw_frames_ctx->data; OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; AVOpenCLDeviceContext *dst_dev = &device_priv->p; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; AVOpenCLFrameDescriptor *desc; VASurfaceID va_surface; cl_mem_flags cl_flags; @@ -2363,7 +2368,7 @@ static void opencl_unmap_from_dxva2(AVHWFramesContext *dst_fc, { AVOpenCLFrameDescriptor *desc = hwmap->priv; OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; cl_event event; cl_int cle; @@ -2388,7 +2393,7 @@ static int opencl_map_from_dxva2(AVHWFramesContext *dst_fc, AVFrame *dst, (AVHWFramesContext*)src->hw_frames_ctx->data; AVDXVA2FramesContext *src_hwctx = src_fc->hwctx; OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; AVOpenCLFrameDescriptor *desc; cl_event event; cl_int cle; @@ -2451,7 +2456,7 @@ static int opencl_frames_derive_from_dxva2(AVHWFramesContext *dst_fc, AVDXVA2FramesContext *src_hwctx = src_fc->hwctx; OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; AVOpenCLDeviceContext *dst_dev = &device_priv->p; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; cl_mem_flags cl_flags; cl_int cle; int err, i, p, nb_planes; @@ -2528,7 +2533,7 @@ static void opencl_unmap_from_d3d11(AVHWFramesContext *dst_fc, { AVOpenCLFrameDescriptor *desc = hwmap->priv; OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; cl_event event; cl_int cle; @@ -2547,7 +2552,7 @@ static int opencl_map_from_d3d11(AVHWFramesContext *dst_fc, AVFrame *dst, const AVFrame *src, int flags) { OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; AVOpenCLFrameDescriptor *desc; cl_event event; cl_int cle; @@ -2607,7 +2612,7 @@ static int opencl_frames_derive_from_d3d11(AVHWFramesContext *dst_fc, AVD3D11VAFramesContext *src_hwctx = src_fc->hwctx; OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx; AVOpenCLDeviceContext *dst_dev = &device_priv->p; - OpenCLFramesContext *frames_priv = dst_fc->internal->priv; + OpenCLFramesContext *frames_priv = dst_fc->hwctx; cl_mem_flags cl_flags; cl_int cle; int err, i, p, nb_planes; @@ -3036,8 +3041,7 @@ const HWContextType ff_hwcontext_type_opencl = { .name = "OpenCL", .device_hwctx_size = sizeof(OpenCLDeviceContext), - .frames_hwctx_size = sizeof(AVOpenCLFramesContext), - .frames_priv_size = sizeof(OpenCLFramesContext), + .frames_hwctx_size = sizeof(OpenCLFramesContext), .device_create = &opencl_device_create, .device_derive = &opencl_device_derive,