opencl.h File Reference

OpenCL wrapper. More...

#include <CL/cl.h>
#include "config.h"
#include "dict.h"
Include dependency graph for opencl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  AVOpenCLDeviceNode
 
struct  AVOpenCLPlatformNode
 
struct  AVOpenCLDeviceList
 
struct  AVOpenCLKernelEnv
 
struct  AVOpenCLExternalEnv
 

Macros

#define AV_OPENCL_KERNEL(...)   # __VA_ARGS__
 
#define AV_OPENCL_MAX_KERNEL_NAME_SIZE   150
 
#define AV_OPENCL_MAX_DEVICE_NAME_SIZE   100
 
#define AV_OPENCL_MAX_PLATFORM_NAME_SIZE   100
 

Functions

int av_opencl_get_device_list (AVOpenCLDeviceList **device_list)
 Get OpenCL device list. More...
 
void av_opencl_free_device_list (AVOpenCLDeviceList **device_list)
 Free OpenCL device list. More...
 
int av_opencl_set_option (const char *key, const char *val)
 Set option in the global OpenCL context. More...
 
int av_opencl_get_option (const char *key, uint8_t **out_val)
 Get option value from the global OpenCL context. More...
 
void av_opencl_free_option (void)
 Free option values of the global OpenCL context. More...
 
AVOpenCLExternalEnvav_opencl_alloc_external_env (void)
 Allocate OpenCL external environment. More...
 
void av_opencl_free_external_env (AVOpenCLExternalEnv **ext_opencl_env)
 Free OpenCL external environment. More...
 
int av_opencl_register_kernel_code (const char *kernel_code)
 Register kernel code. More...
 
int av_opencl_init (AVOpenCLExternalEnv *ext_opencl_env)
 Initialize the run time OpenCL environment and compile the kernel code registered with av_opencl_register_kernel_code(). More...
 
int av_opencl_create_kernel (AVOpenCLKernelEnv *env, const char *kernel_name)
 Create kernel object in the specified kernel environment. More...
 
int av_opencl_buffer_create (cl_mem *cl_buf, size_t cl_buf_size, int flags, void *host_ptr)
 Create OpenCL buffer. More...
 
int av_opencl_buffer_write (cl_mem dst_cl_buf, uint8_t *src_buf, size_t buf_size)
 Write OpenCL buffer with data from src_buf. More...
 
int av_opencl_buffer_read (uint8_t *dst_buf, cl_mem src_cl_buf, size_t buf_size)
 Read data from OpenCL buffer to memory buffer. More...
 
int av_opencl_buffer_write_image (cl_mem dst_cl_buf, size_t cl_buffer_size, int dst_cl_offset, uint8_t **src_data, int *plane_size, int plane_num)
 Write image data from memory to OpenCL buffer. More...
 
int av_opencl_buffer_read_image (uint8_t **dst_data, int *plane_size, int plane_num, cl_mem src_cl_buf, size_t cl_buffer_size)
 Read image data from OpenCL buffer. More...
 
void av_opencl_buffer_release (cl_mem *cl_buf)
 Release OpenCL buffer. More...
 
void av_opencl_release_kernel (AVOpenCLKernelEnv *env)
 Release kernel object. More...
 
void av_opencl_uninit (void)
 Release OpenCL environment. More...
 

Detailed Description

OpenCL wrapper.

This interface is considered still experimental and its API and ABI may change without prior notice.

Definition in file opencl.h.

Macro Definition Documentation

#define AV_OPENCL_KERNEL (   ...)    # __VA_ARGS__

Definition at line 38 of file opencl.h.

#define AV_OPENCL_MAX_DEVICE_NAME_SIZE   100

Definition at line 42 of file opencl.h.

#define AV_OPENCL_MAX_KERNEL_NAME_SIZE   150

Definition at line 40 of file opencl.h.

Referenced by av_opencl_create_kernel().

#define AV_OPENCL_MAX_PLATFORM_NAME_SIZE   100

Definition at line 44 of file opencl.h.

Function Documentation

AVOpenCLExternalEnv* av_opencl_alloc_external_env ( void  )

Allocate OpenCL external environment.

It must be freed with av_opencl_free_external_env().

Returns
pointer to allocated OpenCL external environment

Definition at line 350 of file opencl.c.

int av_opencl_buffer_create ( cl_mem *  cl_buf,
size_t  cl_buf_size,
int  flags,
void host_ptr 
)

Create OpenCL buffer.

The buffer is used to save the data used or created by an OpenCL kernel. The created buffer must be released with av_opencl_buffer_release().

See clCreateBuffer() function reference for more information about the parameters.

Parameters
cl_bufpointer to OpenCL buffer
cl_buf_sizesize in bytes of the OpenCL buffer to create
flagsflags used to control buffer attributes
host_ptrhost pointer of the OpenCL buffer
Returns
>=0 on success, a negative error code in case of failure

Definition at line 672 of file opencl.c.

Referenced by ff_opencl_deshake_init(), and ff_opencl_deshake_process_inout_buf().

int av_opencl_buffer_read ( uint8_t dst_buf,
cl_mem  src_cl_buf,
size_t  buf_size 
)

Read data from OpenCL buffer to memory buffer.

Parameters
dst_bufpointer to destination buffer (CPU memory)
src_cl_bufpointer to source OpenCL buffer
buf_sizesize in bytes of the source and destination buffers
Returns
>=0 on success, a negative error code in case of failure

Definition at line 719 of file opencl.c.

int av_opencl_buffer_read_image ( uint8_t **  dst_data,
int *  plane_size,
int  plane_num,
cl_mem  src_cl_buf,
size_t  cl_buffer_size 
)

Read image data from OpenCL buffer.

Parameters
dst_dataarray of pointers to destination plane buffers
dst_plane_sizesarray of pointers to destination plane buffers
dst_plane_numnumber of destination image planes
src_cl_bufpointer to source OpenCL buffer
src_cl_buf_sizesize in bytes of OpenCL buffer
Returns
>=0 on success, a negative error code in case of failure

Definition at line 783 of file opencl.c.

Referenced by ff_opencl_transform().

void av_opencl_buffer_release ( cl_mem *  cl_buf)

Release OpenCL buffer.

Parameters
cl_bufpointer to OpenCL buffer to release, which was previously filled with av_opencl_buffer_create()

Definition at line 683 of file opencl.c.

Referenced by ff_opencl_deshake_uninit().

int av_opencl_buffer_write ( cl_mem  dst_cl_buf,
uint8_t src_buf,
size_t  buf_size 
)

Write OpenCL buffer with data from src_buf.

Parameters
dst_cl_bufpointer to OpenCL destination buffer
src_bufpointer to source buffer
buf_sizesize in bytes of the source and destination buffers
Returns
>=0 on success, a negative error code in case of failure

Definition at line 696 of file opencl.c.

Referenced by ff_opencl_transform().

int av_opencl_buffer_write_image ( cl_mem  dst_cl_buf,
size_t  cl_buffer_size,
int  dst_cl_offset,
uint8_t **  src_data,
int *  plane_size,
int  plane_num 
)

Write image data from memory to OpenCL buffer.

The source must be an array of pointers to image plane buffers.

Parameters
dst_cl_bufpointer to destination OpenCL buffer
dst_cl_buf_sizesize in bytes of OpenCL buffer
dst_cl_buf_offsetthe offset of the OpenCL buffer start position
src_dataarray of pointers to source plane buffers
src_plane_sizesarray of sizes in bytes of the source plane buffers
src_plane_numnumber of source image planes
Returns
>=0 on success, a negative error code in case of failure

Definition at line 742 of file opencl.c.

Referenced by ff_opencl_deshake_process_inout_buf().

int av_opencl_create_kernel ( AVOpenCLKernelEnv env,
const char *  kernel_name 
)

Create kernel object in the specified kernel environment.

Parameters
envpointer to kernel environment which is filled with the environment used to run the kernel
kernel_namekernel function name
Returns
>=0 on success, a negative error code in case of failure

Definition at line 390 of file opencl.c.

Referenced by ff_opencl_deshake_init().

void av_opencl_free_device_list ( AVOpenCLDeviceList **  device_list)

Free OpenCL device list.

Parameters
device_listpointer to OpenCL environment device list created by av_opencl_get_device_list()

Definition at line 314 of file opencl.c.

void av_opencl_free_external_env ( AVOpenCLExternalEnv **  ext_opencl_env)

Free OpenCL external environment.

Parameters
ext_opencl_envpointer to OpenCL external environment created by av_opencl_alloc_external_env()

Definition at line 360 of file opencl.c.

void av_opencl_free_option ( void  )

Free option values of the global OpenCL context.

Definition at line 342 of file opencl.c.

int av_opencl_get_device_list ( AVOpenCLDeviceList **  device_list)

Get OpenCL device list.

It must be freed with av_opencl_free_device_list().

Parameters
device_listpointer to OpenCL environment device list, should be released by av_opencl_free_device_list()
Returns
>=0 on success, a negative error code in case of failure

Definition at line 296 of file opencl.c.

int av_opencl_get_option ( const char *  key,
uint8_t **  out_val 
)

Get option value from the global OpenCL context.

Parameters
keyoption key
out_valpointer to location where option value will be written, must be freed with av_freep()
Returns
>=0 on success, a negative error code in case of failure
See also
av_opencl_set_option()

Definition at line 333 of file opencl.c.

int av_opencl_init ( AVOpenCLExternalEnv ext_opencl_env)

Initialize the run time OpenCL environment and compile the kernel code registered with av_opencl_register_kernel_code().

Parameters
ext_opencl_envexternal OpenCL environment, created by an application program, ignored if set to NULL
Returns
>=0 on success, a negative error code in case of failure

Definition at line 600 of file opencl.c.

Referenced by ff_opencl_deshake_init().

int av_opencl_register_kernel_code ( const char *  kernel_code)

Register kernel code.

The registered kernel code is stored in a global context, and compiled in the runtime environment when av_opencl_init() is called.

Parameters
kernel_codekernel code to be compiled in the OpenCL runtime environment
Returns
>=0 on success, a negative error code in case of failure

Definition at line 365 of file opencl.c.

void av_opencl_release_kernel ( AVOpenCLKernelEnv env)

Release kernel object.

Parameters
envkernel environment where the kernel object was created with av_opencl_create_kernel()

Definition at line 432 of file opencl.c.

Referenced by ff_opencl_deshake_uninit().

int av_opencl_set_option ( const char *  key,
const char *  val 
)

Set option in the global OpenCL context.

This options affect the operation performed by the next av_opencl_init() operation.

The currently accepted options are:

  • build_options: set options to compile registered kernels code
  • platform: set index of platform in device list
  • device: set index of device in device list

See reference "OpenCL Specification Version: 1.2 chapter 5.6.4".

Parameters
keyoption key
valoption value
Returns
>=0 on success, a negative error code in case of failure
See also
av_opencl_get_option()

Definition at line 320 of file opencl.c.

Referenced by opt_timelimit().

void av_opencl_uninit ( void  )

Release OpenCL environment.

The OpenCL environment is effectively released only if all the created kernels had been released with av_opencl_release_kernel().

Definition at line 629 of file opencl.c.

Referenced by ff_opencl_deshake_uninit().