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
video_output
vout_internal.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vout_internal.h : Internal vout definitions
3
*****************************************************************************
4
* Copyright (C) 2008 VLC authors and VideoLAN
5
* Copyright (C) 2008 Laurent Aimar
6
* $Id: d0de04374dfeab3b60c75df006025238a7f13d1b $
7
*
8
* Authors: Laurent Aimar < fenrir _AT_ videolan _DOT_ 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 LIBVLC_VOUT_INTERNAL_H
26
#define LIBVLC_VOUT_INTERNAL_H 1
27
28
#include <
vlc_picture_fifo.h
>
29
#include <
vlc_picture_pool.h
>
30
#include <
vlc_vout_display.h
>
31
#include <
vlc_vout_wrapper.h
>
32
#include "
vout_control.h
"
33
#include "
control.h
"
34
#include "
snapshot.h
"
35
#include "
statistic.h
"
36
#include "
chrono.h
"
37
38
/* It should be high enough to absorbe jitter due to difficult picture(s)
39
* to decode but not too high as memory is not that cheap.
40
*
41
* It can be made lower at compilation time if needed, but performance
42
* may be degraded.
43
*/
44
#define VOUT_MAX_PICTURES (20)
45
46
/* */
47
struct
vout_thread_sys_t
48
{
49
/* Splitter module if used */
50
char
*
splitter_name
;
51
52
/* Input thread for dvd menu interactions */
53
vlc_object_t
*
input
;
54
55
/* */
56
video_format_t
original
;
/* Original format ie coming from the decoder */
57
unsigned
dpb_size
;
58
59
/* Snapshot interface */
60
vout_snapshot_t
snapshot
;
61
62
/* Statistics */
63
vout_statistic_t
statistic
;
64
65
/* Subpicture unit */
66
vlc_mutex_t
spu_lock
;
67
spu_t
*
spu
;
68
vlc_fourcc_t
spu_blend_chroma
;
69
filter_t
*
spu_blend
;
70
71
/* Video output window */
72
struct
{
73
bool
is_unused
;
74
vout_window_cfg_t
cfg
;
75
vout_window_t
*
object
;
76
}
window
;
77
78
/* Thread & synchronization */
79
vlc_thread_t
thread
;
80
bool
dead
;
81
vout_control_t
control
;
82
83
/* */
84
struct
{
85
char
*
title
;
86
vout_display_t
*
vd
;
87
bool
use_dr
;
88
picture_t
*
filtered
;
89
}
display
;
90
91
struct
{
92
mtime_t
date
;
93
mtime_t
timestamp
;
94
bool
is_interlaced
;
95
picture_t
*
decoded
;
96
picture_t
*
current
;
97
picture_t
*
next
;
98
}
displayed
;
99
100
struct
{
101
mtime_t
last
;
102
mtime_t
timestamp
;
103
}
step
;
104
105
struct
{
106
bool
is_on
;
107
mtime_t
date
;
108
}
pause
;
109
110
/* OSD title configuration */
111
struct
{
112
bool
show
;
113
mtime_t
timeout
;
114
int
position
;
115
}
title
;
116
117
/* */
118
bool
is_late_dropped
;
119
120
/* Video filter2 chain */
121
struct
{
122
vlc_mutex_t
lock
;
123
char
*
configuration
;
124
video_format_t
format
;
125
filter_chain_t
*
chain_static
;
126
filter_chain_t
*
chain_interactive
;
127
}
filter
;
128
129
/* */
130
vlc_mouse_t
mouse
;
131
132
/* */
133
vlc_mutex_t
picture_lock
;
/**< picture heap lock */
134
picture_pool_t
*
private_pool
;
135
picture_pool_t
*
display_pool
;
136
picture_pool_t
*
decoder_pool
;
137
picture_fifo_t
*
decoder_fifo
;
138
vout_chrono_t
render
;
/**< picture render time estimator */
139
};
140
141
/* TODO to move them to vlc_vout.h */
142
void
vout_ControlChangeFullscreen
(
vout_thread_t
*,
bool
fullscreen);
143
void
vout_ControlChangeOnTop
(
vout_thread_t
*,
bool
is_on_top);
144
void
vout_ControlChangeDisplayFilled
(
vout_thread_t
*,
bool
is_filled);
145
void
vout_ControlChangeZoom
(
vout_thread_t
*,
int
num,
int
den);
146
void
vout_ControlChangeSampleAspectRatio
(
vout_thread_t
*,
unsigned
num,
unsigned
den);
147
void
vout_ControlChangeCropRatio
(
vout_thread_t
*,
unsigned
num,
unsigned
den);
148
void
vout_ControlChangeCropWindow
(
vout_thread_t
*,
int
x,
int
y,
int
width,
int
height);
149
void
vout_ControlChangeCropBorder
(
vout_thread_t
*,
int
left,
int
top,
int
right,
int
bottom);
150
void
vout_ControlChangeFilters
(
vout_thread_t
*,
const
char
*);
151
void
vout_ControlChangeSubSources
(
vout_thread_t
*,
const
char
*);
152
void
vout_ControlChangeSubFilters
(
vout_thread_t
*,
const
char
*);
153
void
vout_ControlChangeSubMargin
(
vout_thread_t
*,
int
);
154
155
/* */
156
void
vout_IntfInit
(
vout_thread_t
* );
157
158
/* */
159
int
vout_OpenWrapper
(
vout_thread_t
*,
const
char
*,
const
vout_display_state_t
*);
160
void
vout_CloseWrapper
(
vout_thread_t
*,
vout_display_state_t
*);
161
int
vout_InitWrapper
(
vout_thread_t
*);
162
void
vout_EndWrapper
(
vout_thread_t
*);
163
void
vout_ManageWrapper
(
vout_thread_t
*);
164
165
/* */
166
int
spu_ProcessMouse
(
spu_t
*,
const
vlc_mouse_t
*,
const
video_format_t
*);
167
void
spu_Attach
(
spu_t
*,
vlc_object_t
*input,
bool
);
168
void
spu_ChangeMargin
(
spu_t
*,
int
);
169
170
#endif
Generated by
1.8.1.2