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) */
102 bool full_fill; /**< whether the rendering will take the whole display */
104
105/**
106 * User configuration for a video output display (\ref vout_display_t)
107 *
108 * This primarily controls the size of the display area within the video
109 * window, as follows:
110 * - If \ref vout_display_placement::fitting is not disabled, ie. equals
111 * to \ref VLC_VIDEO_FIT_NONE, in \ref vout_display_cfg::display, the
112 * video size is fitted to the display size.
113 * - If \ref vout_display_cfg::window "window" size is valid, the video size
114 * is set to the window size,
115 * - Otherwise, the video size is determined from the original video format,
116 * multiplied by the zoom factor.
117 */
118typedef struct vout_display_cfg {
119 struct vlc_window *window; /**< Window */
120 struct vout_display_placement display; /**< Display placement properties */
121 vlc_icc_profile_t *icc_profile; /**< Currently active ICC profile */
122 /** Final source projection requested for display. */
125 /** Initial viewpoint when projection != PROJECTION_MODE_RECTANGULAR */
127 vlc_stereoscopic_mode_t stereo_mode; /**< Stereoscopic/3D mode used by the display */
130/**
131 * Information from a vout_display_t to configure
132 * the core behaviour.
133 *
134 * By default they are all false or NULL.
135 *
136 */
137typedef struct {
138 const vlc_fourcc_t *subpicture_chromas; /* List of supported chromas for subpicture rendering. */
140
141/**
142 * Vout owner structures
143 */
145 /* Private place holder for the vout_display_t creator
146 */
147 void *sys;
149 /* Event coming from the module
150 *
151 * This function is set prior to the module instantiation and must not
152 * be overwritten nor used directly (use the vout_display_SendEvent*
153 * wrapper.
154 *
155 * You can send it at any time i.e. from any vout_display_t functions or
156 * from another thread.
157 * Be careful, it does not ensure correct serialization if it is used
158 * from multiple threads.
159 */
160 void (*viewpoint_moved)(void *sys, const vlc_viewpoint_t *vp);
162
163/**
164 * "vout display" open callback
165 *
166 * @param vd vout display context
167 * @param fmtp It can be changed by the module to request a different format.
168 * @param context The video context to configure the display for.
169 * @return VLC_SUCCESS or a VLC error code
170 */
171typedef int (*vout_display_open_cb)(vout_display_t *vd,
173 vlc_video_context *context);
174
175#define set_callback_display(activate, priority) \
176 { \
177 vout_display_open_cb open__ = activate; \
178 (void) open__; \
179 set_callback(activate) \
180 } \
181 set_capability( "vout display", priority )
182
184
187 /**
188 * Destroys the display.
189 */
190 void (*close)(vout_display_t *);
192 /**
193 * Prepares a picture and an optional subpicture for display (optional).
194 *
195 * This callback is called once a picture buffer content is ready,
196 * as far in advance as possible to the intended display time,
197 * but only after the previous picture was displayed.
198 *
199 * The callback should perform any preprocessing operation that will not
200 * actually cause the picture to be shown, such as blending the subpicture
201 * or upload the picture to video memory. If supported, this can also
202 * queue the picture to be shown asynchronously at the given date.
203 *
204 *
205 * If \ref vlc_display_operations.prepare and
206 * \ref vlc_display_operations.display are not \c NULL, there is an
207 * implicit guarantee that display will be invoked with the exact same
208 * picture afterwards:
209 * prepare 1st picture, display 1st picture, prepare 2nd picture, display
210 * 2nd picture, and so on.
211 *
212 * \note The picture buffers may have multiple references.
213 * Therefore the pixel content of the picture or of the subpicture
214 * must not be changed.
215 *
216 * \param pic picture
217 * \param subpic subpicture to render over the picture
218 * \param date time when the picture is intended to be shown
219 */
220 void (*prepare)(vout_display_t *, picture_t *pic,
221 const struct vlc_render_subpicture *subpic, vlc_tick_t date);
222
223 /**
224 * Displays a picture.
225 *
226 * This callback is invoked at the time when the picture should be shown.
227 * The picture must be displayed as soon as possible.
228 *
229 * If NULL, prepare must be valid. In that case, the plugin can handle
230 * asynchronous display at the time given by the prepare call.
231 *
232 * \note The picture buffers may have multiple references.
233 * Therefore the pixel content of the picture or of the subpicture
234 * must not be changed.
235 */
236 void (*display)(vout_display_t *, picture_t *pic);
238 /**
239 * Let the display module know the display size has changed.
240 *
241 * \return VLC_SUCCESS if the size is accepted.
242 * \return an error if the size is not accepted and
243 * \ref vlc_display_operations::reset_pictures "reset_pictures" needs to be called.
244 *
245 * When the callback is NULL, it is considered as returning VLC_SUCCESS.
246 */
247 int (*set_display_size)(vout_display_t *, unsigned width, unsigned height);
249 /**
250 * Reset the picture format handled by the module.
251 * This occurs after an error in \ref vlc_display_operations::set_display_size,
252 * \ref vlc_display_operations::set_source_aspect,
253 * \ref vlc_display_operations::set_source_crop or
254 * \ref vlc_display_operations::video_place_changed
255 * calls returns an error.
256 *
257 * \param ftmp video format that the module expects as input
258 */
261 /**
262 * Notifies a change of VR/360° viewpoint.
263 *
264 * May be NULL.
265 *
266 * \param vp viewpoint to use on the next render
267 */
268 int (*set_viewpoint)(vout_display_t *, const vlc_viewpoint_t *vp);
270 /**
271 * Notifies a change in output ICC profile.
272 *
273 * May be NULL. Memory owned by the caller.
274 *
275 * \param prof new ICC profile associated with display, or NULL for none
276 */
277 void (*set_icc_profile)(vout_display_t *, const vlc_icc_profile_t *prof);
279 /**
280 * Notifies a change in the input format.
281 *
282 * The format size is not expected to change.
283 *
284 * \param fmt the requested input format
285 * \param ctx the video context
286 * \return VLC_SUCCESS on success, another value on error
287 */
288 int (*update_format)(vout_display_t *, const video_format_t *fmt,
290
291 /**
292 * Set the source projection used by the display.
293 *
294 * May be NULL.
295 *
296 * \param display the display to change projection for
297 * \param projection the new projection mode considered for the source
298 * \return VLC_SUCCESS on succes, another value if changing projection failed
299 */
302
303 /**
304 * Notifies the new Stereoscopic 3D mode in \ref vout_display_cfg_t changed.
305 *
306 * May be NULL.
307 *
308 * \retval VLC_SUCCESS if the display handled the change
309 * \retval VLC_EGENERIC if the display handled the change was not handled
310 */
313 /**
314 * Let the display module know the placement of the video in the display changed.
315 *
316 * May be NULL.
317 *
318 * This is always called from the same thread as prepare/display.
319 *
320 * \return VLC_SUCCESS if the placement change is accepted.
321 * \return an error if the placement is not accepted and
322 * \ref vlc_display_operations::reset_pictures "reset_pictures" needs to be called.
323 *
324 * When the callback is NULL, it is considered as returning VLC_SUCCESS.
325 */
328 /**
329 * Notifies a change of the sample aspect ratio.
330 *
331 * May be NULL.
332 *
333 * \return VLC_SUCCESS on success, another value on error
334 * \return VLC_EGENERIC if a \ref vlc_display_operations::reset_pictures
335 * request is necessary
336 *
337 * When the callback is NULL, it is considered as returning VLC_SUCCESS.
338 */
341 /**
342 * Notifies a change of the video crop values.
343 *
344 * The cropping requested is stored by source \ref video_format_t `i_x`/`y_offset`
345 * and `i_visible_width`/`height`
346 *
347 * May be NULL.
348 *
349 * \return VLC_SUCCESS on success, another value on error
350 * \return VLC_EGENERIC if a \ref vlc_display_operations::reset_pictures
351 * request is necessary
352 *
353 * When the callback is NULL, it is considered as returning VLC_SUCCESS.
354 */
357
358/**
359 * Video placement.
360 *
361 * This structure stores the result of a vout_display_PlacePicture() call.
362 */
363typedef struct vout_display_place_t {
364 int x; /*< Relative pixel offset from the display left edge */
365 int y; /*< Relative pixel offset from the display top edge */
366 unsigned width; /*< Picture pixel width */
367 unsigned height; /*< Picture pixel height */
370struct vout_display_t {
373 /**
374 * User configuration.
375 *
376 * This cannot be modified directly. It reflects the current values.
377 */
378 const vout_display_cfg_t *cfg;
380 /**
381 * Source video format.
382 *
383 * This is the format of the video that is being displayed (after decoding
384 * and filtering). It cannot be modified.
385 *
386 * \note
387 * Cropping is not requested while in the open function.
388 */
389 const video_format_t *source;
391 /**
392 * Placement of the source picture in the display. (cannot be NULL)
393 *
394 * This cannot be modified directly and cannot be NULL.
395 * It reflects the current values.
396 */
399 /**
400 * Picture format.
401 *
402 * This is the format of the pictures that are supplied to the
403 * \ref vlc_display_operations::prepare "prepare" and
404 * \ref vlc_display_operations::display "display" callbacks.
405 * Ideally, it should be identical or as close as possible as \ref source.
406 *
407 * This can only be changed from the display module activation callback,
408 * or within a \ref vlc_display_operations::reset_pictures "reset_pictures"
409 * request.
410 *
411 * By default, it is equal to \ref source except for the aspect ratio
412 * which is undefined(0) and is ignored.
413 */
414 const video_format_t *fmt;
416 /* Information
417 *
418 * You can only set them in the open function.
419 */
422 /* Reserved for the vout_display_t owner.
423 *
424 * It must not be overwritten nor used directly by a module.
425 */
428 /**
429 * Private data for the display module.
430 *
431 * A module is free to use it as it wishes.
432 */
433 void *sys;
435 /**
436 * Callbacks the display module must set on Open.
437 */
438 const struct vlc_display_operations *ops;
440
441/**
442 * Creates video output display.
443 */
447 const vout_display_cfg_t *, const char *module,
448 const vout_display_owner_t *);
449
450/**
451 * Destroys a video output display.
452 */
454
455/**
456 * Prepares a picture for display.
457 *
458 * This renders a picture for subsequent display, with vout_display_Display().
459 *
460 * \note A reference to the input picture is consumed by the function, which
461 * returns a reference to an output picture for display. The input and output
462 * picture may or may not be equal depending on the underlying display setup.
463 *
464 * \bug Currently, only one picture can be prepared at a time. It must be
465 * displayed with vout_display_Display() before any picture is prepared or
466 * before the display is destroyed with vout_display_Delete().
467 *
468 \ bug Rendering subpictures is not supported with this function yet.
469 * \c subpic must be @c NULL .
470 *
471 * \param vd display to prepare the picture for
472 * \param picture picure to be prepared
473 * \param subpic reserved, must be NULL
474 * \param date intended time to show the picture
475 * \return The prepared picture is returned, NULL on error.
476 */
478 const struct vlc_render_subpicture *subpic, vlc_tick_t date);
479
480/**
481 * Displays a picture.
482 */
483static inline void vout_display_Display(vout_display_t *vd, picture_t *picture)
485 if (vd->ops->display != NULL)
486 vd->ops->display(vd, picture);
487}
488
490void vout_display_SetSize(vout_display_t *vd, unsigned width, unsigned height);
491
492static inline void vout_display_SendEventMousePressed(vout_display_t *vd, int button)
495}
496static inline void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
502{
503 if (vd->owner.viewpoint_moved)
504 vd->owner.viewpoint_moved(vd->owner.sys, vp);
505}
506
507/**
508 * Helper function that applies the necessary transforms to the mouse position
509 * and then calls vout_display_SendEventMouseMoved.
510 *
511 * \param vd vout_display_t.
512 * \param m_x Mouse x position (relative to place, origin is top left).
513 * \param m_y Mouse y position (relative to place, origin is top left).
514 */
515static inline void vout_display_SendMouseMovedDisplayCoordinates(vout_display_t *vd, int m_x, int m_y)
517 vlc_window_ReportMouseMoved(vd->cfg->window, m_x, m_y);
518}
519
520static inline bool vout_display_cfg_IsWindowed(const vout_display_cfg_t *cfg)
522 return cfg->window->type != VLC_WINDOW_TYPE_DUMMY;
523}
524
527 if (vd->ops->change_source_projection == NULL)
528 return VLC_ENOTSUP;
529 return vd->ops->change_source_projection(vd, projection);
530}
531
532/**
533 * Computes the default display size given the source and
534 * the display configuration.
535 *
536 * This assumes that the picture is already cropped.
537 */
539void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height,
540 const video_format_t *source,
541 const struct vout_display_placement *);
542
543/**
544 * Compares two \ref vout_display_place_t.
545 */
546static inline bool vout_display_PlaceEquals(const vout_display_place_t *p1,
548{
549 return p1->x == p2->x && p1->width == p2->width &&
550 p1->y == p2->y && p1->height == p2->height;
551}
552
553/**
554 * Computes the intended picture placement inside the display.
555 *
556 * This function computes where to show a picture inside the display with
557 * respect to the provided parameters, and returns the result
558 * in a \ref vout_display_place_t structure.
559 *
560 * This assumes that cropping is done by an external mean.
561 *
562 * \param place Storage space for the picture placement [OUT]
563 * \param source Video source format
564 * \param cfg Display configuration
565 */
568 const video_format_t *restrict source,
569 const struct vout_display_placement *cfg);
570
571/**
572 * Translates coordinates.
573 *
574 * This translates coordinates from window pixel coordinate space to
575 * original video sample coordinate space.
576 *
577 * \param x pointer to abscissa to be translated
578 * \param y pointer to ordinate to be translated
579 * \param fmt video format
580 * \param dp display configuration
581 */
582void vout_display_TranslateCoordinates(int *x, int *y,
583 const video_format_t *fmt,
584 const struct vout_display_placement *dp);
585
586/** @} */
587#endif /* VLC_VOUT_DISPLAY_H */
#define VLC_API
Definition fourcc_gen.c:31
uint32_t vlc_fourcc_t
The vlc_fourcc_t type.
Definition fourcc_gen.c:33
#define VLC_ENOTSUP
Operation not supported.
Definition vlc_common.h:494
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:53
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:172
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:811
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:516
static void vout_display_Display(vout_display_t *vd, picture_t *picture)
Displays a picture.
Definition vlc_vout_display.h:484
static bool vout_display_cfg_IsWindowed(const vout_display_cfg_t *cfg)
Definition vlc_vout_display.h:521
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 int vout_display_ChangeProjection(vout_display_t *vd, video_projection_mode_t projection)
Definition vlc_vout_display.h:526
static void vout_display_SendEventMouseReleased(vout_display_t *vd, int button)
Definition vlc_vout_display.h:497
vlc_video_fitting
Video automatic scale fitting.
Definition vlc_vout_display.h:84
static void vout_display_SendEventMousePressed(vout_display_t *vd, int button)
Definition vlc_vout_display.h:493
static void vout_display_SendEventViewpointMoved(vout_display_t *vd, const vlc_viewpoint_t *vp)
Definition vlc_vout_display.h:501
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:547
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:606
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:902
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
vlc_stereoscopic_mode_t
Stereoscopic display mode.
Definition vlc_vout.h:92
static void vlc_window_ReportMouseReleased(vlc_window_t *window, int button)
Reports a mouse button release.
Definition vlc_window.h:696
static void vlc_window_ReportMouseMoved(vlc_window_t *window, int x, int y)
Reports a pointer movement.
Definition vlc_window.h:666
static void vlc_window_ReportMousePressed(vlc_window_t *window, int button)
Reports a mouse button press.
Definition vlc_window.h:681
@ VLC_WINDOW_TYPE_DUMMY
Dummy window (not an actual window).
Definition vlc_window.h:62
Video picture.
Definition vlc_picture.h:128
video format description
Definition vlc_es.h:337
Definition vlc_vout_display.h:187
int(* set_source_aspect)(vout_display_t *, const video_format_t *)
Notifies a change of the sample aspect ratio.
Definition vlc_vout_display.h:340
int(* set_stereo)(vout_display_t *, vlc_stereoscopic_mode_t)
Notifies the new Stereoscopic 3D mode in vout_display_cfg_t changed.
Definition vlc_vout_display.h:312
int(* set_viewpoint)(vout_display_t *, const vlc_viewpoint_t *vp)
Notifies a change of VR/360° viewpoint.
Definition vlc_vout_display.h:269
void(* close)(vout_display_t *)
Destroys the display.
Definition vlc_vout_display.h:191
int(* video_place_changed)(vout_display_t *, const struct vout_display_place_t *)
Let the display module know the placement of the video in the display changed.
Definition vlc_vout_display.h:327
void(* display)(vout_display_t *, picture_t *pic)
Displays a picture.
Definition vlc_vout_display.h:237
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:289
int(* change_source_projection)(vout_display_t *display, video_projection_mode_t projection)
Set the source projection used by the display.
Definition vlc_vout_display.h:301
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:278
int(* set_display_size)(vout_display_t *, unsigned width, unsigned height)
Let the display module know the display size has changed.
Definition vlc_vout_display.h:248
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:221
int(* set_source_crop)(vout_display_t *, const video_format_t *)
Notifies a change of the video crop values.
Definition vlc_vout_display.h:356
int(* reset_pictures)(vout_display_t *, video_format_t *fmtp)
Reset the picture format handled by the module.
Definition vlc_vout_display.h:260
Definition vlc_ancillary.h:319
VLC object common members.
Definition vlc_objects.h:53
Definition fourcc_gen.c:34
Definition vlc_subpicture.h:230
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:373
unsigned type
Window handle type.
Definition vlc_window.h:385
User configuration for a video output display (vout_display_t).
Definition vlc_vout_display.h:119
vlc_stereoscopic_mode_t stereo_mode
Stereoscopic/3D mode used by the display.
Definition vlc_vout_display.h:128
struct vout_display_placement display
Display placement properties.
Definition vlc_vout_display.h:121
struct vlc_window * window
Window.
Definition vlc_vout_display.h:120
vlc_icc_profile_t * icc_profile
Currently active ICC profile.
Definition vlc_vout_display.h:122
video_projection_mode_t projection
Final source projection requested for display.
Definition vlc_vout_display.h:124
vlc_viewpoint_t viewpoint
Initial viewpoint when projection != PROJECTION_MODE_RECTANGULAR.
Definition vlc_vout_display.h:127
Information from a vout_display_t to configure the core behaviour.
Definition vlc_vout_display.h:138
const vlc_fourcc_t * subpicture_chromas
Definition vlc_vout_display.h:139
Vout owner structures.
Definition vlc_vout_display.h:145
void(* viewpoint_moved)(void *sys, const vlc_viewpoint_t *vp)
Definition vlc_vout_display.h:161
void * sys
Definition vlc_vout_display.h:148
Video placement.
Definition vlc_vout_display.h:364
unsigned width
Definition vlc_vout_display.h:367
int y
Definition vlc_vout_display.h:366
unsigned height
Definition vlc_vout_display.h:368
int x
Definition vlc_vout_display.h:365
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
bool full_fill
whether the rendering will take the whole display
Definition vlc_vout_display.h:103
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:371
const struct vlc_display_operations * ops
Callbacks the display module must set on Open.
Definition vlc_vout_display.h:439
struct vlc_object_t obj
Definition vlc_vout_display.h:372
const vout_display_cfg_t * cfg
User configuration.
Definition vlc_vout_display.h:379
void * sys
Private data for the display module.
Definition vlc_vout_display.h:434
vout_display_owner_t owner
Definition vlc_vout_display.h:427
const video_format_t * fmt
Picture format.
Definition vlc_vout_display.h:415
const video_format_t * source
Source video format.
Definition vlc_vout_display.h:390
vout_display_info_t info
Definition vlc_vout_display.h:421
const vout_display_place_t * place
Placement of the source picture in the display.
Definition vlc_vout_display.h:398
This file is a collection of common definitions and types.
This file defines the elementary streams format types.
video_projection_mode_t
Video projection mode.
Definition vlc_es.h:242
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.