VLC  3.0.21
vlc_vout_display.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * vlc_vout_display.h: vout_display_t definitions
3  *****************************************************************************
4  * Copyright (C) 2009 Laurent Aimar
5  * $Id$
6  *
7  * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
8  *
9  * This program is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23 
24 #ifndef VLC_VOUT_DISPLAY_H
25 #define VLC_VOUT_DISPLAY_H 1
26 
27 #include <vlc_es.h>
28 #include <vlc_picture.h>
29 #include <vlc_picture_pool.h>
30 #include <vlc_subpicture.h>
31 #include <vlc_actions.h>
32 #include <vlc_mouse.h>
33 #include <vlc_vout.h>
34 #include <vlc_vout_window.h>
35 #include <vlc_viewpoint.h>
36 
37 /**
38  * \defgroup video_display Video output display
39  * Video output display: output buffers and rendering
40  *
41  * \ingroup video_output
42  * @{
43  * \file
44  * Video output display modules interface
45  */
46 
47 /* XXX
48  * Do NOT use video_format_t::i_aspect but i_sar_num/den everywhere. i_aspect
49  * will be removed as soon as possible.
50  *
51  */
55 
56 /**
57  * Possible alignments for vout_display.
58  */
59 typedef enum
60 {
62  /* */
65  /* */
69 
70 /**
71  * Window management state.
72  */
73 enum {
78 };
79 
80 /**
81  * Initial/Current configuration for a vout_display_t
82  */
83 typedef struct {
84 #if defined(_WIN32) || defined(__OS2__)
85  bool is_fullscreen VLC_DEPRECATED; /* Is the display fullscreen */
86 #endif
87 
88  /* Display properties */
89  struct {
90  /* Window title (may be NULL) */
91  const char *title;
92 
93  /* Display size */
94  unsigned width;
95  unsigned height;
96 
97  /* Display SAR */
99  } display;
100 
101  /* Alignment of the picture inside the display */
102  struct {
104  int vertical;
105  } align;
106 
107  /* Do we fill up the display with the video */
109 
110  /* Zoom to use
111  * It will be applied to the whole display if b_display_filled is set, otherwise
112  * only on the video source */
113  struct {
114  int num;
115  int den;
116  } zoom;
117 
120 
121 /**
122  * Information from a vout_display_t to configure
123  * the core behaviour.
124  *
125  * By default they are all false or NULL.
126  *
127  */
128 typedef struct {
129  bool is_slow; /* The picture memory has slow read/write */
130  bool has_double_click; /* Is double-click generated */
131  bool needs_hide_mouse; /* Needs VOUT_DISPLAY_HIDE_MOUSE,
132  * needs to call vout_display_SendEventMouseMoved()
133  * or vout_display_SendEventMouseState() */
134  bool has_pictures_invalid; /* Will VOUT_DISPLAY_EVENT_PICTURES_INVALID be used */
135  const vlc_fourcc_t *subpicture_chromas; /* List of supported chromas for subpicture rendering. */
137 
138 /**
139  * Control query for vout_display_t
140  */
141 enum {
142  /* Hide the mouse. It will be sent when
143  * vout_display_t::info.needs_hide_mouse is true */
145 
146  /* Ask to reset the internal buffers after a VOUT_DISPLAY_EVENT_PICTURES_INVALID
147  * request.
148  */
150 
151 #if defined(_WIN32) || defined(__OS2__)
152  /* Ask the module to acknowledge/refuse the fullscreen state change after
153  * being requested (externally or by VOUT_DISPLAY_EVENT_FULLSCREEN */
154  VOUT_DISPLAY_CHANGE_FULLSCREEN VLC_DEPRECATED_ENUM, /* bool fs */
155  /* Ask the module to acknowledge/refuse the window management state change
156  * after being requested externally or by VOUT_DISPLAY_WINDOW_STATE */
157  VOUT_DISPLAY_CHANGE_WINDOW_STATE VLC_DEPRECATED_ENUM, /* unsigned state */
158 #endif
159  /* Ask the module to acknowledge/refuse the display size change requested
160  * (externally or by VOUT_DISPLAY_EVENT_DISPLAY_SIZE) */
161  VOUT_DISPLAY_CHANGE_DISPLAY_SIZE, /* const vout_display_cfg_t *p_cfg */
162 
163  /* Ask the module to acknowledge/refuse fill display state change after
164  * being requested externally */
165  VOUT_DISPLAY_CHANGE_DISPLAY_FILLED, /* const vout_display_cfg_t *p_cfg */
166 
167  /* Ask the module to acknowledge/refuse zoom change after being requested
168  * externally */
169  VOUT_DISPLAY_CHANGE_ZOOM, /* const vout_display_cfg_t *p_cfg */
170 
171  /* Ask the module to acknowledge/refuse source aspect ratio after being
172  * requested externally */
174 
175  /* Ask the module to acknowledge/refuse source crop change after being
176  * requested externally.
177  * The cropping requested is stored by video_format_t::i_x/y_offset and
178  * video_format_t::i_visible_width/height */
180 
181  /* Ask the module to acknowledge/refuse VR/360° viewing direction after
182  * being requested externally */
183  VOUT_DISPLAY_CHANGE_VIEWPOINT, /* const vout_display_cfg_t *p_cfg */
184 };
185 
186 /**
187  * Event from vout_display_t
188  *
189  * Events modifiying the state may be sent multiple times.
190  * Only the transition will be retained and acted upon.
191  */
192 enum {
193  /* TODO:
194  * ZOOM ? DISPLAY_FILLED ? ON_TOP ?
195  */
196  /* */
197  VOUT_DISPLAY_EVENT_PICTURES_INVALID, /* The buffer are now invalid and need to be changed */
198 
199 #if defined(_WIN32) || defined(__OS2__)
200  VOUT_DISPLAY_EVENT_FULLSCREEN,
201  VOUT_DISPLAY_EVENT_WINDOW_STATE,
202 #endif
203 
204  VOUT_DISPLAY_EVENT_DISPLAY_SIZE, /* The display size need to change : int i_width, int i_height */
205 
206  /* */
209 
210  /* Full mouse state.
211  * You can use it OR use the other mouse events. The core will do
212  * the conversion.
213  */
215 
216  /* Mouse event */
221 
222  /* VR navigation */
224 };
225 
226 /**
227  * Vout owner structures
228  */
230  /* Private place holder for the vout_display_t creator
231  */
232  void *sys;
233 
234  /* Event coming from the module
235  *
236  * This function is set prior to the module instantiation and must not
237  * be overwritten nor used directly (use the vout_display_SendEvent*
238  * wrapper.
239  *
240  * You can send it at any time i.e. from any vout_display_t functions or
241  * from another thread.
242  * Be careful, it does not ensure correct serialization if it is used
243  * from multiple threads.
244  */
245  void (*event)(vout_display_t *, int, va_list);
246 
247  /* Window management
248  *
249  * These functions are set prior to the module instantiation and must not
250  * be overwritten nor used directly (use the vout_display_*Window
251  * wrapper */
252  vout_window_t *(*window_new)(vout_display_t *, unsigned type);
254 };
255 
258 
259  /* Module */
261 
262  /* Initial and current configuration.
263  * You cannot modify it directly, you must use the appropriate events.
264  *
265  * It reflects the current values, i.e. after the event has been accepted
266  * and applied/configured if needed.
267  */
269 
270  /* video source format.
271  *
272  * Cropping is not requested while in the open function.
273  * You cannot change it.
274  */
276 
277  /* picture_t format.
278  *
279  * You can only change it inside the module open function to
280  * match what you want, and when a VOUT_DISPLAY_RESET_PICTURES control
281  * request is made and succeeds.
282  *
283  * By default, it is equal to ::source except for the aspect ratio
284  * which is undefined(0) and is ignored.
285  */
287 
288  /* Information
289  *
290  * You can only set them in the open function.
291  */
293 
294  /* Return a pointer over the current picture_pool_t* (mandatory).
295  *
296  * For performance reasons, it is best to provide at least count
297  * pictures but it is not mandatory.
298  * You can return NULL when you cannot/do not want to allocate
299  * pictures.
300  * The vout display module keeps the ownership of the pool and can
301  * destroy it only when closing or on invalid pictures control.
302  */
303  picture_pool_t *(*pool)(vout_display_t *, unsigned count);
304 
305  /* Prepare a picture and an optional subpicture for display (optional).
306  *
307  * It is called before the next pf_display call to provide as much
308  * time as possible to prepare the given picture and the subpicture
309  * for display.
310  * You are guaranted that pf_display will always be called and using
311  * the exact same picture_t and subpicture_t.
312  * You cannot change the pixel content of the picture_t or of the
313  * subpicture_t.
314  */
316 
317  /* Display a picture and an optional subpicture (mandatory).
318  *
319  * The picture and the optional subpicture must be displayed as soon as
320  * possible.
321  * You cannot change the pixel content of the picture_t or of the
322  * subpicture_t.
323  *
324  * This function gives away the ownership of the picture and of the
325  * subpicture, so you must release them as soon as possible.
326  */
328 
329  /* Control on the module (mandatory) */
330  int (*control)(vout_display_t *, int, va_list);
331 
332  /* Manage pending event (optional) */
334 
335  /* Private place holder for the vout_display_t module (optional)
336  *
337  * A module is free to use it as it wishes.
338  */
340 
341  /* Reserved for the vout_display_t owner.
342  *
343  * It must not be overwritten nor used directly by a module.
344  */
346 };
347 
348 static inline void vout_display_SendEvent(vout_display_t *vd, int query, ...)
349 {
350  va_list args;
351  va_start(args, query);
352  vd->owner.event(vd, query, args);
353  va_end(args);
354 }
355 
356 static inline void vout_display_SendEventDisplaySize(vout_display_t *vd, int width, int height)
357 {
359 }
361 {
363 }
365 {
367 }
368 static inline void vout_display_SendEventKey(vout_display_t *vd, int key)
369 {
371 }
372 #if defined(_WIN32) || defined(__OS2__)
373 static inline void vout_display_SendEventFullscreen(vout_display_t *vd, bool is_fullscreen,
374  bool is_window_fullscreen)
375 {
376  vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_FULLSCREEN, is_fullscreen, is_window_fullscreen);
377 }
378 static inline void vout_display_SendWindowState(vout_display_t *vd, unsigned state)
379 {
380  vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_WINDOW_STATE, state);
381 }
382 #endif
383 /* The mouse position (State and Moved event) must be expressed against vout_display_t::source unit */
384 static inline void vout_display_SendEventMouseState(vout_display_t *vd, int x, int y, int button_mask)
385 {
387 }
388 static inline void vout_display_SendEventMouseMoved(vout_display_t *vd, int x, int y)
389 {
391 }
392 static inline void vout_display_SendEventMousePressed(vout_display_t *vd, int button)
393 {
395 }
396 static inline void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
397 {
399 }
401 {
403 }
405  const vlc_viewpoint_t *vp)
406 {
408 }
409 
410 /**
411  * Asks for a new window of a given type.
412  */
413 static inline vout_window_t *vout_display_NewWindow(vout_display_t *vd, unsigned type)
414 {
415  return vd->owner.window_new(vd, type);
416 }
417 /**
418  * Deletes a window created by vout_display_NewWindow if window is non NULL
419  * or any unused windows otherwise.
420  */
422  vout_window_t *window)
423 {
424  vd->owner.window_del(vd, window);
425 }
426 
428 {
430  if (window != NULL)
431  vout_display_DeleteWindow(vd, window);
432  return window != NULL;
433 }
434 
435 /**
436  * Computes the default display size given the source and
437  * the display configuration.
438  *
439  * This asssumes that the picture is already cropped.
440  */
441 VLC_API void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height, const video_format_t *source, const vout_display_cfg_t *);
442 
443 
444 /**
445  * Structure used to store the result of a vout_display_PlacePicture.
446  */
447 typedef struct {
448  int x;
449  int y;
450  unsigned width;
451  unsigned height;
453 
454 /**
455  * Computes how to place a picture inside the display to respect
456  * the given parameters.
457  * This assumes that cropping is done by an external mean.
458  *
459  * \param p_place Place inside the window (window pixel unit)
460  * \param p_source Video source format
461  * \param p_cfg Display configuration
462  * \param b_clip If true, prevent the video to go outside the display (break zoom).
463  */
464 VLC_API void vout_display_PlacePicture(vout_display_place_t *place, const video_format_t *source, const vout_display_cfg_t *cfg, bool do_clipping);
465 
466 
467 /**
468  * Helper function that applies the necessary transforms to the mouse position
469  * and then calls vout_display_SendEventMouseMoved.
470  *
471  * \param vd vout_display_t.
472  * \param orient_display The orientation of the picture as seen on screen (probably ORIENT_NORMAL).
473  * \param m_x Mouse x position (relative to place, origin is top left).
474  * \param m_y Mouse y position (relative to place, origin is top left).
475  * \param place Place of the picture.
476  */
478  vout_display_place_t *place);
479 
480 /** @} */
481 #endif /* VLC_VOUT_DISPLAY_H */
VOUT_DISPLAY_HIDE_MOUSE
Definition: vlc_vout_display.h:144
vout_display_t::sys
vout_display_sys_t * sys
Definition: vlc_vout_display.h:339
count
size_t count
Definition: core.c:461
vlc_es.h
VLC_API
#define VLC_API
Definition: fourcc_gen.c:30
vout_display_cfg_t::horizontal
int horizontal
Definition: vlc_vout_display.h:103
VLC_COMMON_MEMBERS
#define VLC_COMMON_MEMBERS
Backward compatibility macro.
Definition: vlc_common.h:457
vout_display_SendMouseMovedDisplayCoordinates
void vout_display_SendMouseMovedDisplayCoordinates(vout_display_t *vd, video_orientation_t orient_display, int m_x, int m_y, vout_display_place_t *place)
Helper function that applies the necessary transforms to the mouse position and then calls vout_displ...
Definition: display.c:273
VLC_DEPRECATED
#define VLC_DEPRECATED
Definition: vlc_common.h:98
vout_window_t
Graphical window.
Definition: vlc_vout_window.h:130
vout_display_IsWindowed
static bool vout_display_IsWindowed(vout_display_t *vd)
Definition: vlc_vout_display.h:427
vout_display_place_t::width
unsigned width
Definition: vlc_vout_display.h:450
vout_display_info_t::is_slow
bool is_slow
Definition: vlc_vout_display.h:129
vout_display_info_t::subpicture_chromas
const vlc_fourcc_t * subpicture_chromas
Definition: vlc_vout_display.h:135
vlc_common.h
VOUT_DISPLAY_CHANGE_ZOOM
Definition: vlc_vout_display.h:169
vout_display_cfg_t::viewpoint
vlc_viewpoint_t viewpoint
Definition: vlc_vout_display.h:118
VOUT_DISPLAY_ALIGN_CENTER
Definition: vlc_vout_display.h:61
vout_display_t::manage
void(* manage)(vout_display_t *)
Definition: vlc_vout_display.h:333
vlc_vout.h
VOUT_DISPLAY_EVENT_CLOSE
Definition: vlc_vout_display.h:207
VOUT_DISPLAY_CHANGE_VIEWPOINT
Definition: vlc_vout_display.h:183
vout_display_SendEventMouseReleased
static void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
Definition: vlc_vout_display.h:396
VOUT_DISPLAY_EVENT_MOUSE_MOVED
Definition: vlc_vout_display.h:217
vout_display_t::fmt
video_format_t fmt
Definition: vlc_vout_display.h:286
vout_display_SendEventMouseMoved
static void vout_display_SendEventMouseMoved(vout_display_t *vd, int x, int y)
Definition: vlc_vout_display.h:388
vout_display_cfg_t::title
const char * title
Definition: vlc_vout_display.h:91
VOUT_WINDOW_TYPE_INVALID
Invalid or unspecified window type.
Definition: vlc_vout_window.h:50
vout_display_cfg_t::height
unsigned height
Definition: vlc_vout_display.h:95
vout_display_SendEventClose
static void vout_display_SendEventClose(vout_display_t *vd)
Definition: vlc_vout_display.h:364
video_format_t
video format description
Definition: vlc_es.h:325
vout_display_t::owner
vout_display_owner_t owner
Definition: vlc_vout_display.h:345
vout_display_t::cfg
const vout_display_cfg_t * cfg
Definition: vlc_vout_display.h:268
vout_display_info_t::has_pictures_invalid
bool has_pictures_invalid
Definition: vlc_vout_display.h:134
vout_display_owner_t
Vout owner structures.
Definition: vlc_vout_display.h:229
vlc_viewpoint_t
Viewpoints.
Definition: vlc_viewpoint.h:44
vout_display_SendEventPicturesInvalid
static void vout_display_SendEventPicturesInvalid(vout_display_t *vd)
Definition: vlc_vout_display.h:360
vlc_picture_pool.h
VOUT_WINDOW_STATE_BELOW
Definition: vlc_vout_display.h:76
vout_display_SendEventMousePressed
static void vout_display_SendEventMousePressed(vout_display_t *vd, int button)
Definition: vlc_vout_display.h:392
picture_t
Video picture.
Definition: vlc_picture.h:68
vout_display_t::info
vout_display_info_t info
Definition: vlc_vout_display.h:292
vout_display_place_t::y
int y
Definition: vlc_vout_display.h:449
VOUT_DISPLAY_EVENT_KEY
Definition: vlc_vout_display.h:208
vout_display_t::module
module_t * module
Definition: vlc_vout_display.h:260
VOUT_DISPLAY_EVENT_VIEWPOINT_MOVED
Definition: vlc_vout_display.h:223
vout_display_place_t::height
unsigned height
Definition: vlc_vout_display.h:451
vout_display_align_t
vout_display_align_t
Possible alignments for vout_display.
Definition: vlc_vout_display.h:59
vout_display_SendEventKey
static void vout_display_SendEventKey(vout_display_t *vd, int key)
Definition: vlc_vout_display.h:368
vout_display_cfg_t::width
unsigned width
Definition: vlc_vout_display.h:94
vout_display_place_t
Structure used to store the result of a vout_display_PlacePicture.
Definition: vlc_vout_display.h:447
VOUT_DISPLAY_CHANGE_SOURCE_CROP
Definition: vlc_vout_display.h:179
VOUT_WINDOW_STATE_ABOVE
Definition: vlc_vout_display.h:75
VOUT_DISPLAY_EVENT_MOUSE_PRESSED
Definition: vlc_vout_display.h:218
picture_pool_t
Definition: picture_pool.c:41
VOUT_DISPLAY_ALIGN_LEFT
Definition: vlc_vout_display.h:63
vout_display_t::source
video_format_t source
Definition: vlc_vout_display.h:275
module_t
Internal module descriptor.
Definition: modules.h:79
VOUT_DISPLAY_ALIGN_TOP
Definition: vlc_vout_display.h:66
vout_display_info_t
Information from a vout_display_t to configure the core behaviour.
Definition: vlc_vout_display.h:128
vout_display_PlacePicture
void vout_display_PlacePicture(vout_display_place_t *place, const video_format_t *source, const vout_display_cfg_t *cfg, bool do_clipping)
Computes how to place a picture inside the display to respect the given parameters.
Definition: display.c:189
VOUT_DISPLAY_ALIGN_BOTTOM
Definition: vlc_vout_display.h:67
subpicture_t
Video subtitle.
Definition: vlc_subpicture.h:153
vout_display_owner_t::window_del
void(* window_del)(vout_display_t *, vout_window_t *)
Definition: vlc_vout_display.h:253
vout_display_info_t::needs_hide_mouse
bool needs_hide_mouse
Definition: vlc_vout_display.h:131
VOUT_DISPLAY_CHANGE_DISPLAY_SIZE
Definition: vlc_vout_display.h:161
vout_display_cfg_t::sar
vlc_rational_t sar
Definition: vlc_vout_display.h:98
VOUT_WINDOW_STATE_NORMAL
Definition: vlc_vout_display.h:74
vout_display_cfg_t::den
int den
Definition: vlc_vout_display.h:115
VOUT_DISPLAY_EVENT_MOUSE_DOUBLE_CLICK
Definition: vlc_vout_display.h:220
vout_display_SendEventMouseDoubleClick
static void vout_display_SendEventMouseDoubleClick(vout_display_t *vd)
Definition: vlc_vout_display.h:400
vlc_rational_t
Definition: fourcc_gen.c:33
vlc_subpicture.h
VOUT_DISPLAY_RESET_PICTURES
Definition: vlc_vout_display.h:149
vout_display_SendEventMouseState
static void vout_display_SendEventMouseState(vout_display_t *vd, int x, int y, int button_mask)
Definition: vlc_vout_display.h:384
vlc_mouse.h
vout_display_t::control
int(* control)(vout_display_t *, int, va_list)
Definition: vlc_vout_display.h:330
vlc_picture.h
vout_display_DeleteWindow
static void vout_display_DeleteWindow(vout_display_t *vd, vout_window_t *window)
Deletes a window created by vout_display_NewWindow if window is non NULL or any unused windows otherw...
Definition: vlc_vout_display.h:421
VOUT_DISPLAY_EVENT_PICTURES_INVALID
Definition: vlc_vout_display.h:197
vout_display_cfg_t::num
int num
Definition: vlc_vout_display.h:114
vout_display_cfg_t
Initial/Current configuration for a vout_display_t.
Definition: vlc_vout_display.h:83
vout_display_SendEventDisplaySize
static void vout_display_SendEventDisplaySize(vout_display_t *vd, int width, int height)
Definition: vlc_vout_display.h:356
vout_display_sys_t
Definition: display.c:1258
vout_display_t::display
void(* display)(vout_display_t *, picture_t *, subpicture_t *)
Definition: vlc_vout_display.h:327
vout_display_owner_t::window_new
vout_window_t *(* window_new)(vout_display_t *, unsigned type)
Definition: vlc_vout_display.h:252
VOUT_DISPLAY_EVENT_MOUSE_RELEASED
Definition: vlc_vout_display.h:219
vlc_vout_window.h
vout_display_cfg_t::is_display_filled
bool is_display_filled
Definition: vlc_vout_display.h:108
VOUT_DISPLAY_CHANGE_DISPLAY_FILLED
Definition: vlc_vout_display.h:165
vlc_viewpoint.h
VLC_DEPRECATED_ENUM
#define VLC_DEPRECATED_ENUM
Definition: vlc_common.h:99
vlc_actions.h
vout_display_owner_t::event
void(* event)(vout_display_t *, int, va_list)
Definition: vlc_vout_display.h:245
VOUT_DISPLAY_EVENT_MOUSE_STATE
Definition: vlc_vout_display.h:214
vout_display_SendEventViewpointMoved
static void vout_display_SendEventViewpointMoved(vout_display_t *vd, const vlc_viewpoint_t *vp)
Definition: vlc_vout_display.h:404
VOUT_WINDOW_STACK_MASK
Definition: vlc_vout_display.h:77
vout_display_t
Definition: vlc_vout_display.h:256
vout_display_SendEvent
static void vout_display_SendEvent(vout_display_t *vd, int query,...)
Definition: vlc_vout_display.h:348
vout_display_place_t::x
int x
Definition: vlc_vout_display.h:448
video_orientation_t
video_orientation_t
Picture orientation.
Definition: vlc_es.h:165
vout_display_cfg_t::vertical
int vertical
Definition: vlc_vout_display.h:104
vout_display_info_t::has_double_click
bool has_double_click
Definition: vlc_vout_display.h:130
VOUT_DISPLAY_ALIGN_RIGHT
Definition: vlc_vout_display.h:64
VOUT_DISPLAY_CHANGE_SOURCE_ASPECT
Definition: vlc_vout_display.h:173
vout_display_owner_t::sys
void * sys
Definition: vlc_vout_display.h:232
vout_display_NewWindow
static vout_window_t * vout_display_NewWindow(vout_display_t *vd, unsigned type)
Asks for a new window of a given type.
Definition: vlc_vout_display.h:413
vout_display_GetDefaultDisplaySize
void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height, const video_format_t *source, const vout_display_cfg_t *)
Computes the default display size given the source and the display configuration.
Definition: display.c:154
vlc_fourcc_t
uint32_t vlc_fourcc_t
Definition: fourcc_gen.c:32
VOUT_DISPLAY_EVENT_DISPLAY_SIZE
Definition: vlc_vout_display.h:204
vout_display_t::prepare
void(* prepare)(vout_display_t *, picture_t *, subpicture_t *)
Definition: vlc_vout_display.h:315