FFmpeg
|
OpenCL wrapper. More...
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. | |
void | av_opencl_free_device_list (AVOpenCLDeviceList **device_list) |
Free OpenCL device list. | |
int | av_opencl_set_option (const char *key, const char *val) |
Set option in the global OpenCL context. | |
int | av_opencl_get_option (const char *key, uint8_t **out_val) |
Get option value from the global OpenCL context. | |
void | av_opencl_free_option (void) |
Free option values of the global OpenCL context. | |
AVOpenCLExternalEnv * | av_opencl_alloc_external_env (void) |
Allocate OpenCL external environment. | |
void | av_opencl_free_external_env (AVOpenCLExternalEnv **ext_opencl_env) |
Free OpenCL external environment. | |
const char * | av_opencl_errstr (cl_int status) |
Get OpenCL error string. | |
int | av_opencl_register_kernel_code (const char *kernel_code) |
Register kernel code. | |
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(). | |
int | av_opencl_create_kernel (AVOpenCLKernelEnv *env, const char *kernel_name) |
Create kernel object in the specified kernel environment. | |
int | av_opencl_buffer_create (cl_mem *cl_buf, size_t cl_buf_size, int flags, void *host_ptr) |
Create OpenCL buffer. | |
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. | |
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. | |
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. | |
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. | |
void | av_opencl_buffer_release (cl_mem *cl_buf) |
Release OpenCL buffer. | |
void | av_opencl_release_kernel (AVOpenCLKernelEnv *env) |
Release kernel object. | |
void | av_opencl_uninit (void) |
Release OpenCL environment. | |
OpenCL wrapper.
This interface is considered still experimental and its API and ABI may change without prior notice.
Definition in file opencl.h.
#define AV_OPENCL_MAX_KERNEL_NAME_SIZE 150 |
Definition at line 44 of file opencl.h.
Referenced by av_opencl_create_kernel().
int av_opencl_get_device_list | ( | AVOpenCLDeviceList ** | device_list | ) |
Get OpenCL device list.
It must be freed with av_opencl_free_device_list().
device_list | pointer to OpenCL environment device list, should be released by av_opencl_free_device_list() |
void av_opencl_free_device_list | ( | AVOpenCLDeviceList ** | device_list | ) |
Free OpenCL device list.
device_list | pointer to OpenCL environment device list created by av_opencl_get_device_list() |
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:
See reference "OpenCL Specification Version: 1.2 chapter 5.6.4".
key | option key |
val | option value |
int av_opencl_get_option | ( | const char * | key, |
uint8_t ** | out_val | ||
) |
Get option value from the global OpenCL context.
key | option key |
out_val | pointer to location where option value will be written, must be freed with av_freep() |
AVOpenCLExternalEnv* av_opencl_alloc_external_env | ( | void | ) |
Allocate OpenCL external environment.
It must be freed with av_opencl_free_external_env().
void av_opencl_free_external_env | ( | AVOpenCLExternalEnv ** | ext_opencl_env | ) |
Free OpenCL external environment.
ext_opencl_env | pointer to OpenCL external environment created by av_opencl_alloc_external_env() |
const char* av_opencl_errstr | ( | cl_int | status | ) |
Get OpenCL error string.
status | OpenCL error code |
Definition at line 166 of file opencl.c.
Referenced by av_opencl_buffer_create(), av_opencl_buffer_read(), av_opencl_buffer_read_image(), av_opencl_buffer_release(), av_opencl_buffer_write(), av_opencl_buffer_write_image(), av_opencl_create_kernel(), av_opencl_release_kernel(), av_opencl_uninit(), compile_kernel_file(), ff_opencl_apply_unsharp(), ff_opencl_set_parameter(), ff_opencl_transform(), get_device_list(), and init_opencl_env().
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.
kernel_code | kernel code to be compiled in the OpenCL runtime environment |
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().
ext_opencl_env | external OpenCL environment, created by an application program, ignored if set to NULL |
Definition at line 588 of file opencl.c.
Referenced by ff_opencl_deshake_init(), and ff_opencl_unsharp_init().
int av_opencl_create_kernel | ( | AVOpenCLKernelEnv * | env, |
const char * | kernel_name | ||
) |
Create kernel object in the specified kernel environment.
env | pointer to kernel environment which is filled with the environment used to run the kernel |
kernel_name | kernel function name |
Definition at line 391 of file opencl.c.
Referenced by ff_opencl_deshake_init(), and ff_opencl_unsharp_init().
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.
cl_buf | pointer to OpenCL buffer |
cl_buf_size | size in bytes of the OpenCL buffer to create |
flags | flags used to control buffer attributes |
host_ptr | host pointer of the OpenCL buffer |
Definition at line 660 of file opencl.c.
Referenced by ff_opencl_deshake_init(), ff_opencl_deshake_process_inout_buf(), ff_opencl_unsharp_init(), and ff_opencl_unsharp_process_inout_buf().
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.
dst_cl_buf | pointer to OpenCL destination buffer |
src_buf | pointer to source buffer |
buf_size | size in bytes of the source and destination buffers |
Definition at line 684 of file opencl.c.
Referenced by compute_mask_matrix(), and ff_opencl_transform().
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.
dst_buf | pointer to destination buffer (CPU memory) |
src_cl_buf | pointer to source OpenCL buffer |
buf_size | size in bytes of the source and destination buffers |
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.
dst_cl_buf | pointer to destination OpenCL buffer |
dst_cl_buf_size | size in bytes of OpenCL buffer |
dst_cl_buf_offset | the offset of the OpenCL buffer start position |
src_data | array of pointers to source plane buffers |
src_plane_sizes | array of sizes in bytes of the source plane buffers |
src_plane_num | number of source image planes |
Definition at line 730 of file opencl.c.
Referenced by ff_opencl_deshake_process_inout_buf(), and ff_opencl_unsharp_process_inout_buf().
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.
dst_data | array of pointers to destination plane buffers |
dst_plane_sizes | array of pointers to destination plane buffers |
dst_plane_num | number of destination image planes |
src_cl_buf | pointer to source OpenCL buffer |
src_cl_buf_size | size in bytes of OpenCL buffer |
Definition at line 771 of file opencl.c.
Referenced by ff_opencl_apply_unsharp(), and ff_opencl_transform().
void av_opencl_buffer_release | ( | cl_mem * | cl_buf | ) |
Release OpenCL buffer.
cl_buf | pointer to OpenCL buffer to release, which was previously filled with av_opencl_buffer_create() |
Definition at line 671 of file opencl.c.
Referenced by ff_opencl_deshake_uninit(), and ff_opencl_unsharp_uninit().
void av_opencl_release_kernel | ( | AVOpenCLKernelEnv * | env | ) |
Release kernel object.
env | kernel environment where the kernel object was created with av_opencl_create_kernel() |
Definition at line 433 of file opencl.c.
Referenced by ff_opencl_deshake_uninit(), and ff_opencl_unsharp_uninit().
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 617 of file opencl.c.
Referenced by ff_opencl_deshake_uninit(), and ff_opencl_unsharp_uninit().