FFmpeg
Loading...
Searching...
No Matches
qsvvpp.c File Reference

Intel Quick Sync Video VPP base function. More...

#include "libavutil/common.h"
#include "libavutil/mathematics.h"
#include "libavutil/mem.h"
#include "libavutil/time.h"
#include "libavutil/pixdesc.h"
#include "filters.h"
#include "qsvvpp.h"
#include "video.h"

Go to the source code of this file.

Data Structures

struct  QSVAsyncFrame
 

Macros

#define MFXUnload(a)
 
#define IS_VIDEO_MEMORY(mode)
 
#define IS_SYSTEM_MEMORY(mode)
 
#define MFX_IMPL_VIA_MASK(impl)
 
#define QSV_HAVE_AUDIO   !QSV_ONEVPL
 

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, const AVFrame *in, const AVFrame *propref)
 
static int init_vpp_session (AVFilterContext *avctx, QSVVPPContext *s)
 
static int set_frame_ext_params_null (AVFilterContext *ctx, const AVFrame *in, AVFrame *out, QSVVPPFrameParam *fp)
 
int ff_qsvvpp_init (AVFilterContext *avctx, QSVVPPParam *param)
 
static int qsvvpp_init_vpp_session (AVFilterContext *avctx, QSVVPPContext *s, const QSVFrame *in, QSVFrame *out)
 
int ff_qsvvpp_close (AVFilterContext *avctx)
 
int ff_qsvvpp_filter_frame (QSVVPPContext *s, AVFilterLink *inlink, AVFrame *picref, AVFrame *propref)
 
int ff_qsvvpp_create_mfx_session (void *ctx, void *loader, mfxIMPL implementation, mfxVersion *pver, mfxSession *psession)
 
AVFrameff_qsvvpp_get_video_buffer (AVFilterLink *inlink, int w, int h)
 

Variables

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

◆ MFXUnload

#define MFXUnload ( a)
Value:
do { } while(0)

Definition at line 37 of file qsvvpp.c.

◆ IS_VIDEO_MEMORY

#define IS_VIDEO_MEMORY ( mode)
Value:
(mode & (MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET | \
MFX_MEMTYPE_VIDEO_MEMORY_PROCESSOR_TARGET))
Definition swscale.c:71

Definition at line 40 of file qsvvpp.c.

Referenced by ff_qsvvpp_init(), and init_vpp_session().

◆ IS_SYSTEM_MEMORY

#define IS_SYSTEM_MEMORY ( mode)
Value:
(mode & MFX_MEMTYPE_SYSTEM_MEMORY)

Definition at line 45 of file qsvvpp.c.

Referenced by ff_qsvvpp_init(), query_frame(), and submit_frame().

◆ MFX_IMPL_VIA_MASK

#define MFX_IMPL_VIA_MASK ( impl)
Value:
(0x0f00 & (impl))

Definition at line 46 of file qsvvpp.c.

Referenced by init_vpp_session().

◆ QSV_HAVE_AUDIO

#define QSV_HAVE_AUDIO   !QSV_ONEVPL

Definition at line 48 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 73 of file qsvvpp.c.

Referenced by ff_qsvvpp_init().

◆ qsv_map_error()

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

Definition at line 140 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 )

◆ frame_alloc()

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

◆ frame_free()

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

◆ frame_lock()

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

Definition at line 216 of file qsvvpp.c.

Referenced by gfxcapture_activate(), init_vpp_session(), and qsv_init_internal_session().

◆ frame_unlock()

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

Definition at line 221 of file qsvvpp.c.

Referenced by init_vpp_session(), and qsv_init_internal_session().

◆ frame_get_hdl()

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

Definition at line 226 of file qsvvpp.c.

Referenced by init_vpp_session(), and qsv_init_internal_session().

◆ pix_fmt_to_mfx_fourcc()

static int pix_fmt_to_mfx_fourcc ( int format)
static

Definition at line 238 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 260 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 298 of file qsvvpp.c.

Referenced by ff_qsvvpp_init().

◆ clear_unused_frames()

static void clear_unused_frames ( QSVFrame * list)
static

Definition at line 354 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 367 of file qsvvpp.c.

Referenced by ff_qsvvpp_close().

◆ get_free_frame()

static QSVFrame * get_free_frame ( QSVFrame ** list)
static

Definition at line 379 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 405 of file qsvvpp.c.

Referenced by ff_qsvvpp_filter_frame().

◆ query_frame()

static QSVFrame * query_frame ( QSVVPPContext * s,
AVFilterLink * outlink,
const AVFrame * in,
const AVFrame * propref )
static

Definition at line 474 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 553 of file qsvvpp.c.

Referenced by ff_qsvvpp_init().

◆ set_frame_ext_params_null()

static int set_frame_ext_params_null ( AVFilterContext * ctx,
const AVFrame * in,
AVFrame * out,
QSVVPPFrameParam * fp )
static

Definition at line 738 of file qsvvpp.c.

Referenced by ff_qsvvpp_init().

◆ ff_qsvvpp_init()

int ff_qsvvpp_init ( AVFilterContext * avctx,
QSVVPPParam * param )

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

Definition at line 743 of file qsvvpp.c.

Referenced by config_output(), config_output(), and config_output().

◆ qsvvpp_init_vpp_session()

static int qsvvpp_init_vpp_session ( AVFilterContext * avctx,
QSVVPPContext * s,
const QSVFrame * in,
QSVFrame * out )
static

Definition at line 881 of file qsvvpp.c.

Referenced by ff_qsvvpp_filter_frame().

◆ ff_qsvvpp_close()

int ff_qsvvpp_close ( AVFilterContext * avctx)

Definition at line 935 of file qsvvpp.c.

Referenced by ff_qsvvpp_init(), overlay_qsv_uninit(), qsv_stack_uninit(), and vpp_uninit().

◆ ff_qsvvpp_filter_frame()

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

Definition at line 959 of file qsvvpp.c.

Referenced by activate(), process_frame(), and process_frame().

◆ ff_qsvvpp_create_mfx_session()

int ff_qsvvpp_create_mfx_session ( void * ctx,
void * loader,
mfxIMPL implementation,
mfxVersion * pver,
mfxSession * psession )

Definition at line 1110 of file qsvvpp.c.

Referenced by init_vpp_session().

◆ ff_qsvvpp_get_video_buffer()

AVFrame * ff_qsvvpp_get_video_buffer ( AVFilterLink * inlink,
int w,
int h )

Definition at line 1141 of file qsvvpp.c.

Variable Documentation

◆ default_tb

const AVRational default_tb = { 1, 90000 }
static

Definition at line 50 of file qsvvpp.c.

Referenced by ff_qsvvpp_filter_frame(), and submit_frame().

◆ mfx_iopattern

int mfx_iopattern

Definition at line 58 of file qsvvpp.c.

◆ desc

const char* desc

Definition at line 59 of file qsvvpp.c.

◆ [struct]

const struct { ... } 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_OUT_VIDEO_MEMORY, "output is video memory surface" },
{MFX_IOPATTERN_OUT_SYSTEM_MEMORY, "output is system memory surface" },
}

◆ mfxerr

mfxStatus mfxerr

Definition at line 91 of file qsvvpp.c.

◆ averr

int averr

Definition at line 92 of file qsvvpp.c.

◆ [struct]

const struct { ... } qsv_errors[]