|
|
@@ -85,6 +85,11 @@ extern int ff_qsv_get_surface_base_handle(mfxFrameSurface1 *surf,
|
|
|
|
|
|
|
|
|
typedef struct OpenCLDeviceContext {
|
|
|
+ /**
|
|
|
+ * The public AVOpenCLDeviceContext. See hwcontext_opencl.h for it.
|
|
|
+ */
|
|
|
+ AVOpenCLDeviceContext p;
|
|
|
+
|
|
|
// Default command queue to use for transfer/mapping operations on
|
|
|
// the device. If the user supplies one, this is a reference to it.
|
|
|
// Otherwise, it is newly-created.
|
|
|
@@ -281,8 +286,8 @@ static int opencl_check_device_extension(cl_device_id device_id,
|
|
|
static av_unused int opencl_check_extension(AVHWDeviceContext *hwdev,
|
|
|
const char *name)
|
|
|
{
|
|
|
- AVOpenCLDeviceContext *hwctx = hwdev->hwctx;
|
|
|
- OpenCLDeviceContext *priv = hwdev->internal->priv;
|
|
|
+ OpenCLDeviceContext *priv = hwdev->hwctx;
|
|
|
+ AVOpenCLDeviceContext *hwctx = &priv->p;
|
|
|
|
|
|
if (opencl_check_platform_extension(priv->platform_id, name)) {
|
|
|
av_log(hwdev, AV_LOG_DEBUG,
|
|
|
@@ -663,8 +668,8 @@ static int opencl_device_create(AVHWDeviceContext *hwdev, const char *device,
|
|
|
|
|
|
static int opencl_device_init(AVHWDeviceContext *hwdev)
|
|
|
{
|
|
|
- AVOpenCLDeviceContext *hwctx = hwdev->hwctx;
|
|
|
- OpenCLDeviceContext *priv = hwdev->internal->priv;
|
|
|
+ OpenCLDeviceContext *priv = hwdev->hwctx;
|
|
|
+ AVOpenCLDeviceContext *hwctx = &priv->p;
|
|
|
cl_int cle;
|
|
|
|
|
|
if (hwctx->command_queue) {
|
|
|
@@ -899,7 +904,7 @@ static int opencl_device_init(AVHWDeviceContext *hwdev)
|
|
|
|
|
|
static void opencl_device_uninit(AVHWDeviceContext *hwdev)
|
|
|
{
|
|
|
- OpenCLDeviceContext *priv = hwdev->internal->priv;
|
|
|
+ OpenCLDeviceContext *priv = hwdev->hwctx;
|
|
|
cl_int cle;
|
|
|
|
|
|
if (priv->command_queue) {
|
|
|
@@ -1696,7 +1701,7 @@ fail:
|
|
|
static int opencl_frames_init_command_queue(AVHWFramesContext *hwfc)
|
|
|
{
|
|
|
AVOpenCLFramesContext *hwctx = hwfc->hwctx;
|
|
|
- OpenCLDeviceContext *devpriv = hwfc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *devpriv = hwfc->device_ctx->hwctx;
|
|
|
OpenCLFramesContext *priv = hwfc->internal->priv;
|
|
|
cl_int cle;
|
|
|
|
|
|
@@ -2091,8 +2096,8 @@ static int opencl_map_from_drm_beignet(AVHWFramesContext *dst_fc,
|
|
|
AVFrame *dst, const AVFrame *src,
|
|
|
int flags)
|
|
|
{
|
|
|
- AVOpenCLDeviceContext *hwctx = dst_fc->device_ctx->hwctx;
|
|
|
- OpenCLDeviceContext *priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *priv = dst_fc->device_ctx->hwctx;
|
|
|
+ AVOpenCLDeviceContext *hwctx = &priv->p;
|
|
|
DRMBeignetToOpenCLMapping *mapping;
|
|
|
const AVDRMFrameDescriptor *desc;
|
|
|
cl_int cle;
|
|
|
@@ -2223,7 +2228,7 @@ static void opencl_unmap_from_qsv(AVHWFramesContext *dst_fc,
|
|
|
HWMapDescriptor *hwmap)
|
|
|
{
|
|
|
AVOpenCLFrameDescriptor *desc = hwmap->priv;
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
cl_event event;
|
|
|
cl_int cle;
|
|
|
@@ -2258,8 +2263,8 @@ static int opencl_map_from_qsv(AVHWFramesContext *dst_fc, AVFrame *dst,
|
|
|
{
|
|
|
AVHWFramesContext *src_fc =
|
|
|
(AVHWFramesContext*)src->hw_frames_ctx->data;
|
|
|
- AVOpenCLDeviceContext *dst_dev = dst_fc->device_ctx->hwctx;
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
+ AVOpenCLDeviceContext *dst_dev = &device_priv->p;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
AVOpenCLFrameDescriptor *desc;
|
|
|
VASurfaceID va_surface;
|
|
|
@@ -2357,7 +2362,7 @@ static void opencl_unmap_from_dxva2(AVHWFramesContext *dst_fc,
|
|
|
HWMapDescriptor *hwmap)
|
|
|
{
|
|
|
AVOpenCLFrameDescriptor *desc = hwmap->priv;
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
cl_event event;
|
|
|
cl_int cle;
|
|
|
@@ -2382,7 +2387,7 @@ static int opencl_map_from_dxva2(AVHWFramesContext *dst_fc, AVFrame *dst,
|
|
|
AVHWFramesContext *src_fc =
|
|
|
(AVHWFramesContext*)src->hw_frames_ctx->data;
|
|
|
AVDXVA2FramesContext *src_hwctx = src_fc->hwctx;
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
AVOpenCLFrameDescriptor *desc;
|
|
|
cl_event event;
|
|
|
@@ -2443,9 +2448,9 @@ fail:
|
|
|
static int opencl_frames_derive_from_dxva2(AVHWFramesContext *dst_fc,
|
|
|
AVHWFramesContext *src_fc, int flags)
|
|
|
{
|
|
|
- AVOpenCLDeviceContext *dst_dev = dst_fc->device_ctx->hwctx;
|
|
|
AVDXVA2FramesContext *src_hwctx = src_fc->hwctx;
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
+ AVOpenCLDeviceContext *dst_dev = &device_priv->p;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
cl_mem_flags cl_flags;
|
|
|
cl_int cle;
|
|
|
@@ -2522,7 +2527,7 @@ static void opencl_unmap_from_d3d11(AVHWFramesContext *dst_fc,
|
|
|
HWMapDescriptor *hwmap)
|
|
|
{
|
|
|
AVOpenCLFrameDescriptor *desc = hwmap->priv;
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
cl_event event;
|
|
|
cl_int cle;
|
|
|
@@ -2541,7 +2546,7 @@ static void opencl_unmap_from_d3d11(AVHWFramesContext *dst_fc,
|
|
|
static int opencl_map_from_d3d11(AVHWFramesContext *dst_fc, AVFrame *dst,
|
|
|
const AVFrame *src, int flags)
|
|
|
{
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
AVOpenCLFrameDescriptor *desc;
|
|
|
cl_event event;
|
|
|
@@ -2599,9 +2604,9 @@ fail:
|
|
|
static int opencl_frames_derive_from_d3d11(AVHWFramesContext *dst_fc,
|
|
|
AVHWFramesContext *src_fc, int flags)
|
|
|
{
|
|
|
- AVOpenCLDeviceContext *dst_dev = dst_fc->device_ctx->hwctx;
|
|
|
AVD3D11VAFramesContext *src_hwctx = src_fc->hwctx;
|
|
|
- OpenCLDeviceContext *device_priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ OpenCLDeviceContext *device_priv = dst_fc->device_ctx->hwctx;
|
|
|
+ AVOpenCLDeviceContext *dst_dev = &device_priv->p;
|
|
|
OpenCLFramesContext *frames_priv = dst_fc->internal->priv;
|
|
|
cl_mem_flags cl_flags;
|
|
|
cl_int cle;
|
|
|
@@ -2920,7 +2925,7 @@ static int opencl_map_from(AVHWFramesContext *hwfc, AVFrame *dst,
|
|
|
static int opencl_map_to(AVHWFramesContext *hwfc, AVFrame *dst,
|
|
|
const AVFrame *src, int flags)
|
|
|
{
|
|
|
- av_unused OpenCLDeviceContext *priv = hwfc->device_ctx->internal->priv;
|
|
|
+ av_unused OpenCLDeviceContext *priv = hwfc->device_ctx->hwctx;
|
|
|
av_assert0(dst->format == AV_PIX_FMT_OPENCL);
|
|
|
switch (src->format) {
|
|
|
#if HAVE_OPENCL_DRM_BEIGNET
|
|
|
@@ -2965,7 +2970,7 @@ static int opencl_map_to(AVHWFramesContext *hwfc, AVFrame *dst,
|
|
|
static int opencl_frames_derive_to(AVHWFramesContext *dst_fc,
|
|
|
AVHWFramesContext *src_fc, int flags)
|
|
|
{
|
|
|
- av_unused OpenCLDeviceContext *priv = dst_fc->device_ctx->internal->priv;
|
|
|
+ av_unused OpenCLDeviceContext *priv = dst_fc->device_ctx->hwctx;
|
|
|
switch (src_fc->device_ctx->type) {
|
|
|
#if HAVE_OPENCL_DRM_BEIGNET
|
|
|
case AV_HWDEVICE_TYPE_DRM:
|
|
|
@@ -3030,8 +3035,7 @@ const HWContextType ff_hwcontext_type_opencl = {
|
|
|
.type = AV_HWDEVICE_TYPE_OPENCL,
|
|
|
.name = "OpenCL",
|
|
|
|
|
|
- .device_hwctx_size = sizeof(AVOpenCLDeviceContext),
|
|
|
- .device_priv_size = sizeof(OpenCLDeviceContext),
|
|
|
+ .device_hwctx_size = sizeof(OpenCLDeviceContext),
|
|
|
.frames_hwctx_size = sizeof(AVOpenCLFramesContext),
|
|
|
.frames_priv_size = sizeof(OpenCLFramesContext),
|
|
|
|