VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
src
input
es_out.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* es_out.h: Input es_out functions
3
*****************************************************************************
4
* Copyright (C) 1998-2008 VLC authors and VideoLAN
5
* Copyright (C) 2008 Laurent Aimar
6
* $Id: 56cefed7c99acf5898d9a7064b1ee3dac50f5449 $
7
*
8
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
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 LIBVLC_INPUT_ES_OUT_H
26
#define LIBVLC_INPUT_ES_OUT_H 1
27
28
#include <
vlc_common.h
>
29
30
enum
es_out_mode_e
31
{
32
ES_OUT_MODE_NONE
,
/* don't select anything */
33
ES_OUT_MODE_ALL
,
/* eg for stream output */
34
ES_OUT_MODE_AUTO
,
/* best audio/video or for input follow audio-track, sub-track */
35
ES_OUT_MODE_PARTIAL
,
/* select programs given after --programs */
36
ES_OUT_MODE_END
/* mark the es_out as dead */
37
};
38
39
enum
es_out_query_private_e
40
{
41
/* set/get mode */
42
ES_OUT_SET_MODE
=
ES_OUT_PRIVATE_START
,
/* arg1= int */
43
44
/* Get date to wait before demuxing more data */
45
ES_OUT_GET_WAKE_UP
,
/* arg1=mtime_t* res=cannot fail */
46
47
/* Wrapper for some ES command to work with id */
48
ES_OUT_SET_ES_BY_ID
,
49
ES_OUT_RESTART_ES_BY_ID
,
50
ES_OUT_SET_ES_DEFAULT_BY_ID
,
51
ES_OUT_GET_ES_OBJECTS_BY_ID
,
/* arg1=int id, vlc_object_t **dec, vout_thread_t **, audio_output_t ** res=can fail*/
52
53
/* Get buffering state */
54
ES_OUT_GET_BUFFERING
,
/* arg1=bool* res=cannot fail */
55
56
/* Set delay for a ES category */
57
ES_OUT_SET_DELAY
,
/* arg1=es_category_e, res=cannot fail */
58
59
/* Set record state */
60
ES_OUT_SET_RECORD_STATE
,
/* arg1=bool res=can fail */
61
62
/* Set pause state */
63
ES_OUT_SET_PAUSE_STATE
,
/* arg1=bool b_source_paused, bool b_paused arg2=mtime_t res=can fail */
64
65
/* Set rate */
66
ES_OUT_SET_RATE
,
/* arg1=int i_source_rate arg2=int i_rate res=can fail */
67
68
/* Set a new time */
69
ES_OUT_SET_TIME
,
/* arg1=mtime_t res=can fail */
70
71
/* Set next frame */
72
ES_OUT_SET_FRAME_NEXT
,
/* res=can fail */
73
74
/* Set position/time/length */
75
ES_OUT_SET_TIMES
,
/* arg1=double f_position arg2=mtime_t i_time arg3=mtime_t i_length res=cannot fail */
76
77
/* Set jitter */
78
ES_OUT_SET_JITTER
,
/* arg1=mtime_t i_pts_delay arg2= mtime_t i_pts_jitter, arg2=int i_cr_average res=cannot fail */
79
80
/* Get forced group */
81
ES_OUT_GET_GROUP_FORCED
,
/* arg1=int * res=cannot fail */
82
83
/* Set End Of Stream */
84
ES_OUT_SET_EOS
,
/* res=cannot fail */
85
};
86
87
static
inline
void
es_out_SetMode
(
es_out_t
*p_out,
int
i_mode )
88
{
89
int
i_ret =
es_out_Control
( p_out,
ES_OUT_SET_MODE
, i_mode );
90
assert( !i_ret );
91
}
92
static
inline
mtime_t
es_out_GetWakeup
(
es_out_t
*p_out )
93
{
94
mtime_t
i_wu;
95
int
i_ret =
es_out_Control
( p_out,
ES_OUT_GET_WAKE_UP
, &i_wu );
96
97
assert( !i_ret );
98
return
i_wu;
99
}
100
static
inline
bool
es_out_GetBuffering
(
es_out_t
*p_out )
101
{
102
bool
b;
103
int
i_ret =
es_out_Control
( p_out,
ES_OUT_GET_BUFFERING
, &b );
104
105
assert( !i_ret );
106
return
b;
107
}
108
static
inline
bool
es_out_GetEmpty
(
es_out_t
*p_out )
109
{
110
bool
b;
111
int
i_ret =
es_out_Control
( p_out,
ES_OUT_GET_EMPTY
, &b );
112
113
assert( !i_ret );
114
return
b;
115
}
116
static
inline
void
es_out_SetDelay
(
es_out_t
*p_out,
int
i_cat,
mtime_t
i_delay )
117
{
118
int
i_ret =
es_out_Control
( p_out,
ES_OUT_SET_DELAY
, i_cat, i_delay );
119
assert( !i_ret );
120
}
121
static
inline
int
es_out_SetRecordState
(
es_out_t
*p_out,
bool
b_record )
122
{
123
return
es_out_Control
( p_out,
ES_OUT_SET_RECORD_STATE
, b_record );
124
}
125
static
inline
int
es_out_SetPauseState
(
es_out_t
*p_out,
bool
b_source_paused,
bool
b_paused,
mtime_t
i_date )
126
{
127
return
es_out_Control
( p_out,
ES_OUT_SET_PAUSE_STATE
, b_source_paused, b_paused, i_date );
128
}
129
static
inline
int
es_out_SetRate
(
es_out_t
*p_out,
int
i_source_rate,
int
i_rate )
130
{
131
return
es_out_Control
( p_out,
ES_OUT_SET_RATE
, i_source_rate, i_rate );
132
}
133
static
inline
int
es_out_SetTime
(
es_out_t
*p_out,
mtime_t
i_date )
134
{
135
return
es_out_Control
( p_out,
ES_OUT_SET_TIME
, i_date );
136
}
137
static
inline
int
es_out_SetFrameNext
(
es_out_t
*p_out )
138
{
139
return
es_out_Control
( p_out,
ES_OUT_SET_FRAME_NEXT
);
140
}
141
static
inline
void
es_out_SetTimes
(
es_out_t
*p_out,
double
f_position,
mtime_t
i_time,
mtime_t
i_length )
142
{
143
int
i_ret =
es_out_Control
( p_out,
ES_OUT_SET_TIMES
, f_position, i_time, i_length );
144
assert( !i_ret );
145
}
146
static
inline
void
es_out_SetJitter
(
es_out_t
*p_out,
147
mtime_t
i_pts_delay,
mtime_t
i_pts_jitter,
int
i_cr_average )
148
{
149
int
i_ret =
es_out_Control
( p_out,
ES_OUT_SET_JITTER
,
150
i_pts_delay, i_pts_jitter, i_cr_average );
151
assert( !i_ret );
152
}
153
static
inline
int
es_out_GetEsObjects
(
es_out_t
*p_out,
int
i_id,
154
vlc_object_t
**pp_decoder,
vout_thread_t
**pp_vout,
audio_output_t
**pp_aout )
155
{
156
return
es_out_Control
( p_out,
ES_OUT_GET_ES_OBJECTS_BY_ID
, i_id, pp_decoder, pp_vout, pp_aout );
157
}
158
static
inline
int
es_out_GetGroupForced
(
es_out_t
*p_out )
159
{
160
int
i_group;
161
int
i_ret =
es_out_Control
( p_out,
ES_OUT_GET_GROUP_FORCED
, &i_group );
162
assert( !i_ret );
163
return
i_group;
164
}
165
static
inline
void
es_out_Eos
(
es_out_t
*p_out )
166
{
167
int
i_ret =
es_out_Control
( p_out,
ES_OUT_SET_EOS
);
168
assert( !i_ret );
169
}
170
171
es_out_t
*
input_EsOutNew
(
input_thread_t
*,
int
i_rate );
172
173
#endif
Generated by
1.8.1.2