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 <vlc_mouse.h>
29#include "input_interface.h"
30#include "../misc/interrupt.h"
31#include "./source.h"
32
33struct input_stats;
34
35/*****************************************************************************
36 * input defines/constants.
37 *****************************************************************************/
38
39/**
40 * Main structure representing an input thread. This structure is mostly
41 * private. The only public fields are read-only and constant.
42 */
47
48/*****************************************************************************
49 * Input events and variables
50 *****************************************************************************/
51
57
58/**
59 * Input state
60 *
61 * This enum is used by the variable "state"
62 */
72
73/**
74 * Input events
75 *
76 * You can catch input event by adding a callback on the variable "intf-event".
77 * This variable is an integer that will hold a input_event_type_e value.
78 */
80{
81 /* "state" has changed */
83 /* b_dead is true */
85 /* If the event is not handled, or if the listener is returning false,
86 * the input will be stopped normally at EOF */
88
89 /* "rate" has changed */
91
92 /* "capabilities" has changed */
94
95 /* At least one of "position", "time" "length" has changed */
97
98 /* The output PTS changed */
100
101 /* A title has been added or removed or selected.
102 * It implies that the chapter has changed (no chapter event is sent) */
104 /* A chapter has been added or removed or selected. */
106
107 /* A program ("program") has been added or removed or selected,
108 * or "program-scrambled" has changed.*/
110 /* A ES has been added or removed or selected */
112
113 /* "record" has changed */
115
116 /* input_item_t media has changed */
118 /* input_item_t info has changed */
120 /* input_item_t epg has changed */
122
123 /* Input statistics have been updated */
125 /* At least one of "signal-quality" or "signal-strength" has changed */
127
128 /* "bookmark" has changed */
130
131 /* cache" has changed */
133
134 /* A vout_thread_t object has been created/deleted by *the input* */
136
137 /* The output state changed (paused or resumed) */
139
140 /* (pre-)parsing events */
142
143 /* vbi_page has changed */
145 /* vbi_transparent has changed */
147
148 /* subs_fps has changed */
150
151 /* Thumbnail generation */
153
154 /* Attachments */
156
157 /* The demux is not able to navigate */
159
160 /* Mouse event */
162
163 /* frame-next status */
165 /* frame-previous status */
168
169/**
170 * Mouse Pause Policy
171 */
176
177#define VLC_INPUT_CAPABILITIES_SEEKABLE (1<<0)
178#define VLC_INPUT_CAPABILITIES_PAUSEABLE (1<<1)
179#define VLC_INPUT_CAPABILITIES_CHANGE_RATE (1<<2)
180#define VLC_INPUT_CAPABILITIES_REWINDABLE (1<<3)
181
183{
185 /* Only valid for PAUSE_S and PLAYING_S states */
187};
188
197
208
210{
211 enum {
215 union
216 {
217 struct
218 {
220 size_t count;
223 };
224};
225
231
246
248 enum {
255 /**
256 * ES track id: only valid from the event callback, unless the id is held
257 * by the user with vlc_es_Hold(). */
259 /**
260 * Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
261 */
262 const char *title;
263 /**
264 * ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
265 */
267 /**
268 * Only valid with VLC_INPUT_ES_SELECTED, true if the track was selected by
269 * the user.
270 */
271 bool forced;
272
274};
275
280
291
301
307
313
315{
317
318 union {
319 /* INPUT_EVENT_STATE */
321 /* INPUT_EVENT_RATE */
322 float rate;
323 /* INPUT_EVENT_CAPABILITIES */
324 int capabilities; /**< cf. VLC_INPUT_CAPABILITIES_* bitwise flags */
325 /* INPUT_EVENT_TIMES */
327 /* INPUT_EVENT_OUTPUT_CLOCK */
329 /* INPUT_EVENT_TITLE */
331 /* INPUT_EVENT_CHAPTER */
333 /* INPUT_EVENT_PROGRAM */
335 /* INPUT_EVENT_ES */
337 /* INPUT_EVENT_RECORD */
338 bool record;
339 /* INPUT_EVENT_STATISTICS */
340 const struct input_stats_t *stats;
341 /* INPUT_EVENT_SIGNAL */
343 /* INPUT_EVENT_CACHE */
344 float cache;
345 /* INPUT_EVENT_VOUT */
347 /* INPUT_EVENT_OUTPUT_STATE */
349 /* INPUT_EVENT_SUBITEMS */
351 /* INPUT_EVENT_VBI_PAGE */
352 unsigned vbi_page;
353 /* INPUT_EVENT_VBI_TRANSPARENCY */
355 /* INPUT_EVENT_SUBS_FPS */
356 float subs_fps;
357 /* INPUT_EVENT_THUMBNAIL_READY */
359 /* INPUT_EVENT_ATTACHMENTS */
361 /* INPUT_EVENT_NAV_FAILED */
363 /* INPUT_EVENT_FRAME_NEXT_STATUS */
365 /* INPUT_EVENT_FRAME_PREVIOUS_STATUS */
367 };
368};
369
371{
372 bool (*on_event)(input_thread_t *input, const struct vlc_input_event *event,
373 void *userdata);
374};
375
395/**
396 * Create a new input_thread_t.
397 *
398 * You need to call input_Start on it when you are done
399 * adding callback on the variables/events you want to monitor.
400 *
401 * \param p_parent a vlc_object
402 * \param p_item an input item
403 * \param cfg pointer to a configuration struct, mandatory
404 * \return a pointer to the spawned input thread
405 */
407 const struct vlc_input_thread_cfg *cfg ) VLC_USED;
408#define input_Create(a,b,c) input_Create(VLC_OBJECT(a),b,c)
409
411
412void input_Stop( input_thread_t * );
413
415
416void input_SetTime( input_thread_t *, vlc_tick_t i_time, bool b_fast );
417
418void input_SetPosition( input_thread_t *, double f_position, bool b_fast );
419
420/**
421 * Set the delay of an ES identifier
422 */
424 vlc_tick_t delay);
425
426/**
427 * Get the input item for an input thread
428 *
429 * You have to keep a reference to the input or to the input_item_t until
430 * you do not need it anymore.
431 */
433
434/*****************************************************************************
435 * Private input fields
436 *****************************************************************************/
437
438#define INPUT_CONTROL_FIFO_SIZE 100
439
440typedef union
441{
445 struct {
449 struct {
452 } time;
453 struct {
454 bool b_fast_seek;
455 double f_val;
456 } pos;
457 struct
458 {
459 enum es_format_category_e cat;
461 } cat_delay;
462 struct
463 {
464 enum es_format_category_e cat;
465 char *str_ids;
466 } cat_ids;
467 struct
468 {
469 vlc_es_id_t *id;
470 vlc_tick_t delay;
471 } es_delay;
472 struct {
473 vlc_es_id_t *id;
474 unsigned page;
475 } vbi_page;
476 struct {
477 vlc_es_id_t *id;
479 } vbi_transparency;
480 struct {
481 bool enabled;
482 char *dir_path;
483 } record_state;
484 struct
485 {
487 unsigned frame_rate;
489 int steps;
490 bool failed;
491 } frame_previous_seek;
493
499
500/** Private input fields */
502{
504
506 void *cbs_data;
507
509 bool hw_dec;
511
512 /* Current state */
517 bool b_pause_after_buffering; /* Defer pause until after buffering */
518 float rate;
519
520 /* Playtime configuration and state */
521 vlc_tick_t i_start; /* :start-time,0 by default */
522 vlc_tick_t i_stop; /* :stop-time, 0 if none */
523
524 /* Delays */
527
528 /* Output */
529 bool b_out_pace_control; /* XXX Move it ot es_sout ? */
530 sout_stream_t *p_sout; /* Idem ? */
536
537
540
541 /* Input attachment */
544
545 /* Main input properties */
546
547 /* Input item */
549
550 /* Main source */
552 /* Slave sources (subs, and others) */
553 size_t i_slave;
556
557 /* Resources */
559
560 /* Stats counters */
562
563 /* Buffer of pending actions */
566 size_t i_control;
568
571
572 struct {
575 bool end;
577
580
582{
583 return container_of(input, input_thread_private_t, input);
584}
585
586/***************************************************************************
587 * Internal control helpers
588 ***************************************************************************/
590{
592
594
596
598
600
604
608
610
612
613 INPUT_CONTROL_NAV_ACTIVATE, // NOTE: INPUT_CONTROL_NAV_* values must be
614 INPUT_CONTROL_NAV_UP, // contiguous and in the same order as
615 INPUT_CONTROL_NAV_DOWN, // INPUT_NAV_* and DEMUX_NAV_*.
620
622 INPUT_CONTROL_SET_ES_LIST, // select a list of ES atomically
626
627 INPUT_CONTROL_SET_VIEWPOINT, // new absolute viewpoint
628 INPUT_CONTROL_SET_INITIAL_VIEWPOINT, // set initial viewpoint (generally from video)
629 INPUT_CONTROL_UPDATE_VIEWPOINT, // update viewpoint relative to current
630
633
636
638
643
645
648};
649
650/* Internal helpers */
651
653
654/* XXX for string value you have to allocate it before calling
655 * input_ControlPushHelper
656 */
657static inline int input_ControlPushHelper( input_thread_t *p_input, int i_type, vlc_value_t *val )
658{
659 if( val != NULL )
660 {
661 input_control_param_t param = { .val = *val };
662 return input_ControlPush( p_input, i_type, &param );
663 }
664 else
665 {
666 return input_ControlPush( p_input, i_type, NULL );
667 }
668}
669
670static inline int input_ControlPushEsHelper( input_thread_t *p_input, int i_type,
671 vlc_es_id_t *id )
672{
675 return input_ControlPush( p_input, i_type, &(input_control_param_t) {
676 .id = vlc_es_id_Hold( id ),
677 } );
678}
679
680/**
681 * Set the program id
682 *
683 * cf. ES_OUT_SET_GROUP
684 * This function can be called before start or while started.
685 * This function is not thread-safe, the caller should handle the locking.
686 */
687void input_SetProgramId(input_thread_t *input, int group_id);
688
689/**
690 * Set the default delay applied to the given category.
691 *
692 * Set the default delay for the given \p es_format_category_e synchronously
693 * if the input is not running yet, otherwise push a control to signal to the
694 * input which delay should be updated.
695 *
696 * @param input Any input to change the delay for.
697 * @param cat The ES category to apply the delay to.
698 * @param delay The delay to apply to the category, a positive delay shifting
699 * the track to the future.
700 * @return VLC_SUCCESS when the delay has been applied, or signal an error
701 * otherwise.
702 *
703 * @note This function can be called before start or while running.
704 * @note This function is not thread-safe, the caller should handle the locking.
705 */
707 vlc_tick_t delay);
708
709/**
710 * Set the list of string ids to enable for a category
711 *
712 * cf. ES_OUT_SET_ES_CAT_IDS
713 * This function can be called before start or while started.
714 * This function is not thread-safe, the caller should handle the locking.
715 */
717 const char *str_ids);
718
720
721int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments);
722
724
726
727/**
728 * Calculates the duration of the item in an input thread.
729 *
730 * This function determines the duration of a track item based on the start and
731 * stop times stored in the input thread's private data. If the stop time is not
732 * set (i.e., equals zero), the function considers the given `duration` as the
733 * stop time and calculates the effective duration based on the start time.
734 * Otherwise, it calculates the duration using the set start and stop times.
735 *
736 * @param input Pointer to the input_thread_t object.
737 * @param duration The initial duration value, used if the stop time is not set.
738 *
739 * @return The calculated duration based on the start and stop times.
740 */
742
743/* Bound pts_delay */
744#define INPUT_PTS_DELAY_MAX VLC_TICK_FROM_SEC(60)
745
746/**********************************************************************
747 * Item metadata
748 **********************************************************************/
749/* input_ExtractAttachmentAndCacheArt:
750 * Be careful: p_item lock will be taken! */
752
753/***************************************************************************
754 * Internal prototypes
755 ***************************************************************************/
756
757/* var.c */
758
760 bool playback, bool do_inherit);
761
762/* Subtitles */
763int subtitles_Detect( input_thread_t *, char *, const char *, input_item_slave_t ***, int * );
764int subtitles_Filter( const char *);
765
766/* stats.c */
767typedef struct input_rate_t
768{
770 uintmax_t updates;
771 uintmax_t value;
772 struct
773 {
774 uintmax_t value;
778
782 atomic_uintmax_t demux_corrupted;
783 atomic_uintmax_t demux_discontinuity;
784 atomic_uintmax_t decoded_audio;
785 atomic_uintmax_t decoded_video;
786 atomic_uintmax_t played_abuffers;
787 atomic_uintmax_t lost_abuffers;
788 atomic_uintmax_t displayed_pictures;
789 atomic_uintmax_t late_pictures;
790 atomic_uintmax_t lost_pictures;
791};
792
793struct input_stats *input_stats_Create(void);
794void input_stats_Destroy(struct input_stats *);
795void input_rate_Add(input_rate_t *, uintmax_t);
797
798#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:5028
#define VLC_USED
Definition fourcc_gen.c:32
struct vlc_interrupt vlc_interrupt_t
Definition vlc_interrupt.h:157
vlc_vout_order
vout or spu_channel order
Definition vlc_vout.h:70
const char name[16]
Definition httpd.c:1299
int i_type
Definition httpd.c:1300
bool input_CanPaceControl(input_thread_t *input)
Definition input.c:3725
input_type
Definition input_internal.h:52
@ INPUT_TYPE_PLAYBACK
Definition input_internal.h:53
@ INPUT_TYPE_THUMBNAILING
Definition input_internal.h:55
@ INPUT_TYPE_PREPARSING
Definition input_internal.h:54
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:450
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:1901
input_event_type_e
Input events.
Definition input_internal.h:80
@ INPUT_EVENT_MOUSE_LEFT
Definition input_internal.h:161
@ INPUT_EVENT_THUMBNAIL_READY
Definition input_internal.h:152
@ INPUT_EVENT_SUBITEMS
Definition input_internal.h:141
@ INPUT_EVENT_CHAPTER
Definition input_internal.h:105
@ INPUT_EVENT_ITEM_EPG
Definition input_internal.h:121
@ INPUT_EVENT_OUTPUT_STATE
Definition input_internal.h:138
@ INPUT_EVENT_OUTPUT_CLOCK
Definition input_internal.h:99
@ INPUT_EVENT_SIGNAL
Definition input_internal.h:126
@ INPUT_EVENT_ITEM_META
Definition input_internal.h:117
@ INPUT_EVENT_RATE
Definition input_internal.h:90
@ INPUT_EVENT_TITLE
Definition input_internal.h:103
@ INPUT_EVENT_DEAD
Definition input_internal.h:84
@ INPUT_EVENT_ES
Definition input_internal.h:111
@ INPUT_EVENT_RECORD
Definition input_internal.h:114
@ INPUT_EVENT_ATTACHMENTS
Definition input_internal.h:155
@ INPUT_EVENT_CAPABILITIES
Definition input_internal.h:93
@ INPUT_EVENT_STATISTICS
Definition input_internal.h:124
@ INPUT_EVENT_ITEM_INFO
Definition input_internal.h:119
@ INPUT_EVENT_BOOKMARK
Definition input_internal.h:129
@ INPUT_EVENT_PROGRAM
Definition input_internal.h:109
@ INPUT_EVENT_FRAME_PREVIOUS_STATUS
Definition input_internal.h:166
@ INPUT_EVENT_TIMES
Definition input_internal.h:96
@ INPUT_EVENT_STATE
Definition input_internal.h:82
@ INPUT_EVENT_EOF
Definition input_internal.h:87
@ INPUT_EVENT_VOUT
Definition input_internal.h:135
@ INPUT_EVENT_FRAME_NEXT_STATUS
Definition input_internal.h:164
@ INPUT_EVENT_SUBS_FPS
Definition input_internal.h:149
@ INPUT_EVENT_NAV_FAILED
Definition input_internal.h:158
@ INPUT_EVENT_VBI_PAGE
Definition input_internal.h:144
@ INPUT_EVENT_CACHE
Definition input_internal.h:132
@ INPUT_EVENT_VBI_TRANSPARENCY
Definition input_internal.h:146
input_state_e
Input state.
Definition input_internal.h:64
@ PAUSE_S
Definition input_internal.h:68
@ PLAYING_S
Definition input_internal.h:67
@ END_S
Definition input_internal.h:69
@ OPENING_S
Definition input_internal.h:66
@ INIT_S
Definition input_internal.h:65
@ ERROR_S
Definition input_internal.h:70
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:670
void input_ExtractAttachmentAndCacheArt(input_thread_t *, const char *name)
Definition meta.c:270
input_attachment_t * input_GetAttachment(input_thread_t *input, const char *name)
Definition input.c:3706
void input_SetEsIdDelay(input_thread_t *input, vlc_es_id_t *es_id, vlc_tick_t delay)
Set the delay of an ES identifier.
int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments)
Definition input.c:3678
void input_SetProgramId(input_thread_t *input, int group_id)
Set the program id.
Definition input.c:1884
vlc_mouse_pause_policy
Mouse Pause Policy.
Definition input_internal.h:172
@ VLC_MOUSE_IMMEDIATE_PAUSE_ON_RELEASED
Definition input_internal.h:174
@ VLC_MOUSE_PAUSE_DISABLED
Definition input_internal.h:173
void vlc_object_InitInputConfig(vlc_object_t *obj, bool playback, bool do_inherit)
Definition var.c:39
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:657
input_control_e
Definition input_internal.h:590
@ INPUT_CONTROL_SET_ES_DELAY
Definition input_internal.h:632
@ INPUT_CONTROL_SET_FRAME_PREVIOUS
Definition input_internal.h:640
@ INPUT_CONTROL_SET_TITLE_NEXT
Definition input_internal.h:602
@ INPUT_CONTROL_RESTART_ES
Definition input_internal.h:624
@ INPUT_CONTROL_SET_TITLE
Definition input_internal.h:601
@ INPUT_CONTROL_SEEK_FRAME_PREVIOUS
Definition input_internal.h:642
@ INPUT_CONTROL_NAV_MENU
Definition input_internal.h:619
@ INPUT_CONTROL_SET_STATE
Definition input_internal.h:591
@ INPUT_CONTROL_NAV_LEFT
Definition input_internal.h:616
@ INPUT_CONTROL_SET_VBI_PAGE
Definition input_internal.h:646
@ INPUT_CONTROL_SET_FRAME_NEXT
Definition input_internal.h:639
@ INPUT_CONTROL_SET_RATE
Definition input_internal.h:593
@ INPUT_CONTROL_SET_ES_LIST
Definition input_internal.h:622
@ INPUT_CONTROL_SET_VBI_TRANSPARENCY
Definition input_internal.h:647
@ INPUT_CONTROL_NAV_DOWN
Definition input_internal.h:615
@ INPUT_CONTROL_SET_BOOKMARK
Definition input_internal.h:609
@ INPUT_CONTROL_SET_TIME
Definition input_internal.h:597
@ INPUT_CONTROL_NAV_ACTIVATE
Definition input_internal.h:613
@ INPUT_CONTROL_SET_RECORD_STATE
Definition input_internal.h:637
@ INPUT_CONTROL_UNSET_ES
Definition input_internal.h:623
@ INPUT_CONTROL_SET_INITIAL_VIEWPOINT
Definition input_internal.h:628
@ INPUT_CONTROL_SET_ES_CAT_IDS
Definition input_internal.h:625
@ INPUT_CONTROL_UPDATE_VIEWPOINT
Definition input_internal.h:629
@ INPUT_CONTROL_SET_SEEKPOINT_NEXT
Definition input_internal.h:606
@ INPUT_CONTROL_NEED_DATA_FRAME_NEXT
Definition input_internal.h:641
@ INPUT_CONTROL_NAV_UP
Definition input_internal.h:614
@ INPUT_CONTROL_SET_ES
Definition input_internal.h:621
@ INPUT_CONTROL_SET_VIEWPOINT
Definition input_internal.h:627
@ INPUT_CONTROL_ADD_SLAVE
Definition input_internal.h:634
@ INPUT_CONTROL_NAV_RIGHT
Definition input_internal.h:617
@ INPUT_CONTROL_SET_PROGRAM
Definition input_internal.h:599
@ INPUT_CONTROL_SET_CATEGORY_DELAY
Definition input_internal.h:631
@ INPUT_CONTROL_SET_SUBS_FPS
Definition input_internal.h:635
@ INPUT_CONTROL_NAV_POPUP
Definition input_internal.h:618
@ INPUT_CONTROL_SET_RENDERER
Definition input_internal.h:644
@ INPUT_CONTROL_SET_POSITION
Definition input_internal.h:595
@ INPUT_CONTROL_SET_SEEKPOINT
Definition input_internal.h:605
@ INPUT_CONTROL_SET_SEEKPOINT_PREV
Definition input_internal.h:607
@ INPUT_CONTROL_RESET_POSITION
Definition input_internal.h:611
@ INPUT_CONTROL_SET_TITLE_PREV
Definition input_internal.h:603
int input_ControlPush(input_thread_t *, int, const input_control_param_t *)
Definition input.c:1539
vlc_tick_t input_GetItemDuration(input_thread_t *input, vlc_tick_t duration)
Calculates the duration of the item in an input thread.
Definition input.c:3731
struct input_stats * input_stats_Create(void)
Definition stats.c:54
#define INPUT_CONTROL_FIFO_SIZE
Definition input_internal.h:438
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:1891
static input_thread_private_t * input_priv(input_thread_t *input)
Definition input_internal.h:581
#define input_Create(a, b, c)
Definition input_internal.h:408
Definition vlc_es.h:620
Definition vlc_input.h:168
Definition input_internal.h:495
int i_type
Definition input_internal.h:496
input_control_param_t param
Definition input_internal.h:497
Definition vlc_input_item.h:201
Describes an input and is used to spawn input_thread_t objects.
Definition vlc_input_item.h:98
Definition input_internal.h:768
vlc_mutex_t lock
Definition input_internal.h:769
uintmax_t value
Definition input_internal.h:771
uintmax_t updates
Definition input_internal.h:770
vlc_tick_t date
Definition input_internal.h:775
struct input_rate_t::@217365004205361377264234215311216352111171005176 samples[2]
Definition resource.c:58
Definition source.h:35
Definition vlc_input_item.h:542
Definition input_internal.h:779
atomic_uintmax_t lost_abuffers
Definition input_internal.h:787
atomic_uintmax_t demux_corrupted
Definition input_internal.h:782
atomic_uintmax_t lost_pictures
Definition input_internal.h:790
atomic_uintmax_t late_pictures
Definition input_internal.h:789
atomic_uintmax_t played_abuffers
Definition input_internal.h:786
atomic_uintmax_t displayed_pictures
Definition input_internal.h:788
atomic_uintmax_t decoded_video
Definition input_internal.h:785
input_rate_t input_bitrate
Definition input_internal.h:780
atomic_uintmax_t demux_discontinuity
Definition input_internal.h:783
input_rate_t demux_bitrate
Definition input_internal.h:781
atomic_uintmax_t decoded_audio
Definition input_internal.h:784
Private input fields.
Definition input_internal.h:502
int i_seekpoint_offset
Definition input_internal.h:539
sout_stream_t * p_sout
Definition input_internal.h:530
bool viewpoint_changed
Definition input_internal.h:534
struct vlc_input_es_out * p_es_out_display
Definition input_internal.h:532
int i_state
Definition input_internal.h:513
input_source_t ** slave
Definition input_internal.h:554
const struct vlc_input_thread_callbacks * cbs
Definition input_internal.h:505
vlc_tick_t last_pts
Definition input_internal.h:573
struct input_stats * stats
Definition input_internal.h:561
size_t i_control
Definition input_internal.h:566
float rate
Definition input_internal.h:518
bool enabled
Definition input_internal.h:574
struct input_thread_private_t::@307270023310324354006316251172316326073101326322 prev_frame
bool preparse_subitems
Definition input_internal.h:510
input_attachment_t ** attachment
Definition input_internal.h:543
bool b_pause_after_buffering
Definition input_internal.h:517
int i_attachment
Definition input_internal.h:542
bool b_out_pace_control
Definition input_internal.h:529
enum input_type type
Definition input_internal.h:508
vlc_tick_t i_start
Definition input_internal.h:521
vlc_renderer_item_t * p_renderer
Definition input_internal.h:535
vlc_tick_t i_stop
Definition input_internal.h:522
bool next_frame_need_data
Definition input_internal.h:578
input_control_t control[100]
Definition input_internal.h:567
bool end
Definition input_internal.h:575
vlc_interrupt_t interrupt
Definition input_internal.h:570
float slave_subs_rate
Definition input_internal.h:555
input_item_t * p_item
Definition input_internal.h:548
void * cbs_data
Definition input_internal.h:506
size_t i_slave
Definition input_internal.h:553
bool is_running
Definition input_internal.h:514
bool hw_dec
Definition input_internal.h:509
bool b_low_delay
Definition input_internal.h:525
bool b_recording
Definition input_internal.h:516
int i_title_offset
Definition input_internal.h:538
vlc_cond_t wait_control
Definition input_internal.h:565
vlc_mutex_t lock_control
Definition input_internal.h:564
vlc_tick_t i_jitter_max
Definition input_internal.h:526
vlc_viewpoint_t viewpoint
Definition input_internal.h:533
input_resource_t * p_resource
Definition input_internal.h:558
struct vlc_input_es_out * p_es_out
Definition input_internal.h:531
input_source_t * master
Definition input_internal.h:551
bool is_stopped
Definition input_internal.h:515
struct input_thread_t input
Definition input_internal.h:503
vlc_thread_t thread
Definition input_internal.h:569
Main structure representing an input thread.
Definition input_internal.h:44
struct vlc_object_t obj
Definition input_internal.h:45
Definition vlc_input.h:102
Video picture.
Definition vlc_picture.h:128
Definition vlc_sout.h:274
Condition variable.
Definition vlc_threads.h:270
Opaque structure representing an ES (Elementary Stream) track.
Definition es_out.c:103
Definition es_out.h:125
Definition input_internal.h:303
size_t count
Definition input_internal.h:305
input_attachment_t *const * array
Definition input_internal.h:304
Definition input_internal.h:227
int seekpoint
Definition input_internal.h:229
int title
Definition input_internal.h:228
Definition input_internal.h:247
enum vlc_vout_order vout_order
Definition input_internal.h:273
enum vlc_input_event_es::@112013003243272115334116343073233021307020053334 action
@ VLC_INPUT_ES_SELECTED
Definition input_internal.h:252
@ VLC_INPUT_ES_UPDATED
Definition input_internal.h:251
@ VLC_INPUT_ES_DELETED
Definition input_internal.h:250
@ VLC_INPUT_ES_ADDED
Definition input_internal.h:249
@ VLC_INPUT_ES_UNSELECTED
Definition input_internal.h:253
bool forced
Only valid with VLC_INPUT_ES_SELECTED, true if the track was selected by the user.
Definition input_internal.h:271
const char * title
Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition input_internal.h:262
const es_format_t * fmt
ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
Definition input_internal.h:266
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:258
Definition input_internal.h:309
vlc_mouse_t oldmouse
Definition input_internal.h:310
vlc_mouse_t newmouse
Definition input_internal.h:311
Definition input_internal.h:199
vlc_es_id_t * id
Definition input_internal.h:200
vlc_tick_t system_ts
Definition input_internal.h:202
unsigned frame_rate
Definition input_internal.h:205
double rate
Definition input_internal.h:204
vlc_tick_t ts
Definition input_internal.h:203
unsigned frame_rate_base
Definition input_internal.h:206
bool master
Definition input_internal.h:201
Definition input_internal.h:293
vlc_es_id_t * id
Definition input_internal.h:299
vlc_tick_t paused_date
Definition input_internal.h:298
@ VLC_INPUT_EVENT_OUTPUT_STATE_RESUMED
Definition input_internal.h:295
@ VLC_INPUT_EVENT_OUTPUT_STATE_PAUSED
Definition input_internal.h:296
enum vlc_input_event_output_state::@164371246017333227361361044050007236147157335137 action
Definition input_internal.h:232
bool scrambled
Definition input_internal.h:243
const char * title
Definition input_internal.h:242
enum vlc_input_event_program::@243044261214220036377234362133062337137311053340 action
@ VLC_INPUT_PROGRAM_UPDATED
Definition input_internal.h:236
@ VLC_INPUT_PROGRAM_SCRAMBLED
Definition input_internal.h:238
@ VLC_INPUT_PROGRAM_SELECTED
Definition input_internal.h:237
@ VLC_INPUT_PROGRAM_DELETED
Definition input_internal.h:235
@ VLC_INPUT_PROGRAM_ADDED
Definition input_internal.h:234
int id
Definition input_internal.h:240
Definition input_internal.h:276
float quality
Definition input_internal.h:277
float strength
Definition input_internal.h:278
Definition input_internal.h:183
vlc_tick_t date
Definition input_internal.h:186
input_state_e value
Definition input_internal.h:184
Definition input_internal.h:190
vlc_tick_t time
Definition input_internal.h:192
double position
Definition input_internal.h:191
vlc_tick_t normal_time
Definition input_internal.h:193
bool live
Definition input_internal.h:195
vlc_tick_t length
Definition input_internal.h:194
Definition input_internal.h:210
size_t selected_idx
Definition input_internal.h:222
size_t count
Definition input_internal.h:220
enum vlc_input_event_title::@242044346003020067153243044030050373312066034005 action
@ VLC_INPUT_TITLE_NEW_LIST
Definition input_internal.h:212
@ VLC_INPUT_TITLE_SELECTED
Definition input_internal.h:213
input_title_t *const * array
Definition input_internal.h:219
Definition input_internal.h:282
enum vlc_input_event_vout::@273213035201104244176120172302012275012034166014 action
vlc_es_id_t * id
Definition input_internal.h:289
enum vlc_vout_order order
Definition input_internal.h:288
@ VLC_INPUT_EVENT_VOUT_STOPPED
Definition input_internal.h:285
@ VLC_INPUT_EVENT_VOUT_STARTED
Definition input_internal.h:284
vout_thread_t * vout
Definition input_internal.h:287
Definition input_internal.h:315
int frame_previous_status
Definition input_internal.h:366
struct vlc_input_event_state state
Definition input_internal.h:320
unsigned vbi_page
Definition input_internal.h:352
float cache
Definition input_internal.h:344
struct vlc_input_event_program program
Definition input_internal.h:334
int nav_type
Definition input_internal.h:362
int frame_next_status
Definition input_internal.h:364
struct vlc_input_event_signal signal
Definition input_internal.h:342
const struct input_stats_t * stats
Definition input_internal.h:340
struct vlc_input_event_chapter chapter
Definition input_internal.h:332
struct vlc_input_event_output_clock output_clock
Definition input_internal.h:328
struct vlc_input_event_title title
Definition input_internal.h:330
bool record
Definition input_internal.h:338
float rate
Definition input_internal.h:322
struct vlc_input_event_vout vout
Definition input_internal.h:346
struct vlc_input_event_es es
Definition input_internal.h:336
float subs_fps
Definition input_internal.h:356
struct vlc_input_event_times times
Definition input_internal.h:326
struct vlc_input_event_output_state output_state
Definition input_internal.h:348
input_item_node_t * subitems
Definition input_internal.h:350
int capabilities
cf.
Definition input_internal.h:324
input_event_type_e type
Definition input_internal.h:316
picture_t * thumbnail
Definition input_internal.h:358
bool vbi_transparent
Definition input_internal.h:354
struct vlc_input_event_attachments attachments
Definition input_internal.h:360
Definition input_internal.h:371
bool(* on_event)(input_thread_t *input, const struct vlc_input_event *event, void *userdata)
Definition input_internal.h:372
Definition input_internal.h:377
enum input_type type
Definition input_internal.h:378
bool subitems
Definition input_internal.h:391
bool interact
Definition input_internal.h:393
vlc_renderer_item_t * renderer
Definition input_internal.h:386
struct vlc_input_thread_cfg::@252206226215235300130301167170357313236023033375 preparsing
void * cbs_data
Definition input_internal.h:388
enum vlc_input_thread_cfg::@042213145002057024107310117012017071064302123153 hw_dec
@ INPUT_CFG_HW_DEC_DEFAULT
Definition input_internal.h:381
@ INPUT_CFG_HW_DEC_ENABLED
Definition input_internal.h:383
@ INPUT_CFG_HW_DEC_DISABLED
Definition input_internal.h:382
const struct vlc_input_thread_callbacks * cbs
Definition input_internal.h:387
input_resource_t * resource
Definition input_internal.h:385
Mouse state.
Definition vlc_mouse.h:46
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:441
vlc_tick_t pts
Definition input_internal.h:486
int steps
Definition input_internal.h:489
char * dir_path
Definition input_internal.h:482
double f_val
Definition input_internal.h:455
unsigned page
Definition input_internal.h:474
unsigned frame_rate
Definition input_internal.h:487
char * str_ids
Definition input_internal.h:465
vlc_es_id_t * id
Definition input_internal.h:444
vlc_es_id_t ** ids
Definition input_internal.h:447
bool b_fast_seek
Definition input_internal.h:450
vlc_tick_t i_val
Definition input_internal.h:451
bool enabled
Definition input_internal.h:478
enum es_format_category_e cat
Definition input_internal.h:446
vlc_tick_t delay
Definition input_internal.h:460
unsigned frame_rate_base
Definition input_internal.h:488
vlc_viewpoint_t viewpoint
Definition input_internal.h:443
bool failed
Definition input_internal.h:490
vlc_value_t val
Definition input_internal.h:442
VLC value structure.
Definition vlc_variables.h:122
#define container_of(ptr, type, member)
Definition vlc_common.h:1069
Demultiplexer modules interface.
es_format_category_e
ES Categories.
Definition vlc_es.h:603
Input thread interface.
struct input_item_slave input_item_slave_t
Definition vlc_input_item.h:43
int64_t vlc_tick_t
High precision date or time interval.
Definition vlc_tick.h:48