FFmpeg  4.0
Data Structures | Macros | Functions | Variables
hwcontext_vaapi.c File Reference
#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.

Data Structures

struct  VAAPIDevicePriv
 
struct  VAAPISurfaceFormat
 
struct  VAAPIDeviceContext
 
struct  VAAPIFramesContext
 
struct  VAAPIMapping
 

Macros

#define MAP(va, rt, av)
 

Functions

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 AVBufferRefvaapi_pool_alloc (void *opaque, int 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, int flags)
 

Variables

struct {
   unsigned int   fourcc
 
   unsigned int   rt_format
 
   enum AVPixelFormat   pix_fmt
 
vaapi_format_map []
 
struct {
   const char *   friendly_name
 
   const char *   match_string
 
   unsigned int   quirks
 
vaapi_driver_quirks_table []
 
const HWContextType ff_hwcontext_type_vaapi
 

Macro Definition Documentation

◆ MAP

#define MAP (   va,
  rt,
  av 
)
Value:
{ \
VA_FOURCC_ ## va, \
VA_RT_FORMAT_ ## rt, \
AV_PIX_FMT_ ## av \
}

Definition at line 90 of file hwcontext_vaapi.c.

Function Documentation

◆ vaapi_pix_fmt_from_fourcc()

static enum AVPixelFormat vaapi_pix_fmt_from_fourcc ( unsigned int  fourcc)
static

Definition at line 134 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init(), and vaapi_frames_get_constraints().

◆ vaapi_get_image_format()

static int vaapi_get_image_format ( AVHWDeviceContext hwdev,
enum AVPixelFormat  pix_fmt,
VAImageFormat **  image_format 
)
static

Definition at line 143 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init(), vaapi_map_frame(), and vaapi_map_to_memory().

◆ vaapi_frames_get_constraints()

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

Definition at line 160 of file hwcontext_vaapi.c.

◆ vaapi_device_init()

static int vaapi_device_init ( AVHWDeviceContext hwdev)
static

Definition at line 299 of file hwcontext_vaapi.c.

◆ vaapi_device_uninit()

static void vaapi_device_uninit ( AVHWDeviceContext hwdev)
static

Definition at line 381 of file hwcontext_vaapi.c.

◆ vaapi_buffer_free()

static void vaapi_buffer_free ( void opaque,
uint8_t data 
)
static

Definition at line 388 of file hwcontext_vaapi.c.

Referenced by vaapi_pool_alloc().

◆ vaapi_pool_alloc()

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

Definition at line 404 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init().

◆ vaapi_frames_init()

static int vaapi_frames_init ( AVHWFramesContext hwfc)
static

Definition at line 448 of file hwcontext_vaapi.c.

◆ vaapi_frames_uninit()

static void vaapi_frames_uninit ( AVHWFramesContext hwfc)
static

Definition at line 606 of file hwcontext_vaapi.c.

◆ vaapi_get_buffer()

static int vaapi_get_buffer ( AVHWFramesContext hwfc,
AVFrame frame 
)
static

Definition at line 615 of file hwcontext_vaapi.c.

◆ vaapi_transfer_get_formats()

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

Definition at line 629 of file hwcontext_vaapi.c.

◆ vaapi_unmap_frame()

static void vaapi_unmap_frame ( AVHWFramesContext hwfc,
HWMapDescriptor hwmap 
)
static

Definition at line 665 of file hwcontext_vaapi.c.

Referenced by vaapi_map_frame().

◆ vaapi_map_frame()

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

◆ vaapi_transfer_data_from()

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

Definition at line 838 of file hwcontext_vaapi.c.

◆ vaapi_transfer_data_to()

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

Definition at line 869 of file hwcontext_vaapi.c.

◆ vaapi_map_to_memory()

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

Definition at line 900 of file hwcontext_vaapi.c.

Referenced by vaapi_map_from().

◆ vaapi_map_to()

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

Definition at line 1341 of file hwcontext_vaapi.c.

◆ vaapi_map_from()

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

Definition at line 1354 of file hwcontext_vaapi.c.

◆ vaapi_device_free()

static void vaapi_device_free ( AVHWDeviceContext ctx)
static

Definition at line 1367 of file hwcontext_vaapi.c.

Referenced by vaapi_device_create(), and vaapi_device_derive().

◆ vaapi_device_connect()

static int vaapi_device_connect ( AVHWDeviceContext ctx,
VADisplay  display 
)
static

Definition at line 1402 of file hwcontext_vaapi.c.

Referenced by vaapi_device_create(), and vaapi_device_derive().

◆ vaapi_device_create()

static int vaapi_device_create ( AVHWDeviceContext ctx,
const char *  device,
AVDictionary opts,
int  flags 
)
static

Definition at line 1428 of file hwcontext_vaapi.c.

◆ vaapi_device_derive()

static int vaapi_device_derive ( AVHWDeviceContext ctx,
AVHWDeviceContext src_ctx,
int  flags 
)
static

Definition at line 1497 of file hwcontext_vaapi.c.

Variable Documentation

◆ fourcc

unsigned int fourcc

◆ rt_format

unsigned int rt_format

Definition at line 99 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init().

◆ pix_fmt

enum AVPixelFormat pix_fmt

◆ vaapi_format_map

const { ... } vaapi_format_map[]

◆ friendly_name

const char* friendly_name

Definition at line 278 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init().

◆ match_string

const char* match_string

Definition at line 279 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init().

◆ quirks

unsigned int quirks

Definition at line 280 of file hwcontext_vaapi.c.

◆ 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",
},
}
The driver does not support the VASurfaceAttribMemoryType attribute, so the surface allocation code w...
The driver does not destroy parameter buffers when they are used by vaRenderPicture().
The driver does not support surface attributes at all.

Referenced by vaapi_device_init().

◆ ff_hwcontext_type_vaapi

const HWContextType ff_hwcontext_type_vaapi
Initial value:
= {
.name = "VAAPI",
.device_hwctx_size = sizeof(AVVAAPIDeviceContext),
.device_priv_size = sizeof(VAAPIDeviceContext),
.device_hwconfig_size = sizeof(AVVAAPIHWConfig),
.frames_hwctx_size = sizeof(AVVAAPIFramesContext),
.frames_priv_size = sizeof(VAAPIFramesContext),
.device_create = &vaapi_device_create,
.device_derive = &vaapi_device_derive,
.device_uninit = &vaapi_device_uninit,
.frames_get_constraints = &vaapi_frames_get_constraints,
.frames_init = &vaapi_frames_init,
.frames_uninit = &vaapi_frames_uninit,
.frames_get_buffer = &vaapi_get_buffer,
.transfer_get_formats = &vaapi_transfer_get_formats,
.transfer_data_to = &vaapi_transfer_data_to,
.transfer_data_from = &vaapi_transfer_data_from,
.map_to = &vaapi_map_to,
.map_from = &vaapi_map_from,
.pix_fmts = (const enum AVPixelFormat[]) {
},
}
VAAPI-specific data associated with a frame pool.
static int device_init(AVFormatContext *ctx, int *width, int *height, uint32_t pixelformat)
Definition: v4l2.c:188
static int vaapi_get_buffer(AVHWFramesContext *hwfc, AVFrame *frame)
static int vaapi_transfer_data_from(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
static int vaapi_device_init(AVHWDeviceContext *hwdev)
static void vaapi_frames_uninit(AVHWFramesContext *hwfc)
static int vaapi_device_derive(AVHWDeviceContext *ctx, AVHWDeviceContext *src_ctx, int flags)
VAAPI hardware pipeline configuration details.
static int vaapi_transfer_get_formats(AVHWFramesContext *hwfc, enum AVHWFrameTransferDirection dir, enum AVPixelFormat **formats)
static int vaapi_map_to(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
static int vaapi_transfer_data_to(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
static int vaapi_map_from(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags)
static int vaapi_frames_init(AVHWFramesContext *hwfc)
static enum AVPixelFormat pix_fmts[]
Definition: libkvazaar.c:266
static void vaapi_device_uninit(AVHWDeviceContext *hwdev)
static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, AVDictionary *opts, int flags)
static int vaapi_frames_get_constraints(AVHWDeviceContext *hwdev, const void *hwconfig, AVHWFramesConstraints *constraints)
VAAPI connection details.
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60

Definition at line 1535 of file hwcontext_vaapi.c.