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
31struct input_stats;
32
33/*****************************************************************************
34 * input defines/constants.
35 *****************************************************************************/
36
37/**
38 * Main structure representing an input thread. This structure is mostly
39 * private. The only public fields are read-only and constant.
40 */
45
46/*****************************************************************************
47 * Input events and variables
48 *****************************************************************************/
49
55
56/**
57 * Input state
58 *
59 * This enum is used by the variable "state"
60 */
70
71/**
72 * Input events
73 *
74 * You can catch input event by adding a callback on the variable "intf-event".
75 * This variable is an integer that will hold a input_event_type_e value.
76 */
78{
79 /* "state" has changed */
81 /* b_dead is true */
83
84 /* "rate" has changed */
86
87 /* "capabilities" has changed */
89
90 /* At least one of "position", "time" "length" has changed */
92
93 /* The output PTS changed */
95
96 /* A title has been added or removed or selected.
97 * It implies that the chapter has changed (no chapter event is sent) */
99 /* A chapter has been added or removed or selected. */
101
102 /* A program ("program") has been added or removed or selected,
103 * or "program-scrambled" has changed.*/
105 /* A ES has been added or removed or selected */
107
108 /* "record" has changed */
110
111 /* input_item_t media has changed */
113 /* input_item_t info has changed */
115 /* input_item_t epg has changed */
117
118 /* Input statistics have been updated */
120 /* At least one of "signal-quality" or "signal-strength" has changed */
122
123 /* "bookmark" has changed */
125
126 /* cache" has changed */
128
129 /* A vout_thread_t object has been created/deleted by *the input* */
131
132 /* (pre-)parsing events */
134
135 /* vbi_page has changed */
137 /* vbi_transparent has changed */
139
140 /* subs_fps has changed */
142
143 /* Thumbnail generation */
145
146 /* Attachments */
148
149 /* The demux is not able to navigate */
152
153#define VLC_INPUT_CAPABILITIES_SEEKABLE (1<<0)
154#define VLC_INPUT_CAPABILITIES_PAUSEABLE (1<<1)
155#define VLC_INPUT_CAPABILITIES_CHANGE_RATE (1<<2)
156#define VLC_INPUT_CAPABILITIES_REWINDABLE (1<<3)
157
159{
161 /* Only valid for PAUSE_S and PLAYING_S states */
163};
164
172
183
185{
186 enum {
190 union
191 {
192 struct
193 {
195 size_t count;
198 };
199};
200
206
221
223 enum {
230 /**
231 * ES track id: only valid from the event callback, unless the id is held
232 * by the user with vlc_es_Hold(). */
234 /**
235 * Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
236 */
237 const char *title;
238 /**
239 * ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
240 */
242 /**
243 * Only valid with VLC_INPUT_ES_SELECTED, true if the track was selected by
244 * the user.
245 */
246 bool forced;
247};
248
253
264
270
272{
274
275 union {
276 /* INPUT_EVENT_STATE */
278 /* INPUT_EVENT_RATE */
279 float rate;
280 /* INPUT_EVENT_CAPABILITIES */
281 int capabilities; /**< cf. VLC_INPUT_CAPABILITIES_* bitwise flags */
282 /* INPUT_EVENT_TIMES */
284 /* INPUT_EVENT_OUTPUT_CLOCK */
286 /* INPUT_EVENT_TITLE */
288 /* INPUT_EVENT_CHAPTER */
290 /* INPUT_EVENT_PROGRAM */
292 /* INPUT_EVENT_ES */
294 /* INPUT_EVENT_RECORD */
295 bool record;
296 /* INPUT_EVENT_STATISTICS */
297 const struct input_stats_t *stats;
298 /* INPUT_EVENT_SIGNAL */
300 /* INPUT_EVENT_CACHE */
301 float cache;
302 /* INPUT_EVENT_VOUT */
304 /* INPUT_EVENT_SUBITEMS */
306 /* INPUT_EVENT_VBI_PAGE */
307 unsigned vbi_page;
308 /* INPUT_EVENT_VBI_TRANSPARENCY */
310 /* INPUT_EVENT_SUBS_FPS */
311 float subs_fps;
312 /* INPUT_EVENT_THUMBNAIL_READY */
314 /* INPUT_EVENT_ATTACHMENTS */
316 /* INPUT_EVENT_NAV_FAILED */
318 };
319};
320
322 const struct vlc_input_event *event,
323 void *userdata);
324
325/**
326 * Create a new input_thread_t.
327 *
328 * You need to call input_Start on it when you are done
329 * adding callback on the variables/events you want to monitor.
330 *
331 * \param p_parent a vlc_object
332 * \param events_cb the events virtual table
333 * \param events_data an opaque given to the events callbacks (\p events_cb)
334 * \param p_item an input item
335 * \param type the type of task the input is created for (thumbnailing, playback, ...)
336 * \param p_resource an optional input ressource
337 * \param p_renderer an optional renderer object to render the input to
338 * \return a pointer to the spawned input thread
339 */
341 input_thread_events_cb events_cb, void *events_data,
344#define input_Create(a,b,c,d,e,f,g) input_Create(VLC_OBJECT(a),b,c,d,e,f,g)
345
347
348void input_Stop( input_thread_t * );
349
351
352void input_SetTime( input_thread_t *, vlc_tick_t i_time, bool b_fast );
353
354void input_SetPosition( input_thread_t *, double f_position, bool b_fast );
355
356/**
357 * Set the delay of an ES identifier
358 */
360 vlc_tick_t delay);
361
362/**
363 * Get the input item for an input thread
364 *
365 * You have to keep a reference to the input or to the input_item_t until
366 * you do not need it anymore.
367 */
369
370/*****************************************************************************
371 * Private input fields
372 *****************************************************************************/
373
374#define INPUT_CONTROL_FIFO_SIZE 100
375
376/* input_source_t: gathers all information per input source */
378{
380
381 demux_t *p_demux; /**< Demux object (most downstream) */
382 es_out_t *p_slave_es_out; /**< Slave es out */
383
384 char *str_id;
387
388 /* Title infos for that input */
389 bool b_title_demux; /* Titles/Seekpoints provided by demux */
392
395
400
401 /* Properties */
407 double f_fps;
408
409 /* sub-fps handling */
411 float sub_rate;
412
413 /* */
415
416 /* Read-write protected by es_out.c lock */
418
419 bool b_eof; /* eof of demuxer */
420
421};
422
423typedef union
424{
428 struct {
432 struct {
435 } time;
436 struct {
437 bool b_fast_seek;
438 double f_val;
439 } pos;
440 struct
441 {
442 enum es_format_category_e cat;
444 } cat_delay;
445 struct
446 {
447 enum es_format_category_e cat;
448 char *str_ids;
449 } cat_ids;
450 struct
451 {
452 vlc_es_id_t *id;
453 vlc_tick_t delay;
454 } es_delay;
455 struct {
456 vlc_es_id_t *id;
457 unsigned page;
458 } vbi_page;
459 struct {
460 vlc_es_id_t *id;
462 } vbi_transparency;
463 struct {
464 bool enabled;
465 char *dir_path;
466 } record_state;
468
474
475/** Private input fields */
477{
479
482
484
485 /* Current state */
490 float rate;
491
492 /* Playtime configuration and state */
493 vlc_tick_t i_start; /* :start-time,0 by default */
494 vlc_tick_t i_stop; /* :stop-time, 0 if none */
495
496 /* Delays */
499
500 /* Output */
501 bool b_out_pace_control; /* XXX Move it ot es_sout ? */
502 sout_stream_t *p_sout; /* Idem ? */
508
509
512
513 /* Input attachment */
516
517 /* Main input properties */
518
519 /* Input item */
521
522 /* Main source */
524 /* Slave sources (subs, and others) */
528
529 /* Resources */
531
532 /* Stats counters */
534
535 /* Buffer of pending actions */
538 size_t i_control;
540
544
546{
547 return container_of(input, input_thread_private_t, input);
548}
549
550/***************************************************************************
551 * Internal control helpers
552 ***************************************************************************/
554{
556
558
560
562
564
568
572
574
575 INPUT_CONTROL_NAV_ACTIVATE, // NOTE: INPUT_CONTROL_NAV_* values must be
576 INPUT_CONTROL_NAV_UP, // contiguous and in the same order as
577 INPUT_CONTROL_NAV_DOWN, // INPUT_NAV_* and DEMUX_NAV_*.
582
584 INPUT_CONTROL_SET_ES_LIST, // select a list of ES atomically
588
589 INPUT_CONTROL_SET_VIEWPOINT, // new absolute viewpoint
590 INPUT_CONTROL_SET_INITIAL_VIEWPOINT, // set initial viewpoint (generally from video)
591 INPUT_CONTROL_UPDATE_VIEWPOINT, // update viewpoint relative to current
592
595
598
600
602
604
607};
608
609/* Internal helpers */
610
612
613/* XXX for string value you have to allocate it before calling
614 * input_ControlPushHelper
615 */
616static inline int input_ControlPushHelper( input_thread_t *p_input, int i_type, vlc_value_t *val )
617{
618 if( val != NULL )
619 {
620 input_control_param_t param = { .val = *val };
621 return input_ControlPush( p_input, i_type, &param );
622 }
623 else
624 {
625 return input_ControlPush( p_input, i_type, NULL );
626 }
627}
628
629static inline int input_ControlPushEsHelper( input_thread_t *p_input, int i_type,
630 vlc_es_id_t *id )
631{
634 return input_ControlPush( p_input, i_type, &(input_control_param_t) {
635 .id = vlc_es_id_Hold( id ),
636 } );
637}
638
639/**
640 * Set the program id
641 *
642 * cf. ES_OUT_SET_GROUP
643 * This function can be called before start or while started.
644 * This function is not thread-safe, the caller should handle the locking.
645 */
646void input_SetProgramId(input_thread_t *input, int group_id);
647
648/**
649 * Set the default delay applied to the given category.
650 *
651 * Set the default delay for the given \p es_format_category_e synchronously
652 * if the input is not running yet, otherwise push a control to signal to the
653 * input which delay should be updated.
654 *
655 * @param input Any input to change the delay for.
656 * @param cat The ES category to apply the delay to.
657 * @param delay The delay to apply to the category, a positive delay shifting
658 * the track to the future.
659 * @return VLC_SUCCESS when the delay has been applied, or signal an error
660 * otherwise.
661 *
662 * @note This function can be called before start or while running.
663 * @note This function is not thread-safe, the caller should handle the locking.
664 */
666 vlc_tick_t delay);
667
668/**
669 * Set the list of string ids to enable for a category
670 *
671 * cf. ES_OUT_SET_ES_CAT_IDS
672 * This function can be called before start or while started.
673 * This function is not thread-safe, the caller should handle the locking.
674 */
676 const char *str_ids);
677
679
680int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments);
681
683
685
686/**
687 * Hold the input_source_t
688 */
690
691/**
692 * Release the input_source_t
693 */
695
696/**
697 * Returns the string identifying this input source
698 *
699 * @return a string id or NULL if the source is the master
700 */
701const char *input_source_GetStrId( input_source_t *in );
702
703/**
704 * Get a new fmt.i_id from the input source
705 *
706 * This auto id will be relative to this input source. It allows to have stable
707 * ids across different playback instances, by not relying on the input source
708 * addition order.
709 */
711
712/**
713 * Returns true if a given source should be auto-selected
714 */
716
717/* Bound pts_delay */
718#define INPUT_PTS_DELAY_MAX VLC_TICK_FROM_SEC(60)
719
720/**********************************************************************
721 * Item metadata
722 **********************************************************************/
723/* input_ExtractAttachmentAndCacheArt:
724 * Be careful: p_item lock will be taken! */
726
727/***************************************************************************
728 * Internal prototypes
729 ***************************************************************************/
730
731/* var.c */
732
734
735/* Subtitles */
736int subtitles_Detect( input_thread_t *, char *, const char *, input_item_slave_t ***, int * );
737int subtitles_Filter( const char *);
738
739/* meta.c */
741 const vlc_meta_t *p_meta );
742
743/* stats.c */
744typedef struct input_rate_t
745{
747 uintmax_t updates;
748 uintmax_t value;
749 struct
750 {
751 uintmax_t value;
755
759 atomic_uintmax_t demux_corrupted;
760 atomic_uintmax_t demux_discontinuity;
761 atomic_uintmax_t decoded_audio;
762 atomic_uintmax_t decoded_video;
763 atomic_uintmax_t played_abuffers;
764 atomic_uintmax_t lost_abuffers;
765 atomic_uintmax_t displayed_pictures;
766 atomic_uintmax_t late_pictures;
767 atomic_uintmax_t lost_pictures;
768};
769
770struct input_stats *input_stats_Create(void);
771void input_stats_Destroy(struct input_stats *);
772void input_rate_Add(input_rate_t *, uintmax_t);
774
775#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:4581
#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:3501
input_type
Definition input_internal.h:50
@ INPUT_TYPE_THUMBNAILING
Definition input_internal.h:53
@ INPUT_TYPE_PREPARSING
Definition input_internal.h:52
@ INPUT_TYPE_NONE
Definition input_internal.h:51
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
int input_source_GetNewAutoId(input_source_t *in)
Get a new fmt.i_id from the input source.
Definition input.c:2813
void input_stats_Destroy(struct input_stats *)
Definition stats.c:74
input_source_t * input_source_Hold(input_source_t *in)
Hold the input_source_t.
Definition input.c:2793
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:78
@ INPUT_EVENT_THUMBNAIL_READY
Definition input_internal.h:144
@ INPUT_EVENT_SUBITEMS
Definition input_internal.h:133
@ INPUT_EVENT_CHAPTER
Definition input_internal.h:100
@ INPUT_EVENT_ITEM_EPG
Definition input_internal.h:116
@ INPUT_EVENT_OUTPUT_CLOCK
Definition input_internal.h:94
@ INPUT_EVENT_SIGNAL
Definition input_internal.h:121
@ INPUT_EVENT_ITEM_META
Definition input_internal.h:112
@ INPUT_EVENT_RATE
Definition input_internal.h:85
@ INPUT_EVENT_TITLE
Definition input_internal.h:98
@ INPUT_EVENT_DEAD
Definition input_internal.h:82
@ INPUT_EVENT_ES
Definition input_internal.h:106
@ INPUT_EVENT_RECORD
Definition input_internal.h:109
@ INPUT_EVENT_ATTACHMENTS
Definition input_internal.h:147
@ INPUT_EVENT_CAPABILITIES
Definition input_internal.h:88
@ INPUT_EVENT_STATISTICS
Definition input_internal.h:119
@ INPUT_EVENT_ITEM_INFO
Definition input_internal.h:114
@ INPUT_EVENT_BOOKMARK
Definition input_internal.h:124
@ INPUT_EVENT_PROGRAM
Definition input_internal.h:104
@ INPUT_EVENT_TIMES
Definition input_internal.h:91
@ INPUT_EVENT_STATE
Definition input_internal.h:80
@ INPUT_EVENT_VOUT
Definition input_internal.h:130
@ INPUT_EVENT_SUBS_FPS
Definition input_internal.h:141
@ INPUT_EVENT_NAV_FAILED
Definition input_internal.h:150
@ INPUT_EVENT_VBI_PAGE
Definition input_internal.h:136
@ INPUT_EVENT_CACHE
Definition input_internal.h:127
@ INPUT_EVENT_VBI_TRANSPARENCY
Definition input_internal.h:138
input_state_e
Input state.
Definition input_internal.h:62
@ PAUSE_S
Definition input_internal.h:66
@ PLAYING_S
Definition input_internal.h:65
@ END_S
Definition input_internal.h:67
@ OPENING_S
Definition input_internal.h:64
@ INIT_S
Definition input_internal.h:63
@ ERROR_S
Definition input_internal.h:68
bool input_source_IsAutoSelected(input_source_t *in)
Returns true if a given source should be auto-selected.
Definition input.c:2818
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:629
void input_source_Release(input_source_t *in)
Release the input_source_t.
Definition input.c:2799
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:3482
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:344
int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments)
Definition input.c:3454
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:616
input_control_e
Definition input_internal.h:554
@ INPUT_CONTROL_SET_ES_DELAY
Definition input_internal.h:594
@ INPUT_CONTROL_SET_TITLE_NEXT
Definition input_internal.h:566
@ INPUT_CONTROL_RESTART_ES
Definition input_internal.h:586
@ INPUT_CONTROL_SET_TITLE
Definition input_internal.h:565
@ INPUT_CONTROL_NAV_MENU
Definition input_internal.h:581
@ INPUT_CONTROL_SET_STATE
Definition input_internal.h:555
@ INPUT_CONTROL_NAV_LEFT
Definition input_internal.h:578
@ INPUT_CONTROL_SET_VBI_PAGE
Definition input_internal.h:605
@ INPUT_CONTROL_SET_FRAME_NEXT
Definition input_internal.h:601
@ INPUT_CONTROL_SET_RATE
Definition input_internal.h:557
@ INPUT_CONTROL_SET_ES_LIST
Definition input_internal.h:584
@ INPUT_CONTROL_SET_VBI_TRANSPARENCY
Definition input_internal.h:606
@ INPUT_CONTROL_NAV_DOWN
Definition input_internal.h:577
@ INPUT_CONTROL_SET_BOOKMARK
Definition input_internal.h:573
@ INPUT_CONTROL_SET_TIME
Definition input_internal.h:561
@ INPUT_CONTROL_NAV_ACTIVATE
Definition input_internal.h:575
@ INPUT_CONTROL_SET_RECORD_STATE
Definition input_internal.h:599
@ INPUT_CONTROL_UNSET_ES
Definition input_internal.h:585
@ INPUT_CONTROL_SET_INITIAL_VIEWPOINT
Definition input_internal.h:590
@ INPUT_CONTROL_SET_ES_CAT_IDS
Definition input_internal.h:587
@ INPUT_CONTROL_UPDATE_VIEWPOINT
Definition input_internal.h:591
@ INPUT_CONTROL_SET_SEEKPOINT_NEXT
Definition input_internal.h:570
@ INPUT_CONTROL_NAV_UP
Definition input_internal.h:576
@ INPUT_CONTROL_SET_ES
Definition input_internal.h:583
@ INPUT_CONTROL_SET_VIEWPOINT
Definition input_internal.h:589
@ INPUT_CONTROL_ADD_SLAVE
Definition input_internal.h:596
@ INPUT_CONTROL_NAV_RIGHT
Definition input_internal.h:579
@ INPUT_CONTROL_SET_PROGRAM
Definition input_internal.h:563
@ INPUT_CONTROL_SET_CATEGORY_DELAY
Definition input_internal.h:593
@ INPUT_CONTROL_SET_SUBS_FPS
Definition input_internal.h:597
@ INPUT_CONTROL_NAV_POPUP
Definition input_internal.h:580
@ INPUT_CONTROL_SET_RENDERER
Definition input_internal.h:603
@ INPUT_CONTROL_SET_POSITION
Definition input_internal.h:559
@ INPUT_CONTROL_SET_SEEKPOINT
Definition input_internal.h:569
@ INPUT_CONTROL_SET_SEEKPOINT_PREV
Definition input_internal.h:571
@ INPUT_CONTROL_SET_TITLE_PREV
Definition input_internal.h:567
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:321
#define INPUT_CONTROL_FIFO_SIZE
Definition input_internal.h:374
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
const char * input_source_GetStrId(input_source_t *in)
Returns the string identifying this input source.
Definition input.c:2808
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:545
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:470
int i_type
Definition input_internal.h:471
input_control_param_t param
Definition input_internal.h:472
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:745
struct input_rate_t::@51 samples[2]
vlc_mutex_t lock
Definition input_internal.h:746
uintmax_t value
Definition input_internal.h:748
uintmax_t updates
Definition input_internal.h:747
vlc_tick_t date
Definition input_internal.h:752
Definition resource.c:58
Definition input_internal.h:378
bool b_can_pace_control
Definition input_internal.h:403
bool b_title_demux
Definition input_internal.h:389
bool b_can_pause
Definition input_internal.h:402
int i_title
Definition input_internal.h:390
bool b_can_rate_control
Definition input_internal.h:404
input_title_t ** title
Definition input_internal.h:391
int i_seekpoint_start
Definition input_internal.h:398
char * str_id
Definition input_internal.h:384
int i_seekpoint_end
Definition input_internal.h:399
bool b_slave_sub
Definition input_internal.h:410
demux_t * p_demux
Demux object (most downstream)
Definition input_internal.h:381
vlc_atomic_rc_t rc
Definition input_internal.h:379
int i_title_end
Definition input_internal.h:397
int i_title_start
Definition input_internal.h:396
double f_fps
Definition input_internal.h:407
es_out_t * p_slave_es_out
Slave es out.
Definition input_internal.h:382
int i_seekpoint_offset
Definition input_internal.h:394
bool b_rescale_ts
Definition input_internal.h:406
float sub_rate
Definition input_internal.h:411
int auto_id
Definition input_internal.h:385
vlc_tick_t i_normal_time
Definition input_internal.h:417
bool autoselected
Definition input_internal.h:386
bool b_can_stream_record
Definition input_internal.h:405
vlc_tick_t i_pts_delay
Definition input_internal.h:414
int i_title_offset
Definition input_internal.h:393
bool b_eof
Definition input_internal.h:419
Definition vlc_input_item.h:551
Definition input_internal.h:756
atomic_uintmax_t lost_abuffers
Definition input_internal.h:764
atomic_uintmax_t demux_corrupted
Definition input_internal.h:759
atomic_uintmax_t lost_pictures
Definition input_internal.h:767
atomic_uintmax_t late_pictures
Definition input_internal.h:766
atomic_uintmax_t played_abuffers
Definition input_internal.h:763
atomic_uintmax_t displayed_pictures
Definition input_internal.h:765
atomic_uintmax_t decoded_video
Definition input_internal.h:762
input_rate_t input_bitrate
Definition input_internal.h:757
atomic_uintmax_t demux_discontinuity
Definition input_internal.h:760
input_rate_t demux_bitrate
Definition input_internal.h:758
atomic_uintmax_t decoded_audio
Definition input_internal.h:761
Private input fields.
Definition input_internal.h:477
int i_seekpoint_offset
Definition input_internal.h:511
sout_stream_t * p_sout
Definition input_internal.h:502
bool viewpoint_changed
Definition input_internal.h:506
es_out_t * p_es_out
Definition input_internal.h:503
int i_state
Definition input_internal.h:486
es_out_t * p_es_out_display
Definition input_internal.h:504
input_source_t ** slave
Definition input_internal.h:526
struct input_stats * stats
Definition input_internal.h:533
size_t i_control
Definition input_internal.h:538
float rate
Definition input_internal.h:490
input_attachment_t ** attachment
Definition input_internal.h:515
int i_attachment
Definition input_internal.h:514
bool b_out_pace_control
Definition input_internal.h:501
int i_slave
Definition input_internal.h:525
enum input_type type
Definition input_internal.h:483
vlc_tick_t i_start
Definition input_internal.h:493
vlc_renderer_item_t * p_renderer
Definition input_internal.h:507
vlc_tick_t i_stop
Definition input_internal.h:494
input_control_t control[100]
Definition input_internal.h:539
input_thread_events_cb events_cb
Definition input_internal.h:480
void * events_data
Definition input_internal.h:481
vlc_interrupt_t interrupt
Definition input_internal.h:542
float slave_subs_rate
Definition input_internal.h:527
input_item_t * p_item
Definition input_internal.h:520
bool is_running
Definition input_internal.h:487
bool b_low_delay
Definition input_internal.h:497
bool b_recording
Definition input_internal.h:489
int i_title_offset
Definition input_internal.h:510
vlc_cond_t wait_control
Definition input_internal.h:537
vlc_mutex_t lock_control
Definition input_internal.h:536
vlc_tick_t i_jitter_max
Definition input_internal.h:498
vlc_viewpoint_t viewpoint
Definition input_internal.h:505
input_resource_t * p_resource
Definition input_internal.h:530
input_source_t * master
Definition input_internal.h:523
bool is_stopped
Definition input_internal.h:488
struct input_thread_t input
Definition input_internal.h:478
vlc_thread_t thread
Definition input_internal.h:541
Main structure representing an input thread.
Definition input_internal.h:42
struct vlc_object_t obj
Definition input_internal.h:43
Definition vlc_input.h:103
Video picture.
Definition vlc_picture.h:130
Definition vlc_sout.h:274
stream_t definition
Definition vlc_stream.h:135
Definition vlc_atomic.h:48
Condition variable.
Definition vlc_threads.h:270
Opaque structure representing an ES (Elementary Stream) track.
Definition es_out.c:99
Definition input_internal.h:266
size_t count
Definition input_internal.h:268
input_attachment_t *const * array
Definition input_internal.h:267
Definition input_internal.h:202
int seekpoint
Definition input_internal.h:204
int title
Definition input_internal.h:203
Definition input_internal.h:222
bool forced
Only valid with VLC_INPUT_ES_SELECTED, true if the track was selected by the user.
Definition input_internal.h:246
enum vlc_input_event_es::@38 action
const char * title
Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition input_internal.h:237
@ VLC_INPUT_ES_SELECTED
Definition input_internal.h:227
@ VLC_INPUT_ES_UPDATED
Definition input_internal.h:226
@ VLC_INPUT_ES_DELETED
Definition input_internal.h:225
@ VLC_INPUT_ES_ADDED
Definition input_internal.h:224
@ VLC_INPUT_ES_UNSELECTED
Definition input_internal.h:228
const es_format_t * fmt
ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition input_internal.h:241
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:233
Definition input_internal.h:174
vlc_es_id_t * id
Definition input_internal.h:175
vlc_tick_t system_ts
Definition input_internal.h:177
unsigned frame_rate
Definition input_internal.h:180
double rate
Definition input_internal.h:179
vlc_tick_t ts
Definition input_internal.h:178
unsigned frame_rate_base
Definition input_internal.h:181
bool master
Definition input_internal.h:176
Definition input_internal.h:207
bool scrambled
Definition input_internal.h:218
const char * title
Definition input_internal.h:217
enum vlc_input_event_program::@35 action
@ VLC_INPUT_PROGRAM_UPDATED
Definition input_internal.h:211
@ VLC_INPUT_PROGRAM_SCRAMBLED
Definition input_internal.h:213
@ VLC_INPUT_PROGRAM_SELECTED
Definition input_internal.h:212
@ VLC_INPUT_PROGRAM_DELETED
Definition input_internal.h:210
@ VLC_INPUT_PROGRAM_ADDED
Definition input_internal.h:209
int id
Definition input_internal.h:215
Definition input_internal.h:249
float quality
Definition input_internal.h:250
float strength
Definition input_internal.h:251
Definition input_internal.h:159
vlc_tick_t date
Definition input_internal.h:162
input_state_e value
Definition input_internal.h:160
Definition input_internal.h:166
vlc_tick_t time
Definition input_internal.h:168
double position
Definition input_internal.h:167
vlc_tick_t normal_time
Definition input_internal.h:169
vlc_tick_t length
Definition input_internal.h:170
Definition input_internal.h:185
@ VLC_INPUT_TITLE_NEW_LIST
Definition input_internal.h:187
@ VLC_INPUT_TITLE_SELECTED
Definition input_internal.h:188
struct vlc_input_event_title::@32::@34 list
enum vlc_input_event_title::@31 action
size_t selected_idx
Definition input_internal.h:197
size_t count
Definition input_internal.h:195
input_title_t *const * array
Definition input_internal.h:194
Definition input_internal.h:255
vlc_es_id_t * id
Definition input_internal.h:262
enum vlc_vout_order order
Definition input_internal.h:261
enum vlc_input_event_vout::@39 action
@ VLC_INPUT_EVENT_VOUT_STOPPED
Definition input_internal.h:258
@ VLC_INPUT_EVENT_VOUT_STARTED
Definition input_internal.h:257
vout_thread_t * vout
Definition input_internal.h:260
Definition input_internal.h:272
struct vlc_input_event_state state
Definition input_internal.h:277
unsigned vbi_page
Definition input_internal.h:307
float cache
Definition input_internal.h:301
struct vlc_input_event_program program
Definition input_internal.h:291
int nav_type
Definition input_internal.h:317
struct vlc_input_event_signal signal
Definition input_internal.h:299
const struct input_stats_t * stats
Definition input_internal.h:297
struct vlc_input_event_chapter chapter
Definition input_internal.h:289
struct vlc_input_event_output_clock output_clock
Definition input_internal.h:285
struct vlc_input_event_title title
Definition input_internal.h:287
bool record
Definition input_internal.h:295
float rate
Definition input_internal.h:279
struct vlc_input_event_vout vout
Definition input_internal.h:303
struct vlc_input_event_es es
Definition input_internal.h:293
float subs_fps
Definition input_internal.h:311
struct vlc_input_event_times times
Definition input_internal.h:283
input_item_node_t * subitems
Definition input_internal.h:305
int capabilities
cf.
Definition input_internal.h:281
input_event_type_e type
Definition input_internal.h:273
picture_t * thumbnail
Definition input_internal.h:313
bool vbi_transparent
Definition input_internal.h:309
struct vlc_input_event_attachments attachments
Definition input_internal.h:315
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:424
char * dir_path
Definition input_internal.h:465
double f_val
Definition input_internal.h:438
unsigned page
Definition input_internal.h:457
char * str_ids
Definition input_internal.h:448
vlc_es_id_t * id
Definition input_internal.h:427
vlc_es_id_t ** ids
Definition input_internal.h:430
bool b_fast_seek
Definition input_internal.h:433
vlc_tick_t i_val
Definition input_internal.h:434
bool enabled
Definition input_internal.h:461
enum es_format_category_e cat
Definition input_internal.h:429
vlc_tick_t delay
Definition input_internal.h:443
vlc_viewpoint_t viewpoint
Definition input_internal.h:426
vlc_value_t val
Definition input_internal.h:425
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:47