X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Fhwcontext_opencl.c;h=728877553f8207aa81a3b5f49c129bfe86dc23e0;hb=aebc5b2284db1f40a5b3e2e9a2bf406f606436c7;hp=43b5c5ae0cbd1078d5087b8eef5de803615cee6e;hpb=52b44e9d15c0ee3c118ed68a0c2c737a9eb50ae9;p=ffmpeg diff --git a/libavutil/hwcontext_opencl.c b/libavutil/hwcontext_opencl.c index 43b5c5ae0cb..728877553f8 100644 --- a/libavutil/hwcontext_opencl.c +++ b/libavutil/hwcontext_opencl.c @@ -46,7 +46,9 @@ #endif #if HAVE_OPENCL_VAAPI_INTEL_MEDIA +#if CONFIG_LIBMFX #include +#endif #include #include #include "hwcontext_vaapi.h" @@ -141,9 +143,10 @@ typedef struct OpenCLFramesContext { } OpenCLFramesContext; -static void opencl_error_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) +static void CL_CALLBACK opencl_error_callback(const char *errinfo, + const void *private_info, + size_t cb, + void *user_data) { AVHWDeviceContext *ctx = user_data; av_log(ctx, AV_LOG_ERROR, "OpenCL error: %s\n", errinfo); @@ -925,7 +928,6 @@ static int opencl_enumerate_intel_media_vaapi_devices(AVHWDeviceContext *hwdev, clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn clGetDeviceIDsFromVA_APIMediaAdapterINTEL; cl_int cle; - int err; clGetDeviceIDsFromVA_APIMediaAdapterINTEL = clGetExtensionFunctionAddressForPlatform(platform_id, @@ -1358,10 +1360,7 @@ static int opencl_device_derive(AVHWDeviceContext *hwdev, break; } - if (err < 0) - return err; - - return opencl_device_init(hwdev); + return err; } static int opencl_get_plane_format(enum AVPixelFormat pixfmt, @@ -2153,7 +2152,6 @@ static int opencl_map_from_vaapi(AVHWFramesContext *dst_fc, AVFrame *dst, const AVFrame *src, int flags) { - HWMapDescriptor *hwmap; AVFrame *tmp; int err; @@ -2171,10 +2169,7 @@ static int opencl_map_from_vaapi(AVHWFramesContext *dst_fc, if (err < 0) goto fail; - // Adjust the map descriptor so that unmap works correctly. - hwmap = (HWMapDescriptor*)dst->buf[0]->data; - av_frame_unref(hwmap->source); - err = av_frame_ref(hwmap->source, src); + err = ff_hwframe_map_replace(dst, src); fail: av_frame_free(&tmp); @@ -2248,10 +2243,13 @@ static int opencl_map_from_qsv(AVHWFramesContext *dst_fc, AVFrame *dst, cl_int cle; int err, p; +#if CONFIG_LIBMFX if (src->format == AV_PIX_FMT_QSV) { mfxFrameSurface1 *mfx_surface = (mfxFrameSurface1*)src->data[3]; va_surface = *(VASurfaceID*)mfx_surface->Data.MemId; - } else if (src->format == AV_PIX_FMT_VAAPI) { + } else +#endif + if (src->format == AV_PIX_FMT_VAAPI) { va_surface = (VASurfaceID)(uintptr_t)src->data[3]; } else { return AVERROR(ENOSYS); @@ -2809,7 +2807,7 @@ static int opencl_map_from(AVHWFramesContext *hwfc, AVFrame *dst, static int opencl_map_to(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags) { - OpenCLDeviceContext *priv = hwfc->device_ctx->internal->priv; + av_unused OpenCLDeviceContext *priv = hwfc->device_ctx->internal->priv; av_assert0(dst->format == AV_PIX_FMT_OPENCL); switch (src->format) { #if HAVE_OPENCL_DRM_BEIGNET @@ -2850,7 +2848,7 @@ static int opencl_map_to(AVHWFramesContext *hwfc, AVFrame *dst, static int opencl_frames_derive_to(AVHWFramesContext *dst_fc, AVHWFramesContext *src_fc, int flags) { - OpenCLDeviceContext *priv = dst_fc->device_ctx->internal->priv; + av_unused OpenCLDeviceContext *priv = dst_fc->device_ctx->internal->priv; switch (src_fc->device_ctx->type) { #if HAVE_OPENCL_DRM_BEIGNET case AV_HWDEVICE_TYPE_DRM: