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 */
54struct vout_thread_t {
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
66/**
67 * vout or spu_channel order
68 */
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 */
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/* */
123
124/* Subpictures channels ID */
125#define VOUT_SPU_CHANNEL_INVALID (-1) /* Always fails in comparison */
126#define VOUT_SPU_CHANNEL_OSD 0 /* OSD channel is automatically cleared */
127#define VOUT_SPU_CHANNEL_OSD_HSLIDER 1
128#define VOUT_SPU_CHANNEL_OSD_VSLIDER 2
129#define VOUT_SPU_CHANNEL_OSD_COUNT 3
131/* */
136/**
137 * This function will ensure that all ready/displayed pictures have at most
138 * the provided date.
139 */
140VLC_API void vout_Flush( vout_thread_t *p_vout, vlc_tick_t i_date );
141
142/**
143 * Empty all the pending pictures in the vout
144 */
145#define vout_FlushAll( vout ) vout_Flush( vout, VLC_TICK_INVALID )
147/**@}*/
148
149#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:397
void vout_PutSubpicture(vout_thread_t *, subpicture_t *)
Definition: video_output.c:319
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:1587
ssize_t vout_RegisterSubpictureChannel(vout_thread_t *)
Definition: video_output.c:330
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:356
void vout_Close(vout_thread_t *vout)
Destroys a vout.
Definition: video_output.c:1909
void vout_FlushSubpictureChannel(vout_thread_t *, size_t)
Definition: video_output.c:364
void vout_PutPicture(vout_thread_t *, picture_t *)
It gives to the vout a picture to be displayed.
Definition: video_output.c:387
@ 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
Video picture.
Definition: vlc_picture.h:130
Video subtitle.
Definition: vlc_subpicture.h:167
video format description
Definition: vlc_es.h:352
Definition: vlc_frame.h:123
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 is a collection of common definitions and types.
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