#include "config.h"
#include <fcntl.h>
#include "avassert.h"
#include "buffer.h"
#include "common.h"
#include "hwcontext.h"
#include "hwcontext_drm.h"
#include "hwcontext_internal.h"
#include "hwcontext_vaapi.h"
#include "mem.h"
#include "pixdesc.h"
#include "pixfmt.h"
Go to the source code of this file.
|
#define | MAP(va, rt, av, swap_uv) |
|
|
static const VAAPIFormatDescriptor * | vaapi_format_from_fourcc (unsigned int fourcc) |
|
static const VAAPIFormatDescriptor * | vaapi_format_from_pix_fmt (enum AVPixelFormat pix_fmt) |
|
static enum AVPixelFormat | vaapi_pix_fmt_from_fourcc (unsigned int fourcc) |
|
static int | vaapi_get_image_format (AVHWDeviceContext *hwdev, enum AVPixelFormat pix_fmt, VAImageFormat **image_format) |
|
static int | vaapi_frames_get_constraints (AVHWDeviceContext *hwdev, const void *hwconfig, AVHWFramesConstraints *constraints) |
|
static int | vaapi_device_init (AVHWDeviceContext *hwdev) |
|
static void | vaapi_device_uninit (AVHWDeviceContext *hwdev) |
|
static void | vaapi_buffer_free (void *opaque, uint8_t *data) |
|
static AVBufferRef * | vaapi_pool_alloc (void *opaque, size_t size) |
|
static int | vaapi_frames_init (AVHWFramesContext *hwfc) |
|
static void | vaapi_frames_uninit (AVHWFramesContext *hwfc) |
|
static int | vaapi_get_buffer (AVHWFramesContext *hwfc, AVFrame *frame) |
|
static int | vaapi_transfer_get_formats (AVHWFramesContext *hwfc, enum AVHWFrameTransferDirection dir, enum AVPixelFormat **formats) |
|
static void | vaapi_unmap_frame (AVHWFramesContext *hwfc, HWMapDescriptor *hwmap) |
|
static int | vaapi_map_frame (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags) |
|
static int | vaapi_transfer_data_from (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src) |
|
static int | vaapi_transfer_data_to (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src) |
|
static int | vaapi_map_to_memory (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags) |
|
static int | vaapi_map_to (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags) |
|
static int | vaapi_map_from (AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags) |
|
static void | vaapi_device_free (AVHWDeviceContext *ctx) |
|
static int | vaapi_device_connect (AVHWDeviceContext *ctx, VADisplay display) |
|
static int | vaapi_device_create (AVHWDeviceContext *ctx, const char *device, AVDictionary *opts, int flags) |
|
static int | vaapi_device_derive (AVHWDeviceContext *ctx, AVHWDeviceContext *src_ctx, AVDictionary *opts, int flags) |
|
◆ MAP
#define MAP |
( |
|
va, |
|
|
|
rt, |
|
|
|
av, |
|
|
|
swap_uv |
|
) |
| |
Value: { \
VA_FOURCC_ ## va, \
VA_RT_FORMAT_ ## rt, \
AV_PIX_FMT_ ## av, \
swap_uv, \
}
Definition at line 101 of file hwcontext_vaapi.c.
◆ vaapi_format_from_fourcc()
static const VAAPIFormatDescriptor* vaapi_format_from_fourcc |
( |
unsigned int |
fourcc | ) |
|
|
static |
◆ vaapi_format_from_pix_fmt()
static const VAAPIFormatDescriptor* vaapi_format_from_pix_fmt |
( |
enum AVPixelFormat |
pix_fmt | ) |
|
|
static |
◆ vaapi_pix_fmt_from_fourcc()
◆ vaapi_get_image_format()
◆ vaapi_frames_get_constraints()
◆ vaapi_device_init()
◆ vaapi_device_uninit()
◆ vaapi_buffer_free()
static void vaapi_buffer_free |
( |
void * |
opaque, |
|
|
uint8_t * |
data |
|
) |
| |
|
static |
◆ vaapi_pool_alloc()
static AVBufferRef* vaapi_pool_alloc |
( |
void * |
opaque, |
|
|
size_t |
size |
|
) |
| |
|
static |
◆ vaapi_frames_init()
◆ vaapi_frames_uninit()
◆ vaapi_get_buffer()
◆ vaapi_transfer_get_formats()
◆ vaapi_unmap_frame()
◆ vaapi_map_frame()
◆ vaapi_transfer_data_from()
◆ vaapi_transfer_data_to()
◆ vaapi_map_to_memory()
◆ vaapi_map_to()
◆ vaapi_map_from()
◆ vaapi_device_free()
◆ vaapi_device_connect()
◆ vaapi_device_create()
◆ vaapi_device_derive()
◆ vaapi_format_map
const VAAPIFormatDescriptor vaapi_format_map[] |
|
static |
◆ friendly_name
const char* friendly_name |
◆ match_string
◆ quirks
◆ vaapi_driver_quirks_table
const { ... } vaapi_driver_quirks_table[] |
Initial value:= {
{
"Intel i965 (Quick Sync)",
"i965",
},
{
"Intel iHD",
"ubit",
},
{
"VDPAU wrapper",
"Splitted-Desktop Systems VDPAU backend for VA-API",
},
}
Referenced by vaapi_device_init().
◆ ff_hwcontext_type_vaapi
static int vaapi_device_derive(AVHWDeviceContext *ctx, AVHWDeviceContext *src_ctx, AVDictionary *opts, int flags)
@ AV_VAAPI_DRIVER_QUIRK_SURFACE_ATTRIBUTES
The driver does not support surface attributes at all.
AVPixelFormat
Pixel format.
VAAPI hardware pipeline configuration details.
static int vaapi_map_to(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
@ AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE
The driver does not support the VASurfaceAttribMemoryType attribute, so the surface allocation code w...
static int vaapi_frames_init(AVHWFramesContext *hwfc)
static int vaapi_transfer_data_to(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
static int vaapi_get_buffer(AVHWFramesContext *hwfc, AVFrame *frame)
static int vaapi_transfer_get_formats(AVHWFramesContext *hwfc, enum AVHWFrameTransferDirection dir, enum AVPixelFormat **formats)
static int device_init(AVFormatContext *ctx, int *width, int *height, uint32_t pixelformat)
static enum AVPixelFormat pix_fmts[]
static int vaapi_device_init(AVHWDeviceContext *hwdev)
static int vaapi_transfer_data_from(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, AVDictionary *opts, int flags)
@ AV_PIX_FMT_VAAPI
Hardware acceleration through VA-API, data[3] contains a VASurfaceID.
static int vaapi_frames_get_constraints(AVHWDeviceContext *hwdev, const void *hwconfig, AVHWFramesConstraints *constraints)
@ AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS
The driver does not destroy parameter buffers when they are used by vaRenderPicture().
static void vaapi_device_uninit(AVHWDeviceContext *hwdev)
VAAPI-specific data associated with a frame pool.
static int vaapi_map_from(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
VAAPI connection details.
static void vaapi_frames_uninit(AVHWFramesContext *hwfc)