FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavfilter
libmpcodecs
libvo
video_out.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) Aaron Holtzman - Aug 1999
3
* Strongly modified, most parts rewritten: A'rpi/ESP-team - 2000-2001
4
* (C) MPlayer developers
5
*
6
* This file is part of MPlayer.
7
*
8
* MPlayer is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* MPlayer is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License along
19
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
20
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
*/
22
23
#ifndef MPLAYER_VIDEO_OUT_H
24
#define MPLAYER_VIDEO_OUT_H
25
26
#include <inttypes.h>
27
#include <stdarg.h>
28
29
//#include "sub/font_load.h"
30
#include "../img_format.h"
31
//#include "vidix/vidix.h"
32
33
#define VO_EVENT_EXPOSE 1
34
#define VO_EVENT_RESIZE 2
35
#define VO_EVENT_KEYPRESS 4
36
#define VO_EVENT_REINIT 8
37
#define VO_EVENT_MOVE 16
38
39
/* Obsolete: VOCTRL_QUERY_VAA 1 */
40
/* does the device support the required format */
41
#define VOCTRL_QUERY_FORMAT 2
42
/* signal a device reset seek */
43
#define VOCTRL_RESET 3
44
/* true if vo driver can use GUI created windows */
45
#define VOCTRL_GUISUPPORT 4
46
#define VOCTRL_GUI_NOWINDOW 19
47
/* used to switch to fullscreen */
48
#define VOCTRL_FULLSCREEN 5
49
/* signal a device pause */
50
#define VOCTRL_PAUSE 7
51
/* start/resume playback */
52
#define VOCTRL_RESUME 8
53
/* libmpcodecs direct rendering: */
54
#define VOCTRL_GET_IMAGE 9
55
#define VOCTRL_DRAW_IMAGE 13
56
#define VOCTRL_SET_SPU_PALETTE 14
57
/* decoding ahead: */
58
#define VOCTRL_GET_NUM_FRAMES 10
59
#define VOCTRL_GET_FRAME_NUM 11
60
#define VOCTRL_SET_FRAME_NUM 12
61
#define VOCTRL_GET_PANSCAN 15
62
#define VOCTRL_SET_PANSCAN 16
63
/* equalizer controls */
64
#define VOCTRL_SET_EQUALIZER 17
65
#define VOCTRL_GET_EQUALIZER 18
66
//#define VOCTRL_GUI_NOWINDOW 19
67
/* Frame duplication */
68
#define VOCTRL_DUPLICATE_FRAME 20
69
// ... 21
70
#define VOCTRL_START_SLICE 21
71
72
#define VOCTRL_ONTOP 25
73
#define VOCTRL_ROOTWIN 26
74
#define VOCTRL_BORDER 27
75
#define VOCTRL_DRAW_EOSD 28
76
#define VOCTRL_GET_EOSD_RES 29
77
78
#define VOCTRL_SET_DEINTERLACE 30
79
#define VOCTRL_GET_DEINTERLACE 31
80
81
#define VOCTRL_UPDATE_SCREENINFO 32
82
83
// Vo can be used by xover
84
#define VOCTRL_XOVERLAY_SUPPORT 22
85
86
#define VOCTRL_XOVERLAY_SET_COLORKEY 24
87
typedef
struct
{
88
uint32_t
x11
;
// The raw x11 color
89
uint16_t
r
,
g
,
b
;
90
}
mp_colorkey_t
;
91
92
#define VOCTRL_XOVERLAY_SET_WIN 23
93
typedef
struct
{
94
int
x,
y
;
95
int
w
,h;
96
}
mp_win_t
;
97
98
#define VO_TRUE 1
99
#define VO_FALSE 0
100
#define VO_ERROR -1
101
#define VO_NOTAVAIL -2
102
#define VO_NOTIMPL -3
103
104
#define VOFLAG_FULLSCREEN 0x01
105
#define VOFLAG_MODESWITCHING 0x02
106
#define VOFLAG_SWSCALE 0x04
107
#define VOFLAG_FLIPPING 0x08
108
#define VOFLAG_HIDDEN 0x10 //< Use to create a hidden window
109
#define VOFLAG_STEREO 0x20 //< Use to create a stereo-capable window
110
#define VOFLAG_XOVERLAY_SUB_VO 0x10000
111
112
typedef
struct
vo_info_s
113
{
114
/* driver name ("Matrox Millennium G200/G400" */
115
const
char
*
name
;
116
/* short name (for config strings) ("mga") */
117
const
char
*
short_name
;
118
/* author ("Aaron Holtzman <aholtzma@ess.engr.uvic.ca>") */
119
const
char
*
author
;
120
/* any additional comments */
121
const
char
*
comment
;
122
}
vo_info_t
;
123
124
typedef
struct
vo_functions_s
125
{
126
const
vo_info_t
*
info
;
127
/*
128
* Preinitializes driver (real INITIALIZATION)
129
* arg - currently it's vo_subdevice
130
* returns: zero on successful initialization, non-zero on error.
131
*/
132
int (*preinit)(
const
char
*
arg
);
133
/*
134
* Initialize (means CONFIGURE) the display driver.
135
* params:
136
* width,height: image source size
137
* d_width,d_height: size of the requested window size, just a hint
138
* fullscreen: flag, 0=windowd 1=fullscreen, just a hint
139
* title: window title, if available
140
* format: fourcc of pixel format
141
* returns : zero on successful initialization, non-zero on error.
142
*/
143
int (*
config
)(uint32_t
width
, uint32_t
height
, uint32_t d_width,
144
uint32_t d_height, uint32_t fullscreen,
char
*title,
145
uint32_t format);
146
147
/*
148
* Control interface
149
*/
150
int (*
control
)(uint32_t request,
void
*
data
, ...);
151
152
/*
153
* Display a new RGB/BGR frame of the video to the screen.
154
* params:
155
* src[0] - pointer to the image
156
*/
157
int (*
draw_frame
)(
uint8_t
*src[]);
158
159
/*
160
* Draw a planar YUV slice to the buffer:
161
* params:
162
* src[3] = source image planes (Y,U,V)
163
* stride[3] = source image planes line widths (in bytes)
164
* w,h = width*height of area to be copied (in Y pixels)
165
* x,y = position at the destination image (in Y pixels)
166
*/
167
int (*
draw_slice
)(
uint8_t
*src[],
int
stride
[],
int
w,
int
h,
int
x,
int
y);
168
169
/*
170
* Draws OSD to the screen buffer
171
*/
172
void
(*draw_osd)(
void
);
173
174
/*
175
* Blit/Flip buffer to the screen. Must be called after each frame!
176
*/
177
void
(*flip_page)(
void
);
178
179
/*
180
* This func is called after every frames to handle keyboard and
181
* other events. It's called in PAUSE mode too!
182
*/
183
void
(*check_events)(
void
);
184
185
/*
186
* Closes driver. Should restore the original state of the system.
187
*/
188
void
(*
uninit
)(
void
);
189
}
vo_functions_t
;
190
191
const
vo_functions_t
*
init_best_video_out
(
char
** vo_list);
192
int
config_video_out
(
const
vo_functions_t
*vo, uint32_t
width
, uint32_t
height
,
193
uint32_t d_width, uint32_t d_height, uint32_t
flags
,
194
char
*title, uint32_t format);
195
void
list_video_out
(
void
);
196
197
// NULL terminated array of all drivers
198
extern
const
vo_functions_t
*
const
video_out_drivers
[];
199
200
extern
int
vo_flags
;
201
202
extern
int
vo_config_count
;
203
204
extern
int
xinerama_screen
;
205
extern
int
xinerama_x
;
206
extern
int
xinerama_y
;
207
208
// correct resolution/bpp on screen: (should be autodetected by vo_init())
209
extern
int
vo_depthonscreen
;
210
extern
int
vo_screenwidth
;
211
extern
int
vo_screenheight
;
212
213
// requested resolution/bpp: (-x -y -bpp options)
214
extern
int
vo_dx
;
215
extern
int
vo_dy
;
216
extern
int
vo_dwidth
;
217
extern
int
vo_dheight
;
218
extern
int
vo_dbpp
;
219
220
extern
int
vo_grabpointer
;
221
extern
int
vo_doublebuffering
;
222
extern
int
vo_directrendering
;
223
extern
int
vo_vsync
;
224
extern
int
vo_fsmode
;
225
extern
float
vo_panscan
;
226
extern
int
vo_adapter_num
;
227
extern
int
vo_refresh_rate
;
228
extern
int
vo_keepaspect
;
229
extern
int
vo_rootwin
;
230
extern
int
vo_ontop
;
231
extern
int
vo_border
;
232
233
extern
int
vo_gamma_gamma
;
234
extern
int
vo_gamma_brightness
;
235
extern
int
vo_gamma_saturation
;
236
extern
int
vo_gamma_contrast
;
237
extern
int
vo_gamma_hue
;
238
extern
int
vo_gamma_red_intensity
;
239
extern
int
vo_gamma_green_intensity
;
240
extern
int
vo_gamma_blue_intensity
;
241
242
extern
int
vo_nomouse_input
;
243
extern
int
enable_mouse_movements
;
244
245
extern
int
vo_pts
;
246
extern
float
vo_fps
;
247
248
extern
char
*
vo_subdevice
;
249
250
extern
int
vo_colorkey
;
251
252
extern
char
*
vo_winname
;
253
extern
char
*
vo_wintitle
;
254
255
extern
int64_t
WinID
;
256
257
typedef
struct
{
258
float
min
;
259
float
max
;
260
}
range_t
;
261
262
float
range_max
(
range_t
*
r
);
263
int
in_range
(
range_t
*
r
,
float
f);
264
range_t
*
str2range
(
char
*s);
265
extern
char
*
monitor_hfreq_str
;
266
extern
char
*
monitor_vfreq_str
;
267
extern
char
*
monitor_dotclock_str
;
268
269
struct
mp_keymap
{
270
int
from
;
271
int
to
;
272
};
273
int
lookup_keymap_table
(
const
struct
mp_keymap
*map,
int
key);
274
struct
vo_rect
{
275
int
left
,
right
,
top
,
bottom
,
width
,
height
;
276
};
277
void
calc_src_dst_rects
(
int
src_width,
int
src_height,
struct
vo_rect
*src,
struct
vo_rect
*
dst
,
278
struct
vo_rect
*borders,
const
struct
vo_rect
*crop);
279
void
vo_mouse_movement
(
int
posx,
int
posy);
280
281
#endif
/* MPLAYER_VIDEO_OUT_H */
Generated on Sat May 25 2013 03:58:44 for FFmpeg by
1.8.2