VLC 4.0.0-dev
Loading...
Searching...
No Matches
player.h
Go to the documentation of this file.
1/*****************************************************************************
2 * player.h: Player internal interface
3 *****************************************************************************
4 * Copyright © 2018-2019 VLC authors and VideoLAN
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19 *****************************************************************************/
20
21#ifndef VLC_PLAYER_INTERNAL_H
22#define VLC_PLAYER_INTERNAL_H
23
24#include <vlc_player.h>
25#include <vlc_list.h>
26#include <vlc_vector.h>
27#include <vlc_atomic.h>
28#include <vlc_media_library.h>
29#include <vlc_vout_osd.h>
30
32
34{
36 vout_thread_t *vout; /* weak reference */
38 /* only valid if selected and if category is VIDEO_ES or SPU_ES */
40 /* Used to save or not the track selection */
42};
43
44typedef struct VLC_VECTOR(struct vlc_player_program *)
46
47typedef struct VLC_VECTOR(struct vlc_player_track_priv *)
49
56
58{
61 bool started;
62
63 /* Monitor the OPENING_S -> PLAYING_S transition. */
64 bool playing;
65
68 float rate;
71 bool live;
72
73 double position;
76
78
80
83 float cache;
84
86
88
94
96
99
101
105
106 struct
107 {
109 double pos;
110 bool set;
112
113 struct
114 {
116 enum
117 {
122 float pos;
125 /* Keep a trace of tracks as they appear since they won't be available
126 * for probing when the input gets stopped
127 */
130 } ml;
131
132 unsigned repeat;
133};
134
136{
137 const struct vlc_player_cbs *cbs;
138 void *cbs_data;
140};
141
154
161
168
175
190
192{
193 struct vlc_list listeners; /* list of struct vlc_player_timer_id */
194 vlc_es_id_t *es; /* weak reference */
197
198 /* Date of the last reported pause, to report a pause signaled by both
199 * the input and the output only once */
201
202 union
203 {
204 struct {
205 unsigned long last_framenum;
206 unsigned frame_rate;
209 unsigned df_fps;
210 int df;
213 };
214};
215
223
225{
227
234
237 enum
238 {
244 /* Date of the last input PLAYING event, to detect ES PAUSED events
245 * delivered after their pause was resumed */
248
250#define best_source sources[VLC_PLAYER_TIMER_TYPE_BEST]
251#define smpte_source sources[VLC_PLAYER_TIMER_TYPE_SMPTE]
252};
253
255{
262
265
267 bool corked;
268
273
276
279
282
286
289
290 /**
291 * Playing a tiny stream (either empty, or with unreported errors) in a loop
292 * would cause high CPU usage. To mitigate the problem, temporize if
293 * several EOS are received too quickly.
294 */
295#define VLC_PLAYER_EOS_BURST_THRESHOLD VLC_TICK_FROM_MS(250)
298 unsigned repeat;
299
301 struct
302 {
310
312};
313
314#ifndef NDEBUG
315/*
316 * Assert that the player mutex is locked.
317 *
318 * This is exposed in this internal header because the playlist and its
319 * associated player share the lock to avoid lock-order inversion issues.
320 */
321static inline void
323{
324 assert(player);
325 vlc_mutex_assert(&player->lock);
326}
327#else
328#define vlc_player_assert_locked(x) ((void) (0))
329#endif
330
331static inline struct vlc_player_input *
337
338#define vlc_player_SendEvent(player, event, ...) do { \
339 vlc_player_listener_id *listener; \
340 vlc_list_foreach(listener, &player->listeners, node) \
341 { \
342 if (listener->cbs->event) \
343 listener->cbs->event(player, ##__VA_ARGS__, listener->cbs_data); \
344 } \
345} while(0)
346
347#define vlc_player_SendEventCount(player, event, count, ...) do { \
348 vlc_player_listener_id *listener; \
349 count = 0; \
350 vlc_list_foreach(listener, &player->listeners, node) \
351 { \
352 if (listener->cbs->event) { \
353 listener->cbs->event(player, ##__VA_ARGS__, listener->cbs_data); \
354 count++; \
355 } \
356 } \
357} while(0)
358
359static inline const char *
361{
362 switch (cat)
363 {
364 case VIDEO_ES: return "Video";
365 case AUDIO_ES: return "Audio";
366 case SPU_ES: return "Subtitle";
367 default: return NULL;
368 }
369}
370
371/*
372 * player.c
373 */
374
377
378int
380
381void
383 struct vlc_player_input *input);
384
385void
387 struct vlc_player_input *input);
388
389void
391
392/*
393 * player_track.c
394 */
395
396struct vlc_player_program *
397vlc_player_program_New(int id, const char *name);
398
399int
401 const char *name);
402
403struct vlc_player_program *
405 size_t *idx);
406
408vlc_player_track_priv_New(vlc_es_id_t *id, const char *name, const es_format_t *fmt);
409
410void
412
413int
415 const char *name, const es_format_t *fmt);
416
419 size_t *idx);
420
421int
423
424/*
425 * player_title.c
426 */
427
430 int title_offset, int chapter_offset);
431
432/*
433 * player_input.c
434 */
435
436static inline vlc_player_track_vector *
438 enum es_format_category_e cat)
439{
440 switch (cat)
441 {
442 case VIDEO_ES:
443 return &input->video_track_vector;
444 case AUDIO_ES:
445 return &input->audio_track_vector;
446 case SPU_ES:
447 return &input->spu_track_vector;
448 default:
449 return NULL;
450 }
451}
452
455 size_t *idx);
456
457struct vlc_player_input *
459
460void
462
463void
465 enum es_format_category_e cat,
466 const char *str_ids);
467
468char *
471
473vlc_player_input_GetTime(struct vlc_player_input *input, bool seeking,
474 vlc_tick_t system_now);
475
476double
477vlc_player_input_GetPos(struct vlc_player_input *input, bool seeking,
478 vlc_tick_t system_now);
479
480int
482
483void
485 enum vlc_player_seek_speed speed,
486 enum vlc_player_whence whence);
487
488void
490 enum vlc_player_seek_speed speed,
491 enum vlc_player_whence whence);
492
493void
495 const vlc_viewpoint_t *viewpoint,
496 enum vlc_player_whence whence);
497
498void
500 vlc_tick_t state_date);
501
502bool
503vlc_player_input_HandleAtoBLoop(struct vlc_player_input *input, bool forced);
504
505/*
506 * player_timer.c
507*/
508
509void
511
512void
514
515void
517
518void
520 enum vlc_player_timer_event event,
521 vlc_tick_t system_date);
522
523void
525 double position);
526
527void
529 bool es_source_is_master,
530 const struct vlc_player_timer_point *point,
532 unsigned frame_rate, unsigned frame_rate_base,
533 vlc_tick_t start_offset);
534
535void
537
538int
540 vlc_tick_t system_now,
541 vlc_tick_t *out_ts, double *out_pos);
542
543/*
544 * player_vout.c
545 */
546
547void
549
550void
552
553/*
554 * player_aout.c
555 */
556
559
560void
562
563/*
564 * player_osd.c
565 */
566
567void
568vlc_player_osd_Message(vlc_player_t *player, const char *fmt, ...);
569
570void
572
573void
575 struct vlc_player_input *input, vlc_tick_t time,
576 double position);
577void
578vlc_player_osd_Volume(vlc_player_t *player, bool mute_action);
579
580int
582 vlc_value_t oldval, vlc_value_t newval, void *data);
583
584void
586
587void
589
590void
592
593/*
594 * player/medialib.c
595 */
596
597void
598vlc_player_input_RestoreMlStates(struct vlc_player_input* input, bool force_pos);
599
600void
602
603#endif
size_t count
Definition core.c:403
#define VLC_MALLOC
Definition vlc_common.h:157
#define vlc_mutex_assert(m)
Asserts that a mutex is locked by the calling thread.
Definition vlc_threads.h:248
vlc_osd_widget_type
OSD menu position and picture type defines.
Definition vlc_vout_osd.h:47
#define VLC_VECTOR(type)
Vector struct body.
Definition vlc_vector.h:66
vlc_vout_order
vout or spu_channel order
Definition vlc_vout.h:70
vlc_player_metadata_option
Player metadata option.
Definition vlc_player.h:2269
vlc_player_state
State of the player.
Definition vlc_player.h:211
vlc_player_whence
Player seek/delay directive.
Definition vlc_player.h:284
vlc_player_seek_speed
Seek speed type.
Definition vlc_player.h:269
vlc_player_error
Error of the player.
Definition vlc_player.h:257
const char name[16]
Definition httpd.c:1299
const char var[sizeof("video")]
Definition player.c:1905
vlc_tick_t vlc_player_input_GetTime(struct vlc_player_input *input, bool seeking, vlc_tick_t system_now)
Definition input.c:40
void vlc_player_osd_Icon(vlc_player_t *player, vlc_osd_widget_type type)
Definition osd.c:110
struct vlc_player_program * vlc_player_program_New(int id, const char *name)
Definition track.c:42
void vlc_player_ResetTimer(vlc_player_t *player)
Definition timer.c:30
static struct vlc_player_input * vlc_player_get_input_locked(vlc_player_t *player)
Definition player.h:332
int vlc_player_vout_OSDCallback(vlc_object_t *this, const char *var, vlc_value_t oldval, vlc_value_t newval, void *data)
Definition osd.c:283
void vlc_player_osd_Tracks(vlc_player_t *player, vlc_es_id_t *const *selected, vlc_es_id_t *unselect)
Definition osd.c:190
static void vlc_player_assert_locked(vlc_player_t *player)
Definition player.h:322
struct vlc_player_program * vlc_player_program_vector_FindById(vlc_player_program_vector *vec, int id, size_t *idx)
Definition track.c:89
void vlc_player_input_SelectTracksByStringIds(struct vlc_player_input *input, enum es_format_category_e cat, const char *str_ids)
Definition input.c:1206
void vlc_player_input_RestoreMlStates(struct vlc_player_input *input, bool force_pos)
Definition medialib.c:30
void vlc_player_destructor_AddStoppingInput(vlc_player_t *player, struct vlc_player_input *input)
Definition player.c:151
int vlc_player_OpenNextMedia(vlc_player_t *player)
Definition player.c:56
struct vlc_player_track_priv * vlc_player_track_priv_New(vlc_es_id_t *id, const char *name, const es_format_t *fmt)
Definition track.c:106
struct vlc_player_track_priv * vlc_player_input_FindTrackById(struct vlc_player_input *input, vlc_es_id_t *id, size_t *idx)
Definition input.c:31
void vlc_player_destructor_AddJoinableInput(vlc_player_t *player, struct vlc_player_input *input)
Definition player.c:165
vlc_player_timer_event
Definition player.h:217
@ VLC_PLAYER_TIMER_EVENT_PAUSED
Definition player.h:219
@ VLC_PLAYER_TIMER_EVENT_DISCONTINUITY
Definition player.h:220
@ VLC_PLAYER_TIMER_EVENT_PLAYING
Definition player.h:218
@ VLC_PLAYER_TIMER_EVENT_STOPPING
Definition player.h:221
void vlc_player_osd_Message(vlc_player_t *player, const char *fmt,...)
Definition osd.c:90
void vlc_player_UpdateTimerEvent(vlc_player_t *player, vlc_es_id_t *es_source, enum vlc_player_timer_event event, vlc_tick_t system_date)
Definition timer.c:230
void vlc_player_UpdateMLStates(vlc_player_t *player, struct vlc_player_input *input)
Definition medialib.c:171
int vlc_player_GetTimerPoint(vlc_player_t *player, bool *seeking, vlc_tick_t system_now, vlc_tick_t *out_ts, double *out_pos)
Definition timer.c:596
void vlc_player_osd_Position(vlc_player_t *player, struct vlc_player_input *input, vlc_tick_t time, double position)
Definition osd.c:121
double vlc_player_input_GetPos(struct vlc_player_input *input, bool seeking, vlc_tick_t system_now)
Definition input.c:53
char * vlc_player_input_GetSelectedTrackStringIds(struct vlc_player_input *input, enum es_format_category_e cat)
Definition input.c:1214
void vlc_player_input_HandleState(struct vlc_player_input *, enum vlc_player_state, vlc_tick_t state_date)
Definition input.c:222
vlc_object_t * vlc_player_GetObject(vlc_player_t *player)
Definition player.c:2209
void vlc_player_input_SeekByPos(struct vlc_player_input *input, double position, enum vlc_player_seek_speed speed, enum vlc_player_whence whence)
Definition input.c:120
struct vlc_player_title_list * vlc_player_title_list_Create(input_title_t *const *array, size_t count, int title_offset, int chapter_offset)
Definition title.c:99
void vlc_player_osd_Track(vlc_player_t *player, vlc_es_id_t *id, bool select)
Definition osd.c:176
int vlc_player_program_Update(struct vlc_player_program *prgm, int id, const char *name)
Definition track.c:60
void vlc_player_UpdateTimer(vlc_player_t *player, vlc_es_id_t *es_source, bool es_source_is_master, const struct vlc_player_timer_point *point, vlc_tick_t normal_time, unsigned frame_rate, unsigned frame_rate_base, vlc_tick_t start_offset)
Definition timer.c:489
void vlc_player_DestroyTimer(vlc_player_t *player)
Definition timer.c:782
struct vlc_player_track_priv * vlc_player_track_vector_FindById(vlc_player_track_vector *vec, vlc_es_id_t *id, size_t *idx)
Definition track.c:194
audio_output_t * vlc_player_aout_Init(vlc_player_t *player)
Definition aout.c:224
void vlc_player_vout_AddCallbacks(vlc_player_t *player, vout_thread_t *vout)
Definition vout.c:140
bool vlc_player_input_HandleAtoBLoop(struct vlc_player_input *input, bool forced)
Definition input.c:66
struct vlc_player_input * vlc_player_input_New(vlc_player_t *player, input_item_t *item)
Definition input.c:1246
void vlc_player_RemoveTimerSource(vlc_player_t *player, vlc_es_id_t *es_source)
Definition timer.c:564
int vlc_player_GetFirstSelectedTrackId(const vlc_player_track_vector *tracks)
Definition track.c:212
void vlc_player_input_Delete(struct vlc_player_input *input)
Definition input.c:1358
void vlc_player_input_SeekByTime(struct vlc_player_input *input, vlc_tick_t time, enum vlc_player_seek_speed speed, enum vlc_player_whence whence)
Definition input.c:157
void vlc_player_track_priv_Delete(struct vlc_player_track_priv *trackpriv)
Definition track.c:139
void vlc_player_input_UpdateViewpoint(struct vlc_player_input *input, const vlc_viewpoint_t *viewpoint, enum vlc_player_whence whence)
Definition input.c:183
void vlc_player_osd_Program(vlc_player_t *player, const char *name)
Definition osd.c:247
void vlc_player_SignalAtoBLoop(vlc_player_t *player)
Definition player.c:183
void vlc_player_vout_DelCallbacks(vlc_player_t *player, vout_thread_t *vout)
Definition vout.c:150
void vlc_player_aout_Deinit(vlc_player_t *player)
Definition aout.c:236
void vlc_player_osd_Volume(vlc_player_t *player, bool mute_action)
Definition osd.c:156
void vlc_player_UpdateTimerSeekState(vlc_player_t *player, vlc_tick_t time, double position)
Definition timer.c:320
int vlc_player_track_priv_Update(struct vlc_player_track_priv *trackpriv, const char *name, const es_format_t *fmt)
Definition track.c:169
static vlc_player_track_vector * vlc_player_input_GetTrackVector(struct vlc_player_input *input, enum es_format_category_e cat)
Definition player.h:437
void vlc_player_InitTimer(vlc_player_t *player)
Definition timer.c:766
int vlc_player_input_Start(struct vlc_player_input *input)
Definition input.c:99
static const char * es_format_category_to_string(enum es_format_category_e cat)
Definition player.h:360
vlc_player_timer_source_type
Definition player.h:170
@ VLC_PLAYER_TIMER_TYPE_SMPTE
Definition player.h:172
@ VLC_PLAYER_TIMER_TYPE_COUNT
Definition player.h:173
@ VLC_PLAYER_TIMER_TYPE_BEST
Definition player.h:171
Definition vlc_es.h:620
Describes an input and is used to spawn input_thread_t objects.
Definition vlc_input_item.h:98
Definition resource.c:58
Definition vlc_input_item.h:542
Main structure representing an input thread.
Definition input_internal.h:44
Definition vlc_input.h:102
Definition vlc_atomic.h:46
Definition meter.c:33
Condition variable.
Definition vlc_threads.h:270
Opaque structure representing an ES (Elementary Stream) track.
Definition es_out.c:103
Doubly-linked list node.
Definition vlc_list.h:44
Definition vlc_media_library.h:700
Mutex.
Definition vlc_threads.h:143
VLC object common members.
Definition vlc_objects.h:53
Player aout callbacks.
Definition vlc_player.h:2386
Definition player.h:163
struct vlc_list node
Definition player.h:166
void * cbs_data
Definition player.h:165
const struct vlc_player_aout_cbs * cbs
Definition player.h:164
Player callbacks.
Definition vlc_player.h:2843
Definition player.h:58
@ VLC_RESTOREPOINT_NONE
Definition player.h:120
bool set
Definition player.h:110
vlc_tick_t pause_date
Definition player.h:77
unsigned teletext_page
Definition player.h:104
bool has_audio_tracks
Definition player.h:129
struct vlc_player_input::@026337116224062261344125275166274173014234364077 abloop_state[2]
const struct vlc_player_track_priv * teletext_source
Definition player.h:93
vlc_player_t * player
Definition player.h:60
vlc_player_track_vector spu_track_vector
Definition player.h:92
bool started
Definition player.h:61
float signal_quality
Definition player.h:81
vlc_tick_t time
Definition player.h:74
float signal_strength
Definition player.h:82
unsigned repeat
Definition player.h:132
size_t title_selected
Definition player.h:97
vlc_player_program_vector program_vector
Definition player.h:89
size_t chapter_selected
Definition player.h:98
struct input_stats_t stats
Definition player.h:85
vlc_player_track_vector audio_track_vector
Definition player.h:91
bool restore_states
Definition player.h:123
vlc_player_track_vector video_track_vector
Definition player.h:90
vlc_tick_t cat_delays[DATA_ES]
Definition player.h:87
bool live
Definition player.h:71
int capabilities
Definition player.h:69
double position
Definition player.h:73
@ VLC_RESTOREPOINT_POSITION
Definition player.h:119
enum vlc_player_input::@201132331235154352332157326021370237165360043045::@354020162213263150115324057064357245006144361164 restore
enum vlc_player_state state
Definition player.h:66
vlc_tick_t length
Definition player.h:70
struct vlc_player_input::@201132331235154352332157326021370237165360043045 ml
struct vlc_list node
Definition player.h:100
vlc_tick_t normal_time
Definition player.h:75
bool playing
Definition player.h:64
float rate
Definition player.h:68
bool teletext_transparent
Definition player.h:103
@ VLC_RESTOREPOINT_TITLE
Definition player.h:118
bool recording
Definition player.h:79
bool has_video_tracks
Definition player.h:128
float cache
Definition player.h:83
bool teletext_enabled
Definition player.h:102
struct vlc_player_title_list * titles
Definition player.h:95
vlc_ml_playback_states_all states
Definition player.h:115
input_thread_t * thread
Definition player.h:59
bool delay_restore
Definition player.h:124
double pos
Definition player.h:109
enum vlc_player_error error
Definition player.h:67
Definition player.h:136
struct vlc_list node
Definition player.h:139
const struct vlc_player_cbs * cbs
Definition player.h:137
void * cbs_data
Definition player.h:138
Definition player.h:143
vlc_audio_meter_plugin * audio_meter
Definition player.h:150
enum vlc_player_metadata_option option
Definition player.h:147
struct vlc_list node
Definition player.h:152
void * cbs_data
Definition player.h:145
const union vlc_player_metadata_cbs * cbs
Definition player.h:144
Definition player.h:44
Player program structure.
Definition vlc_player.h:1238
Definition player.h:255
vlc_cond_t wait
Definition player.h:304
bool releasing_media
Definition player.h:280
struct vlc_object_t obj
Definition player.h:256
struct vlc_list joinable_inputs
Definition player.h:308
vlc_mutex_t vout_listeners_lock
Definition player.h:260
vlc_mutex_t metadata_listeners_lock
Definition player.h:258
struct vlc_list listeners
Definition player.h:269
input_item_t * next_media
Definition player.h:281
vlc_thread_t thread
Definition player.h:303
bool started
Definition player.h:288
struct vlc_player_t::@166241352203367046157055114161306336044342013332 mainloop
unsigned eos_burst_count
Definition player.h:297
struct vlc_player_timer timer
Definition player.h:311
vlc_cond_t notify
Definition player.h:305
struct vlc_list stopping_inputs
Definition player.h:307
bool play_and_pause
Definition player.h:264
bool deleting
Definition player.h:300
struct vlc_list aout_listeners
Definition player.h:271
struct vlc_list vout_listeners
Definition player.h:272
vlc_mutex_t lock
Definition player.h:257
char * audio_string_ids
Definition player.h:284
bool corked
Definition player.h:267
vlc_mutex_t aout_listeners_lock
Definition player.h:259
input_resource_t * resource
Definition player.h:274
unsigned repeat
Definition player.h:298
struct vlc_list stop_inputs
Definition player.h:306
enum vlc_player_state global_state
Definition player.h:287
bool start_paused
Definition player.h:263
char * video_string_ids
Definition player.h:283
vlc_tick_t last_eos
Definition player.h:296
vlc_renderer_item_t * renderer
Definition player.h:275
char * sub_string_ids
Definition player.h:285
input_item_t * media
Definition player.h:277
vlc_cond_t start_delay_cond
Definition player.h:261
struct vlc_list metadata_listeners
Definition player.h:270
struct vlc_player_input * input
Definition player.h:278
bool pause_on_cork
Definition player.h:266
Player timer callbacks.
Definition vlc_player.h:3471
Definition player.h:177
struct vlc_list node
Definition player.h:188
const struct vlc_player_timer_smpte_cbs * smpte_cbs
Definition player.h:184
vlc_tick_t period
Definition player.h:178
void * data
Definition player.h:186
const struct vlc_player_timer_cbs * cbs
Definition player.h:183
vlc_tick_t last_update_date
Definition player.h:179
Player timer point.
Definition vlc_player.h:3423
Player smpte timer callbacks.
Definition vlc_player.h:3535
Definition player.h:192
vlc_tick_t reported_pause_date
Definition player.h:200
unsigned long last_framenum
Definition player.h:205
unsigned frame_resolution
Definition player.h:208
int df
Definition player.h:210
int frames_per_10mins
Definition player.h:211
struct vlc_player_timer_point point
Definition player.h:195
unsigned frame_rate
Definition player.h:206
unsigned frame_rate_base
Definition player.h:207
struct vlc_list listeners
Definition player.h:193
vlc_es_id_t * es
Definition player.h:194
struct vlc_player_timer_source::@021312222231145162026275040231036333201144116371::@221344364056006331133270264131153336124041012012 smpte
bool seeking
Definition player.h:196
unsigned df_fps
Definition player.h:209
Definition player.h:225
vlc_tick_t pause_date
Definition player.h:243
vlc_tick_t last_ts
Definition player.h:231
vlc_tick_t input_normal_time
Definition player.h:230
double seek_position
Definition player.h:236
bool stopping
Definition player.h:247
enum vlc_player_timer::@302273312221121006063154010152234070122332161176 update_state
bool input_live
Definition player.h:228
@ UPDATE_STATE_PAUSED
Definition player.h:240
@ UPDATE_STATE_RESUMED
Definition player.h:239
@ UPDATE_STATE_RESUMING
Definition player.h:241
double input_position
Definition player.h:233
vlc_tick_t start_offset
Definition player.h:232
vlc_tick_t last_resume_date
Definition player.h:246
struct vlc_player_timer_source sources[VLC_PLAYER_TIMER_TYPE_COUNT]
Definition player.h:249
vlc_tick_t seek_ts
Definition player.h:235
vlc_mutex_t lock
Definition player.h:226
vlc_tick_t input_length
Definition player.h:229
Definition player.h:51
struct vlc_player_title array[]
Definition player.h:54
vlc_atomic_rc_t rc
Definition player.h:52
size_t count
Definition player.h:53
Player title structure.
Definition vlc_player.h:1019
Definition player.h:34
bool selected_by_user
Definition player.h:41
struct vlc_player_track t
Definition player.h:35
vout_thread_t * vout
Definition player.h:36
vlc_tick_t delay
Definition player.h:37
enum vlc_vout_order vout_order
Definition player.h:39
Definition player.h:47
Player track structure.
Definition vlc_player.h:1398
Player vout callbacks.
Definition vlc_player.h:2613
Definition player.h:156
struct vlc_list node
Definition player.h:159
void * cbs_data
Definition player.h:158
const struct vlc_player_vout_cbs * cbs
Definition player.h:157
Definition renderer_discovery.c:36
Thread handle.
Definition vlc_threads.h:108
Viewpoints.
Definition vlc_viewpoint.h:41
Video output thread descriptor.
Definition vlc_vout.h:54
Player metadata callbacks.
Definition vlc_player.h:2296
VLC value structure.
Definition vlc_variables.h:122
Atomic operations do not require locking, but they are not very powerful.
struct audio_output audio_output_t
Definition vlc_common.h:401
es_format_category_e
ES Categories.
Definition vlc_es.h:603
@ SPU_ES
Definition vlc_es.h:607
@ DATA_ES
Definition vlc_es.h:608
@ AUDIO_ES
Definition vlc_es.h:606
@ VIDEO_ES
Definition vlc_es.h:605
This provides convenience helpers for linked lists.
VLC Player API.
int64_t vlc_tick_t
High precision date or time interval.
Definition vlc_tick.h:48
This provides convenience helpers for vectors.
Overlay text and widgets.