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

Macros

#define MAP(va, rt, av)
 

Enumerations

enum  { VAAPI_MAP_READ = 0x01, VAAPI_MAP_WRITE = 0x02, VAAPI_MAP_DIRECT = 0x04 }
 

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 (void *opaque, uint8_t *data)
 
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 void vaapi_device_free (AVHWDeviceContext *ctx)
 
static int vaapi_device_create (AVHWDeviceContext *ctx, const char *device, AVDictionary *opts, int flags)
 

Variables

struct {
   unsigned int   fourcc
 
   unsigned int   rt_format
 
   enum AVPixelFormat   pix_fmt
 
vaapi_format_map []
 
const HWContextType ff_hwcontext_type_vaapi
 

Macro Definition Documentation

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

Definition at line 88 of file hwcontext_vaapi.c.

Enumeration Type Documentation

anonymous enum
Enumerator
VAAPI_MAP_READ 
VAAPI_MAP_WRITE 
VAAPI_MAP_DIRECT 

Definition at line 73 of file hwcontext_vaapi.c.

Function Documentation

static enum AVPixelFormat vaapi_pix_fmt_from_fourcc ( unsigned int  fourcc)
static

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

Referenced by vaapi_frames_init(), and vaapi_map_frame().

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

Definition at line 152 of file hwcontext_vaapi.c.

static int vaapi_device_init ( AVHWDeviceContext hwdev)
static

Definition at line 268 of file hwcontext_vaapi.c.

static void vaapi_device_uninit ( AVHWDeviceContext hwdev)
static

Definition at line 323 of file hwcontext_vaapi.c.

static void vaapi_buffer_free ( void opaque,
uint8_t data 
)
static

Definition at line 330 of file hwcontext_vaapi.c.

Referenced by vaapi_pool_alloc().

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

Definition at line 346 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init().

static int vaapi_frames_init ( AVHWFramesContext hwfc)
static

Definition at line 386 of file hwcontext_vaapi.c.

static void vaapi_frames_uninit ( AVHWFramesContext hwfc)
static

Definition at line 538 of file hwcontext_vaapi.c.

static int vaapi_get_buffer ( AVHWFramesContext hwfc,
AVFrame frame 
)
static

Definition at line 547 of file hwcontext_vaapi.c.

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

Definition at line 561 of file hwcontext_vaapi.c.

static void vaapi_unmap_frame ( void opaque,
uint8_t data 
)
static

Definition at line 590 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

Definition at line 629 of file hwcontext_vaapi.c.

Referenced by vaapi_transfer_data_from(), and vaapi_transfer_data_to().

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

Definition at line 769 of file hwcontext_vaapi.c.

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

Definition at line 794 of file hwcontext_vaapi.c.

static void vaapi_device_free ( AVHWDeviceContext ctx)
static

Definition at line 819 of file hwcontext_vaapi.c.

Referenced by vaapi_device_create().

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

Definition at line 838 of file hwcontext_vaapi.c.

Variable Documentation

unsigned int fourcc
unsigned int rt_format

Definition at line 97 of file hwcontext_vaapi.c.

Referenced by vaapi_frames_init().

enum AVPixelFormat pix_fmt
struct { ... } vaapi_format_map[]
Initial value:
= {
MAP(NV12, YUV420, NV12),
MAP(YV12, YUV420, YUV420P),
MAP(IYUV, YUV420, YUV420P),
MAP(422H, YUV422, YUV422P),
MAP(UYVY, YUV422, UYVY422),
MAP(YUY2, YUV422, YUYV422),
MAP(Y800, YUV400, GRAY8),
MAP(BGRA, RGB32, BGRA),
MAP(BGRX, RGB32, BGR0),
MAP(RGBA, RGB32, RGBA),
MAP(RGBX, RGB32, RGB0),
MAP(ARGB, RGB32, ARGB),
MAP(XRGB, RGB32, 0RGB),
}
#define RGBA(r, g, b, a)
Definition: dvbsubdec.c:153
#define H
Definition: swscale.c:355
#define MAP(va, rt, av)

Referenced by vaapi_frames_init(), and vaapi_pix_fmt_from_fourcc().

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_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,
.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:186
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)
VAAPI hardware pipeline configuration details.
static int vaapi_transfer_get_formats(AVHWFramesContext *hwfc, enum AVHWFrameTransferDirection dir, enum AVPixelFormat **formats)
static int vaapi_transfer_data_to(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src)
static int vaapi_frames_init(AVHWFramesContext *hwfc)
static enum AVPixelFormat pix_fmts[]
Definition: libkvazaar.c:262
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 918 of file hwcontext_vaapi.c.