FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
vf_deinterlace_qsv.c File Reference

deinterlace video filter - QSV More...

#include <mfx/mfxvideo.h>
#include <stdio.h>
#include <string.h>
#include "libavutil/avstring.h"
#include "libavutil/common.h"
#include "libavutil/hwcontext.h"
#include "libavutil/hwcontext_qsv.h"
#include "libavutil/internal.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/time.h"
#include "libavfilter/qsvvpp.h"
#include "avfilter.h"
#include "formats.h"
#include "internal.h"
#include "video.h"

Go to the source code of this file.

Data Structures

struct  QSVFrame
 
struct  QSVDeintContext
 

Macros

#define OFFSET(x)   offsetof(QSVDeintContext, x)
 
#define FLAGS   AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 

Enumerations

enum  { QSVDEINT_MORE_OUTPUT = 1, QSVDEINT_MORE_INPUT }
 

Functions

static av_cold void qsvdeint_uninit (AVFilterContext *ctx)
 
static int qsvdeint_query_formats (AVFilterContext *ctx)
 
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 init_out_session (AVFilterContext *ctx)
 
static int qsvdeint_config_props (AVFilterLink *outlink)
 
static void clear_unused_frames (QSVDeintContext *s)
 
static int get_free_frame (QSVDeintContext *s, QSVFrame **f)
 
static int submit_frame (AVFilterContext *ctx, AVFrame *frame, mfxFrameSurface1 **surface)
 
static int process_frame (AVFilterContext *ctx, const AVFrame *in, mfxFrameSurface1 *surf_in)
 
static int qsvdeint_filter_frame (AVFilterLink *link, AVFrame *in)
 
static int qsvdeint_request_frame (AVFilterLink *outlink)
 

Variables

static const mfxHandleType handle_types []
 
static const AVOption options []
 
static const AVClass qsvdeint_class
 
static const AVFilterPad qsvdeint_inputs []
 
static const AVFilterPad qsvdeint_outputs []
 
AVFilter ff_vf_deinterlace_qsv
 

Detailed Description

deinterlace video filter - QSV

Definition in file vf_deinterlace_qsv.c.

Macro Definition Documentation

#define OFFSET (   x)    offsetof(QSVDeintContext, x)

Definition at line 554 of file vf_deinterlace_qsv.c.

Definition at line 555 of file vf_deinterlace_qsv.c.

Enumeration Type Documentation

anonymous enum
Enumerator
QSVDEINT_MORE_OUTPUT 
QSVDEINT_MORE_INPUT 

Definition at line 45 of file vf_deinterlace_qsv.c.

Function Documentation

static av_cold void qsvdeint_uninit ( AVFilterContext ctx)
static

Definition at line 86 of file vf_deinterlace_qsv.c.

Referenced by qsvdeint_config_props().

static int qsvdeint_query_formats ( AVFilterContext ctx)
static

Definition at line 112 of file vf_deinterlace_qsv.c.

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

Definition at line 126 of file vf_deinterlace_qsv.c.

Referenced by init_out_session().

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

Definition at line 143 of file vf_deinterlace_qsv.c.

Referenced by init_out_session().

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

Definition at line 148 of file vf_deinterlace_qsv.c.

Referenced by init_out_session().

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

Definition at line 153 of file vf_deinterlace_qsv.c.

Referenced by init_out_session().

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

Definition at line 158 of file vf_deinterlace_qsv.c.

Referenced by init_out_session().

static int init_out_session ( AVFilterContext ctx)
static

Definition at line 170 of file vf_deinterlace_qsv.c.

Referenced by qsvdeint_config_props().

static int qsvdeint_config_props ( AVFilterLink outlink)
static

Definition at line 321 of file vf_deinterlace_qsv.c.

static void clear_unused_frames ( QSVDeintContext s)
static

Definition at line 361 of file vf_deinterlace_qsv.c.

Referenced by get_free_frame().

static int get_free_frame ( QSVDeintContext s,
QSVFrame **  f 
)
static

Definition at line 373 of file vf_deinterlace_qsv.c.

Referenced by submit_frame().

static int submit_frame ( AVFilterContext ctx,
AVFrame frame,
mfxFrameSurface1 **  surface 
)
static

Definition at line 400 of file vf_deinterlace_qsv.c.

Referenced by qsvdeint_filter_frame().

static int process_frame ( AVFilterContext ctx,
const AVFrame in,
mfxFrameSurface1 *  surf_in 
)
static

Definition at line 449 of file vf_deinterlace_qsv.c.

Referenced by qsvdeint_filter_frame().

static int qsvdeint_filter_frame ( AVFilterLink link,
AVFrame in 
)
static

Definition at line 525 of file vf_deinterlace_qsv.c.

static int qsvdeint_request_frame ( AVFilterLink outlink)
static

Definition at line 547 of file vf_deinterlace_qsv.c.

Variable Documentation

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

Definition at line 164 of file vf_deinterlace_qsv.c.

Referenced by init_out_session().

const AVOption options[]
static
Initial value:
= {
{ "mode", "set deinterlace mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = MFX_DEINTERLACING_ADVANCED}, MFX_DEINTERLACING_BOB, MFX_DEINTERLACING_ADVANCED, FLAGS, "mode"},
{ "bob", "bob algorithm", 0, AV_OPT_TYPE_CONST, {.i64 = MFX_DEINTERLACING_BOB}, MFX_DEINTERLACING_BOB, MFX_DEINTERLACING_ADVANCED, FLAGS, "mode"},
{ "advanced", "Motion adaptive algorithm", 0, AV_OPT_TYPE_CONST, {.i64 = MFX_DEINTERLACING_ADVANCED}, MFX_DEINTERLACING_BOB, MFX_DEINTERLACING_ADVANCED, FLAGS, "mode"},
{ NULL },
}
#define NULL
Definition: coverity.c:32
#define FLAGS
#define OFFSET(x)
mode
Use these values in ebur128_init (or&#39;ed).
Definition: ebur128.h:83

Definition at line 556 of file vf_deinterlace_qsv.c.

const AVClass qsvdeint_class
static
Initial value:
= {
.class_name = "deinterlace_qsv",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]

Definition at line 563 of file vf_deinterlace_qsv.c.

const AVFilterPad qsvdeint_inputs[]
static
Initial value:
= {
{
.name = "default",
.filter_frame = qsvdeint_filter_frame,
},
{ NULL }
}
#define NULL
Definition: coverity.c:32
static int qsvdeint_filter_frame(AVFilterLink *link, AVFrame *in)

Definition at line 570 of file vf_deinterlace_qsv.c.

const AVFilterPad qsvdeint_outputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = qsvdeint_config_props,
.request_frame = qsvdeint_request_frame,
},
{ NULL }
}
#define NULL
Definition: coverity.c:32
static int qsvdeint_request_frame(AVFilterLink *outlink)
static int qsvdeint_config_props(AVFilterLink *outlink)

Definition at line 579 of file vf_deinterlace_qsv.c.

AVFilter ff_vf_deinterlace_qsv
Initial value:
= {
.name = "deinterlace_qsv",
.description = NULL_IF_CONFIG_SMALL("QuickSync video deinterlacing"),
.uninit = qsvdeint_uninit,
.query_formats = qsvdeint_query_formats,
.priv_size = sizeof(QSVDeintContext),
.priv_class = &qsvdeint_class,
.flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
}
static av_cold void qsvdeint_uninit(AVFilterContext *ctx)
#define FF_FILTER_FLAG_HWFRAME_AWARE
The filter is aware of hardware frames, and any hardware frame context should not be automatically pr...
Definition: internal.h:385
static const AVClass qsvdeint_class
static const AVFilterPad qsvdeint_inputs[]
static int qsvdeint_query_formats(AVFilterContext *ctx)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static const AVFilterPad outputs[]
Definition: af_acontrast.c:203
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several inputs
static const AVFilterPad qsvdeint_outputs[]

Definition at line 589 of file vf_deinterlace_qsv.c.