VLC 4.0.0-dev
Loading...
Searching...
No Matches
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_mouse.h>
29#include <vlc_vout.h>
30#include <vlc_window.h>
31#include <vlc_viewpoint.h>
32
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
45typedef struct vout_display_t vout_display_t;
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
58/**
59 * Video alignment within the display.
60 */
61typedef 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;
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 */
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 */
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) */
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_placement::fitting is not disabled, ie. equals
110 * to \ref VLC_VIDEO_FIT_NONE, in \ref vout_display_cfg::display, the
111 * video size is fitted to the display size.
112 * - If \ref vout_display_cfg::window "window" size is valid, the video size
113 * is set to the window size,
114 * - Otherwise, the video size is determined from the original video format,
115 * multiplied by the zoom factor.
116 */
117typedef struct vout_display_cfg {
118 struct vlc_window *window; /**< Window */
119 struct vout_display_placement display; /**< Display placement properties */
120 vlc_icc_profile_t *icc_profile; /**< Currently active ICC profile */
124/**
125 * Information from a vout_display_t to configure
126 * the core behaviour.
127 *
128 * By default they are all false or NULL.
129 *
130 */
131typedef struct {
132 const vlc_fourcc_t *subpicture_chromas; /* List of supported chromas for subpicture rendering. */
134
135/**
136 * Control query for vout_display_t
137 */
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 */
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 */
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 */
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 */
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 */
187
188/**
189 * Vout owner structures
190 */
192 /* Private place holder for the vout_display_t creator
193 */
194 void *sys;
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);
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 */
218typedef 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
232 /**
233 * Destroys the display.
234 */
235 void (*close)(vout_display_t *);
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 const struct vlc_render_subpicture *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);
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);
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 */
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);
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);
324 /**
325 * Notifies a change in the input format.
326 *
327 * The format size is not expected to change.
328 *
329 * \param fmt the requested input format
330 * \param ctx the video context
331 * \return VLC_SUCCESS on success, another value on error
332 */
333 int (*update_format)(vout_display_t *, const video_format_t *fmt,
335};
336
337struct vout_display_t {
340 /**
341 * User configuration.
342 *
343 * This cannot be modified directly. It reflects the current values.
344 */
345 const vout_display_cfg_t *cfg;
347 /**
348 * Source video format.
349 *
350 * This is the format of the video that is being displayed (after decoding
351 * and filtering). It cannot be modified.
352 *
353 * \note
354 * Cropping is not requested while in the open function.
355 */
356 const video_format_t *source;
358 /**
359 * Picture format.
360 *
361 * This is the format of the pictures that are supplied to the
362 * \ref vlc_display_operations::prepare "prepare" and
363 * \ref vlc_display_operations::display "display" callbacks.
364 * Ideally, it should be identical or as close as possible as \ref source.
365 *
366 * This can only be changed from the display module activation callback,
367 * or within a \ref vlc_display_operations::reset_pictures "reset_pictures"
368 * request.
369 *
370 * By default, it is equal to \ref source except for the aspect ratio
371 * which is undefined(0) and is ignored.
372 */
373 const video_format_t *fmt;
375 /* Information
376 *
377 * You can only set them in the open function.
378 */
381 /* Reserved for the vout_display_t owner.
382 *
383 * It must not be overwritten nor used directly by a module.
384 */
387 /**
388 * Private data for the display module.
389 *
390 * A module is free to use it as it wishes.
391 */
392 void *sys;
394 /**
395 * Callbacks the display module must set on Open.
396 */
397 const struct vlc_display_operations *ops;
399
400/**
401 * Creates video output display.
402 */
406 const vout_display_cfg_t *, const char *module,
407 const vout_display_owner_t *);
408
409/**
410 * Destroys a video output display.
411 */
413
414/**
415 * Prepares a picture for display.
416 *
417 * This renders a picture for subsequent display, with vout_display_Display().
418 *
419 * \note A reference to the input picture is consumed by the function, which
420 * returns a reference to an output picture for display. The input and output
421 * picture may or may not be equal depending on the underlying display setup.
422 *
423 * \bug Currently, only one picture can be prepared at a time. It must be
424 * displayed with vout_display_Display() before any picture is prepared or
425 * before the display is destroyed with vout_display_Delete().
426 *
427 \ bug Rendering subpictures is not supported with this function yet.
428 * \c subpic must be @c NULL .
429 *
430 * \param vd display to prepare the picture for
431 * \param picture picure to be prepared
432 * \param subpic reserved, must be NULL
433 * \param date intended time to show the picture
434 * \return The prepared picture is returned, NULL on error.
435 */
437 const struct vlc_render_subpicture *subpic, vlc_tick_t date);
438
439/**
440 * Displays a picture.
441 */
442static inline void vout_display_Display(vout_display_t *vd, picture_t *picture)
444 if (vd->ops->display != NULL)
445 vd->ops->display(vd, picture);
446}
447
449void vout_display_SetSize(vout_display_t *vd, unsigned width, unsigned height);
450
451static inline void vout_display_SendEventMousePressed(vout_display_t *vd, int button)
454}
455static inline void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
461{
462 if (vd->owner.viewpoint_moved)
463 vd->owner.viewpoint_moved(vd->owner.sys, vp);
464}
465
466/**
467 * Helper function that applies the necessary transforms to the mouse position
468 * and then calls vout_display_SendEventMouseMoved.
469 *
470 * \param vd vout_display_t.
471 * \param m_x Mouse x position (relative to place, origin is top left).
472 * \param m_y Mouse y position (relative to place, origin is top left).
473 */
474static inline void vout_display_SendMouseMovedDisplayCoordinates(vout_display_t *vd, int m_x, int m_y)
476 vlc_window_ReportMouseMoved(vd->cfg->window, m_x, m_y);
477}
478
479static inline bool vout_display_cfg_IsWindowed(const vout_display_cfg_t *cfg)
481 return cfg->window->type != VLC_WINDOW_TYPE_DUMMY;
482}
483
484/**
485 * Computes the default display size given the source and
486 * the display configuration.
487 *
488 * This assumes that the picture is already cropped.
489 */
491void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height,
492 const video_format_t *source,
493 const struct vout_display_placement *);
494
495/**
496 * Video placement.
497 *
498 * This structure stores the result of a vout_display_PlacePicture() call.
499 */
500typedef struct vout_display_place_t {
501 int x; /*< Relative pixel offset from the display left edge */
502 int y; /*< Relative pixel offset from the display top edge */
503 unsigned width; /*< Picture pixel width */
504 unsigned height; /*< Picture pixel height */
507/**
508 * Compares two \ref vout_display_place_t.
509 */
510static inline bool vout_display_PlaceEquals(const vout_display_place_t *p1,
512{
513 return p1->x == p2->x && p1->width == p2->width &&
514 p1->y == p2->y && p1->height == p2->height;
515}
516
517/**
518 * Computes the intended picture placement inside the display.
519 *
520 * This function computes where to show a picture inside the display with
521 * respect to the provided parameters, and returns the result
522 * in a \ref vout_display_place_t structure.
523 *
524 * This assumes that cropping is done by an external mean.
525 *
526 * \param place Storage space for the picture placement [OUT]
527 * \param source Video source format
528 * \param cfg Display configuration
529 */
532 const video_format_t *restrict source,
533 const struct vout_display_placement *cfg);
534
535/**
536 * Translates coordinates.
537 *
538 * This translates coordinates from window pixel coordinate space to
539 * original video sample coordinate space.
540 *
541 * \param x pointer to abscissa to be translated
542 * \param y pointer to ordinate to be translated
543 * \param fmt video format
544 * \param dp display configuration
545 */
546void vout_display_TranslateCoordinates(int *x, int *y,
547 const video_format_t *fmt,
548 const struct vout_display_placement *dp);
549
550/** @} */
551#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
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:702
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:475
static void vout_display_Display(vout_display_t *vd, picture_t *picture)
Displays a picture.
Definition vlc_vout_display.h:443
static bool vout_display_cfg_IsWindowed(const vout_display_cfg_t *cfg)
Definition vlc_vout_display.h:480
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.
static void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
Definition vlc_vout_display.h:456
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:452
static void vout_display_SendEventViewpointMoved(vout_display_t *vd, const vlc_viewpoint_t *vp)
Definition vlc_vout_display.h:460
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:511
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:566
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:788
picture_t * vout_display_Prepare(vout_display_t *vd, picture_t *picture, const struct vlc_render_subpicture *subpic, vlc_tick_t date)
Prepares a picture for display.
@ 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:130
video format description
Definition vlc_es.h:356
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(* display)(vout_display_t *, picture_t *pic)
Displays a picture.
Definition vlc_vout_display.h:282
int(* update_format)(vout_display_t *, const video_format_t *fmt, vlc_video_context *ctx)
Notifies a change in the input format.
Definition vlc_vout_display.h:334
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
void(* prepare)(vout_display_t *, picture_t *pic, const struct vlc_render_subpicture *subpic, vlc_tick_t date)
Prepares a picture and an optional subpicture for display (optional).
Definition vlc_vout_display.h:266
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_ancillary.h:216
VLC object common members.
Definition vlc_objects.h:53
Definition fourcc_gen.c:34
Definition vlc_subpicture.h:217
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:98
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:118
struct vout_display_placement display
Display placement properties.
Definition vlc_vout_display.h:120
struct vlc_window * window
Window.
Definition vlc_vout_display.h:119
vlc_icc_profile_t * icc_profile
Currently active ICC profile.
Definition vlc_vout_display.h:121
vlc_viewpoint_t viewpoint
Definition vlc_vout_display.h:122
Information from a vout_display_t to configure the core behaviour.
Definition vlc_vout_display.h:132
const vlc_fourcc_t * subpicture_chromas
Definition vlc_vout_display.h:133
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:501
unsigned width
Definition vlc_vout_display.h:504
int y
Definition vlc_vout_display.h:503
unsigned height
Definition vlc_vout_display.h:505
int x
Definition vlc_vout_display.h:502
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:338
const struct vlc_display_operations * ops
Callbacks the display module must set on Open.
Definition vlc_vout_display.h:398
struct vlc_object_t obj
Definition vlc_vout_display.h:339
const vout_display_cfg_t * cfg
User configuration.
Definition vlc_vout_display.h:346
void * sys
Private data for the display module.
Definition vlc_vout_display.h:393
vout_display_owner_t owner
Definition vlc_vout_display.h:386
const video_format_t * fmt
Picture format.
Definition vlc_vout_display.h:374
const video_format_t * source
Source video format.
Definition vlc_vout_display.h:357
vout_display_info_t info
Definition vlc_vout_display.h:380
This file is a collection of common definitions and types.
This file defines the elementary streams format types.
This file defines picture structures and functions in vlc.
int64_t vlc_tick_t
High precision date or time interval.
Definition vlc_tick.h:48
Video and audio viewpoint struct and helpers.
Video output thread interface.
Window modules interface.