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