
Defines | |
| #define | INIT_COUNTER(c, compute) |
| #define | EXIT_COUNTER(c) |
| #define | CL_CO(c) stats_CounterClean( p_input->p->counters.p_##c ); p_input->p->counters.p_##c = NULL; |
| #define | I(c) stats_Update( p_input->p->counters.c, i_delta, NULL ) |
Enumerations | |
| enum | { SUB_NOFLAG = 0x00, SUB_FORCED = 0x01, SUB_CANFAIL = 0x02 } |
Functions | |
| static void | Destructor (input_thread_t *p_input) |
| Input destructor (called when the object's refcount reaches 0). | |
| static void * | Run (void *) |
| static input_thread_t * | Create (vlc_object_t *, input_item_t *, const char *, bool, input_resource_t *) |
| static int | Init (input_thread_t *p_input) |
| static void | End (input_thread_t *p_input) |
| static void | MainLoop (input_thread_t *p_input, bool b_interactive) |
| MainLoop The main input loop. | |
| static void | ObjectKillChildrens (input_thread_t *, vlc_object_t *) |
| static int | ControlPop (input_thread_t *, int *, vlc_value_t *, mtime_t i_deadline, bool b_postpone_seek) |
| static void | ControlRelease (int i_type, vlc_value_t val) |
| static bool | ControlIsSeekRequest (int i_type) |
| static bool | Control (input_thread_t *, int, vlc_value_t) |
| static int | UpdateTitleSeekpointFromAccess (input_thread_t *) |
| static void | UpdateGenericFromAccess (input_thread_t *) |
| static int | UpdateTitleSeekpointFromDemux (input_thread_t *) |
| static void | UpdateGenericFromDemux (input_thread_t *) |
| static void | MRLSections (const char *, int *, int *, int *, int *) |
| static input_source_t * | InputSourceNew (input_thread_t *) |
| static int | InputSourceInit (input_thread_t *, input_source_t *, const char *, const char *psz_forced_demux, bool b_in_can_fail) |
| static void | InputSourceClean (input_source_t *) |
| static void | InputSourceMeta (input_thread_t *, input_source_t *, vlc_meta_t *) |
| static void | SlaveDemux (input_thread_t *p_input, bool *pb_demux_polled) |
| static void | SlaveSeek (input_thread_t *p_input) |
| static void | InputMetaUser (input_thread_t *p_input, vlc_meta_t *p_meta) |
| static void | InputUpdateMeta (input_thread_t *p_input, vlc_meta_t *p_meta) |
| static void | InputGetExtraFiles (input_thread_t *p_input, int *pi_list, char ***pppsz_list, const char *psz_access, const char *psz_path) |
| static void | AppendAttachment (int *pi_attachment, input_attachment_t ***ppp_attachment, int i_new, input_attachment_t **pp_new) |
| static void | SubtitleAdd (input_thread_t *p_input, char *psz_subtitle, unsigned i_flags) |
| static void | input_ChangeState (input_thread_t *p_input, int i_state) |
| input_thread_t * | input_Create (vlc_object_t *p_parent, input_item_t *p_item, const char *psz_log, input_resource_t *p_resource) |
| Create a new input_thread_t. | |
| input_thread_t * | input_CreateAndStart (vlc_object_t *p_parent, input_item_t *p_item, const char *psz_log) |
| Create a new input_thread_t and start it. | |
| int | input_Read (vlc_object_t *p_parent, input_item_t *p_item) |
| Initialize an input thread and run it until it stops by itself. | |
| int | input_Preparse (vlc_object_t *p_parent, input_item_t *p_item) |
| Initialize an input and initialize it to preparse the item This function is blocking. | |
| int | input_Start (input_thread_t *p_input) |
| Start a input_thread_t created by input_Create. | |
| void | input_Stop (input_thread_t *p_input, bool b_abort) |
| Request a running input thread to stop and die. | |
| void | input_Join (input_thread_t *p_input) |
| void | input_Release (input_thread_t *p_input) |
| void | input_Close (input_thread_t *p_input) |
| Close an input. | |
| input_item_t * | input_GetItem (input_thread_t *p_input) |
| Get the item from an input thread FIXME it does not increase ref count of the item. | |
| static void | MainLoopDemux (input_thread_t *p_input, bool *pb_changed, bool *pb_demux_polled, mtime_t i_start_mdate) |
| MainLoopDemux It asks the demuxer to demux some data. | |
| static int | MainLoopTryRepeat (input_thread_t *p_input, mtime_t *pi_start_mdate) |
| static void | MainLoopInterface (input_thread_t *p_input) |
| MainLoopInterface It update the variables used by the interfaces. | |
| static void | MainLoopStatistic (input_thread_t *p_input) |
| MainLoopStatistic It updates the globals statics. | |
| static void | InitStatistics (input_thread_t *p_input) |
| static void | InitTitle (input_thread_t *p_input) |
| static void | StartTitle (input_thread_t *p_input) |
| static void | LoadSubtitles (input_thread_t *p_input) |
| static void | LoadSlaves (input_thread_t *p_input) |
| static void | UpdatePtsDelay (input_thread_t *p_input) |
| static void | InitPrograms (input_thread_t *p_input) |
| void | input_ControlPush (input_thread_t *p_input, int i_type, vlc_value_t *p_val) |
| static int | ControlGetReducedIndexLocked (input_thread_t *p_input) |
| static void | ControlPause (input_thread_t *p_input, mtime_t i_control_date) |
| static void | ControlUnpause (input_thread_t *p_input, mtime_t i_control_date) |
| static int | UpdateTitleSeekpoint (input_thread_t *p_input, int i_title, int i_seekpoint) |
| static void | InputGetExtraFilesPattern (input_thread_t *p_input, int *pi_list, char ***pppsz_list, const char *psz_path, const char *psz_match, const char *psz_format, int i_start, int i_stop) |
| void | input_SplitMRL (const char **access, const char **demux, const char **path, const char **anchor, char *buf) |
| static const char * | MRLSeekPoint (const char *str, int *title, int *chapter) |
| void | input_UpdateStatistic (input_thread_t *p_input, input_statistic_t i_type, int i_delta) |
| It will update internal input statistics from external sources. | |
| char * | input_CreateFilename (vlc_object_t *p_obj, const char *psz_path, const char *psz_prefix, const char *psz_extension) |
| This function creates a sane filename path. | |
| #define CL_CO | ( | c | ) | stats_CounterClean( p_input->p->counters.p_##c ); p_input->p->counters.p_##c = NULL; |
Referenced by End().
| #define EXIT_COUNTER | ( | c | ) |
do { if( p_input->p->counters.p_##c ) \ stats_CounterClean( p_input->p->counters.p_##c );\ p_input->p->counters.p_##c = NULL; } while(0)
Referenced by Init().
| #define I | ( | c | ) | stats_Update( p_input->p->counters.c, i_delta, NULL ) |
Referenced by input_UpdateStatistic(), and vlc_UrlParse().
| #define INIT_COUNTER | ( | c, | ||
| compute | ||||
| ) |
p_input->p->counters.p_##c = \ stats_CounterCreate( STATS_##compute);
Referenced by InitStatistics().
| static void AppendAttachment | ( | int * | pi_attachment, | |
| input_attachment_t *** | ppp_attachment, | |||
| int | i_new, | |||
| input_attachment_t ** | pp_new | |||
| ) | [static] |
References xrealloc().
Referenced by InputSourceInit(), and InputSourceMeta().
| static bool Control | ( | input_thread_t * | p_input, | |
| int | i_type, | |||
| vlc_value_t | val | |||
| ) | [static] |
References access_Control(), ACCESS_GET_META, ACCESS_SET_SEEKPOINT, ACCESS_SET_TITLE, vlc_value_t::b_bool, input_thread_private_t::b_can_pace_control, input_thread_private_t::b_can_pause, input_thread_private_t::b_can_rate_control, input_source_t::b_can_stream_record, input_source_t::b_eof, input_thread_private_t::b_fast_seek, input_thread_private_t::b_out_pace_control, input_thread_private_t::b_recording, input_source_t::b_rescale_ts, input_source_t::b_title_demux, ControlPause(), ControlRelease(), ControlUnpause(), demux_Control(), DEMUX_GET_LENGTH, DEMUX_GET_META, DEMUX_GET_TIME, DEMUX_SET_GROUP, DEMUX_SET_POSITION, DEMUX_SET_RATE, DEMUX_SET_RECORD_STATE, DEMUX_SET_SEEKPOINT, DEMUX_SET_TIME, DEMUX_SET_TITLE, es_out_Control(), ES_OUT_RESET_PCR, ES_OUT_RESTART_ES_BY_ID, ES_OUT_SET_ES_BY_ID, ES_OUT_SET_GROUP, es_out_SetFrameNext(), es_out_SetRate(), es_out_SetRecordState(), es_out_SetTime(), vlc_value_t::f_float, input_thread_private_t::i_bookmark, seekpoint_t::i_byte_offset, vlc_value_t::i_int, input_thread_private_t::i_rate, access_t::i_seekpoint, input_title_t::i_seekpoint, demux_t::i_seekpoint, input_thread_private_t::i_slave, input_thread_private_t::i_state, vlc_value_t::i_time, seekpoint_t::i_time_offset, access_t::i_title, demux_t::i_title, input_source_t::i_title, access_t::info, demux_t::info, input_thread_private_t::input, input_ChangeState(), INPUT_CONTROL_ADD_SLAVE, INPUT_CONTROL_ADD_SUBTITLE, INPUT_CONTROL_RESTART_ES, INPUT_CONTROL_SET_AUDIO_DELAY, INPUT_CONTROL_SET_BOOKMARK, INPUT_CONTROL_SET_DIE, INPUT_CONTROL_SET_ES, INPUT_CONTROL_SET_FRAME_NEXT, INPUT_CONTROL_SET_POSITION, INPUT_CONTROL_SET_PROGRAM, INPUT_CONTROL_SET_RATE, INPUT_CONTROL_SET_RECORD_STATE, INPUT_CONTROL_SET_SEEKPOINT, INPUT_CONTROL_SET_SEEKPOINT_NEXT, INPUT_CONTROL_SET_SEEKPOINT_PREV, INPUT_CONTROL_SET_SPU_DELAY, INPUT_CONTROL_SET_STATE, INPUT_CONTROL_SET_TIME, INPUT_CONTROL_SET_TITLE, INPUT_CONTROL_SET_TITLE_NEXT, INPUT_CONTROL_SET_TITLE_PREV, INPUT_RATE_DEFAULT, INPUT_RATE_MAX, INPUT_RATE_MIN, input_SendEventAudioDelay(), input_SendEventRate(), input_SendEventRecord(), input_SendEventSeekpoint(), input_SendEventSubtitleDelay(), input_SendEventTitle(), InputSourceClean(), InputSourceInit(), InputSourceNew(), InputUpdateMeta(), input_item_t::lock, make_URI(), mdate(), msg_Dbg, msg_Err, msg_Warn, ObjectKillChildrens(), input_thread_t::p, input_source_t::p_access, input_source_t::p_demux, input_thread_private_t::p_es_out, input_thread_private_t::p_es_out_display, input_thread_private_t::p_item, input_thread_private_t::p_sout, input_source_t::p_stream, PAUSE_S, PLAYING_S, input_thread_private_t::pp_bookmark, vlc_value_t::psz_string, input_title_t::seekpoint, input_thread_private_t::slave, SlaveSeek(), stream_Control(), STREAM_CONTROL_ACCESS, stream_Size(), SubtitleAdd(), TAB_APPEND, input_source_t::title, UpdatePtsDelay(), var_GetFloat, var_GetTime, vlc_meta_New(), vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_OBJECT.
Referenced by MainLoop().
| static int ControlGetReducedIndexLocked | ( | input_thread_t * | p_input | ) | [static] |
References input_thread_private_t::control, input_thread_private_t::i_control, input_control_t::i_type, INPUT_CONTROL_SET_BOOKMARK, INPUT_CONTROL_SET_POSITION, INPUT_CONTROL_SET_PROGRAM, INPUT_CONTROL_SET_RATE, INPUT_CONTROL_SET_SEEKPOINT, INPUT_CONTROL_SET_STATE, INPUT_CONTROL_SET_TIME, INPUT_CONTROL_SET_TITLE, and input_thread_t::p.
Referenced by ControlPop().
| static bool ControlIsSeekRequest | ( | int | i_type | ) | [static] |
References INPUT_CONTROL_SET_BOOKMARK, INPUT_CONTROL_SET_POSITION, INPUT_CONTROL_SET_SEEKPOINT, INPUT_CONTROL_SET_SEEKPOINT_NEXT, INPUT_CONTROL_SET_SEEKPOINT_PREV, INPUT_CONTROL_SET_TIME, INPUT_CONTROL_SET_TITLE, INPUT_CONTROL_SET_TITLE_NEXT, and INPUT_CONTROL_SET_TITLE_PREV.
Referenced by ControlPop(), and MainLoop().
| static void ControlPause | ( | input_thread_t * | p_input, | |
| mtime_t | i_control_date | |||
| ) | [static] |
References access_Control(), ACCESS_SET_PAUSE_STATE, input_thread_private_t::b_can_pause, demux_Control(), DEMUX_SET_PAUSE_STATE, es_out_SetPauseState(), input_thread_private_t::input, input_ChangeState(), msg_Warn, input_thread_t::p, input_source_t::p_access, input_source_t::p_demux, and input_thread_private_t::p_es_out.
Referenced by Control().
| static int ControlPop | ( | input_thread_t * | p_input, | |
| int * | pi_type, | |||
| vlc_value_t * | p_val, | |||
| mtime_t | i_deadline, | |||
| bool | b_postpone_seek | |||
| ) | [inline, static] |
References input_thread_private_t::control, ControlGetReducedIndexLocked(), ControlIsSeekRequest(), input_thread_private_t::i_control, input_control_t::i_type, input_thread_private_t::lock_control, input_thread_t::p, input_control_t::val, vlc_cond_timedwait(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_object_alive, and input_thread_private_t::wait_control.
Referenced by MainLoop().
| static void ControlRelease | ( | int | i_type, | |
| vlc_value_t | val | |||
| ) | [static] |
References INPUT_CONTROL_ADD_SLAVE, INPUT_CONTROL_ADD_SUBTITLE, and vlc_value_t::psz_string.
Referenced by Control(), Destructor(), and input_ControlPush().
| static void ControlUnpause | ( | input_thread_t * | p_input, | |
| mtime_t | i_control_date | |||
| ) | [static] |
References access_Control(), ACCESS_SET_PAUSE_STATE, input_thread_private_t::b_can_pause, demux_Control(), DEMUX_SET_PAUSE_STATE, es_out_SetPauseState(), input_thread_private_t::input, input_ChangeState(), INPUT_CONTROL_SET_DIE, input_ControlPush(), msg_Warn, input_thread_t::p, input_source_t::p_access, input_source_t::p_demux, input_thread_private_t::p_es_out, and PLAYING_S.
Referenced by Control().
| static input_thread_t * Create | ( | vlc_object_t * | p_parent, | |
| input_item_t * | p_item, | |||
| const char * | psz_header, | |||
| bool | b_quick, | |||
| input_resource_t * | p_resource | |||
| ) | [static] |
References atoll(), input_thread_private_t::attachment, input_thread_private_t::b_abort, input_source_t::b_can_pace_control, input_thread_private_t::b_can_pace_control, input_source_t::b_can_rate_control, input_source_t::b_eof, input_thread_t::b_eof, input_thread_private_t::b_out_pace_control, input_thread_t::b_preparsing, input_thread_private_t::b_recording, input_source_t::b_rescale_ts, input_source_t::b_title_demux, input_thread_private_t::bookmark, input_thread_private_t::counters, input_thread_private_t::counters_lock, Destructor(), input_thread_private_t::i_attachment, input_thread_private_t::i_bookmark, seekpoint_t::i_byte_offset, input_thread_private_t::i_control, input_thread_t::i_flags, input_item_t::i_options, input_thread_private_t::i_rate, input_thread_private_t::i_run, input_source_t::i_seekpoint_offset, input_thread_private_t::i_seekpoint_offset, input_thread_private_t::i_slave, input_thread_private_t::i_start, input_thread_private_t::i_state, input_thread_private_t::i_stop, input_thread_private_t::i_time, seekpoint_t::i_time_offset, input_source_t::i_title, input_thread_private_t::i_title, input_source_t::i_title_offset, input_thread_private_t::i_title_offset, input_thread_private_t::input, INPUT_ADD_BOOKMARK, input_ConfigVarInit(), input_Control(), input_ControlVarInit(), input_EsOutNew(), input_item_GetName(), input_item_SetNowPlaying(), input_resource_Hold(), input_resource_New(), input_resource_SetInput(), input_SendEventMeta(), input_thread_private_t::is_running, input_item_t::lock, input_thread_private_t::lock_control, msg_Dbg, OBJECT_FLAGS_QUIET, input_item_t::optflagc, input_item_t::optflagv, input_thread_t::p, input_source_t::p_access, input_source_t::p_demux, input_thread_private_t::p_es_out, input_thread_private_t::p_es_out_display, input_thread_private_t::p_item, input_thread_private_t::p_resource, input_thread_private_t::p_resource_private, input_thread_private_t::p_sout, input_item_t::p_stats, input_source_t::p_stream, input_thread_private_t::pp_bookmark, input_item_t::ppsz_options, input_thread_t::psz_header, seekpoint_t::psz_name, psz_name, input_thread_private_t::slave, stats_NewInputStats(), strdup(), TAB_INIT, input_source_t::title, input_thread_private_t::title, var_GetNonEmptyString, var_InheritBool, var_OptionParse(), vlc_cond_init(), vlc_custom_create, vlc_gc_incref, VLC_INPUT_OPTION_TRUSTED, vlc_mutex_init(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, vlc_object_set_destructor, vlc_seekpoint_Delete(), vlc_seekpoint_New(), and input_thread_private_t::wait_control.
Referenced by input_Create(), input_Preparse(), and input_Read().
| static void Destructor | ( | input_thread_t * | p_input | ) | [static] |
Input destructor (called when the object's refcount reaches 0).
References input_thread_private_t::control, ControlRelease(), input_thread_private_t::counters, input_thread_private_t::counters_lock, es_out_Delete(), input_thread_private_t::i_control, input_control_t::i_type, input_item_GetName(), input_resource_Release(), input_thread_private_t::lock_control, msg_Dbg, input_thread_t::p, input_thread_private_t::p_es_out_display, input_thread_private_t::p_item, input_thread_private_t::p_resource, input_thread_private_t::p_resource_private, psz_name, input_control_t::val, vlc_cond_destroy(), vlc_gc_decref, vlc_mutex_destroy(), and input_thread_private_t::wait_control.
Referenced by Create().
| static void End | ( | input_thread_t * | p_input | ) | [static] |
References input_thread_private_t::attachment, input_thread_t::b_preparsing, CL_CO, END_S, es_out_Delete(), ES_OUT_MODE_END, ES_OUT_MODE_NONE, es_out_SetMode(), input_thread_private_t::i_attachment, input_thread_private_t::i_slave, input_thread_private_t::input, input_ChangeState(), input_ControlVarStop(), input_resource_RequestSout(), input_resource_SetInput(), input_resource_Terminate(), InputSourceClean(), libvlc_stats, input_item_t::lock, input_thread_t::p, input_thread_private_t::p_es_out, input_thread_private_t::p_es_out_display, input_thread_private_t::p_item, input_thread_private_t::p_resource, input_thread_private_t::p_resource_private, input_thread_private_t::p_sout, input_item_t::p_stats, input_thread_private_t::slave, stats_ComputeInputStats(), TAB_CLEAN, vlc_input_attachment_Delete(), vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by input_Preparse(), input_Read(), and Run().
| static int Init | ( | input_thread_t * | p_input | ) | [static] |
References input_thread_private_t::b_can_pace_control, input_thread_private_t::b_out_pace_control, input_thread_t::b_preparsing, demux_Control(), DEMUX_GET_LENGTH, ERROR_S, es_out_Delete(), ES_OUT_MODE_END, es_out_SetMode(), EXIT_COUNTER, input_item_t::i_options, sout_instance_t::i_out_pace_nocontrol, input_thread_private_t::i_rate, input_thread_private_t::i_slave, InitPrograms(), InitStatistics(), InitTitle(), input_thread_private_t::input, input_ChangeState(), INPUT_CONTROL_SET_RATE, input_ControlPush(), input_EsOutTimeshiftNew(), input_item_GetDuration(), INPUT_RATE_DEFAULT, input_resource_RequestSout(), input_resource_SetInput(), input_resource_Terminate(), input_SendEventCache(), input_SendEventLength(), input_SendEventPosition(), InputMetaUser(), InputSourceInit(), InputSourceMeta(), InputUpdateMeta(), libvlc_stats, LoadSlaves(), LoadSubtitles(), msg_Dbg, OPENING_S, input_thread_t::p, input_source_t::p_access, input_source_t::p_demux, input_thread_private_t::p_es_out, input_thread_private_t::p_es_out_display, input_thread_private_t::p_item, input_thread_private_t::p_resource, input_thread_private_t::p_resource_private, input_thread_private_t::p_sout, input_source_t::p_stream, PLAYING_S, input_item_t::ppsz_options, input_item_t::psz_uri, input_thread_private_t::slave, StartTitle(), input_thread_private_t::thread, var_InheritFloat, var_SetBool, var_SetInteger, var_SetString, vlc_meta_New(), vlc_set_priority(), and VLC_THREAD_PRIORITY_LOW.
Referenced by input_Preparse(), input_Read(), and Run().
| static void InitPrograms | ( | input_thread_t * | p_input | ) | [static] |
References demux_Control(), DEMUX_SET_GROUP, es_out_GetGroupForced(), ES_OUT_MODE_ALL, ES_OUT_MODE_PARTIAL, es_out_SetMode(), vlc_list_t::i_count, input_thread_private_t::input, INSERT_ELEM, list, input_thread_t::p, input_source_t::p_demux, input_thread_private_t::p_es_out, input_thread_private_t::p_sout, vlc_list_t::p_values, strtok_r(), TAB_CLEAN, TAB_INIT, UpdatePtsDelay(), var_GetBool, and var_GetNonEmptyString.
Referenced by Init().
| static void InitStatistics | ( | input_thread_t * | p_input | ) | [static] |
| static void InitTitle | ( | input_thread_t * | p_input | ) | [static] |
References input_source_t::b_can_pace_control, input_thread_private_t::b_can_pace_control, input_source_t::b_can_pause, input_thread_private_t::b_can_pause, input_source_t::b_can_rate_control, input_thread_private_t::b_can_rate_control, input_thread_t::b_preparsing, input_source_t::i_seekpoint_offset, input_thread_private_t::i_seekpoint_offset, input_source_t::i_title, input_thread_private_t::i_title, input_source_t::i_title_offset, input_thread_private_t::i_title_offset, input_thread_private_t::input, input_ControlVarNavigation(), input_SendEventTitle(), input_item_t::lock, input_thread_t::p, input_thread_private_t::p_item, input_source_t::title, input_thread_private_t::title, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by Init().
| static void input_ChangeState | ( | input_thread_t * | p_input, | |
| int | i_state | |||
| ) | [static] |
References input_thread_t::b_eof, input_thread_t::b_error, END_S, ERROR_S, input_thread_private_t::i_state, input_item_SetErrorWhenReading(), input_SendEventState(), input_thread_t::p, and input_thread_private_t::p_item.
Referenced by Control(), ControlPause(), ControlUnpause(), End(), Init(), input_Start(), MainLoop(), and MainLoopDemux().
| void input_Close | ( | input_thread_t * | p_input | ) |
Close an input.
It does not call input_Stop itself.
References input_Join(), and input_Release().
Referenced by LoopInput(), and vlm_OnMediaUpdate().
| void input_ControlPush | ( | input_thread_t * | p_input, | |
| int | i_type, | |||
| vlc_value_t * | p_val | |||
| ) |
References input_thread_private_t::control, ControlRelease(), input_thread_private_t::i_control, input_control_t::i_type, INPUT_CONTROL_FIFO_SIZE, INPUT_CONTROL_SET_DIE, input_thread_private_t::lock_control, msg_Err, input_thread_t::p, input_control_t::val, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), and input_thread_private_t::wait_control.
Referenced by BookmarkCallback(), ControlUnpause(), ESCallback(), EsDelayCallback(), FrameNextCallback(), Init(), input_Stop(), input_vaControl(), MainLoopTryRepeat(), NavigationCallback(), PositionCallback(), ProgramCallback(), RateCallback(), RecordCallback(), SeekpointCallback(), StartTitle(), StateCallback(), TimeCallback(), TitleCallback(), and TsRun().
| input_thread_t* input_Create | ( | vlc_object_t * | p_parent, | |
| input_item_t * | p_item, | |||
| const char * | psz_log, | |||
| input_resource_t * | p_resource | |||
| ) |
Create a new input_thread_t.
You need to call input_Start on it when you are done adding callback on the variables/events you want to monitor.
| p_parent | a vlc_object | |
| p_item | an input item | |
| psz_log | an optional prefix for this input logs | |
| p_resource | an optional input ressource |
References Create().
| input_thread_t* input_CreateAndStart | ( | vlc_object_t * | p_parent, | |
| input_item_t * | p_item, | |||
| const char * | psz_log | |||
| ) |
Create a new input_thread_t and start it.
Provided for convenience.
References input_Create, input_Start(), and vlc_object_release.
| char* input_CreateFilename | ( | vlc_object_t * | p_obj, | |
| const char * | psz_path, | |||
| const char * | psz_prefix, | |||
| const char * | psz_extension | |||
| ) |
This function creates a sane filename path.
References asprintf(), DIR_SEP, filename_sanitize(), path_sanitize(), str_format, and vlc_opendir().
Referenced by EsOutSetRecord().
| input_item_t* input_GetItem | ( | input_thread_t * | p_input | ) |
Get the item from an input thread FIXME it does not increase ref count of the item.
Get the input item for an input thread.
if it is used after p_input is destroyed nothing prevent it from being freed.
References input_thread_t::p, and input_thread_private_t::p_item.
Referenced by DisplayVoutTitle(), EsOutMeta(), EsOutUpdateInfo(), str_format_meta(), and WaitPreparsed().
| void input_Join | ( | input_thread_t * | p_input | ) |
References input_thread_private_t::is_running, input_thread_t::p, input_thread_private_t::thread, and vlc_join().
Referenced by input_Close(), vlm_ControlMediaInstanceStart(), and vlm_MediaInstanceDelete().
| int input_Preparse | ( | vlc_object_t * | p_parent, | |
| input_item_t * | p_item | |||
| ) |
Initialize an input and initialize it to preparse the item This function is blocking.
It will only accept parsing regular files.
| p_parent | a vlc_object_t | |
| p_item | an input item |
References Create(), End(), Init(), and vlc_object_release.
Referenced by Preparse().
| int input_Read | ( | vlc_object_t * | p_parent, | |
| input_item_t * | p_item | |||
| ) |
Initialize an input thread and run it until it stops by itself.
| p_parent | a vlc_object | |
| p_item | an input item |
References Create(), End(), Init(), MainLoop(), and vlc_object_release.
| void input_Release | ( | input_thread_t * | p_input | ) |
References vlc_object_release.
Referenced by input_Close(), vlm_ControlMediaInstanceStart(), and vlm_MediaInstanceDelete().
| void input_SplitMRL | ( | const char ** | access, | |
| const char ** | demux, | |||
| const char ** | path, | |||
| const char ** | anchor, | |||
| char * | buf | |||
| ) |
Referenced by InputSourceInit(), and stream_UrlNew().
| int input_Start | ( | input_thread_t * | p_input | ) |
Start a input_thread_t created by input_Create.
You must not start an already running input_thread_t.
| the | input thread to start |
References ERROR_S, input_ChangeState(), input_thread_private_t::is_running, msg_Err, input_thread_t::p, Run(), input_thread_private_t::thread, vlc_clone(), and VLC_THREAD_PRIORITY_INPUT.
Referenced by input_CreateAndStart(), PlayItem(), vlm_ControlMediaInstanceStart(), and vlm_OnMediaUpdate().
| void input_Stop | ( | input_thread_t * | p_input, | |
| bool | b_abort | |||
| ) |
Request a running input thread to stop and die.
b_abort must be true when a user stop is requested and not because you have detected an error or an eof. It will be used to properly send the INPUT_EVENT_ABORT event.
| p_input | the input thread to stop | |
| b_abort | true if the input has been aborted by a user request |
References input_thread_private_t::b_abort, INPUT_CONTROL_SET_DIE, input_ControlPush(), input_thread_private_t::lock_control, ObjectKillChildrens(), input_thread_t::p, vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_OBJECT.
Referenced by GoAndPreparse(), LoopInput(), vlm_ControlMediaInstanceStart(), vlm_MediaInstanceDelete(), and vlm_OnMediaUpdate().
| void input_UpdateStatistic | ( | input_thread_t * | , | |
| input_statistic_t | , | |||
| int | i_delta | |||
| ) |
It will update internal input statistics from external sources.
XXX For now, the only one allowed to do it is stream_out and input core.
References input_thread_private_t::counters, input_thread_private_t::counters_lock, I, input_thread_private_t::i_state, INIT_S, INPUT_STATISTIC_DECODED_AUDIO, INPUT_STATISTIC_DECODED_SUBTITLE, INPUT_STATISTIC_DECODED_VIDEO, INPUT_STATISTIC_SENT_BYTE, INPUT_STATISTIC_SENT_PACKET, msg_Err, input_thread_t::p, input_thread_private_t::p_sout_send_bitrate, input_thread_private_t::p_sout_sent_bytes, stats_Update(), vlc_mutex_lock(), and vlc_mutex_unlock().
| static void InputGetExtraFiles | ( | input_thread_t * | p_input, | |
| int * | pi_list, | |||
| char *** | pppsz_list, | |||
| const char * | psz_access, | |||
| const char * | psz_path | |||
| ) | [static] |
References InputGetExtraFilesPattern(), and TAB_INIT.
Referenced by InputSourceInit().
| static void InputGetExtraFilesPattern | ( | input_thread_t * | p_input, | |
| int * | pi_list, | |||
| char *** | pppsz_list, | |||
| const char * | psz_path, | |||
| const char * | psz_match, | |||
| const char * | psz_format, | |||
| int | i_start, | |||
| int | i_stop | |||
| ) | [static] |
References asprintf(), msg_Dbg, strdup(), TAB_APPEND, TAB_INIT, and vlc_stat().
Referenced by InputGetExtraFiles().
| static void InputMetaUser | ( | input_thread_t * | p_input, | |
| vlc_meta_t * | p_meta | |||
| ) | [static] |
References EnsureUTF8(), psz_name, var_GetNonEmptyString, and vlc_meta_Set().
Referenced by Init().
| static void InputSourceClean | ( | input_source_t * | in | ) | [static] |
| static int InputSourceInit | ( | input_thread_t * | p_input, | |
| input_source_t * | in, | |||
| const char * | psz_mrl, | |||
| const char * | psz_forced_demux, | |||
| bool | b_in_can_fail | |||
| ) | [static] |
References _, ACCESS_CAN_CONTROL_PACE, ACCESS_CAN_PAUSE, ACCESS_CAN_SEEK, access_Control(), access_Delete(), ACCESS_GET_PTS_DELAY, ACCESS_GET_TITLE_INFO, access_New, AppendAttachment(), input_thread_private_t::attachment, input_source_t::b_can_pace_control, input_source_t::b_can_pause, input_source_t::b_can_rate_control, input_source_t::b_can_stream_record, input_thread_t::b_preparsing, input_source_t::b_rescale_ts, input_source_t::b_title_demux, DEMUX_CAN_CONTROL_PACE, DEMUX_CAN_CONTROL_RATE, DEMUX_CAN_PAUSE, DEMUX_CAN_RECORD, DEMUX_CAN_SEEK, demux_Control(), demux_Delete(), DEMUX_GET_ATTACHMENTS, DEMUX_GET_FPS, DEMUX_GET_PTS_DELAY, DEMUX_GET_TITLE_INFO, demux_New, dialog_Fatal, input_thread_private_t::f_fps, input_thread_private_t::i_attachment, input_source_t::i_pts_delay, input_source_t::i_seekpoint_end, input_source_t::i_seekpoint_offset, input_source_t::i_seekpoint_start, input_source_t::i_title, input_source_t::i_title_end, input_source_t::i_title_offset, input_source_t::i_title_start, input_thread_private_t::input, INPUT_PTS_DELAY_MAX, input_SplitMRL(), InputGetExtraFiles(), input_item_t::lock, MRLSections(), msg_Dbg, msg_Err, msg_Warn, input_thread_t::p, input_source_t::p_access, input_source_t::p_demux, input_thread_private_t::p_es_out, input_thread_private_t::p_item, input_source_t::p_stream, demux_t::pf_demux, access_t::psz_demux, psz_name, stream_t::psz_path, strdup(), stream_AccessNew(), stream_Delete(), stream_FilterChainNew(), TAB_APPEND, TAB_CLEAN, TAB_INIT, input_source_t::title, var_CreateGetNonEmptyString, var_GetBool, var_GetInteger, var_GetNonEmptyString, var_SetBool, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, and vlc_object_alive.
Referenced by Control(), Init(), LoadSlaves(), and SubtitleAdd().
| static void InputSourceMeta | ( | input_thread_t * | p_input, | |
| input_source_t * | p_source, | |||
| vlc_meta_t * | p_meta | |||
| ) | [static] |
References access_Control(), ACCESS_GET_META, AppendAttachment(), input_thread_private_t::attachment, demux_meta_t::attachments, demux_Control(), DEMUX_GET_META, DEMUX_HAS_UNSUPPORTED_META, input_thread_private_t::i_attachment, demux_meta_t::i_attachments, input_item_t::lock, module_need, module_unneed, input_thread_t::p, input_source_t::p_access, demux_meta_t::p_demux, input_source_t::p_demux, input_thread_private_t::p_item, demux_meta_t::p_item, demux_meta_t::p_meta, vlc_custom_create, vlc_meta_Delete(), vlc_meta_Merge(), vlc_mutex_lock(), vlc_mutex_unlock(), and vlc_object_release.
Referenced by Init().
| static input_source_t * InputSourceNew | ( | input_thread_t * | p_input | ) | [static] |
References VLC_UNUSED.
Referenced by Control(), LoadSlaves(), and SubtitleAdd().
| static void InputUpdateMeta | ( | input_thread_t * | p_input, | |
| vlc_meta_t * | p_meta | |||
| ) | [static] |
References es_out_ControlSetMeta(), input_thread_t::p, input_thread_private_t::p_es_out, and vlc_meta_Delete().
Referenced by Control(), Init(), UpdateGenericFromAccess(), and UpdateGenericFromDemux().
| static void LoadSlaves | ( | input_thread_t * | p_input | ) | [static] |
References input_thread_private_t::i_slave, InputSourceInit(), InputSourceNew(), make_URI(), msg_Dbg, input_thread_t::p, input_thread_private_t::slave, TAB_APPEND, and var_GetNonEmptyString.
Referenced by Init().
| static void LoadSubtitles | ( | input_thread_t * | p_input | ) | [static] |
References asprintf(), input_thread_private_t::attachment, input_thread_private_t::f_fps, input_thread_private_t::i_attachment, input_item_t::lock, msg_Dbg, input_thread_t::p, input_thread_private_t::p_item, input_attachment_t::psz_description, input_attachment_t::psz_mime, input_attachment_t::psz_name, input_item_t::psz_uri, SubtitleAdd(), subtitles_Detect(), TAB_APPEND, var_Create, var_CreateGetFloat, var_CreateGetInteger, var_Destroy, var_GetBool, var_GetNonEmptyString, var_SetFloat, var_SetString, var_SetTime, vlc_input_attachment_Delete(), vlc_input_attachment_New(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_VAR_DOINHERIT, VLC_VAR_FLOAT, and VLC_VAR_STRING.
Referenced by Init().
| static void MainLoop | ( | input_thread_t * | p_input, | |
| bool | b_interactive | |||
| ) | [static] |
MainLoop The main input loop.
References __MIN, input_thread_private_t::b_can_pause, input_source_t::b_eof, input_thread_t::b_error, Control(), ControlIsSeekRequest(), ControlPop(), END_S, es_out_GetBuffering(), es_out_GetEmpty(), es_out_GetWakeup(), vlc_value_t::i_int, input_thread_private_t::i_state, i_type, input_thread_private_t::input, input_ChangeState(), INPUT_CONTROL_SET_STATE, MainLoopDemux(), MainLoopInterface(), MainLoopStatistic(), MainLoopTryRepeat(), mdate(), msg_Dbg, input_thread_t::p, input_thread_private_t::p_es_out, PAUSE_S, var_CreateGetBool, var_GetBool, and vlc_object_alive.
Referenced by input_Read(), and Run().
| static void MainLoopDemux | ( | input_thread_t * | p_input, | |
| bool * | pb_changed, | |||
| bool * | pb_demux_polled, | |||
| mtime_t | i_start_mdate | |||
| ) | [static] |
MainLoopDemux It asks the demuxer to demux some data.
References input_source_t::b_eof, input_source_t::b_title_demux, demux_Demux(), ERROR_S, es_out_Eos(), input_thread_private_t::i_run, input_thread_private_t::i_slave, input_thread_private_t::i_stop, input_thread_private_t::i_time, access_t::i_update, demux_t::i_update, access_t::info, demux_t::info, input_thread_private_t::input, input_ChangeState(), mdate(), msg_Dbg, input_thread_t::p, input_source_t::p_access, input_source_t::p_demux, input_thread_private_t::p_es_out, demux_t::pf_demux, SlaveDemux(), UpdateGenericFromAccess(), UpdateGenericFromDemux(), UpdateTitleSeekpointFromAccess(), and UpdateTitleSeekpointFromDemux().
Referenced by MainLoop().
| static void MainLoopInterface | ( | input_thread_t * | p_input | ) | [static] |
MainLoopInterface It update the variables used by the interfaces.
References input_thread_private_t::bookmark, demux_Control(), DEMUX_GET_LENGTH, DEMUX_GET_POSITION, DEMUX_GET_TIME, es_out_SetTimes(), seekpoint_t::i_byte_offset, input_thread_private_t::i_time, seekpoint_t::i_time_offset, input_thread_private_t::input, input_item_t::lock, input_thread_t::p, input_source_t::p_demux, input_thread_private_t::p_es_out, input_thread_private_t::p_item, input_source_t::p_stream, stream_Tell(), vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by MainLoop().
| static void MainLoopStatistic | ( | input_thread_t * | p_input | ) | [static] |
MainLoopStatistic It updates the globals statics.
References input_SendEventStatistics(), input_thread_t::p, input_thread_private_t::p_item, input_item_t::p_stats, and stats_ComputeInputStats().
Referenced by MainLoop().
| static int MainLoopTryRepeat | ( | input_thread_t * | p_input, | |
| mtime_t * | pi_start_mdate | |||
| ) | [static] |
References vlc_value_t::f_float, vlc_value_t::i_int, input_source_t::i_seekpoint_offset, input_source_t::i_seekpoint_start, input_thread_private_t::i_start, vlc_value_t::i_time, input_source_t::i_title, input_source_t::i_title_offset, input_source_t::i_title_start, input_thread_private_t::input, INPUT_CONTROL_SET_POSITION, INPUT_CONTROL_SET_SEEKPOINT, INPUT_CONTROL_SET_TIME, INPUT_CONTROL_SET_TITLE, input_ControlPush(), mdate(), msg_Dbg, input_thread_t::p, var_GetInteger, and var_SetInteger.
Referenced by MainLoop().
| static void MRLSections | ( | const char * | p, | |
| int * | pi_title_start, | |||
| int * | pi_title_end, | |||
| int * | pi_chapter_start, | |||
| int * | pi_chapter_end | |||
| ) | [static] |
References MRLSeekPoint().
Referenced by InputSourceInit().
| static const char* MRLSeekPoint | ( | const char * | str, | |
| int * | title, | |||
| int * | chapter | |||
| ) | [static] |
Referenced by MRLSections().
| static void ObjectKillChildrens | ( | input_thread_t * | p_input, | |
| vlc_object_t * | p_obj | |||
| ) | [static] |
References vlc_list_t::i_count, input_thread_t::p, vlc_value_t::p_object, input_thread_private_t::p_sout, vlc_list_t::p_values, vlc_list_children, vlc_list_release(), VLC_OBJECT, and vlc_object_kill.
Referenced by Control(), and input_Stop().
| static void * Run | ( | void * | obj | ) | [static] |
| static void SlaveDemux | ( | input_thread_t * | p_input, | |
| bool * | pb_demux_polled | |||
| ) | [static] |
References input_source_t::b_eof, demux_Control(), demux_Demux(), DEMUX_GET_TIME, DEMUX_SET_NEXT_DEMUX_TIME, input_thread_private_t::i_slave, input_thread_private_t::input, msg_Dbg, msg_Err, input_thread_t::p, input_source_t::p_demux, demux_t::pf_demux, and input_thread_private_t::slave.
Referenced by MainLoopDemux().
| static void SlaveSeek | ( | input_thread_t * | p_input | ) | [static] |
| static void StartTitle | ( | input_thread_t * | p_input | ) | [static] |
References input_thread_private_t::b_fast_seek, vlc_value_t::i_int, input_thread_private_t::i_run, input_source_t::i_seekpoint_offset, input_source_t::i_seekpoint_start, input_thread_private_t::i_start, input_thread_private_t::i_stop, vlc_value_t::i_time, input_source_t::i_title, input_source_t::i_title_offset, input_source_t::i_title_start, input_thread_private_t::input, INPUT_CONTROL_SET_SEEKPOINT, INPUT_CONTROL_SET_TIME, INPUT_CONTROL_SET_TITLE, input_ControlPush(), msg_Dbg, msg_Warn, input_thread_t::p, var_GetBool, and var_GetFloat.
Referenced by Init().
| static void SubtitleAdd | ( | input_thread_t * | p_input, | |
| char * | psz_subtitle, | |||
| unsigned | i_flags | |||
| ) | [static] |
References count, es_out_Control(), ES_OUT_SET_ES_BY_ID, ES_OUT_SET_ES_DEFAULT_BY_ID, vlc_list_t::i_count, vlc_value_t::i_int, input_thread_private_t::i_slave, InputSourceInit(), InputSourceNew(), list, make_URI(), msg_Dbg, input_thread_t::p, input_thread_private_t::p_es_out_display, vlc_value_t::p_list, vlc_list_t::p_values, input_thread_private_t::slave, strdup(), SUB_CANFAIL, SUB_FORCED, TAB_APPEND, var_Change, var_FreeList(), vlc_stat(), VLC_VAR_CHOICESCOUNT, and VLC_VAR_GETLIST.
Referenced by Control(), and LoadSubtitles().
| static void UpdateGenericFromAccess | ( | input_thread_t * | p_input | ) | [static] |
References access_Control(), ACCESS_GET_META, ACCESS_GET_SIGNAL, access_t::i_update, access_t::info, input_thread_private_t::input, input_SendEventSignal(), INPUT_UPDATE_META, INPUT_UPDATE_SIGNAL, InputUpdateMeta(), input_thread_t::p, input_source_t::p_access, and vlc_meta_New().
Referenced by MainLoopDemux().
| static void UpdateGenericFromDemux | ( | input_thread_t * | p_input | ) | [static] |
References demux_Control(), DEMUX_GET_META, demux_t::i_update, demux_t::info, input_thread_private_t::input, INPUT_UPDATE_META, InputUpdateMeta(), input_thread_t::p, input_source_t::p_demux, and vlc_meta_New().
Referenced by MainLoopDemux().
| static void UpdatePtsDelay | ( | input_thread_t * | p_input | ) | [static] |
References __MAX, __MIN, AUDIO_ES, es_out_SetDelay(), es_out_SetJitter(), input_source_t::i_pts_delay, input_thread_private_t::i_slave, input_thread_private_t::input, input_thread_t::p, input_thread_private_t::p_es_out, input_thread_private_t::p_es_out_display, input_thread_private_t::slave, SPU_ES, var_GetInteger, and var_GetTime.
Referenced by Control(), and InitPrograms().
| static int UpdateTitleSeekpoint | ( | input_thread_t * | p_input, | |
| int | i_title, | |||
| int | i_seekpoint | |||
| ) | [static] |
| static int UpdateTitleSeekpointFromAccess | ( | input_thread_t * | p_input | ) | [static] |
References access_t::i_seekpoint, access_t::i_title, access_t::i_update, access_t::info, input_thread_private_t::input, input_SendEventSeekpoint(), input_SendEventTitle(), INPUT_UPDATE_SEEKPOINT, INPUT_UPDATE_TITLE, input_thread_t::p, input_source_t::p_access, input_source_t::p_stream, stream_Control(), STREAM_UPDATE_SIZE, and UpdateTitleSeekpoint().
Referenced by MainLoopDemux().
| static int UpdateTitleSeekpointFromDemux | ( | input_thread_t * | p_input | ) | [static] |
References demux_t::i_seekpoint, demux_t::i_title, demux_t::i_update, demux_t::info, input_thread_private_t::input, input_SendEventSeekpoint(), input_SendEventTitle(), INPUT_UPDATE_SEEKPOINT, INPUT_UPDATE_TITLE, input_thread_t::p, input_source_t::p_demux, and UpdateTitleSeekpoint().
Referenced by MainLoopDemux().
1.7.1