FFmpeg
libavfilter
qsvvpp.h
Go to the documentation of this file.
1
/*
2
* This file is part of FFmpeg.
3
*
4
* FFmpeg is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
8
*
9
* FFmpeg is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
13
*
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with FFmpeg; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
24
#ifndef AVFILTER_QSVVPP_H
25
#define AVFILTER_QSVVPP_H
26
27
#include <mfx/mfxvideo.h>
28
29
#include "
avfilter.h
"
30
31
#define FF_INLINK_IDX(link) ((int)((link)->dstpad - (link)->dst->input_pads))
32
#define FF_OUTLINK_IDX(link) ((int)((link)->srcpad - (link)->src->output_pads))
33
34
#define QSV_VERSION_ATLEAST(MAJOR, MINOR) \
35
(MFX_VERSION_MAJOR > (MAJOR) || \
36
MFX_VERSION_MAJOR == (MAJOR) && MFX_VERSION_MINOR >= (MINOR))
37
38
#define QSV_RUNTIME_VERSION_ATLEAST(MFX_VERSION, MAJOR, MINOR) \
39
(MFX_VERSION.Major > (MAJOR)) || \
40
(MFX_VERSION.Major == (MAJOR) && MFX_VERSION.Minor >= (MINOR))
41
42
typedef
struct
QSVVPPContext
QSVVPPContext
;
43
44
typedef
struct
QSVVPPCrop
{
45
int
in_idx
;
46
int
x, y, w,
h
;
47
}
QSVVPPCrop
;
48
49
typedef
struct
QSVVPPParam
{
50
/* default is ff_filter_frame */
51
int (*filter_frame)(
AVFilterLink
*outlink,
AVFrame
*frame);
52
53
/* To fill with MFX enhanced filter configurations */
54
int
num_ext_buf;
55
mfxExtBuffer **ext_buf;
56
57
/* Real output format */
58
enum
AVPixelFormat
out_sw_format;
59
60
/* Crop information for each input, if needed */
61
int
num_crop;
62
QSVVPPCrop
*crop;
63
}
QSVVPPParam
;
64
65
/* create and initialize the QSV session */
66
int
ff_qsvvpp_create(
AVFilterContext
*avctx,
QSVVPPContext
**vpp,
QSVVPPParam
*param);
67
68
/* release the resources (eg.surfaces) */
69
int
ff_qsvvpp_free(
QSVVPPContext
**vpp);
70
71
/* vpp filter frame and call the cb if needed */
72
int
ff_qsvvpp_filter_frame(
QSVVPPContext
*vpp,
AVFilterLink
*inlink,
AVFrame
*frame);
73
74
#endif
/* AVFILTER_QSVVPP_H */
AVFrame
This structure describes decoded (raw) audio or video data.
Definition:
frame.h:218
avfilter.h
Main libavfilter public API header.
QSVVPPParam
Definition:
qsvvpp.h:49
AVFilterLink
A link between two filters.
Definition:
avfilter.h:439
QSVVPPContext
Definition:
qsvvpp.c:48
QSVVPPCrop
Definition:
qsvvpp.h:44
QSVVPPCrop::h
int h
Crop rectangle.
Definition:
qsvvpp.h:46
QSVVPPCrop::in_idx
int in_idx
Input index.
Definition:
qsvvpp.h:45
AVFilterContext
An instance of a filter.
Definition:
avfilter.h:338
AVPixelFormat
AVPixelFormat
Pixel format.
Definition:
pixfmt.h:60
Generated by
1.8.12