FFmpeg
Data Structures | Macros | Functions | Variables
hwcontext_opencl.c File Reference
#include <string.h>
#include "config.h"
#include "avassert.h"
#include "avstring.h"
#include "common.h"
#include "hwcontext.h"
#include "hwcontext_internal.h"
#include "hwcontext_opencl.h"
#include "mem.h"
#include "pixdesc.h"

Go to the source code of this file.

Data Structures

struct  OpenCLDeviceContext
 
struct  OpenCLFramesContext
 
struct  OpenCLDeviceSelector
 
struct  OpenCLMapping
 

Macros

#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
 
#define CL_FUNC(name, desc)
 
#define CHANNEL_ORDER(order, type)   case order: image_format->image_channel_order = type; break;
 

Functions

static void CL_CALLBACK opencl_error_callback (const char *errinfo, const void *private_info, size_t cb, void *user_data)
 
static void opencl_device_free (AVHWDeviceContext *hwdev)
 
static char * opencl_get_platform_string (cl_platform_id platform_id, cl_platform_info key)
 
static char * opencl_get_device_string (cl_device_id device_id, cl_device_info key)
 
static int opencl_check_platform_extension (cl_platform_id platform_id, const char *name)
 
static int opencl_check_device_extension (cl_device_id device_id, const char *name)
 
static av_unused int opencl_check_extension (AVHWDeviceContext *hwdev, const char *name)
 
static int opencl_enumerate_platforms (AVHWDeviceContext *hwdev, cl_uint *nb_platforms, cl_platform_id **platforms, void *context)
 
static int opencl_filter_platform (AVHWDeviceContext *hwdev, cl_platform_id platform_id, const char *platform_name, void *context)
 
static int opencl_enumerate_devices (AVHWDeviceContext *hwdev, cl_platform_id platform_id, const char *platform_name, cl_uint *nb_devices, cl_device_id **devices, void *context)
 
static int opencl_filter_device (AVHWDeviceContext *hwdev, cl_device_id device_id, const char *device_name, void *context)
 
static int opencl_device_create_internal (AVHWDeviceContext *hwdev, const OpenCLDeviceSelector *selector, cl_context_properties *props)
 
static int opencl_device_create (AVHWDeviceContext *hwdev, const char *device, AVDictionary *opts, int flags)
 
static int opencl_device_init (AVHWDeviceContext *hwdev)
 
static void opencl_device_uninit (AVHWDeviceContext *hwdev)
 
static int opencl_device_derive (AVHWDeviceContext *hwdev, AVHWDeviceContext *src_ctx, AVDictionary *opts, int flags)
 
static int opencl_get_plane_format (enum AVPixelFormat pixfmt, int plane, int width, int height, cl_image_format *image_format, cl_image_desc *image_desc)
 
static int opencl_frames_get_constraints (AVHWDeviceContext *hwdev, const void *hwconfig, AVHWFramesConstraints *constraints)
 
static void opencl_pool_free (void *opaque, uint8_t *data)
 
static AVBufferRefopencl_pool_alloc (void *opaque, int size)
 
static int opencl_frames_init_command_queue (AVHWFramesContext *hwfc)
 
static int opencl_frames_init (AVHWFramesContext *hwfc)
 
static void opencl_frames_uninit (AVHWFramesContext *hwfc)
 
static int opencl_get_buffer (AVHWFramesContext *hwfc, AVFrame *frame)
 
static int opencl_transfer_get_formats (AVHWFramesContext *hwfc, enum AVHWFrameTransferDirection dir, enum AVPixelFormat **formats)
 
static int opencl_wait_events (AVHWFramesContext *hwfc, cl_event *events, int nb_events)
 
static int opencl_transfer_data_from (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
 
static int opencl_transfer_data_to (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
 
static void opencl_unmap_frame (AVHWFramesContext *hwfc, HWMapDescriptor *hwmap)
 
static int opencl_map_frame (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
 
static cl_mem_flags opencl_mem_flags_for_mapping (int map_flags)
 
static int opencl_map_from (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
 
static int opencl_map_to (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
 
static int opencl_frames_derive_to (AVHWFramesContext *dst_fc, AVHWFramesContext *src_fc, int flags)
 

Variables

struct {
   const char *   key
 
   cl_platform_info   name
 
opencl_platform_params []
 
struct {
   const char *   key
 
   cl_device_info   name
 
opencl_device_params []
 
struct {
   const char *   key
 
   cl_device_type   type
 
opencl_device_types []
 
const HWContextType ff_hwcontext_type_opencl
 

Macro Definition Documentation

◆ CL_USE_DEPRECATED_OPENCL_1_2_APIS

#define CL_USE_DEPRECATED_OPENCL_1_2_APIS

Definition at line 19 of file hwcontext_opencl.c.

◆ CL_FUNC

#define CL_FUNC (   name,
  desc 
)
Value:
do { \
if (fail) \
break; \
priv->name = clGetExtensionFunctionAddressForPlatform( \
priv->platform_id, #name); \
if (!priv->name) { \
av_log(hwdev, AV_LOG_VERBOSE, \
desc " function not found (%s).\n", #name); \
fail = 1; \
} else { \
av_log(hwdev, AV_LOG_VERBOSE, \
desc " function found (%s).\n", #name); \
} \
} while (0)

◆ CHANNEL_ORDER

#define CHANNEL_ORDER (   order,
  type 
)    case order: image_format->image_channel_order = type; break;

Function Documentation

◆ opencl_error_callback()

static void CL_CALLBACK opencl_error_callback ( const char *  errinfo,
const void *  private_info,
size_t  cb,
void *  user_data 
)
static

Definition at line 146 of file hwcontext_opencl.c.

Referenced by opencl_device_create_internal().

◆ opencl_device_free()

static void opencl_device_free ( AVHWDeviceContext hwdev)
static

Definition at line 155 of file hwcontext_opencl.c.

Referenced by opencl_device_create_internal().

◆ opencl_get_platform_string()

static char* opencl_get_platform_string ( cl_platform_id  platform_id,
cl_platform_info  key 
)
static

◆ opencl_get_device_string()

static char* opencl_get_device_string ( cl_device_id  device_id,
cl_device_info  key 
)
static

◆ opencl_check_platform_extension()

static int opencl_check_platform_extension ( cl_platform_id  platform_id,
const char *  name 
)
static

Definition at line 244 of file hwcontext_opencl.c.

Referenced by opencl_check_extension().

◆ opencl_check_device_extension()

static int opencl_check_device_extension ( cl_device_id  device_id,
const char *  name 
)
static

Definition at line 257 of file hwcontext_opencl.c.

Referenced by opencl_check_extension().

◆ opencl_check_extension()

static av_unused int opencl_check_extension ( AVHWDeviceContext hwdev,
const char *  name 
)
static

Definition at line 270 of file hwcontext_opencl.c.

Referenced by opencl_device_init().

◆ opencl_enumerate_platforms()

static int opencl_enumerate_platforms ( AVHWDeviceContext hwdev,
cl_uint *  nb_platforms,
cl_platform_id **  platforms,
void *  context 
)
static

Definition at line 291 of file hwcontext_opencl.c.

Referenced by opencl_device_create(), and opencl_device_derive().

◆ opencl_filter_platform()

static int opencl_filter_platform ( AVHWDeviceContext hwdev,
cl_platform_id  platform_id,
const char *  platform_name,
void *  context 
)
static

Definition at line 322 of file hwcontext_opencl.c.

Referenced by opencl_device_create(), and opencl_device_derive().

◆ opencl_enumerate_devices()

static int opencl_enumerate_devices ( AVHWDeviceContext hwdev,
cl_platform_id  platform_id,
const char *  platform_name,
cl_uint *  nb_devices,
cl_device_id **  devices,
void *  context 
)
static

Definition at line 357 of file hwcontext_opencl.c.

Referenced by opencl_device_create(), and opencl_device_derive().

◆ opencl_filter_device()

static int opencl_filter_device ( AVHWDeviceContext hwdev,
cl_device_id  device_id,
const char *  device_name,
void *  context 
)
static

Definition at line 397 of file hwcontext_opencl.c.

Referenced by opencl_device_create().

◆ opencl_device_create_internal()

static int opencl_device_create_internal ( AVHWDeviceContext hwdev,
const OpenCLDeviceSelector selector,
cl_context_properties *  props 
)
static

Definition at line 487 of file hwcontext_opencl.c.

Referenced by opencl_device_create(), and opencl_device_derive().

◆ opencl_device_create()

static int opencl_device_create ( AVHWDeviceContext hwdev,
const char *  device,
AVDictionary opts,
int  flags 
)
static

Definition at line 620 of file hwcontext_opencl.c.

◆ opencl_device_init()

static int opencl_device_init ( AVHWDeviceContext hwdev)
static

Definition at line 653 of file hwcontext_opencl.c.

◆ opencl_device_uninit()

static void opencl_device_uninit ( AVHWDeviceContext hwdev)
static

Definition at line 889 of file hwcontext_opencl.c.

◆ opencl_device_derive()

static int opencl_device_derive ( AVHWDeviceContext hwdev,
AVHWDeviceContext src_ctx,
AVDictionary opts,
int  flags 
)
static

Definition at line 1196 of file hwcontext_opencl.c.

◆ opencl_get_plane_format()

static int opencl_get_plane_format ( enum AVPixelFormat  pixfmt,
int  plane,
int  width,
int  height,
cl_image_format *  image_format,
cl_image_desc *  image_desc 
)
static

◆ opencl_frames_get_constraints()

static int opencl_frames_get_constraints ( AVHWDeviceContext hwdev,
const void *  hwconfig,
AVHWFramesConstraints constraints 
)
static

Definition at line 1475 of file hwcontext_opencl.c.

◆ opencl_pool_free()

static void opencl_pool_free ( void *  opaque,
uint8_t data 
)
static

Definition at line 1602 of file hwcontext_opencl.c.

Referenced by opencl_pool_alloc().

◆ opencl_pool_alloc()

static AVBufferRef* opencl_pool_alloc ( void *  opaque,
int  size 
)
static

Definition at line 1620 of file hwcontext_opencl.c.

Referenced by opencl_frames_init().

◆ opencl_frames_init_command_queue()

static int opencl_frames_init_command_queue ( AVHWFramesContext hwfc)
static

Definition at line 1676 of file hwcontext_opencl.c.

Referenced by opencl_frames_derive_to(), and opencl_frames_init().

◆ opencl_frames_init()

static int opencl_frames_init ( AVHWFramesContext hwfc)
static

Definition at line 1695 of file hwcontext_opencl.c.

◆ opencl_frames_uninit()

static void opencl_frames_uninit ( AVHWFramesContext hwfc)
static

Definition at line 1708 of file hwcontext_opencl.c.

◆ opencl_get_buffer()

static int opencl_get_buffer ( AVHWFramesContext hwfc,
AVFrame frame 
)
static

Definition at line 1739 of file hwcontext_opencl.c.

◆ opencl_transfer_get_formats()

static int opencl_transfer_get_formats ( AVHWFramesContext hwfc,
enum AVHWFrameTransferDirection  dir,
enum AVPixelFormat **  formats 
)
static

Definition at line 1760 of file hwcontext_opencl.c.

◆ opencl_wait_events()

static int opencl_wait_events ( AVHWFramesContext hwfc,
cl_event *  events,
int  nb_events 
)
static

◆ opencl_transfer_data_from()

static int opencl_transfer_data_from ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src 
)
static

Definition at line 1801 of file hwcontext_opencl.c.

◆ opencl_transfer_data_to()

static int opencl_transfer_data_to ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src 
)
static

Definition at line 1856 of file hwcontext_opencl.c.

◆ opencl_unmap_frame()

static void opencl_unmap_frame ( AVHWFramesContext hwfc,
HWMapDescriptor hwmap 
)
static

Definition at line 1918 of file hwcontext_opencl.c.

Referenced by opencl_map_frame().

◆ opencl_map_frame()

static int opencl_map_frame ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src,
int  flags 
)
static

Definition at line 1947 of file hwcontext_opencl.c.

Referenced by opencl_map_from().

◆ opencl_mem_flags_for_mapping()

static cl_mem_flags opencl_mem_flags_for_mapping ( int  map_flags)
inlinestatic

Definition at line 2185 of file hwcontext_opencl.c.

◆ opencl_map_from()

static int opencl_map_from ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src,
int  flags 
)
static

Definition at line 2801 of file hwcontext_opencl.c.

◆ opencl_map_to()

static int opencl_map_to ( AVHWFramesContext hwfc,
AVFrame dst,
const AVFrame src,
int  flags 
)
static

Definition at line 2810 of file hwcontext_opencl.c.

◆ opencl_frames_derive_to()

static int opencl_frames_derive_to ( AVHWFramesContext dst_fc,
AVHWFramesContext src_fc,
int  flags 
)
static

Definition at line 2851 of file hwcontext_opencl.c.

Variable Documentation

◆ key

const char* key

Definition at line 168 of file hwcontext_opencl.c.

Referenced by aa_read_header(), add_metadata(), add_opt(), add_timecode_metadata(), amf_parse_object(), ape_tag_read_field(), av_aes_ctr_init(), av_aes_init(), av_blowfish_init(), av_camellia_init(), av_cast5_init(), av_des_init(), av_dict_get(), av_dict_set(), av_dict_set_fxp(), av_dict_set_int(), av_hmac_calc(), av_hmac_init(), av_opt_get_key_value(), av_opt_query_ranges(), av_opt_query_ranges_default(), av_opt_set_from_string(), av_packet_unpack_dictionary(), av_rc4_init(), av_tea_init(), av_tree_find(), av_tree_insert(), av_twofish_init(), av_xtea_init(), av_xtea_le_init(), avi_read_packet(), avi_read_tag(), avpriv_dict_set_timestamp(), cat_header(), check_keyboard_interaction(), cmp(), cmp_id_key(), compact_print_int(), compact_print_str(), compare_sl(), convert_input(), decode_block(), decode_frame(), decode_header(), decode_key(), default_print_int(), default_print_str(), descriptor_compare(), dict_copy_entry(), djb2_hash(), do_encrypt(), dss_read_metadata_date(), dss_read_metadata_string(), ea_read_packet(), epic_add_pixel_to_cache(), epic_hash_add(), epic_hash_find(), extract_line(), ff_AMediaFormat_getBuffer(), ff_AMediaFormat_getFloat(), ff_AMediaFormat_getInt32(), ff_AMediaFormat_getInt64(), ff_AMediaFormat_getString(), ff_AMediaFormat_setBuffer(), ff_AMediaFormat_setFloat(), ff_AMediaFormat_setInt32(), ff_AMediaFormat_setInt64(), ff_AMediaFormat_setString(), ff_asfcrypt_dec(), ff_attributes_dump(), ff_http_auth_handle_header(), ff_id3v2_parse_priv_dict(), ff_metadata_conv(), ff_parse_key_value(), ff_read_riff_info(), ff_rtmp_calc_digest(), ff_tee_parse_slave_options(), filter_frame(), flat_print_int(), flat_print_str(), free_segment_dynarray(), gain_entry_compare(), gen_roundkeys(), get_geokey_val(), get_meta(), get_string(), get_tag(), glyph_cmp(), handle_basic_params(), handle_digest_params(), handle_digest_update(), handle_init_section_args(), handle_key_args(), handle_rendition_args(), handle_variant_args(), hls_encryption_start(), hpel_motion_search(), id3v1_set_string(), id3v2_3_metadata_split_date(), id3v2_put_priv(), ini_print_int(), ini_print_str(), init_report(), ivr_read_header(), json_print_int(), json_print_item_str(), json_print_str(), libx265_param_parse_float(), libx265_param_parse_int(), main(), match_stream_specifier(), metadata_header_size(), microdvd_close_no_persistent_tags(), microdvd_init(), microdvd_open_tags(), mkv_write_simpletag(), mov_metadata_gnre(), mov_metadata_int8_bypass_padding(), mov_metadata_int8_no_padding(), mov_metadata_loci(), mov_metadata_track_or_disc_number(), mov_parse_vc1_frame(), mov_read_custom(), mov_read_udta_string(), mov_write_raw_metadata_tag(), mpegts_write_pes(), multiswap_dec(), multiswap_enc(), mxf_add_timecode_metadata(), mxf_add_umid_metadata(), mxf_is_partition_pack_key(), mxf_match_uid(), mxf_parse_package_comments(), mxf_read_indirect_value(), mxf_read_sync(), mxf_write_cdci_common(), mxf_write_generic_desc(), mxf_write_generic_sound_common(), mxf_write_opatom_body_partition(), mxf_write_partition(), mxf_write_wav_common(), nist_read_header(), nuv_read_dts(), ogm_chapter(), open_input(), open_output_file(), opencl_filter_device(), opencl_filter_platform(), opencl_get_device_string(), opencl_get_platform_string(), opt_preset(), parse_audio(), parse_key(), parse_key_value_pair(), parse_legacy_attrib(), parse_metadata(), parse_playlist(), parse_str_int(), process_options(), put_meta(), read_comment(), read_info_chunk(), read_odml_index(), read_sb_block(), read_tag(), read_ttag(), read_uslt(), read_vblock(), redspark_probe(), redspark_read_header(), sab_diamond_search(), set_meta(), set_metadata_float(), set_metadata_int(), small_diamond_search(), subviewer_read_header(), test(), test_encrypt(), update_metadata(), url_alloc_for_protocol(), viv_read_header(), vivo_read_header(), vpx_ts_param_parse(), write_metadata_header(), write_sm_data(), write_tag(), write_tag_int32(), writer_print_integer(), writer_print_rational(), writer_print_string(), writer_print_time(), writer_print_ts(), xml_print_int(), xml_print_str(), and xor_block().

◆ name

cl_device_info name

◆ opencl_platform_params

struct { ... } opencl_platform_params[]
Initial value:
= {
{ "platform_profile", CL_PLATFORM_PROFILE },
{ "platform_version", CL_PLATFORM_VERSION },
{ "platform_name", CL_PLATFORM_NAME },
{ "platform_vendor", CL_PLATFORM_VENDOR },
{ "platform_extensions", CL_PLATFORM_EXTENSIONS },
}

Referenced by opencl_filter_platform().

◆ opencl_device_params

struct { ... } opencl_device_params[]
Initial value:
= {
{ "device_name", CL_DEVICE_NAME },
{ "device_vendor", CL_DEVICE_VENDOR },
{ "driver_version", CL_DRIVER_VERSION },
{ "device_version", CL_DEVICE_VERSION },
{ "device_profile", CL_DEVICE_PROFILE },
{ "device_extensions", CL_DEVICE_EXTENSIONS },
}

Referenced by opencl_filter_device().

◆ type

cl_device_type type

Definition at line 192 of file hwcontext_opencl.c.

◆ opencl_device_types

struct { ... } opencl_device_types[]
Initial value:
= {
{ "cpu", CL_DEVICE_TYPE_CPU },
{ "gpu", CL_DEVICE_TYPE_GPU },
{ "accelerator", CL_DEVICE_TYPE_ACCELERATOR },
{ "custom", CL_DEVICE_TYPE_CUSTOM },
{ "default", CL_DEVICE_TYPE_DEFAULT },
{ "all", CL_DEVICE_TYPE_ALL },
}

Referenced by opencl_filter_device().

◆ ff_hwcontext_type_opencl

const HWContextType ff_hwcontext_type_opencl

Definition at line 2911 of file hwcontext_opencl.c.

AV_LOG_VERBOSE
#define AV_LOG_VERBOSE
Detailed information.
Definition: log.h:192
name
cl_platform_info name
Definition: hwcontext_opencl.c:169
fail
#define fail()
Definition: checkasm.h:123
desc
const char * desc
Definition: nvenc.c:79