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