FFmpeg
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
 
struct  VAAPIFormatDescriptor
 

Macros

#define MAP(va, rt, av, swap_uv)
 

Functions

static const VAAPIFormatDescriptorvaapi_format_from_fourcc (unsigned int fourcc)
 
static const VAAPIFormatDescriptorvaapi_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 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, AVDictionary *opts, int flags)
 

Variables

static const VAAPIFormatDescriptor 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

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

Definition at line 98 of file hwcontext_vaapi.c.

Function Documentation

static const VAAPIFormatDescriptor* vaapi_format_from_fourcc ( unsigned int  fourcc)
static
static const VAAPIFormatDescriptor* vaapi_format_from_pix_fmt ( enum AVPixelFormat  pix_fmt)
static

Definition at line 156 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init().

static enum AVPixelFormat vaapi_pix_fmt_from_fourcc ( unsigned int  fourcc)
static

Definition at line 165 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init(), and vaapi_frames_get_constraints().

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

Definition at line 175 of file hwcontext_vaapi.c.

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

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

Definition at line 192 of file hwcontext_vaapi.c.

static int vaapi_device_init ( AVHWDeviceContext hwdev)
static

Definition at line 354 of file hwcontext_vaapi.c.

static void vaapi_device_uninit ( AVHWDeviceContext hwdev)
static

Definition at line 444 of file hwcontext_vaapi.c.

static void vaapi_buffer_free ( void opaque,
uint8_t data 
)
static

Definition at line 451 of file hwcontext_vaapi.c.

Referenced by vaapi_pool_alloc().

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

Definition at line 467 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init().

static int vaapi_frames_init ( AVHWFramesContext hwfc)
static

Definition at line 511 of file hwcontext_vaapi.c.

static void vaapi_frames_uninit ( AVHWFramesContext hwfc)
static

Definition at line 663 of file hwcontext_vaapi.c.

static int vaapi_get_buffer ( AVHWFramesContext hwfc,
AVFrame frame 
)
static

Definition at line 672 of file hwcontext_vaapi.c.

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

Definition at line 686 of file hwcontext_vaapi.c.

static void vaapi_unmap_frame ( AVHWFramesContext hwfc,
HWMapDescriptor hwmap 
)
static

Definition at line 722 of file hwcontext_vaapi.c.

Referenced by vaapi_map_frame().

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

Definition at line 894 of file hwcontext_vaapi.c.

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

Definition at line 925 of file hwcontext_vaapi.c.

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

Definition at line 956 of file hwcontext_vaapi.c.

Referenced by vaapi_map_from().

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

Definition at line 1407 of file hwcontext_vaapi.c.

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

Definition at line 1420 of file hwcontext_vaapi.c.

static void vaapi_device_free ( AVHWDeviceContext ctx)
static

Definition at line 1433 of file hwcontext_vaapi.c.

Referenced by vaapi_device_create(), and vaapi_device_derive().

static int vaapi_device_connect ( AVHWDeviceContext ctx,
VADisplay  display 
)
static

Definition at line 1468 of file hwcontext_vaapi.c.

Referenced by vaapi_device_create(), and vaapi_device_derive().

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

Definition at line 1494 of file hwcontext_vaapi.c.

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

Definition at line 1649 of file hwcontext_vaapi.c.

Variable Documentation

const VAAPIFormatDescriptor vaapi_format_map[]
static

Definition at line 106 of file hwcontext_vaapi.c.

const char* friendly_name

Definition at line 330 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init().

const char* match_string

Definition at line 331 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init().

unsigned int quirks

Definition at line 332 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init().

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

Referenced by vaapi_device_init().

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:192
static int vaapi_get_buffer(AVHWFramesContext *hwfc, AVFrame *frame)
static int vaapi_device_derive(AVHWDeviceContext *ctx, AVHWDeviceContext *src_ctx, AVDictionary *opts, int flags)
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)
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:300
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:64

Definition at line 1737 of file hwcontext_vaapi.c.