VLC  4.0.0-dev
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  *
6  * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation; either version 2.1 of the License, or
11  * (at your option) any later version.
12  *
13  * This program 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 Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21  *****************************************************************************/
22 
23 #ifndef VLC_VOUT_DISPLAY_H
24 #define VLC_VOUT_DISPLAY_H 1
25 
26 #include <vlc_es.h>
27 #include <vlc_picture.h>
28 #include <vlc_subpicture.h>
29 #include <vlc_actions.h>
30 #include <vlc_mouse.h>
31 #include <vlc_vout.h>
32 #include <vlc_window.h>
33 #include <vlc_viewpoint.h>
34 
35 /**
36  * \defgroup video_display Video output display
37  * Video output display: output buffers and rendering
38  *
39  * \ingroup video_output
40  * @{
41  * \file
42  * Video output display modules interface
43  */
44 
45 typedef struct vout_display_t vout_display_t;
47 
48 /**
49  * \defgroup video_align Video alignment
50  * @{
51  */
52 #define VLC_VIDEO_ALIGN_CENTER 0
53 #define VLC_VIDEO_ALIGN_LEFT 1
54 #define VLC_VIDEO_ALIGN_RIGHT 2
55 #define VLC_VIDEO_ALIGN_TOP 1
56 #define VLC_VIDEO_ALIGN_BOTTOM 2
57 
58 /**
59  * Video alignment within the display.
60  */
61 typedef struct vlc_video_align {
62  /**
63  * Horizontal alignment.
64  *
65  * This must be one of \ref VLC_VIDEO_ALIGN_CENTER,
66  * \ref VLC_VIDEO_ALIGN_LEFT or \ref VLC_VIDEO_ALIGN_RIGHT.
67  */
68  char horizontal;
69 
70  /**
71  * Vectical alignment.
72  *
73  * This must be one of \ref VLC_VIDEO_ALIGN_CENTER,
74  * \ref VLC_VIDEO_ALIGN_TOP or \ref VLC_VIDEO_ALIGN_BOTTOM.
75  */
76  char vertical;
78 /** @} */
79 
80 /**
81  * Video automatic scale fitting.
82  */
83 enum vlc_video_fitting {
84  VLC_VIDEO_FIT_NONE /**< No automatic scaling (use explicit zoom ratio) */,
85  VLC_VIDEO_FIT_SMALLER /**< Fit inside / to smallest dimension */,
86  VLC_VIDEO_FIT_LARGER /**< Fit outside / to largest dimension */,
87  VLC_VIDEO_FIT_WIDTH /**< Fit to width */,
88  VLC_VIDEO_FIT_HEIGHT /**< Fit to height */,
89 };
90 
91 /**
92  * Display placement and zoom configuration.
93  */
95  unsigned width; /**< Requested display pixel width (0 by default). */
96  unsigned height; /**< Requested display pixel height (0 by default). */
97  vlc_rational_t sar; /**< Requested sample aspect ratio */
98 
99  vlc_video_align_t align; /**< Alignment within the window */
100  enum vlc_video_fitting fitting; /**< Scaling/fitting mode */
101  vlc_rational_t zoom; /**< Zoom ratio (if fitting is disabled) */
102 };
103 
104 /**
105  * User configuration for a video output display (\ref vout_display_t)
106  *
107  * This primarily controls the size of the display area within the video
108  * window, as follows:
109  * - If \ref vout_display_cfg::display::fitting is not disabled,
110  * the video size is fitted to the display size.
111  * - If \ref vout_display_cfg::window "window" size is valid, the video size
112  * is set to the window size,
113  * - Otherwise, the video size is determined from the original video format,
114  * multiplied by the zoom factor.
115  */
116 typedef struct vout_display_cfg {
117  struct vlc_window *window; /**< Window */
118  struct vout_display_placement display; /**< Display placement properties */
119  vlc_icc_profile_t *icc_profile; /**< Currently active ICC profile */
122 
123 /**
124  * Information from a vout_display_t to configure
125  * the core behaviour.
126  *
127  * By default they are all false or NULL.
128  *
129  */
130 typedef struct {
131  bool can_scale_spu; /* Handles subpictures with a non default zoom factor */
132  const vlc_fourcc_t *subpicture_chromas; /* List of supported chromas for subpicture rendering. */
134 
135 /**
136  * Control query for vout_display_t
137  */
138 enum vout_display_query {
139  /**
140  * Notifies a change in display size.
141  *
142  * \retval VLC_SUCCESS if the display handled the change
143  * \retval VLC_EGENERIC if a \ref vlc_display_operations::reset_pictures
144  * request is necessary
145  */
147 
148  /**
149  * Notifies a change of the display fitting mode by the user.
150  *
151  * \retval VLC_SUCCESS if the display handled the change
152  * \retval VLC_EGENERIC if a \ref vlc_display_operations::reset_pictures
153  * request is necessary
154  */
156 
157  /**
158  * Notifies a change of the user zoom factor.
159  *
160  * \retval VLC_SUCCESS if the display handled the change
161  * \retval VLC_EGENERIC if a \ref vlc_display_operations::reset_pictures
162  * request is necessary
163  */
165 
166  /**
167  * Notifies a change of the sample aspect ratio.
168  *
169  * \retval VLC_SUCCESS if the display handled the change
170  * \retval VLC_EGENERIC if a \ref vlc_display_operations::reset_pictures
171  * request is necessary
172  */
174 
175  /**
176  * Notifies a change of the source cropping.
177  *
178  * The cropping requested is stored by source \ref video_format_t `i_x`/`y_offset`
179  * and `i_visible_width`/`height`
180  *
181  * \retval VLC_SUCCESS if the display handled the change
182  * \retval VLC_EGENERIC if a \ref vlc_display_operations::reset_pictures
183  * request is necessary
184  */
186 };
187 
188 /**
189  * Vout owner structures
190  */
191 struct vout_display_owner_t {
192  /* Private place holder for the vout_display_t creator
193  */
194  void *sys;
195 
196  /* Event coming from the module
197  *
198  * This function is set prior to the module instantiation and must not
199  * be overwritten nor used directly (use the vout_display_SendEvent*
200  * wrapper.
201  *
202  * You can send it at any time i.e. from any vout_display_t functions or
203  * from another thread.
204  * Be careful, it does not ensure correct serialization if it is used
205  * from multiple threads.
206  */
207  void (*viewpoint_moved)(void *sys, const vlc_viewpoint_t *vp);
208 };
209 
210 /**
211  * "vout display" open callback
212  *
213  * @param vd vout display context
214  * @param fmtp It can be changed by the module to request a different format.
215  * @param context The video context to configure the display for.
216  * @return VLC_SUCCESS or a VLC error code
217  */
218 typedef int (*vout_display_open_cb)(vout_display_t *vd,
220  vlc_video_context *context);
221 
222 #define set_callback_display(activate, priority) \
223  { \
224  vout_display_open_cb open__ = activate; \
225  (void) open__; \
226  set_callback(activate) \
227  } \
228  set_capability( "vout display", priority )
229 
231 {
232  /**
233  * Destroys the display.
234  */
235  void (*close)(vout_display_t *);
236 
237  /**
238  * Prepares a picture and an optional subpicture for display (optional).
239  *
240  * This callback is called once a picture buffer content is ready,
241  * as far in advance as possible to the intended display time,
242  * but only after the previous picture was displayed.
243  *
244  * The callback should perform any preprocessing operation that will not
245  * actually cause the picture to be shown, such as blending the subpicture
246  * or upload the picture to video memory. If supported, this can also
247  * queue the picture to be shown asynchronously at the given date.
248  *
249  *
250  * If \ref vlc_display_operations.prepare and
251  * \ref vlc_display_operations.display are not \c NULL, there is an
252  * implicit guarantee that display will be invoked with the exact same
253  * picture afterwards:
254  * prepare 1st picture, display 1st picture, prepare 2nd picture, display
255  * 2nd picture, and so on.
256  *
257  * \note The picture buffers may have multiple references.
258  * Therefore the pixel content of the picture or of the subpicture
259  * must not be changed.
260  *
261  * \param pic picture
262  * \param subpic subpicture to render over the picture
263  * \param date time when the picture is intended to be shown
264  */
265  void (*prepare)(vout_display_t *, picture_t *pic,
266  subpicture_t *subpic, vlc_tick_t date);
267 
268  /**
269  * Displays a picture.
270  *
271  * This callback is invoked at the time when the picture should be shown.
272  * The picture must be displayed as soon as possible.
273  *
274  * If NULL, prepare must be valid. In that case, the plugin can handle
275  * asynchronous display at the time given by the prepare call.
276  *
277  * \note The picture buffers may have multiple references.
278  * Therefore the pixel content of the picture or of the subpicture
279  * must not be changed.
280  */
281  void (*display)(vout_display_t *, picture_t *pic);
282 
283  /**
284  * Performs a control request (mandatory).
285  *
286  * \param query request type
287  *
288  * See \ref vout_display_query for the list of request types.
289  */
290  int (*control)(vout_display_t *, int query);
291 
292  /**
293  * Reset the picture format handled by the module.
294  * This occurs after a
295  * \ref VOUT_DISPLAY_CHANGE_DISPLAY_SIZE,
296  * \ref VOUT_DISPLAY_CHANGE_DISPLAY_FILLED,
297  * \ref VOUT_DISPLAY_CHANGE_ZOOM,
298  * \ref VOUT_DISPLAY_CHANGE_SOURCE_ASPECT or
299  * \ref VOUT_DISPLAY_CHANGE_SOURCE_CROP
300  * control query returns an error.
301  *
302  * \param ftmp video format that the module expects as input
303  */
305 
306  /**
307  * Notifies a change of VR/360° viewpoint.
308  *
309  * May be NULL.
310  *
311  * \param vp viewpoint to use on the next render
312  */
313  int (*set_viewpoint)(vout_display_t *, const vlc_viewpoint_t *vp);
314 
315  /**
316  * Notifies a change in output ICC profile.
317  *
318  * May be NULL. Memory owned by the caller.
319  *
320  * \param prof new ICC profile associated with display, or NULL for none
321  */
322  void (*set_icc_profile)(vout_display_t *, const vlc_icc_profile_t *prof);
323 };
324 
325 struct vout_display_t {
327 
328  /**
329  * User configuration.
330  *
331  * This cannot be modified directly. It reflects the current values.
332  */
333  const vout_display_cfg_t *cfg;
334 
335  /**
336  * Source video format.
337  *
338  * This is the format of the video that is being displayed (after decoding
339  * and filtering). It cannot be modified.
340  *
341  * \note
342  * Cropping is not requested while in the open function.
343  */
344  const video_format_t *source;
345 
346  /**
347  * Picture format.
348  *
349  * This is the format of the pictures that are supplied to the
350  * \ref vlc_display_operations::prepare "prepare" and
351  * \ref vlc_display_operations::display "display" callbacks.
352  * Ideally, it should be identical or as close as possible as \ref source.
353  *
354  * This can only be changed from the display module activation callback,
355  * or within a \ref vlc_display_operations::reset_pictures "reset_pictures"
356  * request.
357  *
358  * By default, it is equal to \ref source except for the aspect ratio
359  * which is undefined(0) and is ignored.
360  */
361  const video_format_t *fmt;
362 
363  /* Information
364  *
365  * You can only set them in the open function.
366  */
368 
369  /* Reserved for the vout_display_t owner.
370  *
371  * It must not be overwritten nor used directly by a module.
372  */
374 
375  /**
376  * Private data for the display module.
377  *
378  * A module is free to use it as it wishes.
379  */
380  void *sys;
381 
382  /**
383  * Callbacks the display module must set on Open.
384  */
385  const struct vlc_display_operations *ops;
386 };
387 
388 /**
389  * Creates video output display.
390  */
391 VLC_API
394  const vout_display_cfg_t *, const char *module,
395  const vout_display_owner_t *);
396 
397 /**
398  * Destroys a video output display.
399  */
401 
402 /**
403  * Prepares a picture for display.
404  *
405  * This renders a picture for subsequent display, with vout_display_Display().
406  *
407  * \note A reference to the input picture is consumed by the function, which
408  * returns a reference to an output picture for display. The input and output
409  * picture may or may not be equal depending on the underlying display setup.
410  *
411  * \bug Currently, only one picture can be prepared at a time. It must be
412  * displayed with vout_display_Display() before any picture is prepared or
413  * before the display is destroyd with vout_display_Delete().
414  *
415  \ bug Rendering subpictures is not supported with this function yet.
416  * \c subpic must be @c NULL .
417  *
418  * \param vd display to prepare the picture for
419  * \param picture picure to be prepared
420  * \param subpic reserved, must be NULL
421  * \param date intended time to show the picture
422  * \return The prepared picture is returned, NULL on error.
423  */
425  subpicture_t *subpic, vlc_tick_t date);
426 
427 /**
428  * Displays a picture.
429  */
430 static inline void vout_display_Display(vout_display_t *vd, picture_t *picture)
431 {
432  if (vd->ops->display != NULL)
433  vd->ops->display(vd, picture);
434 }
435 
436 VLC_API
437 void vout_display_SetSize(vout_display_t *vd, unsigned width, unsigned height);
438 
439 static inline void vout_display_SendEventMousePressed(vout_display_t *vd, int button)
440 {
442 }
443 static inline void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
444 {
446 }
448  const vlc_viewpoint_t *vp)
449 {
450  if (vd->owner.viewpoint_moved)
451  vd->owner.viewpoint_moved(vd->owner.sys, vp);
452 }
453 
454 /**
455  * Helper function that applies the necessary transforms to the mouse position
456  * and then calls vout_display_SendEventMouseMoved.
457  *
458  * \param vd vout_display_t.
459  * \param m_x Mouse x position (relative to place, origin is top left).
460  * \param m_y Mouse y position (relative to place, origin is top left).
461  */
462 static inline void vout_display_SendMouseMovedDisplayCoordinates(vout_display_t *vd, int m_x, int m_y)
463 {
464  vlc_window_ReportMouseMoved(vd->cfg->window, m_x, m_y);
465 }
466 
467 static inline bool vout_display_cfg_IsWindowed(const vout_display_cfg_t *cfg)
468 {
469  return cfg->window->type != VLC_WINDOW_TYPE_DUMMY;
470 }
471 
472 /**
473  * Computes the default display size given the source and
474  * the display configuration.
475  *
476  * This assumes that the picture is already cropped.
477  */
478 VLC_API
479 void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height,
480  const video_format_t *source,
481  const struct vout_display_placement *);
482 
483 /**
484  * Video placement.
485  *
486  * This structure stores the result of a vout_display_PlacePicture() call.
487  */
488 typedef struct {
489  int x; /*< Relative pixel offset from the display left edge */
490  int y; /*< Relative pixel offset from the display top edge */
491  unsigned width; /*< Picture pixel width */
492  unsigned height; /*< Picture pixel height */
494 
495 /**
496  * Compares two \ref vout_display_place_t.
497  */
498 static inline bool vout_display_PlaceEquals(const vout_display_place_t *p1,
500 {
501  return p1->x == p2->x && p1->width == p2->width &&
502  p1->y == p2->y && p1->height == p2->height;
503 }
504 
505 /**
506  * Computes the intended picture placement inside the display.
507  *
508  * This function computes where to show a picture inside the display with
509  * respect to the provided parameters, and returns the result
510  * in a \ref vout_display_place_t structure.
511  *
512  * This assumes that cropping is done by an external mean.
513  *
514  * \param place Storage space for the picture placement [OUT]
515  * \param source Video source format
516  * \param cfg Display configuration
517  */
518 VLC_API
520  const video_format_t *restrict source,
521  const struct vout_display_placement *cfg);
522 
523 /**
524  * Translates coordinates.
525  *
526  * This translates coordinates from window pixel coordinate space to
527  * original video sample coordinate space.
528  *
529  * \param x pointer to abscissa to be translated
530  * \param y pointer to ordinate to be translated
531  * \param fmt video format
532  * \param dp display configuration
533  */
534 void vout_display_TranslateCoordinates(int *x, int *y,
535  const video_format_t *fmt,
536  const struct vout_display_placement *dp);
537 
538 /** @} */
539 #endif /* VLC_VOUT_DISPLAY_H */
#define VLC_API
Definition: fourcc_gen.c:31
uint32_t vlc_fourcc_t
Definition: fourcc_gen.c:33
struct vlc_video_align vlc_video_align_t
Video alignment within the display.
void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height, const video_format_t *source, const struct vout_display_placement *)
Computes the default display size given the source and the display configuration.
Definition: display.c:56
int(* vout_display_open_cb)(vout_display_t *vd, video_format_t *fmtp, vlc_video_context *context)
"vout display" open callback
Definition: vlc_vout_display.h:219
static void vout_display_SendMouseMovedDisplayCoordinates(vout_display_t *vd, int m_x, int m_y)
Helper function that applies the necessary transforms to the mouse position and then calls vout_displ...
Definition: vlc_vout_display.h:463
static void vout_display_Display(vout_display_t *vd, picture_t *picture)
Displays a picture.
Definition: vlc_vout_display.h:431
picture_t * vout_display_Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic, vlc_tick_t date)
Prepares a picture for display.
Definition: display.c:379
static bool vout_display_cfg_IsWindowed(const vout_display_cfg_t *cfg)
Definition: vlc_vout_display.h:468
void vout_display_PlacePicture(vout_display_place_t *restrict place, const video_format_t *restrict source, const struct vout_display_placement *cfg)
Computes the intended picture placement inside the display.
vout_display_t * vout_display_New(vlc_object_t *, const video_format_t *, vlc_video_context *, const vout_display_cfg_t *, const char *module, const vout_display_owner_t *)
Creates video output display.
Definition: display.c:641
static void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
Definition: vlc_vout_display.h:444
vlc_video_fitting
Video automatic scale fitting.
Definition: vlc_vout_display.h:84
vout_display_query
Control query for vout_display_t.
Definition: vlc_vout_display.h:139
static void vout_display_SendEventMousePressed(vout_display_t *vd, int button)
Definition: vlc_vout_display.h:440
static void vout_display_SendEventViewpointMoved(vout_display_t *vd, const vlc_viewpoint_t *vp)
Definition: vlc_vout_display.h:448
static bool vout_display_PlaceEquals(const vout_display_place_t *p1, const vout_display_place_t *p2)
Compares two vout_display_place_t.
Definition: vlc_vout_display.h:499
void vout_display_TranslateCoordinates(int *x, int *y, const video_format_t *fmt, const struct vout_display_placement *dp)
Translates coordinates.
void vout_display_SetSize(vout_display_t *vd, unsigned width, unsigned height)
Definition: display.c:539
struct vout_display_cfg vout_display_cfg_t
User configuration for a video output display (vout_display_t)
void vout_display_Delete(vout_display_t *)
Destroys a video output display.
Definition: display.c:726
@ VLC_VIDEO_FIT_HEIGHT
Fit to height.
Definition: vlc_vout_display.h:89
@ VLC_VIDEO_FIT_LARGER
Fit outside / to largest dimension.
Definition: vlc_vout_display.h:87
@ VLC_VIDEO_FIT_NONE
No automatic scaling (use explicit zoom ratio)
Definition: vlc_vout_display.h:85
@ VLC_VIDEO_FIT_SMALLER
Fit inside / to smallest dimension.
Definition: vlc_vout_display.h:86
@ VLC_VIDEO_FIT_WIDTH
Fit to width.
Definition: vlc_vout_display.h:88
@ VOUT_DISPLAY_CHANGE_ZOOM
Notifies a change of the user zoom factor.
Definition: vlc_vout_display.h:165
@ VOUT_DISPLAY_CHANGE_DISPLAY_SIZE
Notifies a change in display size.
Definition: vlc_vout_display.h:147
@ VOUT_DISPLAY_CHANGE_DISPLAY_FILLED
Notifies a change of the display fitting mode by the user.
Definition: vlc_vout_display.h:156
@ VOUT_DISPLAY_CHANGE_SOURCE_ASPECT
Notifies a change of the sample aspect ratio.
Definition: vlc_vout_display.h:174
@ VOUT_DISPLAY_CHANGE_SOURCE_CROP
Notifies a change of the source cropping.
Definition: vlc_vout_display.h:186
static void vlc_window_ReportMouseReleased(vlc_window_t *window, int button)
Reports a mouse button release.
Definition: vlc_window.h:694
static void vlc_window_ReportMouseMoved(vlc_window_t *window, int x, int y)
Reports a pointer movement.
Definition: vlc_window.h:664
static void vlc_window_ReportMousePressed(vlc_window_t *window, int button)
Reports a mouse button press.
Definition: vlc_window.h:679
@ VLC_WINDOW_TYPE_DUMMY
Dummy window (not an actual window)
Definition: vlc_window.h:62
Video picture.
Definition: vlc_picture.h:126
Video subtitle.
Definition: vlc_subpicture.h:167
video format description
Definition: vlc_es.h:352
Definition: vlc_vout_display.h:232
int(* set_viewpoint)(vout_display_t *, const vlc_viewpoint_t *vp)
Notifies a change of VR/360° viewpoint.
Definition: vlc_vout_display.h:314
void(* close)(vout_display_t *)
Destroys the display.
Definition: vlc_vout_display.h:236
void(* prepare)(vout_display_t *, picture_t *pic, subpicture_t *subpic, vlc_tick_t date)
Prepares a picture and an optional subpicture for display (optional).
Definition: vlc_vout_display.h:266
void(* display)(vout_display_t *, picture_t *pic)
Displays a picture.
Definition: vlc_vout_display.h:282
int(* control)(vout_display_t *, int query)
Performs a control request (mandatory).
Definition: vlc_vout_display.h:291
void(* set_icc_profile)(vout_display_t *, const vlc_icc_profile_t *prof)
Notifies a change in output ICC profile.
Definition: vlc_vout_display.h:323
int(* reset_pictures)(vout_display_t *, video_format_t *fmtp)
Reset the picture format handled by the module.
Definition: vlc_vout_display.h:305
Definition: vlc_es.h:612
VLC object common members.
Definition: vlc_objects.h:45
Definition: fourcc_gen.c:34
Video alignment within the display.
Definition: vlc_vout_display.h:62
char vertical
Vectical alignment.
Definition: vlc_vout_display.h:77
char horizontal
Horizontal alignment.
Definition: vlc_vout_display.h:69
Definition: decoder_device.c:97
Viewpoints.
Definition: vlc_viewpoint.h:41
Window object.
Definition: vlc_window.h:372
unsigned type
Window handle type.
Definition: vlc_window.h:384
User configuration for a video output display (vout_display_t)
Definition: vlc_vout_display.h:117
struct vout_display_placement display
Display placement properties.
Definition: vlc_vout_display.h:119
struct vlc_window * window
Window.
Definition: vlc_vout_display.h:118
vlc_icc_profile_t * icc_profile
Currently active ICC profile.
Definition: vlc_vout_display.h:120
vlc_viewpoint_t viewpoint
Definition: vlc_vout_display.h:121
Information from a vout_display_t to configure the core behaviour.
Definition: vlc_vout_display.h:131
Vout owner structures.
Definition: vlc_vout_display.h:192
void(* viewpoint_moved)(void *sys, const vlc_viewpoint_t *vp)
Definition: vlc_vout_display.h:208
void * sys
Definition: vlc_vout_display.h:195
Video placement.
Definition: vlc_vout_display.h:489
unsigned width
Definition: vlc_vout_display.h:492
int y
Definition: vlc_vout_display.h:491
unsigned height
Definition: vlc_vout_display.h:493
int x
Definition: vlc_vout_display.h:490
Display placement and zoom configuration.
Definition: vlc_vout_display.h:95
vlc_video_align_t align
Alignment within the window.
Definition: vlc_vout_display.h:100
unsigned height
Requested display pixel height (0 by default).
Definition: vlc_vout_display.h:97
vlc_rational_t sar
Requested sample aspect ratio.
Definition: vlc_vout_display.h:98
vlc_rational_t zoom
Zoom ratio (if fitting is disabled)
Definition: vlc_vout_display.h:102
enum vlc_video_fitting fitting
Scaling/fitting mode.
Definition: vlc_vout_display.h:101
unsigned width
Requested display pixel width (0 by default).
Definition: vlc_vout_display.h:96
Definition: vlc_vout_display.h:326
const struct vlc_display_operations * ops
Callbacks the display module must set on Open.
Definition: vlc_vout_display.h:386
struct vlc_object_t obj
Definition: vlc_vout_display.h:327
const vout_display_cfg_t * cfg
User configuration.
Definition: vlc_vout_display.h:334
void * sys
Private data for the display module.
Definition: vlc_vout_display.h:381
vout_display_owner_t owner
Definition: vlc_vout_display.h:374
const video_format_t * fmt
Picture format.
Definition: vlc_vout_display.h:362
const video_format_t * source
Source video format.
Definition: vlc_vout_display.h:345
vout_display_info_t info
Definition: vlc_vout_display.h:368
This file defines keys and functions.
This file defines the elementary streams format types.
This file defines picture structures and functions in vlc.
Subpictures functions.
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:35
Video and audio viewpoint struct and helpers.
Video output thread interface.
Window modules interface.