VLC  4.0.0-dev
vlc_vout.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * vlc_vout.h: common video definitions
3  *****************************************************************************
4  * Copyright (C) 1999 - 2008 VLC authors and VideoLAN
5  *
6  * Authors: Vincent Seguin <seguin@via.ecp.fr>
7  * Samuel Hocevar <sam@via.ecp.fr>
8  * Olivier Aubert <oaubert 47 videolan d07 org>
9  *
10  * This program is free software; you can redistribute it and/or modify it
11  * under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation; either version 2.1 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program; if not, write to the Free Software Foundation,
22  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23  *****************************************************************************/
24 
25 #ifndef VLC_VOUT_H_
26 #define VLC_VOUT_H_ 1
27 
28 #include <vlc_es.h>
29 #include <vlc_picture.h>
30 #include <vlc_subpicture.h>
31 
32 /**
33  * \defgroup output Output
34  * \ingroup vlc
35  * \defgroup video_output Video output
36  * \ingroup output
37  * Video rendering, output and window management
38  *
39  * This module describes the programming interface for video output threads.
40  * It includes functions allowing to open a new thread, send pictures to a
41  * thread, and destroy a previously opened video output thread.
42  * @{
43  * \file
44  * Video output thread interface
45  */
46 
47 /**
48  * Video output thread descriptor
49  *
50  * Any independent video output device, such as an X11 window or a GGI device,
51  * is represented by a video output thread, and described using the following
52  * structure.
53  */
54 struct vout_thread_t {
55  struct vlc_object_t obj;
56 };
57 
58 /* Alignment flags */
59 #define VOUT_ALIGN_LEFT 0x0001
60 #define VOUT_ALIGN_RIGHT 0x0002
61 #define VOUT_ALIGN_HMASK 0x0003
62 #define VOUT_ALIGN_TOP 0x0004
63 #define VOUT_ALIGN_BOTTOM 0x0008
64 #define VOUT_ALIGN_VMASK 0x000C
65 
66 /**
67  * vout or spu_channel order
68  */
69 enum vlc_vout_order
70 {
72  /**
73  * There is only one primary vout/spu_channel
74  * For vouts: this is the first vout, probably embedded in the UI.
75  * For spu channels: main and first SPU channel.
76  */
78  /**
79  * There can be several secondary vouts or spu_channels
80  * For vouts: a secondary vout using its own window.
81  * For spu channels: a secondary spu channel that is placed in function of
82  * the primary one. See "secondary-sub-margin" and
83  * "secondary-sub-alignment".
84  */
86 };
87 
88 /*****************************************************************************
89  * Prototypes
90  *****************************************************************************/
91 
92 /**
93  * Destroys a vout.
94  *
95  * This function closes and releases a vout created by vout_Create().
96  *
97  * \param vout the vout to close
98  */
99 VLC_API void vout_Close(vout_thread_t *vout);
100 
101 /**
102  * This function will handle a snapshot request.
103  *
104  * pp_image, pp_picture and p_fmt can be NULL otherwise they will be
105  * set with returned value in case of success.
106  *
107  * pp_image will hold an encoded picture in psz_format format.
108  *
109  * p_fmt can be NULL otherwise it will be set with the format used for the
110  * picture before encoding.
111  *
112  * i_timeout specifies the time the function will wait for a snapshot to be
113  * available.
114  *
115  */
117  block_t **pp_image, picture_t **pp_picture,
118  video_format_t *p_fmt,
119  const char *psz_format, vlc_tick_t i_timeout );
120 
121 /* */
124 
125 /* Subpictures channels ID */
126 #define VOUT_SPU_CHANNEL_INVALID (-1) /* Always fails in comparison */
127 #define VOUT_SPU_CHANNEL_OSD 0 /* OSD channel is automatically cleared */
128 #define VOUT_SPU_CHANNEL_OSD_HSLIDER 1
129 #define VOUT_SPU_CHANNEL_OSD_VSLIDER 2
130 #define VOUT_SPU_CHANNEL_OSD_COUNT 3
131 
132 /* */
137 /**
138  * This function will ensure that all ready/displayed pictures have at most
139  * the provided date.
140  */
141 VLC_API void vout_Flush( vout_thread_t *p_vout, vlc_tick_t i_date );
142 
143 /**
144  * Empty all the pending pictures in the vout
145  */
146 #define vout_FlushAll( vout ) vout_Flush( vout, VLC_TICK_INVALID )
147 
148 /**@}*/
149 
150 #endif /* _VLC_VOUT_H */
#define VLC_API
Definition: fourcc_gen.c:31
int vout_GetSnapshot(vout_thread_t *p_vout, block_t **pp_image, picture_t **pp_picture, video_format_t *p_fmt, const char *psz_format, vlc_tick_t i_timeout)
This function will handle a snapshot request.
Definition: video_output.c:482
void vout_PutSubpicture(vout_thread_t *, subpicture_t *)
Definition: video_output.c:381
picture_t * vout_GetPicture(vout_thread_t *)
Allocates a video output picture buffer.
Definition: video_output.c:452
void vout_Flush(vout_thread_t *p_vout, vlc_tick_t i_date)
This function will ensure that all ready/displayed pictures have at most the provided date.
Definition: video_output.c:1590
ssize_t vout_RegisterSubpictureChannel(vout_thread_t *)
Definition: video_output.c:392
vlc_vout_order
vout or spu_channel order
Definition: vlc_vout.h:71
void vout_UnregisterSubpictureChannel(vout_thread_t *, size_t)
Definition: video_output.c:418
void vout_Close(vout_thread_t *vout)
Destroys a vout.
Definition: video_output.c:1937
void vout_FlushSubpictureChannel(vout_thread_t *, size_t)
Definition: video_output.c:426
void vout_PutPicture(vout_thread_t *, picture_t *)
It gives to the vout a picture to be displayed.
Definition: video_output.c:472
@ VLC_VOUT_ORDER_SECONDARY
There can be several secondary vouts or spu_channels For vouts: a secondary vout using its own window...
Definition: vlc_vout.h:86
@ VLC_VOUT_ORDER_PRIMARY
There is only one primary vout/spu_channel For vouts: this is the first vout, probably embedded in th...
Definition: vlc_vout.h:78
@ VLC_VOUT_ORDER_NONE
Definition: vlc_vout.h:72
Definition: vlc_block.h:118
Video picture.
Definition: vlc_picture.h:124
Video subtitle.
Definition: vlc_subpicture.h:167
video format description
Definition: vlc_es.h:352
VLC object common members.
Definition: vlc_objects.h:45
Video output thread descriptor.
Definition: vlc_vout.h:55
struct vlc_object_t obj
Definition: vlc_vout.h:56
This file defines the elementary streams format types.
This file defines picture structures and functions in vlc.
Subpictures functions.
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45