@@ -48,6 +48,7 @@
#if HAVE_OPENCL_VAAPI_INTEL_MEDIA
#if CONFIG_LIBMFX
#include <mfx/mfxstructures.h>
+#include "hwcontext_qsv.h"
#endif
#include <va/va.h>
#include <CL/cl_va_api_media_sharing_intel.h>
@@ -2249,7 +2250,7 @@ static int opencl_map_from_qsv(AVHWFramesContext *dst_fc, AVFrame *dst,
#if CONFIG_LIBMFX
if (src->format == AV_PIX_FMT_QSV) {
mfxFrameSurface1 *mfx_surface = (mfxFrameSurface1*)src->data[3];
- va_surface = *(VASurfaceID*)mfx_surface->Data.MemId;
+ va_surface = *MFXSURFACEP_TO_VASURFACEP(mfx_surface);
} else
#endif
if (src->format == AV_PIX_FMT_VAAPI) {
@@ -29,6 +29,11 @@
* contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct.
*/
+#if CONFIG_VAAPI
+#define MFXSURFACEP_TO_VASURFACEP(surf) \
+ (VASurfaceID*)(((mfxHDLPair*)surf->Data.MemId)->first)
+#endif
+
/**
* This struct is allocated as AVHWDeviceContext.hwctx
*/