]> git.sesse.net Git - vlc/blob - src/video_output/display.h
Use var_Inherit* instead of var_CreateGet*.
[vlc] / src / video_output / display.h
1 /*****************************************************************************
2  * display.h: "vout display" managment
3  *****************************************************************************
4  * Copyright (C) 2009 Laurent Aimar
5  * $Id$
6  *
7  * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24 #if defined(__PLUGIN__) || defined(__BUILTIN__) || !defined(__LIBVLC__)
25 # error This header file can only be included from LibVLC.
26 #endif
27
28 #include <vlc_vout_wrapper.h>
29
30 #if 0
31 #include <vlc_vout_display.h>
32 #include <vlc_filter.h>
33
34 /**
35  * It retreive a picture from the display
36  */
37 static inline picture_pool_t *vout_display_Pool(vout_display_t *vd, unsigned count)
38 {
39     return vd->pool(vd, count);
40 }
41
42 /**
43  * It preparse a picture for display.
44  */
45 static inline void vout_display_Prepare(vout_display_t *vd, picture_t *picture)
46 {
47     if (vd->prepare )
48         vd->prepare(vd, picture);
49 }
50
51 /**
52  * It display a picture.
53  */
54 static inline void vout_display_Display(vout_display_t *vd, picture_t *picture)
55 {
56     vd->display(vd, picture);
57 }
58
59 /**
60  * It holds a state for a vout display.
61  */
62 typedef struct {
63     vout_display_cfg_t cfg;
64
65     bool is_on_top;
66     struct {
67         int num;
68         int den;
69     } sar;
70 } vout_display_state_t;
71
72 /**
73  * It creates a vout managed display.
74  */
75 vout_display_t *vout_NewDisplay( vout_thread_t *,
76                                  const video_format_t *,
77                                  const vout_display_state_t *,
78                                  const char *psz_module,
79                                  mtime_t i_double_click_timeout,
80                                  mtime_t i_hide_timeout );
81 /**
82  * It creates a vout managed display wrapping a video splitter.
83  */
84 vout_display_t *vout_NewSplitter(vout_thread_t *,
85                                  const video_format_t *source,
86                                  const vout_display_state_t *state,
87                                  const char *module,
88                                  const char *splitter,
89                                  mtime_t double_click_timeout,
90                                  mtime_t hide_timeout );
91
92 /**
93  * It destroy a vout managed display.
94  */
95 void vout_DeleteDisplay(vout_display_t *, vout_display_state_t *);
96
97 picture_t *vout_FilterDisplay(vout_display_t *, picture_t *);
98
99 void vout_ManageDisplay(vout_display_t *, bool allow_reset_pictures);
100
101 void vout_SetDisplayFullscreen(vout_display_t *, bool is_fullscreen);
102 void vout_SetDisplayFilled(vout_display_t *, bool is_filled);
103 void vout_SetDisplayZoom(vout_display_t *, int num, int den);
104 void vout_SetWindowState(vout_display_t *, unsigned state);
105 void vout_SetDisplayAspect(vout_display_t *, unsigned sar_num, unsigned sar_den);
106 void vout_SetDisplayCrop(vout_display_t *,
107                          unsigned crop_num, unsigned crop_den,
108                          unsigned x, unsigned y, unsigned width, unsigned height);
109
110 #endif
111
112 vout_display_t *vout_NewSplitter(vout_thread_t *vout,
113                                  const video_format_t *source,
114                                  const vout_display_state_t *state,
115                                  const char *module,
116                                  const char *splitter_module,
117                                  mtime_t double_click_timeout,
118                                  mtime_t hide_timeout);
119
120 /* FIXME should not be there */
121 void vout_SendDisplayEventMouse(vout_thread_t *, const vlc_mouse_t *);
122 vout_window_t *vout_NewDisplayWindow(vout_thread_t *, vout_display_t *, const vout_window_cfg_t *);
123 void vout_DeleteDisplayWindow(vout_thread_t *, vout_display_t *, vout_window_t *);
124