#endif
#if HAVE_OPENCL_VAAPI_INTEL_MEDIA
+#if CONFIG_LIBMFX
#include <mfx/mfxstructures.h>
+#endif
#include <va/va.h>
#include <CL/va_ext.h>
#include "hwcontext_vaapi.h"
*device_name_src = NULL;
int err, found, p, d;
+ av_assert0(selector->enumerate_platforms &&
+ selector->enumerate_devices);
+
err = selector->enumerate_platforms(hwdev, &nb_platforms, &platforms,
selector->context);
if (err)
continue;
}
- err = opencl_enumerate_devices(hwdev, platforms[p], platform_name,
- &nb_devices, &devices,
- selector->context);
+ err = selector->enumerate_devices(hwdev, platforms[p], platform_name,
+ &nb_devices, &devices,
+ selector->context);
if (err < 0)
continue;
clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn
clGetDeviceIDsFromVA_APIMediaAdapterINTEL;
cl_int cle;
- int err;
clGetDeviceIDsFromVA_APIMediaAdapterINTEL =
clGetExtensionFunctionAddressForPlatform(platform_id,
break;
}
- if (err < 0)
- return err;
-
- return opencl_device_init(hwdev);
+ return err;
}
static int opencl_get_plane_format(enum AVPixelFormat pixfmt,
av_freep(&priv->mapped_frames);
#endif
- cle = clReleaseCommandQueue(priv->command_queue);
- if (cle != CL_SUCCESS) {
- av_log(hwfc, AV_LOG_ERROR, "Failed to release frame "
- "command queue: %d.\n", cle);
+ if (priv->command_queue) {
+ cle = clReleaseCommandQueue(priv->command_queue);
+ if (cle != CL_SUCCESS) {
+ av_log(hwfc, AV_LOG_ERROR, "Failed to release frame "
+ "command queue: %d.\n", cle);
+ }
+ priv->command_queue = NULL;
}
}
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);