VLC  4.0.0-dev
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 <stddef.h>
27 #include <stdatomic.h>
28 
29 #include <vlc_access.h>
30 #include <vlc_demux.h>
31 #include <vlc_input.h>
32 #include <vlc_viewpoint.h>
33 #include <libvlc.h>
34 #include "input_interface.h"
35 #include "misc/interrupt.h"
36 
37 struct input_stats;
38 
39 /*****************************************************************************
40  * input defines/constants.
41  *****************************************************************************/
42 
43 /**
44  * Main structure representing an input thread. This structure is mostly
45  * private. The only public fields are read-only and constant.
46  */
47 typedef struct input_thread_t
48 {
49  struct vlc_object_t obj;
51 
52 /*****************************************************************************
53  * Input events and variables
54  *****************************************************************************/
55 
56 /**
57  * Input state
58  *
59  * This enum is used by the variable "state"
60  */
61 typedef enum input_state_e
62 {
63  INIT_S = 0,
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  */
77 typedef enum input_event_type_e
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 */
146 
147 #define VLC_INPUT_CAPABILITIES_SEEKABLE (1<<0)
148 #define VLC_INPUT_CAPABILITIES_PAUSEABLE (1<<1)
149 #define VLC_INPUT_CAPABILITIES_CHANGE_RATE (1<<2)
150 #define VLC_INPUT_CAPABILITIES_REWINDABLE (1<<3)
151 #define VLC_INPUT_CAPABILITIES_RECORDABLE (1<<4)
152 
154 {
156  /* Only valid for PAUSE_S and PLAYING_S states */
158 };
159 
161 {
162  float percentage;
166 };
167 
169 {
171  bool master;
174  double rate;
175  unsigned frame_rate;
176  unsigned frame_rate_base;
177 };
178 
180 {
181  enum {
184  } action;
185  union
186  {
187  struct
188  {
190  size_t count;
191  } list;
192  size_t selected_idx;
193  };
194 };
195 
197 {
198  int title;
200 };
201 
203  enum {
209  } action;
210  int id;
211  union {
212  const char *title;
213  bool scrambled;
214  };
215 };
216 
218  enum {
224  } action;
225  /**
226  * ES track id: only valid from the event callback, unless the id is held
227  * by the user with vlc_es_Hold(). */
229  /**
230  * Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
231  */
232  const char *title;
233  /**
234  * ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
235  */
236  const es_format_t *fmt;
237 };
238 
240  float quality;
241  float strength;
242 };
243 
245 {
246  enum {
249  } action;
251  enum vlc_vout_order order;
253 };
254 
256 {
258 
259  union {
260  /* INPUT_EVENT_STATE */
262  /* INPUT_EVENT_RATE */
263  float rate;
264  /* INPUT_EVENT_CAPABILITIES */
265  int capabilities; /**< cf. VLC_INPUT_CAPABILITIES_* bitwise flags */
266  /* INPUT_EVENT_TIMES */
267  struct vlc_input_event_times times;
268  /* INPUT_EVENT_OUTPUT_CLOCK */
269  struct vlc_input_event_output_clock output_clock;
270  /* INPUT_EVENT_TITLE */
271  struct vlc_input_event_title title;
272  /* INPUT_EVENT_CHAPTER */
273  struct vlc_input_event_chapter chapter;
274  /* INPUT_EVENT_PROGRAM */
275  struct vlc_input_event_program program;
276  /* INPUT_EVENT_ES */
278  /* INPUT_EVENT_RECORD */
279  bool record;
280  /* INPUT_EVENT_STATISTICS */
281  const struct input_stats_t *stats;
282  /* INPUT_EVENT_SIGNAL */
283  struct vlc_input_event_signal signal;
284  /* INPUT_EVENT_CACHE */
285  float cache;
286  /* INPUT_EVENT_VOUT */
288  /* INPUT_EVENT_SUBITEMS */
290  /* INPUT_EVENT_VBI_PAGE */
291  unsigned vbi_page;
292  /* INPUT_EVENT_VBI_TRANSPARENCY */
294  /* INPUT_EVENT_SUBS_FPS */
295  float subs_fps;
296  /* INPUT_EVENT_THUMBNAIL_READY */
298  };
299 };
300 
301 typedef void (*input_thread_events_cb)( input_thread_t *input,
302  const struct vlc_input_event *event,
303  void *userdata);
304 
305 /*****************************************************************************
306  * Prototypes
307  *****************************************************************************/
309  input_thread_events_cb event_cb, void *events_data,
311  vlc_renderer_item_t* p_renderer ) VLC_USED;
312 #define input_Create(a,b,c,d,e,f) input_Create(VLC_OBJECT(a),b,c,d,e,f)
313 
314 
315 /**
316  * Creates an item preparser.
317  *
318  * Creates an input thread to preparse an item. The input needs to be started
319  * with input_Start() afterwards.
320  *
321  * @param obj parent object
322  * @param item input item to preparse
323  * @return an input thread or NULL on error
324  */
326  input_thread_events_cb events_cb,
327  void *events_data, input_item_t *item)
328 VLC_USED;
329 
330 VLC_API
332  input_thread_events_cb events_cb,
333  void *events_data, input_item_t *item)
334 VLC_USED;
335 
336 int input_Start( input_thread_t * );
337 
338 void input_Stop( input_thread_t * );
339 
340 void input_Close( input_thread_t * );
341 
342 void input_SetTime( input_thread_t *, vlc_tick_t i_time, bool b_fast );
343 
344 void input_SetPosition( input_thread_t *, float f_position, bool b_fast );
345 
346 /**
347  * Set the delay of an ES identifier
348  */
349 void input_SetEsIdDelay(input_thread_t *input, vlc_es_id_t *es_id,
350  vlc_tick_t delay);
351 
352 /**
353  * Get the input item for an input thread
354  *
355  * You have to keep a reference to the input or to the input_item_t until
356  * you do not need it anymore.
357  */
359 
360 /*****************************************************************************
361  * Private input fields
362  *****************************************************************************/
363 
364 #define INPUT_CONTROL_FIFO_SIZE 100
365 
366 /* input_source_t: gathers all information per input source */
367 typedef struct
368 {
369  demux_t *p_demux; /**< Demux object (most downstream) */
370 
371  /* Title infos for that input */
372  bool b_title_demux; /* Titles/Seekpoints provided by demux */
373  int i_title;
375 
378 
383 
384  /* Properties */
390  double f_fps;
391 
392  /* sub-fps handling */
394  float sub_rate;
395 
396  /* */
398 
399  bool b_eof; /* eof of demuxer */
400 
402 
403 typedef union
404 {
408  struct {
411  } list;
412  struct {
415  } time;
416  struct {
417  bool b_fast_seek;
418  float f_val;
419  } pos;
420  struct
421  {
422  enum es_format_category_e cat;
424  } cat_delay;
425  struct
426  {
427  vlc_es_id_t *id;
428  vlc_tick_t delay;
429  } es_delay;
430  struct {
431  vlc_es_id_t *id;
432  unsigned page;
433  } vbi_page;
434  struct {
435  vlc_es_id_t *id;
436  bool enabled;
437  } vbi_transparency;
438  struct {
439  enum es_format_category_e cat;
440  bool enabled;
441  } es_autoselect;
443 
444 typedef struct
445 {
446  int i_type;
449 
450 /** Private input fields */
452 {
453  struct input_thread_t input;
454 
456  void *events_data;
457 
458  /* Global properties */
463 
464  /* Current state */
465  int i_state;
470  float rate;
472 
473  /* Playtime configuration and state */
474  vlc_tick_t i_start; /* :start-time,0 by default */
475  vlc_tick_t i_stop; /* :stop-time, 0 if none */
476 
477  /* Delays */
479 
480  /* Output */
481  bool b_out_pace_control; /* XXX Move it ot es_sout ? */
482  sout_instance_t *p_sout; /* Idem ? */
488 
489 
492 
493  /* Input attachment */
497 
498  /* Main input properties */
499 
500  /* Input item */
502 
503  /* Main source */
505  /* Slave sources (subs, and others) */
506  int i_slave;
509 
510  /* Last ES added */
511  enum es_format_category_e i_last_es_cat;
513 
514  /* Resources */
516 
517  /* Stats counters */
519 
520  /* Buffer of pending actions */
523  size_t i_control;
525 
529 
531 {
532  return container_of(input, input_thread_private_t, input);
533 }
534 
535 /***************************************************************************
536  * Internal control helpers
537  ***************************************************************************/
539 {
541 
543 
546 
549 
551 
555 
559 
561 
562  INPUT_CONTROL_NAV_ACTIVATE, // NOTE: INPUT_CONTROL_NAV_* values must be
563  INPUT_CONTROL_NAV_UP, // contiguous and in the same order as
564  INPUT_CONTROL_NAV_DOWN, // INPUT_NAV_* and DEMUX_NAV_*.
569 
572 
574  INPUT_CONTROL_SET_ES_LIST, // select a list of ES atomically
577 
578  INPUT_CONTROL_SET_VIEWPOINT, // new absolute viewpoint
579  INPUT_CONTROL_SET_INITIAL_VIEWPOINT, // set initial viewpoint (generally from video)
580  INPUT_CONTROL_UPDATE_VIEWPOINT, // update viewpoint relative to current
581 
584 
587 
589 
591 
593 
596 
598 };
599 
600 /* Internal helpers */
601 
603 
604 /* XXX for string value you have to allocate it before calling
605  * input_ControlPushHelper
606  */
607 static inline int input_ControlPushHelper( input_thread_t *p_input, int i_type, vlc_value_t *val )
608 {
609  if( val != NULL )
610  {
611  input_control_param_t param = { .val = *val };
612  return input_ControlPush( p_input, i_type, &param );
613  }
614  else
615  {
616  return input_ControlPush( p_input, i_type, NULL );
617  }
618 }
619 
620 static inline int input_ControlPushEsHelper( input_thread_t *p_input, int i_type,
621  vlc_es_id_t *id )
622 {
623  assert( i_type == INPUT_CONTROL_SET_ES || i_type == INPUT_CONTROL_UNSET_ES ||
624  i_type == INPUT_CONTROL_RESTART_ES );
625  return input_ControlPush( p_input, i_type, &(input_control_param_t) {
626  .id = vlc_es_id_Hold( id ),
627  } );
628 }
629 
630 /** Synchronously execute a control sequence. This MUST only be used before the
631  * input is started
632  */
634 
635 bool input_Stopped( input_thread_t * );
636 
637 int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments);
638 
640 
641 /* Bound pts_delay */
642 #define INPUT_PTS_DELAY_MAX VLC_TICK_FROM_SEC(60)
643 
644 /**********************************************************************
645  * Item metadata
646  **********************************************************************/
647 /* input_ExtractAttachmentAndCacheArt:
648  * Be careful: p_item lock will be taken! */
650 
651 /***************************************************************************
652  * Internal prototypes
653  ***************************************************************************/
654 
655 /* var.c */
656 
658 
659 /* Subtitles */
660 int subtitles_Detect( input_thread_t *, char *, const char *, input_item_slave_t ***, int * );
661 int subtitles_Filter( const char *);
662 
663 /* meta.c */
665  const vlc_meta_t *p_meta );
666 
667 /* stats.c */
668 typedef struct input_rate_t
669 {
671  uintmax_t updates;
672  uintmax_t value;
673  struct
674  {
675  uintmax_t value;
677  } samples[2];
678 } input_rate_t;
679 
680 struct input_stats {
683  atomic_uintmax_t demux_corrupted;
684  atomic_uintmax_t demux_discontinuity;
685  atomic_uintmax_t decoded_audio;
686  atomic_uintmax_t decoded_video;
687  atomic_uintmax_t played_abuffers;
688  atomic_uintmax_t lost_abuffers;
689  atomic_uintmax_t displayed_pictures;
690  atomic_uintmax_t lost_pictures;
691 };
692 
693 struct input_stats *input_stats_Create(void);
694 void input_stats_Destroy(struct input_stats *);
695 void input_rate_Add(input_rate_t *, uintmax_t);
697 
698 #endif
Definition: vlc_input.h:160
Definition: resource.c:47
Definition: input_internal.h:64
vlc_value_t val
Definition: input_internal.h:405
int seekpoint
Definition: input_internal.h:199
vlc_es_id_t * id
Definition: input_internal.h:407
Definition: input_internal.h:223
Definition: input_internal.h:590
bool viewpoint_changed
Definition: input_internal.h:486
double f_fps
Definition: input_internal.h:390
Definition: input_internal.h:127
Definition: input_internal.h:553
const struct input_stats_t * stats
Definition: input_internal.h:281
float percentage
Definition: input_internal.h:162
Definition: input_internal.h:116
vlc_tick_t i_val
Definition: input_internal.h:414
bool b_rescale_ts
Definition: input_internal.h:389
vlc_tick_t date
Definition: input_internal.h:676
bool enabled
Definition: input_internal.h:436
vlc_tick_t system_ts
Definition: input_internal.h:172
bool is_running
Definition: input_internal.h:466
vlc_tick_t delay
Definition: input_internal.h:423
module_config_t ** list
Definition: core.c:401
Definition: input_internal.h:562
int i_slave
Definition: input_internal.h:506
atomic_uintmax_t played_abuffers
Definition: input_internal.h:687
Video picture.
Definition: vlc_picture.h:126
int i_seekpoint_start
Definition: input_internal.h:381
const es_format_t * fmt
ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition: input_internal.h:236
Input byte stream modules interface.
vlc_renderer_item_t * p_renderer
Definition: input_internal.h:487
Definition: input_internal.h:552
Describes an input and is used to spawn input_thread_t objects.
Definition: vlc_input_item.h:77
Definition: input_internal.h:182
Definition: input_internal.h:542
Demultiplexer modules interface.
Definition: vlc_es.h:55
es_out_t * p_es_out_display
Definition: input_internal.h:484
pthread_mutex_t vlc_mutex_t
Mutex.
Definition: vlc_threads.h:278
static thread_local struct @77 state
Definition: input_internal.h:547
input_thread_events_cb events_cb
Definition: input_internal.h:455
Definition: input_internal.h:66
void input_rate_Add(input_rate_t *, uintmax_t)
Update a counter element with new values.
Definition: stats.c:120
Definition: input_internal.h:141
void input_Close(input_thread_t *)
Close an input.
Definition: input.c:214
Definition: input_internal.h:580
float f_val
Definition: input_internal.h:418
Definition: vlc_input_item.h:191
Definition: input_internal.h:566
Definition: input_internal.h:217
Definition: input_internal.h:119
input_event_type_e type
Definition: input_internal.h:257
Definition: input_internal.h:544
Definition: input_internal.h:85
bool is_stopped
Definition: input_internal.h:467
int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments)
Definition: input.c:3347
input_rate_t input_bitrate
Definition: input_internal.h:681
float slave_subs_rate
Definition: input_internal.h:508
Definition: input_internal.h:568
picture_t * thumbnail
Definition: input_internal.h:297
Definition: input_internal.h:68
Definition: input_internal.h:106
Definition: input_internal.h:556
input_thread_t * input_CreatePreparser(vlc_object_t *obj, input_thread_events_cb events_cb, void *events_data, input_item_t *item)
Creates an item preparser.
Definition: input.c:143
int i_state
Definition: input_internal.h:465
Definition: input_internal.h:680
input_item_t * input_GetItem(input_thread_t *)
Get the input item for an input thread.
Definition: input.c:246
Definition: input_internal.h:583
vlc_tick_t ms
Definition: input_internal.h:163
atomic_uintmax_t decoded_video
Definition: input_internal.h:686
bool b_title_demux
Definition: input_internal.h:372
Definition: input_internal.h:570
vlc_viewpoint_t viewpoint
Definition: input_internal.h:406
bool b_can_pause
Definition: input_internal.h:385
Private input fields.
Definition: input_internal.h:451
bool b_eof
Definition: input_internal.h:399
int i_seekpoint_offset
Definition: input_internal.h:491
int i_title
Definition: input_internal.h:373
bool vbi_transparent
Definition: input_internal.h:293
const char * title
Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition: input_internal.h:232
vlc_tick_t i_start
Definition: input_internal.h:474
bool b_slave_sub
Definition: input_internal.h:393
bool record
Definition: input_internal.h:279
void input_ConfigVarInit(input_thread_t *)
Definition: var.c:39
struct input_thread_private_t input_thread_private_t
Private input fields.
double rate
Definition: input_internal.h:174
Definition: input_internal.h:444
VLC value structure.
Definition: vlc_common.h:455
input_attachment_t ** attachment
Definition: input_internal.h:495
vlc_mutex_t lock
Definition: input_internal.h:670
int i_title_offset
Definition: input_internal.h:490
bool b_fast_seek
Definition: input_internal.h:413
Definition: input_internal.h:563
void(* input_thread_events_cb)(input_thread_t *input, const struct vlc_input_event *event, void *userdata)
Definition: input_internal.h:301
vlc_cond_t wait_control
Definition: input_internal.h:522
input_event_type_e
Input events.
Definition: input_internal.h:77
Definition: renderer_discovery.c:34
Definition: input_internal.h:160
Definition: input_internal.h:196
es_format_category_e
ES Categories.
Definition: vlc_es.h:600
Definition: input_internal.h:204
input_source_t * master
Definition: input_internal.h:504
int i_title_start
Definition: input_internal.h:379
vlc_viewpoint_t viewpoint
Definition: input_internal.h:485
Definition: input_internal.h:168
unsigned vbi_page
Definition: input_internal.h:291
Definition: input_internal.h:576
unsigned frame_rate
Definition: input_internal.h:175
Definition: input_internal.h:88
size_t selected_idx
Definition: input_internal.h:192
Definition: input_internal.h:138
Definition: input_internal.h:585
Definition: input_internal.h:124
Definition: input_internal.h:565
vlc_interrupt_t interrupt
Definition: input_internal.h:527
Definition: input_internal.h:136
atomic_uintmax_t lost_abuffers
Definition: input_internal.h:688
Definition: input_internal.h:179
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
Definition: input_internal.h:100
bool b_low_delay
Definition: input_internal.h:478
bool input_Stopped(input_thread_t *)
Definition: input.c:502
vlc_tick_t normal_time
Definition: input_internal.h:471
Definition: vlc_es_out.h:139
Definition: input_internal.h:91
Definition: input_internal.h:403
float rate
Definition: input_internal.h:263
vlc_es_id_t * id
Definition: input_internal.h:170
Definition: input_internal.h:144
input_attachment_t * input_GetAttachment(input_thread_t *input, const char *name)
Definition: input.c:3372
int i_seekpoint_offset
Definition: input_internal.h:377
Definition: input_internal.h:202
Definition: input_internal.h:219
bool b_recording
Definition: input_internal.h:468
float rate
Definition: input_internal.h:470
Definition: input_internal.h:582
int i_type
Definition: httpd.c:1237
Viewpoints.
Definition: vlc_viewpoint.h:41
int i_title_end
Definition: input_internal.h:380
Definition: input_internal.h:668
Thread handle.
Definition: vlc_threads.h:263
Definition: vlc_es.h:617
Definition: input_internal.h:597
Definition: input_internal.h:183
Definition: input_internal.h:112
void vlc_audio_replay_gain_MergeFromMeta(audio_replay_gain_t *p_dst, const vlc_meta_t *p_meta)
Definition: meta.c:274
int subtitles_Filter(const char *)
Definition: subtitles.c:140
Definition: input_internal.h:220
bool b_can_rate_control
Definition: input_internal.h:461
void input_stats_Destroy(struct input_stats *)
Definition: stats.c:73
Definition: input_internal.h:554
Video output thread descriptor.
Definition: vlc_vout.h:60
Definition: input_internal.h:592
const demux_t ** attachment_demux
Definition: input_internal.h:496
Definition: input_internal.h:575
input_state_e value
Definition: input_internal.h:155
int i_seekpoint_end
Definition: input_internal.h:382
float quality
Definition: input_internal.h:240
Definition: input_internal.h:595
Definition: input_internal.h:82
static input_thread_private_t * input_priv(input_thread_t *input)
Definition: input_internal.h:530
Definition: input_internal.h:557
int capabilities
cf.
Definition: input_internal.h:265
Definition: input_internal.h:109
void * events_data
Definition: input_internal.h:456
input_control_param_t param
Definition: input_internal.h:447
vlc_tick_t i_stop
Definition: input_internal.h:475
input_item_node_t * subitems
Definition: input_internal.h:289
Opaque structure representing an ES (Elementary Stream) track.
Definition: es_out.c:88
const char name[16]
Definition: httpd.c:1236
Definition: input_internal.h:65
pthread_cond_t vlc_cond_t
Condition variable.
Definition: vlc_threads.h:290
void input_SetPosition(input_thread_t *, float f_position, bool b_fast)
Definition: input.c:231
struct input_stats * stats
Definition: input_internal.h:518
float subs_fps
Definition: input_internal.h:295
#define container_of(ptr, type, member)
Definition: vlc_common.h:1120
int i_attachment
Definition: input_internal.h:494
Video and audio viewpoint struct and helpers.
Definition: input_internal.h:545
Definition: input_internal.h:558
Definition: input_internal.h:550
static int input_ControlPushHelper(input_thread_t *p_input, int i_type, vlc_value_t *val)
Definition: input_internal.h:607
Definition: input_internal.h:63
Definition: input_internal.h:121
input_item_t * p_item
Definition: input_internal.h:501
vlc_vout_order
vout or spu_channel order
Definition: vlc_vout.h:78
bool b_can_pace_control
Definition: input_internal.h:462
#define VLC_API
Definition: fourcc_gen.c:31
sout_instance_t * p_sout
Definition: input_internal.h:482
float strength
Definition: input_internal.h:241
vlc_es_id_t ** ids
Definition: input_internal.h:410
Definition: interrupt.h:32
Main structure representing an input thread.
Definition: input_internal.h:47
stream_t definition
Definition: vlc_stream.h:46
uintmax_t value
Definition: input_internal.h:672
atomic_uintmax_t demux_discontinuity
Definition: input_internal.h:684
void input_SetEsIdDelay(input_thread_t *input, vlc_es_id_t *es_id, vlc_tick_t delay)
Set the delay of an ES identifier.
unsigned page
Definition: input_internal.h:432
Definition: input_internal.h:94
Definition: input_internal.h:540
void input_ExtractAttachmentAndCacheArt(input_thread_t *, const char *name)
Definition: meta.c:204
Definition: input_internal.h:560
static int input_ControlPushEsHelper(input_thread_t *p_input, int i_type, vlc_es_id_t *id)
Definition: input_internal.h:620
vlc_tick_t normal_time
Definition: input_internal.h:164
Definition: input_internal.h:80
es_out_t * p_es_out
Definition: input_internal.h:483
Definition: meta.c:39
vlc_tick_t date
Definition: input_internal.h:157
atomic_uintmax_t demux_corrupted
Definition: input_internal.h:683
bool b_thumbnailing
Definition: input_internal.h:469
void input_stats_Compute(struct input_stats *, input_stats_t *)
Definition: stats.c:80
vlc_tick_t ts
Definition: input_internal.h:173
Definition: input_internal.h:579
vlc_es_id_t * vlc_es_id_Hold(vlc_es_id_t *id)
Increase the ES track id reference count.
Definition: es_out.c:4100
Stream output instance (FIXME: should be private to src/ to avoid invalid unsynchronized access) ...
Definition: vlc_sout.h:48
Definition: input_internal.h:255
Definition: input_internal.h:67
Definition: vlc_input_item.h:183
int i_last_es_id
Definition: input_internal.h:512
Definition: input_internal.h:588
void input_ControlSync(input_thread_t *, int, const input_control_param_t *)
Synchronously execute a control sequence.
Definition: input.c:1800
struct input_stats * input_stats_Create(void)
Definition: stats.c:54
struct input_thread_t input_thread_t
Main structure representing an input thread.
const char * title
Definition: input_internal.h:212
input_source_t ** slave
Definition: input_internal.h:507
int input_ControlPush(input_thread_t *, int, const input_control_param_t *)
Definition: input.c:1465
Definition: input_internal.h:548
atomic_uintmax_t lost_pictures
Definition: input_internal.h:690
struct input_rate_t input_rate_t
Definition: input_internal.h:571
Definition: vlc_input_item.h:504
void input_Stop(input_thread_t *)
Request a running input thread to stop and die.
Definition: input.c:191
int input_Start(input_thread_t *)
Start a input_thread_t created by input_Create.
Definition: input.c:166
Definition: input_internal.h:98
input_title_t ** title
Definition: input_internal.h:374
bool b_can_pause
Definition: input_internal.h:460
Definition: input_internal.h:104
bool b_can_pace_control
Definition: input_internal.h:386
Input thread interface.
vout_thread_t * vout
Definition: input_internal.h:250
bool b_can_stream_record
Definition: input_internal.h:388
Definition: input_internal.h:244
bool b_out_pace_control
Definition: input_internal.h:481
bool master
Definition: input_internal.h:171
vlc_tick_t length
Definition: input_internal.h:165
input_title_t *const * array
Definition: input_internal.h:189
int title
Definition: input_internal.h:198
vlc_es_id_t * id
Definition: input_internal.h:252
Definition: input_internal.h:573
input_thread_t * input_CreateThumbnailer(vlc_object_t *obj, input_thread_events_cb events_cb, void *events_data, input_item_t *item)
Definition: input.c:151
int subtitles_Detect(input_thread_t *, char *, const char *, input_item_slave_t ***, int *)
Detect subtitle files.
Definition: subtitles.c:216
Definition: input_internal.h:133
uintmax_t updates
Definition: input_internal.h:671
atomic_uintmax_t displayed_pictures
Definition: input_internal.h:689
VLC object common members.
Definition: vlc_objects.h:43
Definition: input_internal.h:114
input_rate_t demux_bitrate
Definition: input_internal.h:682
size_t count
Definition: input_internal.h:190
input_resource_t * p_resource
Definition: input_internal.h:515
#define input_Create(a, b, c, d, e, f)
Definition: input_internal.h:312
Definition: input_internal.h:221
demux_t * p_demux
Demux object (most downstream)
Definition: input_internal.h:369
bool scrambled
Definition: input_internal.h:213
float cache
Definition: input_internal.h:285
bool b_can_rate_control
Definition: input_internal.h:387
Definition: input_internal.h:586
vlc_thread_t thread
Definition: input_internal.h:526
Definition: input_internal.h:578
Definition: input_internal.h:239
#define INPUT_CONTROL_FIFO_SIZE
Definition: input_internal.h:364
Definition: input_internal.h:574
Definition: input_internal.h:153
input_state_e
Input state.
Definition: input_internal.h:61
#define VLC_USED
Definition: fourcc_gen.c:32
unsigned frame_rate_base
Definition: input_internal.h:176
LibVLC core external API.
struct vlc_object_t obj
Definition: input_internal.h:49
bool b_preparsing
Definition: input_internal.h:459
float sub_rate
Definition: input_internal.h:394
int i_type
Definition: input_internal.h:446
Definition: input_internal.h:367
Definition: input_internal.h:564
int id
Definition: input_internal.h:210
input_control_e
Definition: input_internal.h:538
vlc_mutex_t lock_control
Definition: input_internal.h:521
vlc_tick_t i_pts_delay
Definition: input_internal.h:397
Definition: vlc_input.h:94
Definition: input_internal.h:594
atomic_uintmax_t decoded_audio
Definition: input_internal.h:685
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:228
size_t i_control
Definition: input_internal.h:523
Definition: input_internal.h:567
void input_SetTime(input_thread_t *, vlc_tick_t i_time, bool b_fast)
Definition: input.c:222
Definition: input_internal.h:130
Definition: input_internal.h:222
int i_title_offset
Definition: input_internal.h:376