#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"
} 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);
*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;
}
}
AVFrame *dst, const AVFrame *src,
int flags)
{
- HWMapDescriptor *hwmap;
AVFrame *tmp;
int err;
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);
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);
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
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: