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 private structure
49  */
51 
52 /**
53  * Video output thread descriptor
54  *
55  * Any independent video output device, such as an X11 window or a GGI device,
56  * is represented by a video output thread, and described using the following
57  * structure.
58  */
59 struct vout_thread_t {
60  struct vlc_object_t obj;
61 
62  /* Private vout_thread data */
64 };
65 
66 /* Alignment flags */
67 #define VOUT_ALIGN_LEFT 0x0001
68 #define VOUT_ALIGN_RIGHT 0x0002
69 #define VOUT_ALIGN_HMASK 0x0003
70 #define VOUT_ALIGN_TOP 0x0004
71 #define VOUT_ALIGN_BOTTOM 0x0008
72 #define VOUT_ALIGN_VMASK 0x000C
73 
74 /**
75  * vout or spu_channel order
76  */
77 enum vlc_vout_order
78 {
80  /**
81  * There is only one primary vout/spu_channel
82  * For vouts: this is the first vout, probably embedded in the UI.
83  * For spu channels: main and first SPU channel.
84  */
86  /**
87  * There can be several secondary vouts or spu_channels
88  * For vouts: a secondary vout using its own window.
89  * For spu channels: a secondary spu channel that is placed in function of
90  * the primary one. See "secondary-sub-margin" and
91  * "secondary-sub-alignment".
92  */
94 };
95 
96 /*****************************************************************************
97  * Prototypes
98  *****************************************************************************/
99 
100 /**
101  * Destroys a vout.
102  *
103  * This function closes and releases a vout created by vout_Create().
104  *
105  * \param vout the vout to close
106  */
107 VLC_API void vout_Close(vout_thread_t *vout);
108 
109 /**
110  * This function will handle a snapshot request.
111  *
112  * pp_image, pp_picture and p_fmt can be NULL otherwise they will be
113  * set with returned value in case of success.
114  *
115  * pp_image will hold an encoded picture in psz_format format.
116  *
117  * p_fmt can be NULL otherwise it will be set with the format used for the
118  * picture before encoding.
119  *
120  * i_timeout specifies the time the function will wait for a snapshot to be
121  * available.
122  *
123  */
125  block_t **pp_image, picture_t **pp_picture,
126  video_format_t *p_fmt,
127  const char *psz_format, vlc_tick_t i_timeout );
128 
129 /* */
132 
133 /* Subpictures channels ID */
134 #define VOUT_SPU_CHANNEL_INVALID (-1) /* Always fails in comparison */
135 #define VOUT_SPU_CHANNEL_OSD 0 /* OSD channel is automatically cleared */
136 #define VOUT_SPU_CHANNEL_OSD_HSLIDER 1
137 #define VOUT_SPU_CHANNEL_OSD_VSLIDER 2
138 #define VOUT_SPU_CHANNEL_OSD_COUNT 3
140 /* */
145 /**
146  * This function will ensure that all ready/displayed pictures have at most
147  * the provided date.
148  */
149 VLC_API void vout_Flush( vout_thread_t *p_vout, vlc_tick_t i_date );
150 
151 /**
152  * Empty all the pending pictures in the vout
153  */
154 #define vout_FlushAll( vout ) vout_Flush( vout, VLC_TICK_INVALID )
156 /**@}*/
157 
158 #endif /* _VLC_VOUT_H */
Subpictures functions.
This file defines picture structures and functions in vlc.
Video picture.
Definition: vlc_picture.h:127
picture_t * vout_GetPicture(vout_thread_t *)
Allocates a video output picture buffer.
Definition: video_output.c:329
Video subtitle.
Definition: vlc_subpicture.h:166
vout_thread_sys_t * p
Definition: vlc_vout.h:64
void vout_Close(vout_thread_t *vout)
Destroys a vout.
Definition: video_output.c:1814
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
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:357
void vout_PutSubpicture(vout_thread_t *, subpicture_t *)
Definition: video_output.c:262
Video output thread descriptor.
Definition: vlc_vout.h:60
video format description
Definition: vlc_es.h:349
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:1419
void vout_PutPicture(vout_thread_t *, picture_t *)
It gives to the vout a picture to be displayed.
Definition: video_output.c:348
ssize_t vout_RegisterSubpictureChannel(vout_thread_t *)
Definition: video_output.c:273
vlc_vout_order
vout or spu_channel order
Definition: vlc_vout.h:78
#define VLC_API
Definition: fourcc_gen.c:31
void vout_UnregisterSubpictureChannel(vout_thread_t *, size_t)
Definition: video_output.c:297
There is only one primary vout/spu_channel For vouts: this is the first vout, probably embedded in th...
Definition: vlc_vout.h:86
Definition: vlc_block.h:117
There can be several secondary vouts or spu_channels For vouts: a secondary vout using its own window...
Definition: vlc_vout.h:94
Definition: vout_internal.h:64
struct vlc_object_t obj
Definition: vlc_vout.h:61
This file defines the elementary streams format types.
VLC object common members.
Definition: vlc_objects.h:43
void vout_FlushSubpictureChannel(vout_thread_t *, size_t)
Definition: video_output.c:304
Definition: vlc_vout.h:80