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
#include "
mpc_info.h
"
91
92
typedef
struct
vf_seteq_s
93
{
94
const
char
*
item
;
95
int
value
;
96
}
vf_equalizer_t
;
97
98
#define VFCTRL_QUERY_MAX_PP_LEVEL 4
/* test for postprocessing support (max level) */
99
#define VFCTRL_SET_PP_LEVEL 5
/* set postprocessing level */
100
#define VFCTRL_SET_EQUALIZER 6
/* set color options (brightness,contrast etc) */
101
#define VFCTRL_GET_EQUALIZER 8
/* gset color options (brightness,contrast etc) */
102
#define VFCTRL_DRAW_OSD 7
103
#define VFCTRL_CHANGE_RECTANGLE 9
/* Change the rectangle boundaries */
104
#define VFCTRL_FLIP_PAGE 10
/* Tell the vo to flip pages */
105
#define VFCTRL_DUPLICATE_FRAME 11
/* For encoding - encode zero-change frame */
106
#define VFCTRL_SKIP_NEXT_FRAME 12
/* For encoding - drop the next frame that passes thru */
107
#define VFCTRL_FLUSH_FRAMES 13
/* For encoding - flush delayed frames */
108
#define VFCTRL_SCREENSHOT 14
/* Make a screenshot */
109
#define VFCTRL_INIT_EOSD 15
/* Select EOSD renderer */
110
#define VFCTRL_DRAW_EOSD 16
/* Render EOSD */
111
#define VFCTRL_GET_PTS 17
/* Return last pts value that reached vf_vo*/
112
#define VFCTRL_SET_DEINTERLACE 18
/* Set deinterlacing status */
113
#define VFCTRL_GET_DEINTERLACE 19
/* Get deinterlacing status */
114
115
#include "
vfcap.h
"
116
117
//FIXME this should be in a common header, but i dunno which
118
#define MP_NOPTS_VALUE (-1LL<<63) //both int64_t and double should be able to represent this exactly
119
120
121
// functions:
122
void
ff_vf_mpi_clear
(
mp_image_t
* mpi,
int
x0,
int
y0,
int
w,
int
h);
123
mp_image_t
*
ff_vf_get_image
(
vf_instance_t
* vf,
unsigned
int
outfmt,
int
mp_imgtype,
int
mp_imgflag,
int
w,
int
h);
124
125
vf_instance_t
*
vf_open_plugin
(
const
vf_info_t
*
const
* filter_list,
vf_instance_t
* next,
const
char
*
name
,
char
**
args
);
126
vf_instance_t
*
vf_open_filter
(
vf_instance_t
* next,
const
char
*
name
,
char
**
args
);
127
vf_instance_t
*
ff_vf_add_before_vo
(
vf_instance_t
**vf,
char
*
name
,
char
**
args
);
128
vf_instance_t
*
vf_open_encoder
(
vf_instance_t
* next,
const
char
*
name
,
char
*
args
);
129
130
unsigned
int
ff_vf_match_csp
(
vf_instance_t
** vfp,
const
unsigned
int
* list,
unsigned
int
preferred);
131
void
ff_vf_clone_mpi_attributes
(
mp_image_t
* dst,
mp_image_t
*
src
);
132
void
ff_vf_queue_frame
(
vf_instance_t
*vf,
int
(*)(
vf_instance_t
*));
133
int
ff_vf_output_queued_frame
(
vf_instance_t
*vf);
134
135
// default wrappers:
136
int
ff_vf_next_config
(
struct
vf_instance *vf,
137
int
width
,
int
height
,
int
d_width,
int
d_height,
138
unsigned
int
flags
,
unsigned
int
outfmt);
139
int
ff_vf_next_control
(
struct
vf_instance *vf,
int
request,
void
*
data
);
140
void
ff_vf_extra_flip
(
struct
vf_instance *vf);
141
int
ff_vf_next_query_format
(
struct
vf_instance *vf,
unsigned
int
fmt
);
142
int
ff_vf_next_put_image
(
struct
vf_instance *vf,
mp_image_t
*mpi,
double
pts);
143
void
ff_vf_next_draw_slice
(
struct
vf_instance *vf,
unsigned
char
**
src
,
int
*
stride
,
int
w,
int
h,
int
x,
int
y
);
144
145
vf_instance_t
*
ff_append_filters
(
vf_instance_t
* last);
146
147
void
ff_vf_uninit_filter
(
vf_instance_t
* vf);
148
void
ff_vf_uninit_filter_chain
(
vf_instance_t
* vf);
149
150
int
ff_vf_config_wrapper
(
struct
vf_instance *vf,
151
int
width
,
int
height
,
int
d_width,
int
d_height,
152
unsigned
int
flags
,
unsigned
int
outfmt);
153
154
static
inline
int
norm_qscale
(
int
qscale,
int
type
)
155
{
156
switch
(type) {
157
case
0:
// MPEG-1
158
return
qscale;
159
case
1:
// MPEG-2
160
return
qscale >> 1;
161
case
2:
// H264
162
return
qscale >> 2;
163
case
3:
// VP56
164
return
(63 - qscale + 2) >> 2;
165
}
166
return
qscale;
167
}
168
169
#endif
/* MPLAYER_VF_H */
Generated on Sun Mar 23 2014 23:50:08 for FFmpeg by
1.8.2