FFmpeg  4.0
Data Fields
AVHWFramesContext Struct Reference

This struct describes a set or pool of "hardware" frames (i.e. More...

#include <libavutil/hwcontext.h>

Data Fields

const AVClassav_class
 A class for logging. More...
 
AVHWFramesInternalinternal
 Private data used internally by libavutil. More...
 
AVBufferRefdevice_ref
 A reference to the parent AVHWDeviceContext. More...
 
AVHWDeviceContextdevice_ctx
 The parent AVHWDeviceContext. More...
 
voidhwctx
 The format-specific data, allocated and freed automatically along with this context. More...
 
void(* free )(struct AVHWFramesContext *ctx)
 This field may be set by the caller before calling av_hwframe_ctx_init(). More...
 
voiduser_opaque
 Arbitrary user data, to be used e.g. More...
 
AVBufferPoolpool
 A pool from which the frames are allocated by av_hwframe_get_buffer(). More...
 
int initial_pool_size
 Initial size of the frame pool. More...
 
enum AVPixelFormat format
 The pixel format identifying the underlying HW surface type. More...
 
enum AVPixelFormat sw_format
 The pixel format identifying the actual data layout of the hardware frames. More...
 
int width
 The allocated dimensions of the frames in this pool. More...
 
int height
 

Detailed Description

This struct describes a set or pool of "hardware" frames (i.e.

those with data not located in normal system memory). All the frames in the pool are assumed to be allocated in the same way and interchangeable.

This struct is reference-counted with the AVBuffer mechanism and tied to a given AVHWDeviceContext instance. The av_hwframe_ctx_alloc() constructor yields a reference, whose data field points to the actual AVHWFramesContext struct.

Examples:
qsvdec.c, and vaapi_encode.c.

Definition at line 123 of file hwcontext.h.

Field Documentation

◆ av_class

const AVClass* AVHWFramesContext::av_class

A class for logging.

Definition at line 127 of file hwcontext.h.

◆ internal

AVHWFramesInternal* AVHWFramesContext::internal

◆ device_ref

AVBufferRef* AVHWFramesContext::device_ref

◆ device_ctx

AVHWDeviceContext* AVHWFramesContext::device_ctx

◆ hwctx

void* AVHWFramesContext::hwctx

◆ free

void(* AVHWFramesContext::free) (struct AVHWFramesContext *ctx)

This field may be set by the caller before calling av_hwframe_ctx_init().

If non-NULL, this callback will be called when the last reference to this context is unreferenced, immediately before it is freed.

Definition at line 169 of file hwcontext.h.

Referenced by hwframe_ctx_free().

◆ user_opaque

void* AVHWFramesContext::user_opaque

Arbitrary user data, to be used e.g.

by the free() callback.

Definition at line 174 of file hwcontext.h.

◆ pool

AVBufferPool* AVHWFramesContext::pool

A pool from which the frames are allocated by av_hwframe_get_buffer().

This field may be set by the caller before calling av_hwframe_ctx_init(). The buffers returned by calling av_buffer_pool_get() on this pool must have the properties described in the documentation in the corresponding hw type's header (hwcontext_*.h). The pool will be freed strictly before this struct's free() callback is invoked.

This field may be NULL, then libavutil will attempt to allocate a pool internally. Note that certain device types enforce pools allocated at fixed size (frame count), which cannot be extended dynamically. In such a case, initial_pool_size must be set appropriately.

Definition at line 189 of file hwcontext.h.

Referenced by av_hwframe_ctx_init(), av_hwframe_get_buffer(), cuda_frames_init(), cuda_get_buffer(), d3d11va_get_buffer(), drm_get_buffer(), dxva2_frames_init(), dxva2_get_buffer(), opencl_frames_init(), opencl_get_buffer(), qsv_frames_init(), qsv_get_buffer(), vaapi_frames_init(), vaapi_get_buffer(), vdpau_frames_init(), vdpau_get_buffer(), and vt_get_buffer().

◆ initial_pool_size

int AVHWFramesContext::initial_pool_size

◆ format

enum AVPixelFormat AVHWFramesContext::format

◆ sw_format

enum AVPixelFormat AVHWFramesContext::sw_format

The pixel format identifying the actual data layout of the hardware frames.

Must be set by the caller before calling av_hwframe_ctx_init().

Note
when the underlying API does not provide the exact data layout, but only the colorspace/bit depth, this field should be set to the fully planar version of that format (e.g. for 8-bit 420 YUV it should be AV_PIX_FMT_YUV420P, not AV_PIX_FMT_NV12 or anything else).
Examples:
qsvdec.c, and vaapi_encode.c.

Definition at line 221 of file hwcontext.h.

Referenced by amf_init_context(), av_hwframe_ctx_create_derived(), av_hwframe_map(), avcodec_open2(), bufref_wrap_interface(), config_props(), cuda_frames_init(), cuda_get_buffer(), cuda_transfer_get_formats(), cudaupload_config_output(), cuvid_init(), d3d11va_frames_init(), d3d11va_transfer_data(), d3d11va_transfer_get_formats(), drm_map_from(), drm_transfer_get_formats(), dxva2_init_pool(), dxva2_map_from(), dxva2_transfer_data_from(), dxva2_transfer_data_to(), dxva2_transfer_get_formats(), ff_dxva2_common_frame_params(), ff_nvdec_frame_params(), ff_nvenc_encode_init(), ff_opencl_filter_config_input(), ff_opencl_filter_config_output(), ff_vaapi_vpp_config_output(), ff_vdpau_common_frame_params(), ff_videotoolbox_uninit(), fill_texture_ptrs(), get_format(), have_alpha_planar(), hwmap_config_output(), hwupload_config_output(), init_out_pool(), init_processing_chain(), init_stage(), init_vpp_session(), kmsgrab_read_header(), nppscale_deinterleave(), nppscale_interleave(), nvenc_register_frame(), opencl_map_frame(), opencl_map_from(), opencl_mem_flags_for_mapping(), opencl_pool_alloc(), opencl_transfer_data_from(), opencl_transfer_data_to(), opencl_transfer_get_formats(), overlay_opencl_blend(), qsv_frame_lock(), qsv_frames_init(), qsv_init(), qsv_init_child_ctx(), qsv_init_surface(), qsv_transfer_get_formats(), rkmpp_retrieve_frame(), scalecuda_resize(), set_hwframe_ctx(), thumbnail(), vaapi_decode_find_best_format(), vaapi_encode_create_recon_frames(), vaapi_frames_init(), vaapi_map_frame(), vaapi_transfer_get_formats(), vdpau_frames_init(), and vt_transfer_get_formats().

◆ width

int AVHWFramesContext::width

The allocated dimensions of the frames in this pool.

Must be set by the user before calling av_hwframe_ctx_init().

Examples:
qsvdec.c, and vaapi_encode.c.

Definition at line 228 of file hwcontext.h.

Referenced by av_hwframe_ctx_create_derived(), av_hwframe_ctx_init(), cuda_frames_init(), cuda_get_buffer(), cudaupload_config_output(), cuvid_init(), d3d11va_alloc_single(), d3d11va_create_staging_texture(), d3d11va_frames_init(), d3d11va_get_buffer(), drm_get_buffer(), drm_transfer_data_from(), drm_transfer_data_to(), dxva2_get_buffer(), dxva2_init_pool(), ff_dxva2_common_frame_params(), ff_nvdec_frame_params(), ff_opencl_filter_config_output(), ff_vaapi_vpp_config_output(), ff_vdpau_common_frame_params(), ff_videotoolbox_uninit(), get_format(), hwdownload_filter_frame(), hwmap_config_output(), hwupload_config_output(), init_out_pool(), init_stage(), init_vpp_session(), kmsgrab_read_header(), nvenc_register_frame(), opencl_get_buffer(), opencl_mem_flags_for_mapping(), opencl_pool_alloc(), qsv_frame_lock(), qsv_get_buffer(), qsv_init(), qsv_init_child_ctx(), qsv_init_surface(), rkmpp_retrieve_frame(), set_hwframe_ctx(), transfer_data_alloc(), vaapi_decode_make_config(), vaapi_encode_create_recon_frames(), vaapi_get_buffer(), vaapi_map_frame(), vaapi_map_to_memory(), vaapi_pool_alloc(), vaapi_transfer_data_from(), vaapi_transfer_data_to(), vaapi_unmap_frame(), vdpau_get_buffer(), vdpau_pool_alloc(), vt_get_buffer(), vt_map_frame(), vt_transfer_data_from(), and vt_transfer_data_to().

◆ height

int AVHWFramesContext::height

The documentation for this struct was generated from the following file: