FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavfilter
libmpcodecs
vf.h
Go to the documentation of this file.
1
/*
2
* This file is part of MPlayer.
3
*
4
* MPlayer is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* MPlayer 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
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
*/
18
19
#ifndef MPLAYER_VF_H
20
#define MPLAYER_VF_H
21
22
//#include "m_option.h"
23
#include "
mp_image.h
"
24
25
//extern m_obj_settings_t* vf_settings;
26
//extern const m_obj_list_t vf_obj_list;
27
28
struct
vf_instance;
29
struct
vf_priv_s;
30
31
typedef
struct
vf_info_s {
32
const
char
*
info
;
33
const
char
*
name
;
34
const
char
*
author
;
35
const
char
*
comment
;
36
int (*vf_open)(
struct
vf_instance *vf,
char
*
args
);
37
// Ptr to a struct dscribing the options
38
const
void
*
opts
;
39
}
vf_info_t
;
40
41
#define NUM_NUMBERED_MPI 50
42
43
typedef
struct
vf_image_context_s {
44
mp_image_t
* static_images[2];
45
mp_image_t
* temp_images[1];
46
mp_image_t
* export_images[1];
47
mp_image_t
* numbered_images[
NUM_NUMBERED_MPI
];
48
int
static_idx
;
49
}
vf_image_context_t
;
50
51
typedef
struct
vf_format_context_t
{
52
int
have_configured
;
53
int
orig_width
,
orig_height
,
orig_fmt
;
54
}
vf_format_context_t
;
55
56
typedef
struct
vf_instance {
57
const
vf_info_t
*
info
;
58
// funcs:
59
int (*
config
)(
struct
vf_instance *vf,
60
int
width
,
int
height
,
int
d_width,
int
d_height,
61
unsigned
int
flags
,
unsigned
int
outfmt);
62
int (*control)(
struct
vf_instance *vf,
63
int
request,
void
*
data
);
64
int (*query_format)(
struct
vf_instance *vf,
65
unsigned
int
fmt
);
66
void
(*get_image)(
struct
vf_instance *vf,
67
mp_image_t
*mpi);
68
int (*put_image)(
struct
vf_instance *vf,
69
mp_image_t
*mpi,
double
pts
);
70
void
(*start_slice)(
struct
vf_instance *vf,
71
mp_image_t
*mpi);
72
void
(*
draw_slice
)(
struct
vf_instance *vf,
73
unsigned
char
**
src
,
int
*
stride
,
int
w,
int
h,
int
x,
int
y
);
74
void
(*
uninit
)(
struct
vf_instance *vf);
75
76
int (*continue_buffered_image)(
struct
vf_instance *vf);
77
// caps:
78
unsigned
int
default_caps
;
// used by default query_format()
79
unsigned
int
default_reqs
;
// used by default config()
80
// data:
81
int
w
, h;
82
vf_image_context_t
imgctx
;
83
vf_format_context_t
fmt
;
84
struct
vf_instance *
next
;
85
mp_image_t
*
dmpi
;
86
struct
vf_priv_s*
priv
;
87
}
vf_instance_t
;
88
89
// control codes:
90
typedef
struct
vf_seteq_s
91
{
92
const
char
*
item
;
93
int
value
;
94
}
vf_equalizer_t
;
95
96
#define VFCTRL_QUERY_MAX_PP_LEVEL 4
/* test for postprocessing support (max level) */
97
#define VFCTRL_SET_PP_LEVEL 5
/* set postprocessing level */
98
#define VFCTRL_SET_EQUALIZER 6
/* set color options (brightness,contrast etc) */
99
#define VFCTRL_GET_EQUALIZER 8
/* gset color options (brightness,contrast etc) */
100
#define VFCTRL_DRAW_OSD 7
101
#define VFCTRL_CHANGE_RECTANGLE 9
/* Change the rectangle boundaries */
102
#define VFCTRL_FLIP_PAGE 10
/* Tell the vo to flip pages */
103
#define VFCTRL_DUPLICATE_FRAME 11
/* For encoding - encode zero-change frame */
104
#define VFCTRL_SKIP_NEXT_FRAME 12
/* For encoding - drop the next frame that passes through */
105
#define VFCTRL_FLUSH_FRAMES 13
/* For encoding - flush delayed frames */
106
#define VFCTRL_SCREENSHOT 14
/* Make a screenshot */
107
#define VFCTRL_INIT_EOSD 15
/* Select EOSD renderer */
108
#define VFCTRL_DRAW_EOSD 16
/* Render EOSD */
109
#define VFCTRL_GET_PTS 17
/* Return last pts value that reached vf_vo*/
110
#define VFCTRL_SET_DEINTERLACE 18
/* Set deinterlacing status */
111
#define VFCTRL_GET_DEINTERLACE 19
/* Get deinterlacing status */
112
113
#include "
vfcap.h
"
114
115
//FIXME this should be in a common header, but i dunno which
116
#define MP_NOPTS_VALUE (-1LL<<63) //both int64_t and double should be able to represent this exactly
117
118
119
// functions:
120
void
ff_vf_mpi_clear
(
mp_image_t
* mpi,
int
x0,
int
y0,
int
w,
int
h);
121
mp_image_t
*
ff_vf_get_image
(
vf_instance_t
* vf,
unsigned
int
outfmt,
int
mp_imgtype,
int
mp_imgflag,
int
w,
int
h);
122
123
vf_instance_t
*
vf_open_plugin
(
const
vf_info_t
*
const
* filter_list,
vf_instance_t
* next,
const
char
*
name
,
char
**
args
);
124
vf_instance_t
*
vf_open_filter
(
vf_instance_t
* next,
const
char
*
name
,
char
**
args
);
125
vf_instance_t
*
ff_vf_add_before_vo
(
vf_instance_t
**vf,
char
*
name
,
char
**
args
);
126
vf_instance_t
*
vf_open_encoder
(
vf_instance_t
* next,
const
char
*
name
,
char
*
args
);
127
128
unsigned
int
ff_vf_match_csp
(
vf_instance_t
** vfp,
const
unsigned
int
* list,
unsigned
int
preferred);
129
void
ff_vf_clone_mpi_attributes
(
mp_image_t
* dst,
mp_image_t
*
src
);
130
void
ff_vf_queue_frame
(
vf_instance_t
*vf,
int
(*)(
vf_instance_t
*));
131
int
ff_vf_output_queued_frame
(
vf_instance_t
*vf);
132
133
// default wrappers:
134
int
ff_vf_next_config
(
struct
vf_instance *vf,
135
int
width
,
int
height
,
int
d_width,
int
d_height,
136
unsigned
int
flags
,
unsigned
int
outfmt);
137
int
ff_vf_next_control
(
struct
vf_instance *vf,
int
request,
void
*
data
);
138
void
ff_vf_extra_flip
(
struct
vf_instance *vf);
139
int
ff_vf_next_query_format
(
struct
vf_instance *vf,
unsigned
int
fmt
);
140
int
ff_vf_next_put_image
(
struct
vf_instance *vf,
mp_image_t
*mpi,
double
pts
);
141
void
ff_vf_next_draw_slice
(
struct
vf_instance *vf,
unsigned
char
**
src
,
int
*
stride
,
int
w,
int
h,
int
x,
int
y
);
142
143
vf_instance_t
*
ff_append_filters
(
vf_instance_t
* last);
144
145
void
ff_vf_uninit_filter
(
vf_instance_t
* vf);
146
void
ff_vf_uninit_filter_chain
(
vf_instance_t
* vf);
147
148
int
ff_vf_config_wrapper
(
struct
vf_instance *vf,
149
int
width
,
int
height
,
int
d_width,
int
d_height,
150
unsigned
int
flags
,
unsigned
int
outfmt);
151
152
static
inline
int
norm_qscale
(
int
qscale,
int
type
)
153
{
154
switch
(type) {
155
case
0:
// MPEG-1
156
return
qscale;
157
case
1:
// MPEG-2
158
return
qscale >> 1;
159
case
2:
// H264
160
return
qscale >> 2;
161
case
3:
// VP56
162
return
(63 - qscale + 2) >> 2;
163
}
164
return
qscale;
165
}
166
167
#endif
/* MPLAYER_VF_H */
Generated on Fri Jan 30 2015 19:21:24 for FFmpeg by
1.8.2