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