VLC 4.0.0-dev
Loading...
Searching...
No Matches
input_internal.h
Go to the documentation of this file.
1/*****************************************************************************
2 * input_internal.h: Internal input structures
3 *****************************************************************************
4 * Copyright (C) 1998-2006 VLC authors and VideoLAN
5 *
6 * Authors: Laurent Aimar <fenrir@via.ecp.fr>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU Lesser General Public License as published by
10 * the Free Software Foundation; either version 2.1 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this program; if not, write to the Free Software Foundation,
20 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21 *****************************************************************************/
22
23#ifndef LIBVLC_INPUT_INTERNAL_H
24#define LIBVLC_INPUT_INTERNAL_H 1
25
26#include <vlc_demux.h>
27#include <vlc_input.h>
28#include "input_interface.h"
29#include "../misc/interrupt.h"
30#include "./source.h"
31
32struct input_stats;
33
34/*****************************************************************************
35 * input defines/constants.
36 *****************************************************************************/
37
38/**
39 * Main structure representing an input thread. This structure is mostly
40 * private. The only public fields are read-only and constant.
41 */
46
47/*****************************************************************************
48 * Input events and variables
49 *****************************************************************************/
50
56
57/**
58 * Input state
59 *
60 * This enum is used by the variable "state"
61 */
71
72/**
73 * Input events
74 *
75 * You can catch input event by adding a callback on the variable "intf-event".
76 * This variable is an integer that will hold a input_event_type_e value.
77 */
79{
80 /* "state" has changed */
82 /* b_dead is true */
84
85 /* "rate" has changed */
87
88 /* "capabilities" has changed */
90
91 /* At least one of "position", "time" "length" has changed */
93
94 /* The output PTS changed */
96
97 /* A title has been added or removed or selected.
98 * It implies that the chapter has changed (no chapter event is sent) */
100 /* A chapter has been added or removed or selected. */
102
103 /* A program ("program") has been added or removed or selected,
104 * or "program-scrambled" has changed.*/
106 /* A ES has been added or removed or selected */
108
109 /* "record" has changed */
111
112 /* input_item_t media has changed */
114 /* input_item_t info has changed */
116 /* input_item_t epg has changed */
118
119 /* Input statistics have been updated */
121 /* At least one of "signal-quality" or "signal-strength" has changed */
123
124 /* "bookmark" has changed */
126
127 /* cache" has changed */
129
130 /* A vout_thread_t object has been created/deleted by *the input* */
132
133 /* (pre-)parsing events */
135
136 /* vbi_page has changed */
138 /* vbi_transparent has changed */
140
141 /* subs_fps has changed */
143
144 /* Thumbnail generation */
146
147 /* Attachments */
149
150 /* The demux is not able to navigate */
153
154#define VLC_INPUT_CAPABILITIES_SEEKABLE (1<<0)
155#define VLC_INPUT_CAPABILITIES_PAUSEABLE (1<<1)
156#define VLC_INPUT_CAPABILITIES_CHANGE_RATE (1<<2)
157#define VLC_INPUT_CAPABILITIES_REWINDABLE (1<<3)
158
160{
162 /* Only valid for PAUSE_S and PLAYING_S states */
164};
165
173
184
186{
187 enum {
191 union
192 {
193 struct
194 {
196 size_t count;
199 };
200};
201
207
222
224 enum {
231 /**
232 * ES track id: only valid from the event callback, unless the id is held
233 * by the user with vlc_es_Hold(). */
235 /**
236 * Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
237 */
238 const char *title;
239 /**
240 * ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
241 */
243 /**
244 * Only valid with VLC_INPUT_ES_SELECTED, true if the track was selected by
245 * the user.
246 */
247 bool forced;
248};
249
254
265
271
273{
275
276 union {
277 /* INPUT_EVENT_STATE */
279 /* INPUT_EVENT_RATE */
280 float rate;
281 /* INPUT_EVENT_CAPABILITIES */
282 int capabilities; /**< cf. VLC_INPUT_CAPABILITIES_* bitwise flags */
283 /* INPUT_EVENT_TIMES */
285 /* INPUT_EVENT_OUTPUT_CLOCK */
287 /* INPUT_EVENT_TITLE */
289 /* INPUT_EVENT_CHAPTER */
291 /* INPUT_EVENT_PROGRAM */
293 /* INPUT_EVENT_ES */
295 /* INPUT_EVENT_RECORD */
296 bool record;
297 /* INPUT_EVENT_STATISTICS */
298 const struct input_stats_t *stats;
299 /* INPUT_EVENT_SIGNAL */
301 /* INPUT_EVENT_CACHE */
302 float cache;
303 /* INPUT_EVENT_VOUT */
305 /* INPUT_EVENT_SUBITEMS */
307 /* INPUT_EVENT_VBI_PAGE */
308 unsigned vbi_page;
309 /* INPUT_EVENT_VBI_TRANSPARENCY */
311 /* INPUT_EVENT_SUBS_FPS */
312 float subs_fps;
313 /* INPUT_EVENT_THUMBNAIL_READY */
315 /* INPUT_EVENT_ATTACHMENTS */
317 /* INPUT_EVENT_NAV_FAILED */
319 };
320};
321
323 const struct vlc_input_event *event,
324 void *userdata);
325
326/**
327 * Create a new input_thread_t.
328 *
329 * You need to call input_Start on it when you are done
330 * adding callback on the variables/events you want to monitor.
331 *
332 * \param p_parent a vlc_object
333 * \param events_cb the events virtual table
334 * \param events_data an opaque given to the events callbacks (\p events_cb)
335 * \param p_item an input item
336 * \param type the type of task the input is created for (thumbnailing, playback, ...)
337 * \param p_resource an optional input ressource
338 * \param p_renderer an optional renderer object to render the input to
339 * \return a pointer to the spawned input thread
340 */
342 input_thread_events_cb events_cb, void *events_data,
345#define input_Create(a,b,c,d,e,f,g) input_Create(VLC_OBJECT(a),b,c,d,e,f,g)
346
348
349void input_Stop( input_thread_t * );
350
352
353void input_SetTime( input_thread_t *, vlc_tick_t i_time, bool b_fast );
354
355void input_SetPosition( input_thread_t *, double f_position, bool b_fast );
356
357/**
358 * Set the delay of an ES identifier
359 */
361 vlc_tick_t delay);
362
363/**
364 * Get the input item for an input thread
365 *
366 * You have to keep a reference to the input or to the input_item_t until
367 * you do not need it anymore.
368 */
370
371/*****************************************************************************
372 * Private input fields
373 *****************************************************************************/
374
375#define INPUT_CONTROL_FIFO_SIZE 100
376
377typedef union
378{
382 struct {
386 struct {
389 } time;
390 struct {
391 bool b_fast_seek;
392 double f_val;
393 } pos;
394 struct
395 {
396 enum es_format_category_e cat;
398 } cat_delay;
399 struct
400 {
401 enum es_format_category_e cat;
402 char *str_ids;
403 } cat_ids;
404 struct
405 {
406 vlc_es_id_t *id;
407 vlc_tick_t delay;
408 } es_delay;
409 struct {
410 vlc_es_id_t *id;
411 unsigned page;
412 } vbi_page;
413 struct {
414 vlc_es_id_t *id;
416 } vbi_transparency;
417 struct {
418 bool enabled;
419 char *dir_path;
420 } record_state;
422
428
429/** Private input fields */
431{
433
436
438
439 /* Current state */
444 float rate;
445
446 /* Playtime configuration and state */
447 vlc_tick_t i_start; /* :start-time,0 by default */
448 vlc_tick_t i_stop; /* :stop-time, 0 if none */
449
450 /* Delays */
453
454 /* Output */
455 bool b_out_pace_control; /* XXX Move it ot es_sout ? */
456 sout_stream_t *p_sout; /* Idem ? */
462
463
466
467 /* Input attachment */
470
471 /* Main input properties */
472
473 /* Input item */
475
476 /* Main source */
478 /* Slave sources (subs, and others) */
479 size_t i_slave;
482
483 /* Resources */
485
486 /* Stats counters */
488
489 /* Buffer of pending actions */
492 size_t i_control;
494
498
500{
501 return container_of(input, input_thread_private_t, input);
502}
503
504/***************************************************************************
505 * Internal control helpers
506 ***************************************************************************/
508{
510
512
514
516
518
522
526
528
529 INPUT_CONTROL_NAV_ACTIVATE, // NOTE: INPUT_CONTROL_NAV_* values must be
530 INPUT_CONTROL_NAV_UP, // contiguous and in the same order as
531 INPUT_CONTROL_NAV_DOWN, // INPUT_NAV_* and DEMUX_NAV_*.
536
538 INPUT_CONTROL_SET_ES_LIST, // select a list of ES atomically
542
543 INPUT_CONTROL_SET_VIEWPOINT, // new absolute viewpoint
544 INPUT_CONTROL_SET_INITIAL_VIEWPOINT, // set initial viewpoint (generally from video)
545 INPUT_CONTROL_UPDATE_VIEWPOINT, // update viewpoint relative to current
546
549
552
554
556
558
561};
562
563/* Internal helpers */
564
566
567/* XXX for string value you have to allocate it before calling
568 * input_ControlPushHelper
569 */
570static inline int input_ControlPushHelper( input_thread_t *p_input, int i_type, vlc_value_t *val )
571{
572 if( val != NULL )
573 {
574 input_control_param_t param = { .val = *val };
575 return input_ControlPush( p_input, i_type, &param );
576 }
577 else
578 {
579 return input_ControlPush( p_input, i_type, NULL );
580 }
581}
582
583static inline int input_ControlPushEsHelper( input_thread_t *p_input, int i_type,
584 vlc_es_id_t *id )
585{
588 return input_ControlPush( p_input, i_type, &(input_control_param_t) {
589 .id = vlc_es_id_Hold( id ),
590 } );
591}
592
593/**
594 * Set the program id
595 *
596 * cf. ES_OUT_SET_GROUP
597 * This function can be called before start or while started.
598 * This function is not thread-safe, the caller should handle the locking.
599 */
600void input_SetProgramId(input_thread_t *input, int group_id);
601
602/**
603 * Set the default delay applied to the given category.
604 *
605 * Set the default delay for the given \p es_format_category_e synchronously
606 * if the input is not running yet, otherwise push a control to signal to the
607 * input which delay should be updated.
608 *
609 * @param input Any input to change the delay for.
610 * @param cat The ES category to apply the delay to.
611 * @param delay The delay to apply to the category, a positive delay shifting
612 * the track to the future.
613 * @return VLC_SUCCESS when the delay has been applied, or signal an error
614 * otherwise.
615 *
616 * @note This function can be called before start or while running.
617 * @note This function is not thread-safe, the caller should handle the locking.
618 */
620 vlc_tick_t delay);
621
622/**
623 * Set the list of string ids to enable for a category
624 *
625 * cf. ES_OUT_SET_ES_CAT_IDS
626 * This function can be called before start or while started.
627 * This function is not thread-safe, the caller should handle the locking.
628 */
630 const char *str_ids);
631
633
634int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments);
635
637
639
640/* Bound pts_delay */
641#define INPUT_PTS_DELAY_MAX VLC_TICK_FROM_SEC(60)
642
643/**********************************************************************
644 * Item metadata
645 **********************************************************************/
646/* input_ExtractAttachmentAndCacheArt:
647 * Be careful: p_item lock will be taken! */
649
650/***************************************************************************
651 * Internal prototypes
652 ***************************************************************************/
653
654/* var.c */
655
657
658/* Subtitles */
659int subtitles_Detect( input_thread_t *, char *, const char *, input_item_slave_t ***, int * );
660int subtitles_Filter( const char *);
661
662/* meta.c */
664 const vlc_meta_t *p_meta );
665
666/* stats.c */
667typedef struct input_rate_t
668{
670 uintmax_t updates;
671 uintmax_t value;
672 struct
673 {
674 uintmax_t value;
678
682 atomic_uintmax_t demux_corrupted;
683 atomic_uintmax_t demux_discontinuity;
684 atomic_uintmax_t decoded_audio;
685 atomic_uintmax_t decoded_video;
686 atomic_uintmax_t played_abuffers;
687 atomic_uintmax_t lost_abuffers;
688 atomic_uintmax_t displayed_pictures;
689 atomic_uintmax_t late_pictures;
690 atomic_uintmax_t lost_pictures;
691};
692
693struct input_stats *input_stats_Create(void);
694void input_stats_Destroy(struct input_stats *);
695void input_rate_Add(input_rate_t *, uintmax_t);
697
698#endif
struct vlc_param ** list
Definition core.c:402
vlc_es_id_t * vlc_es_id_Hold(vlc_es_id_t *id)
Increase the ES track id reference count.
Definition es_out.c:4647
#define VLC_USED
Definition fourcc_gen.c:32
vlc_vout_order
vout or spu_channel order
Definition vlc_vout.h:70
const char name[16]
Definition httpd.c:1298
int i_type
Definition httpd.c:1299
bool input_CanPaceControl(input_thread_t *input)
Definition input.c:3469
input_type
Definition input_internal.h:51
@ INPUT_TYPE_THUMBNAILING
Definition input_internal.h:54
@ INPUT_TYPE_PREPARSING
Definition input_internal.h:53
@ INPUT_TYPE_NONE
Definition input_internal.h:52
void input_ConfigVarInit(input_thread_t *)
Definition var.c:39
void input_rate_Add(input_rate_t *, uintmax_t)
Update a counter element with new values.
Definition stats.c:121
bool input_Stopped(input_thread_t *)
Definition input.c:452
void input_SetPosition(input_thread_t *, double f_position, bool b_fast)
Definition input.c:188
int subtitles_Detect(input_thread_t *, char *, const char *, input_item_slave_t ***, int *)
Detect subtitle files.
Definition subtitles.c:220
void input_stats_Destroy(struct input_stats *)
Definition stats.c:74
void input_SetEsCatIds(input_thread_t *, enum es_format_category_e cat, const char *str_ids)
Set the list of string ids to enable for a category.
Definition input.c:1850
input_event_type_e
Input events.
Definition input_internal.h:79
@ INPUT_EVENT_THUMBNAIL_READY
Definition input_internal.h:145
@ INPUT_EVENT_SUBITEMS
Definition input_internal.h:134
@ INPUT_EVENT_CHAPTER
Definition input_internal.h:101
@ INPUT_EVENT_ITEM_EPG
Definition input_internal.h:117
@ INPUT_EVENT_OUTPUT_CLOCK
Definition input_internal.h:95
@ INPUT_EVENT_SIGNAL
Definition input_internal.h:122
@ INPUT_EVENT_ITEM_META
Definition input_internal.h:113
@ INPUT_EVENT_RATE
Definition input_internal.h:86
@ INPUT_EVENT_TITLE
Definition input_internal.h:99
@ INPUT_EVENT_DEAD
Definition input_internal.h:83
@ INPUT_EVENT_ES
Definition input_internal.h:107
@ INPUT_EVENT_RECORD
Definition input_internal.h:110
@ INPUT_EVENT_ATTACHMENTS
Definition input_internal.h:148
@ INPUT_EVENT_CAPABILITIES
Definition input_internal.h:89
@ INPUT_EVENT_STATISTICS
Definition input_internal.h:120
@ INPUT_EVENT_ITEM_INFO
Definition input_internal.h:115
@ INPUT_EVENT_BOOKMARK
Definition input_internal.h:125
@ INPUT_EVENT_PROGRAM
Definition input_internal.h:105
@ INPUT_EVENT_TIMES
Definition input_internal.h:92
@ INPUT_EVENT_STATE
Definition input_internal.h:81
@ INPUT_EVENT_VOUT
Definition input_internal.h:131
@ INPUT_EVENT_SUBS_FPS
Definition input_internal.h:142
@ INPUT_EVENT_NAV_FAILED
Definition input_internal.h:151
@ INPUT_EVENT_VBI_PAGE
Definition input_internal.h:137
@ INPUT_EVENT_CACHE
Definition input_internal.h:128
@ INPUT_EVENT_VBI_TRANSPARENCY
Definition input_internal.h:139
input_state_e
Input state.
Definition input_internal.h:63
@ PAUSE_S
Definition input_internal.h:67
@ PLAYING_S
Definition input_internal.h:66
@ END_S
Definition input_internal.h:68
@ OPENING_S
Definition input_internal.h:65
@ INIT_S
Definition input_internal.h:64
@ ERROR_S
Definition input_internal.h:69
int subtitles_Filter(const char *)
Definition subtitles.c:145
input_item_t * input_GetItem(input_thread_t *)
Get the input item for an input thread.
Definition input.c:203
static int input_ControlPushEsHelper(input_thread_t *p_input, int i_type, vlc_es_id_t *id)
Definition input_internal.h:583
void input_ExtractAttachmentAndCacheArt(input_thread_t *, const char *name)
Definition meta.c:213
input_attachment_t * input_GetAttachment(input_thread_t *input, const char *name)
Definition input.c:3450
void input_SetEsIdDelay(input_thread_t *input, vlc_es_id_t *es_id, vlc_tick_t delay)
Set the delay of an ES identifier.
#define input_Create(a, b, c, d, e, f, g)
Definition input_internal.h:345
int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments)
Definition input.c:3422
void input_SetProgramId(input_thread_t *input, int group_id)
Set the program id.
Definition input.c:1833
void input_Stop(input_thread_t *)
Request a running input thread to stop and die.
Definition input.c:148
int input_Start(input_thread_t *)
Start a input_thread_t created by input_Create.
Definition input.c:124
static int input_ControlPushHelper(input_thread_t *p_input, int i_type, vlc_value_t *val)
Definition input_internal.h:570
input_control_e
Definition input_internal.h:508
@ INPUT_CONTROL_SET_ES_DELAY
Definition input_internal.h:548
@ INPUT_CONTROL_SET_TITLE_NEXT
Definition input_internal.h:520
@ INPUT_CONTROL_RESTART_ES
Definition input_internal.h:540
@ INPUT_CONTROL_SET_TITLE
Definition input_internal.h:519
@ INPUT_CONTROL_NAV_MENU
Definition input_internal.h:535
@ INPUT_CONTROL_SET_STATE
Definition input_internal.h:509
@ INPUT_CONTROL_NAV_LEFT
Definition input_internal.h:532
@ INPUT_CONTROL_SET_VBI_PAGE
Definition input_internal.h:559
@ INPUT_CONTROL_SET_FRAME_NEXT
Definition input_internal.h:555
@ INPUT_CONTROL_SET_RATE
Definition input_internal.h:511
@ INPUT_CONTROL_SET_ES_LIST
Definition input_internal.h:538
@ INPUT_CONTROL_SET_VBI_TRANSPARENCY
Definition input_internal.h:560
@ INPUT_CONTROL_NAV_DOWN
Definition input_internal.h:531
@ INPUT_CONTROL_SET_BOOKMARK
Definition input_internal.h:527
@ INPUT_CONTROL_SET_TIME
Definition input_internal.h:515
@ INPUT_CONTROL_NAV_ACTIVATE
Definition input_internal.h:529
@ INPUT_CONTROL_SET_RECORD_STATE
Definition input_internal.h:553
@ INPUT_CONTROL_UNSET_ES
Definition input_internal.h:539
@ INPUT_CONTROL_SET_INITIAL_VIEWPOINT
Definition input_internal.h:544
@ INPUT_CONTROL_SET_ES_CAT_IDS
Definition input_internal.h:541
@ INPUT_CONTROL_UPDATE_VIEWPOINT
Definition input_internal.h:545
@ INPUT_CONTROL_SET_SEEKPOINT_NEXT
Definition input_internal.h:524
@ INPUT_CONTROL_NAV_UP
Definition input_internal.h:530
@ INPUT_CONTROL_SET_ES
Definition input_internal.h:537
@ INPUT_CONTROL_SET_VIEWPOINT
Definition input_internal.h:543
@ INPUT_CONTROL_ADD_SLAVE
Definition input_internal.h:550
@ INPUT_CONTROL_NAV_RIGHT
Definition input_internal.h:533
@ INPUT_CONTROL_SET_PROGRAM
Definition input_internal.h:517
@ INPUT_CONTROL_SET_CATEGORY_DELAY
Definition input_internal.h:547
@ INPUT_CONTROL_SET_SUBS_FPS
Definition input_internal.h:551
@ INPUT_CONTROL_NAV_POPUP
Definition input_internal.h:534
@ INPUT_CONTROL_SET_RENDERER
Definition input_internal.h:557
@ INPUT_CONTROL_SET_POSITION
Definition input_internal.h:513
@ INPUT_CONTROL_SET_SEEKPOINT
Definition input_internal.h:523
@ INPUT_CONTROL_SET_SEEKPOINT_PREV
Definition input_internal.h:525
@ INPUT_CONTROL_SET_TITLE_PREV
Definition input_internal.h:521
int input_ControlPush(input_thread_t *, int, const input_control_param_t *)
Definition input.c:1521
struct input_stats * input_stats_Create(void)
Definition stats.c:54
void(* input_thread_events_cb)(input_thread_t *input, const struct vlc_input_event *event, void *userdata)
Definition input_internal.h:322
#define INPUT_CONTROL_FIFO_SIZE
Definition input_internal.h:375
void vlc_audio_replay_gain_MergeFromMeta(audio_replay_gain_t *p_dst, const vlc_meta_t *p_meta)
Definition meta.c:283
void input_Close(input_thread_t *)
Close an input.
Definition input.c:171
void input_stats_Compute(struct input_stats *, input_stats_t *)
Definition stats.c:79
void input_SetTime(input_thread_t *, vlc_tick_t i_time, bool b_fast)
Definition input.c:179
int input_SetEsCatDelay(input_thread_t *input, enum es_format_category_e cat, vlc_tick_t delay)
Set the default delay applied to the given category.
Definition input.c:1840
static input_thread_private_t * input_priv(input_thread_t *input)
Definition input_internal.h:499
Definition vlc_es.h:57
Definition vlc_es.h:633
Definition vlc_es_out.h:142
Definition vlc_input.h:169
Definition input_internal.h:424
int i_type
Definition input_internal.h:425
input_control_param_t param
Definition input_internal.h:426
Definition vlc_input_item.h:210
Definition vlc_input_item.h:202
Describes an input and is used to spawn input_thread_t objects.
Definition vlc_input_item.h:98
Definition input_internal.h:668
vlc_mutex_t lock
Definition input_internal.h:669
uintmax_t value
Definition input_internal.h:671
uintmax_t updates
Definition input_internal.h:670
vlc_tick_t date
Definition input_internal.h:675
struct input_rate_t::@53 samples[2]
Definition resource.c:58
Definition source.h:34
Definition vlc_input_item.h:551
Definition input_internal.h:679
atomic_uintmax_t lost_abuffers
Definition input_internal.h:687
atomic_uintmax_t demux_corrupted
Definition input_internal.h:682
atomic_uintmax_t lost_pictures
Definition input_internal.h:690
atomic_uintmax_t late_pictures
Definition input_internal.h:689
atomic_uintmax_t played_abuffers
Definition input_internal.h:686
atomic_uintmax_t displayed_pictures
Definition input_internal.h:688
atomic_uintmax_t decoded_video
Definition input_internal.h:685
input_rate_t input_bitrate
Definition input_internal.h:680
atomic_uintmax_t demux_discontinuity
Definition input_internal.h:683
input_rate_t demux_bitrate
Definition input_internal.h:681
atomic_uintmax_t decoded_audio
Definition input_internal.h:684
Private input fields.
Definition input_internal.h:431
int i_seekpoint_offset
Definition input_internal.h:465
sout_stream_t * p_sout
Definition input_internal.h:456
bool viewpoint_changed
Definition input_internal.h:460
es_out_t * p_es_out
Definition input_internal.h:457
int i_state
Definition input_internal.h:440
es_out_t * p_es_out_display
Definition input_internal.h:458
input_source_t ** slave
Definition input_internal.h:480
struct input_stats * stats
Definition input_internal.h:487
size_t i_control
Definition input_internal.h:492
float rate
Definition input_internal.h:444
input_attachment_t ** attachment
Definition input_internal.h:469
int i_attachment
Definition input_internal.h:468
bool b_out_pace_control
Definition input_internal.h:455
enum input_type type
Definition input_internal.h:437
vlc_tick_t i_start
Definition input_internal.h:447
vlc_renderer_item_t * p_renderer
Definition input_internal.h:461
vlc_tick_t i_stop
Definition input_internal.h:448
input_control_t control[100]
Definition input_internal.h:493
input_thread_events_cb events_cb
Definition input_internal.h:434
void * events_data
Definition input_internal.h:435
vlc_interrupt_t interrupt
Definition input_internal.h:496
float slave_subs_rate
Definition input_internal.h:481
input_item_t * p_item
Definition input_internal.h:474
size_t i_slave
Definition input_internal.h:479
bool is_running
Definition input_internal.h:441
bool b_low_delay
Definition input_internal.h:451
bool b_recording
Definition input_internal.h:443
int i_title_offset
Definition input_internal.h:464
vlc_cond_t wait_control
Definition input_internal.h:491
vlc_mutex_t lock_control
Definition input_internal.h:490
vlc_tick_t i_jitter_max
Definition input_internal.h:452
vlc_viewpoint_t viewpoint
Definition input_internal.h:459
input_resource_t * p_resource
Definition input_internal.h:484
input_source_t * master
Definition input_internal.h:477
bool is_stopped
Definition input_internal.h:442
struct input_thread_t input
Definition input_internal.h:432
vlc_thread_t thread
Definition input_internal.h:495
Main structure representing an input thread.
Definition input_internal.h:43
struct vlc_object_t obj
Definition input_internal.h:44
Definition vlc_input.h:103
Video picture.
Definition vlc_picture.h:130
Definition vlc_sout.h:274
Condition variable.
Definition vlc_threads.h:270
Opaque structure representing an ES (Elementary Stream) track.
Definition es_out.c:104
Definition input_internal.h:267
size_t count
Definition input_internal.h:269
input_attachment_t *const * array
Definition input_internal.h:268
Definition input_internal.h:203
int seekpoint
Definition input_internal.h:205
int title
Definition input_internal.h:204
Definition input_internal.h:223
enum vlc_input_event_es::@40 action
@ VLC_INPUT_ES_SELECTED
Definition input_internal.h:228
@ VLC_INPUT_ES_UPDATED
Definition input_internal.h:227
@ VLC_INPUT_ES_DELETED
Definition input_internal.h:226
@ VLC_INPUT_ES_ADDED
Definition input_internal.h:225
@ VLC_INPUT_ES_UNSELECTED
Definition input_internal.h:229
bool forced
Only valid with VLC_INPUT_ES_SELECTED, true if the track was selected by the user.
Definition input_internal.h:247
const char * title
Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition input_internal.h:238
const es_format_t * fmt
ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition input_internal.h:242
vlc_es_id_t * id
ES track id: only valid from the event callback, unless the id is held by the user with vlc_es_Hold()...
Definition input_internal.h:234
Definition input_internal.h:175
vlc_es_id_t * id
Definition input_internal.h:176
vlc_tick_t system_ts
Definition input_internal.h:178
unsigned frame_rate
Definition input_internal.h:181
double rate
Definition input_internal.h:180
vlc_tick_t ts
Definition input_internal.h:179
unsigned frame_rate_base
Definition input_internal.h:182
bool master
Definition input_internal.h:177
Definition input_internal.h:208
bool scrambled
Definition input_internal.h:219
const char * title
Definition input_internal.h:218
enum vlc_input_event_program::@37 action
@ VLC_INPUT_PROGRAM_UPDATED
Definition input_internal.h:212
@ VLC_INPUT_PROGRAM_SCRAMBLED
Definition input_internal.h:214
@ VLC_INPUT_PROGRAM_SELECTED
Definition input_internal.h:213
@ VLC_INPUT_PROGRAM_DELETED
Definition input_internal.h:211
@ VLC_INPUT_PROGRAM_ADDED
Definition input_internal.h:210
int id
Definition input_internal.h:216
Definition input_internal.h:250
float quality
Definition input_internal.h:251
float strength
Definition input_internal.h:252
Definition input_internal.h:160
vlc_tick_t date
Definition input_internal.h:163
input_state_e value
Definition input_internal.h:161
Definition input_internal.h:167
vlc_tick_t time
Definition input_internal.h:169
double position
Definition input_internal.h:168
vlc_tick_t normal_time
Definition input_internal.h:170
vlc_tick_t length
Definition input_internal.h:171
Definition input_internal.h:186
enum vlc_input_event_title::@33 action
struct vlc_input_event_title::@34::@36 list
size_t selected_idx
Definition input_internal.h:198
size_t count
Definition input_internal.h:196
@ VLC_INPUT_TITLE_NEW_LIST
Definition input_internal.h:188
@ VLC_INPUT_TITLE_SELECTED
Definition input_internal.h:189
input_title_t *const * array
Definition input_internal.h:195
Definition input_internal.h:256
vlc_es_id_t * id
Definition input_internal.h:263
enum vlc_vout_order order
Definition input_internal.h:262
enum vlc_input_event_vout::@41 action
@ VLC_INPUT_EVENT_VOUT_STOPPED
Definition input_internal.h:259
@ VLC_INPUT_EVENT_VOUT_STARTED
Definition input_internal.h:258
vout_thread_t * vout
Definition input_internal.h:261
Definition input_internal.h:273
struct vlc_input_event_state state
Definition input_internal.h:278
unsigned vbi_page
Definition input_internal.h:308
float cache
Definition input_internal.h:302
struct vlc_input_event_program program
Definition input_internal.h:292
int nav_type
Definition input_internal.h:318
struct vlc_input_event_signal signal
Definition input_internal.h:300
const struct input_stats_t * stats
Definition input_internal.h:298
struct vlc_input_event_chapter chapter
Definition input_internal.h:290
struct vlc_input_event_output_clock output_clock
Definition input_internal.h:286
struct vlc_input_event_title title
Definition input_internal.h:288
bool record
Definition input_internal.h:296
float rate
Definition input_internal.h:280
struct vlc_input_event_vout vout
Definition input_internal.h:304
struct vlc_input_event_es es
Definition input_internal.h:294
float subs_fps
Definition input_internal.h:312
struct vlc_input_event_times times
Definition input_internal.h:284
input_item_node_t * subitems
Definition input_internal.h:306
int capabilities
cf.
Definition input_internal.h:282
input_event_type_e type
Definition input_internal.h:274
picture_t * thumbnail
Definition input_internal.h:314
bool vbi_transparent
Definition input_internal.h:310
struct vlc_input_event_attachments attachments
Definition input_internal.h:316
Definition interrupt.h:33
Definition meta.c:40
Mutex.
Definition vlc_threads.h:143
VLC object common members.
Definition vlc_objects.h:53
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
Definition input_internal.h:378
char * dir_path
Definition input_internal.h:419
double f_val
Definition input_internal.h:392
unsigned page
Definition input_internal.h:411
char * str_ids
Definition input_internal.h:402
vlc_es_id_t * id
Definition input_internal.h:381
vlc_es_id_t ** ids
Definition input_internal.h:384
bool b_fast_seek
Definition input_internal.h:387
vlc_tick_t i_val
Definition input_internal.h:388
bool enabled
Definition input_internal.h:415
enum es_format_category_e cat
Definition input_internal.h:383
vlc_tick_t delay
Definition input_internal.h:397
vlc_viewpoint_t viewpoint
Definition input_internal.h:380
vlc_value_t val
Definition input_internal.h:379
VLC value structure.
Definition vlc_variables.h:122
#define container_of(ptr, type, member)
Definition vlc_common.h:1067
Demultiplexer modules interface.
es_format_category_e
ES Categories.
Definition vlc_es.h:616
Input thread interface.
int64_t vlc_tick_t
High precision date or time interval.
Definition vlc_tick.h:48