FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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
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 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

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 97 of file hwcontext_vaapi.c.

Function Documentation

static const VAAPIFormatDescriptor* vaapi_format_from_fourcc ( unsigned int  fourcc)
static

Definition at line 139 of file hwcontext_vaapi.c.

Referenced by vaapi_map_frame(), and vaapi_pix_fmt_from_fourcc().

static const VAAPIFormatDescriptor* vaapi_format_from_pix_fmt ( enum AVPixelFormat  pix_fmt)
static

Definition at line 149 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 158 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 168 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 185 of file hwcontext_vaapi.c.

static int vaapi_device_init ( AVHWDeviceContext hwdev)
static

Definition at line 327 of file hwcontext_vaapi.c.

static void vaapi_device_uninit ( AVHWDeviceContext hwdev)
static

Definition at line 417 of file hwcontext_vaapi.c.

static void vaapi_buffer_free ( void opaque,
uint8_t data 
)
static

Definition at line 424 of file hwcontext_vaapi.c.

Referenced by vaapi_pool_alloc().

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

Definition at line 440 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init().

static int vaapi_frames_init ( AVHWFramesContext hwfc)
static

Definition at line 484 of file hwcontext_vaapi.c.

static void vaapi_frames_uninit ( AVHWFramesContext hwfc)
static

Definition at line 636 of file hwcontext_vaapi.c.

static int vaapi_get_buffer ( AVHWFramesContext hwfc,
AVFrame frame 
)
static

Definition at line 645 of file hwcontext_vaapi.c.

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

Definition at line 659 of file hwcontext_vaapi.c.

static void vaapi_unmap_frame ( AVHWFramesContext hwfc,
HWMapDescriptor hwmap 
)
static

Definition at line 695 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 867 of file hwcontext_vaapi.c.

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

Definition at line 898 of file hwcontext_vaapi.c.

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

Definition at line 929 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 1380 of file hwcontext_vaapi.c.

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

Definition at line 1393 of file hwcontext_vaapi.c.

static void vaapi_device_free ( AVHWDeviceContext ctx)
static

Definition at line 1406 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 1441 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 1467 of file hwcontext_vaapi.c.

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

Definition at line 1536 of file hwcontext_vaapi.c.

Variable Documentation

const VAAPIFormatDescriptor vaapi_format_map[]
static

Definition at line 105 of file hwcontext_vaapi.c.

const char* friendly_name

Definition at line 303 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init().

const char* match_string

Definition at line 304 of file hwcontext_vaapi.c.

Referenced by vaapi_device_init().

unsigned int quirks

Definition at line 305 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 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().

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:64

Definition at line 1574 of file hwcontext_vaapi.c.