FFmpeg
Macros | Functions | Variables
qsvvpp.c File Reference
#include "libavutil/common.h"
#include "libavutil/mathematics.h"
#include "libavutil/hwcontext.h"
#include "libavutil/hwcontext_qsv.h"
#include "libavutil/time.h"
#include "libavutil/pixdesc.h"
#include "internal.h"
#include "qsvvpp.h"
#include "video.h"

Go to the source code of this file.

Macros

#define IS_VIDEO_MEMORY(mode)
 
#define IS_OPAQUE_MEMORY(mode)   (mode & MFX_MEMTYPE_OPAQUE_FRAME)
 
#define IS_SYSTEM_MEMORY(mode)   (mode & MFX_MEMTYPE_SYSTEM_MEMORY)
 

Functions

int ff_qsvvpp_print_iopattern (void *log_ctx, int mfx_iopattern, const char *extra_string)
 
static int qsv_map_error (mfxStatus mfx_err, const char **desc)
 
int ff_qsvvpp_print_error (void *log_ctx, mfxStatus err, const char *error_string)
 
int ff_qsvvpp_print_warning (void *log_ctx, mfxStatus err, const char *warning_string)
 
static mfxStatus frame_alloc (mfxHDL pthis, mfxFrameAllocRequest *req, mfxFrameAllocResponse *resp)
 
static mfxStatus frame_free (mfxHDL pthis, mfxFrameAllocResponse *resp)
 
static mfxStatus frame_lock (mfxHDL pthis, mfxMemId mid, mfxFrameData *ptr)
 
static mfxStatus frame_unlock (mfxHDL pthis, mfxMemId mid, mfxFrameData *ptr)
 
static mfxStatus frame_get_hdl (mfxHDL pthis, mfxMemId mid, mfxHDL *hdl)
 
static int pix_fmt_to_mfx_fourcc (int format)
 
static int map_frame_to_surface (AVFrame *frame, mfxFrameSurface1 *surface)
 
static int fill_frameinfo_by_link (mfxFrameInfo *frameinfo, AVFilterLink *link)
 
static void clear_unused_frames (QSVFrame *list)
 
static void clear_frame_list (QSVFrame **list)
 
static QSVFrameget_free_frame (QSVFrame **list)
 
static QSVFramesubmit_frame (QSVVPPContext *s, AVFilterLink *inlink, AVFrame *picref)
 
static QSVFramequery_frame (QSVVPPContext *s, AVFilterLink *outlink)
 
static int init_vpp_session (AVFilterContext *avctx, QSVVPPContext *s)
 
static unsigned int qsv_fifo_item_size (void)
 
static unsigned int qsv_fifo_size (const AVFifoBuffer *fifo)
 
int ff_qsvvpp_create (AVFilterContext *avctx, QSVVPPContext **vpp, QSVVPPParam *param)
 
int ff_qsvvpp_free (QSVVPPContext **vpp)
 
int ff_qsvvpp_filter_frame (QSVVPPContext *s, AVFilterLink *inlink, AVFrame *picref)
 

Variables

static const mfxHandleType handle_types []
 
static const AVRational default_tb = { 1, 90000 }
 
struct {
   int   mfx_iopattern
 
   const char *   desc
 
qsv_iopatterns []
 
struct {
   mfxStatus   mfxerr
 
   int   averr
 
   const char *   desc
 
qsv_errors []
 

Detailed Description

Intel Quick Sync Video VPP base function

Definition in file qsvvpp.c.

Macro Definition Documentation

◆ IS_VIDEO_MEMORY

#define IS_VIDEO_MEMORY (   mode)
Value:
(mode & (MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET | \
MFX_MEMTYPE_VIDEO_MEMORY_PROCESSOR_TARGET))

Definition at line 35 of file qsvvpp.c.

◆ IS_OPAQUE_MEMORY

#define IS_OPAQUE_MEMORY (   mode)    (mode & MFX_MEMTYPE_OPAQUE_FRAME)

Definition at line 37 of file qsvvpp.c.

◆ IS_SYSTEM_MEMORY

#define IS_SYSTEM_MEMORY (   mode)    (mode & MFX_MEMTYPE_SYSTEM_MEMORY)

Definition at line 38 of file qsvvpp.c.

Function Documentation

◆ ff_qsvvpp_print_iopattern()

int ff_qsvvpp_print_iopattern ( void *  log_ctx,
int  mfx_iopattern,
const char *  extra_string 
)

Definition at line 60 of file qsvvpp.c.

Referenced by ff_qsvvpp_create(), and init_out_session().

◆ qsv_map_error()

static int qsv_map_error ( mfxStatus  mfx_err,
const char **  desc 
)
static

Definition at line 117 of file qsvvpp.c.

Referenced by ff_qsvvpp_print_error(), and ff_qsvvpp_print_warning().

◆ ff_qsvvpp_print_error()

int ff_qsvvpp_print_error ( void *  log_ctx,
mfxStatus  err,
const char *  error_string 
)

◆ ff_qsvvpp_print_warning()

int ff_qsvvpp_print_warning ( void *  log_ctx,
mfxStatus  err,
const char *  warning_string 
)

Definition at line 142 of file qsvvpp.c.

Referenced by ff_qsvvpp_create(), init_out_session(), and init_vpp_session().

◆ frame_alloc()

static mfxStatus frame_alloc ( mfxHDL  pthis,
mfxFrameAllocRequest *  req,
mfxFrameAllocResponse *  resp 
)
static

Definition at line 153 of file qsvvpp.c.

Referenced by init_vpp_session().

◆ frame_free()

static mfxStatus frame_free ( mfxHDL  pthis,
mfxFrameAllocResponse *  resp 
)
static

Definition at line 187 of file qsvvpp.c.

Referenced by init_vpp_session().

◆ frame_lock()

static mfxStatus frame_lock ( mfxHDL  pthis,
mfxMemId  mid,
mfxFrameData *  ptr 
)
static

Definition at line 193 of file qsvvpp.c.

Referenced by init_vpp_session().

◆ frame_unlock()

static mfxStatus frame_unlock ( mfxHDL  pthis,
mfxMemId  mid,
mfxFrameData *  ptr 
)
static

Definition at line 198 of file qsvvpp.c.

Referenced by init_vpp_session().

◆ frame_get_hdl()

static mfxStatus frame_get_hdl ( mfxHDL  pthis,
mfxMemId  mid,
mfxHDL *  hdl 
)
static

Definition at line 203 of file qsvvpp.c.

Referenced by init_vpp_session().

◆ pix_fmt_to_mfx_fourcc()

static int pix_fmt_to_mfx_fourcc ( int  format)
static

Definition at line 209 of file qsvvpp.c.

Referenced by fill_frameinfo_by_link().

◆ map_frame_to_surface()

static int map_frame_to_surface ( AVFrame frame,
mfxFrameSurface1 *  surface 
)
static

Definition at line 225 of file qsvvpp.c.

Referenced by query_frame(), and submit_frame().

◆ fill_frameinfo_by_link()

static int fill_frameinfo_by_link ( mfxFrameInfo *  frameinfo,
AVFilterLink link 
)
static

Definition at line 258 of file qsvvpp.c.

Referenced by ff_qsvvpp_create().

◆ clear_unused_frames()

static void clear_unused_frames ( QSVFrame list)
static

Definition at line 305 of file qsvvpp.c.

Referenced by query_frame(), and submit_frame().

◆ clear_frame_list()

static void clear_frame_list ( QSVFrame **  list)
static

Definition at line 318 of file qsvvpp.c.

Referenced by ff_qsvvpp_free().

◆ get_free_frame()

static QSVFrame* get_free_frame ( QSVFrame **  list)
static

Definition at line 330 of file qsvvpp.c.

Referenced by query_frame(), and submit_frame().

◆ submit_frame()

static QSVFrame* submit_frame ( QSVVPPContext s,
AVFilterLink inlink,
AVFrame picref 
)
static

Definition at line 356 of file qsvvpp.c.

Referenced by ff_qsvvpp_filter_frame().

◆ query_frame()

static QSVFrame* query_frame ( QSVVPPContext s,
AVFilterLink outlink 
)
static

Definition at line 427 of file qsvvpp.c.

Referenced by ff_qsvvpp_filter_frame().

◆ init_vpp_session()

static int init_vpp_session ( AVFilterContext avctx,
QSVVPPContext s 
)
static

Definition at line 477 of file qsvvpp.c.

Referenced by ff_qsvvpp_create().

◆ qsv_fifo_item_size()

static unsigned int qsv_fifo_item_size ( void  )
static

Definition at line 640 of file qsvvpp.c.

Referenced by ff_qsvvpp_create(), and qsv_fifo_size().

◆ qsv_fifo_size()

static unsigned int qsv_fifo_size ( const AVFifoBuffer fifo)
static

Definition at line 645 of file qsvvpp.c.

Referenced by ff_qsvvpp_filter_frame().

◆ ff_qsvvpp_create()

int ff_qsvvpp_create ( AVFilterContext avctx,
QSVVPPContext **  vpp,
QSVVPPParam param 
)

keep fifo size at least 1. Even when async_depth is 0, fifo is used.

Definition at line 650 of file qsvvpp.c.

Referenced by config_output().

◆ ff_qsvvpp_free()

int ff_qsvvpp_free ( QSVVPPContext **  vpp)

Definition at line 768 of file qsvvpp.c.

Referenced by ff_qsvvpp_create(), overlay_qsv_uninit(), and vpp_uninit().

◆ ff_qsvvpp_filter_frame()

int ff_qsvvpp_filter_frame ( QSVVPPContext s,
AVFilterLink inlink,
AVFrame picref 
)

Definition at line 793 of file qsvvpp.c.

Referenced by activate(), and process_frame().

Variable Documentation

◆ handle_types

const mfxHandleType handle_types[]
static
Initial value:
= {
MFX_HANDLE_VA_DISPLAY,
MFX_HANDLE_D3D9_DEVICE_MANAGER,
MFX_HANDLE_D3D11_DEVICE,
}

Definition at line 40 of file qsvvpp.c.

Referenced by ff_qsv_init_session_device(), and init_vpp_session().

◆ default_tb

const AVRational default_tb = { 1, 90000 }
static

Definition at line 46 of file qsvvpp.c.

Referenced by ff_qsvvpp_filter_frame(), and submit_frame().

◆ mfx_iopattern

int mfx_iopattern

Definition at line 49 of file qsvvpp.c.

Referenced by ff_qsvvpp_print_iopattern().

◆ desc

const char* desc

◆ qsv_iopatterns

const { ... } qsv_iopatterns[]
Initial value:
= {
{MFX_IOPATTERN_IN_VIDEO_MEMORY, "input is video memory surface" },
{MFX_IOPATTERN_IN_SYSTEM_MEMORY, "input is system memory surface" },
{MFX_IOPATTERN_IN_OPAQUE_MEMORY, "input is opaque memory surface" },
{MFX_IOPATTERN_OUT_VIDEO_MEMORY, "output is video memory surface" },
{MFX_IOPATTERN_OUT_SYSTEM_MEMORY, "output is system memory surface" },
{MFX_IOPATTERN_OUT_OPAQUE_MEMORY, "output is opaque memory surface" },
}

Referenced by ff_qsvvpp_print_iopattern().

◆ mfxerr

mfxStatus mfxerr

Definition at line 78 of file qsvvpp.c.

Referenced by qsv_map_error().

◆ averr

int averr

Definition at line 79 of file qsvvpp.c.

◆ qsv_errors

const { ... } qsv_errors[]

Referenced by qsv_map_error().

mode
mode
Definition: ebur128.h:83