Go to the documentation of this file.
24 #ifndef LIBVLC_INPUT_ES_OUT_TIMESHIFT_H
25 #define LIBVLC_INPUT_ES_OUT_TIMESHIFT_H 1
struct ts_cmd_control_t::@16::@24 times
Definition: es_out_timeshift.c:68
es_out_t * p_out
Definition: es_out_timeshift.c:225
size_t count
Definition: core.c:461
#define TAB_CLEAN(count, tab)
Definition: vlc_arrays.h:46
FILE * vlc_fopen(const char *filename, const char *mode)
Opens a FILE pointer.
Definition: filesystem.c:46
input_thread_t * p_input
Definition: es_out.c:125
Definition: es_out_timeshift.c:71
void vlc_restorecancel(int state)
Restores the cancellation state.
Definition: thread.c:323
#define var_CreateGetInteger(a, b)
Definition: vlc_variables.h:492
Definition: vlc_es_out.h:97
ts_thread_t * p_ts
Definition: es_out_timeshift.c:236
input_thread_t * p_input
Definition: es_out_timeshift.c:187
#define vlc_cleanup_push(routine, arg)
Registers a thread cancellation handler.
Definition: vlc_threads.h:975
static int ControlLockedGetBuffering(es_out_t *p_out, bool *pb_buffering)
Definition: es_out_timeshift.c:522
static thread_local struct vlc_thread * thread
Definition: thread.c:162
Definition: vlc_es_out.h:76
static int ControlLockedGetWakeup(es_out_t *p_out, mtime_t *pi_wakeup)
Definition: es_out_timeshift.c:506
Definition: vlc_es_out.h:93
es_out_t * p_out
Definition: es_out_timeshift.c:188
block_t * p_block
Definition: es_out_timeshift.c:85
es_out_id_t * p_es
Definition: es_out_timeshift.c:84
static ts_storage_t * TsStorageNew(const char *psz_path, int64_t i_tmp_size_max)
Definition: es_out_timeshift.c:1100
void(* pf_del)(es_out_t *, es_out_id_t *)
Definition: vlc_es_out.h:115
void(* pf_destroy)(es_out_t *)
Definition: vlc_es_out.h:117
ts_storage_t * p_storage_w
Definition: es_out_timeshift.c:211
static int CmdInitControl(ts_cmd_t *, int i_query, va_list, bool b_copy)
Definition: es_out_timeshift.c:1369
static void CmdClean(ts_cmd_t *)
Definition: es_out_timeshift.c:1279
struct ts_cmd_control_t::@16::@22 es_fmt
Definition: vlc_es_out.h:80
#define DIR_SEP
Definition: vlc_common.h:1023
Definition: vlc_es_out.h:71
vlc_mutex_t lock
Definition: es_out.c:128
static void cmd_cleanup_routine(void *p)
Definition: es_out_timeshift.c:277
size_t i_buffer
Payload length.
Definition: vlc_block.h:116
static int TsChangeRate(ts_thread_t *, int i_src_rate, int i_rate)
Definition: es_out_timeshift.c:961
void vlc_mutex_init_recursive(vlc_mutex_t *p_mutex)
Initializes a recursive mutex.
Definition: thread.c:99
mtime_t i_dts
Definition: vlc_block.h:124
union ts_cmd_control_t::@16 u
ts_storage_t * p_storage_r
Definition: es_out_timeshift.c:210
static void TsAutoStop(es_out_t *)
Definition: es_out_timeshift.c:817
int8_t i_type
Definition: es_out_timeshift.c:152
Definition: vlc_es_out.h:49
bool b_input_paused_source
Definition: es_out_timeshift.c:240
Definition: es_out_timeshift.c:164
int vlc_mkdir(const char *dirname, mode_t mode)
Creates a directory.
Definition: filesystem.c:93
Definition: vlc_es_out.h:77
static int es_out_SetPauseState(es_out_t *p_out, bool b_source_paused, bool b_paused, mtime_t i_date)
Definition: es_out.h:130
Definition: vlc_es_out.h:83
int i_input_rate
Definition: es_out_timeshift.c:241
ts_cmd_t * p_cmd
Definition: es_out_timeshift.c:181
static void TsStoragePopCmd(ts_storage_t *p_storage, ts_cmd_t *p_cmd, bool b_flush)
Definition: es_out_timeshift.c:1244
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:86
static void TsStop(ts_thread_t *)
Definition: es_out_timeshift.c:829
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:350
static es_out_id_t * Add(es_out_t *, const es_format_t *)
Definition: es_out_timeshift.c:424
int64_t i_file_size
Definition: es_out_timeshift.c:173
int vlc_clone(vlc_thread_t *th, void *(*entry)(void *), void *data, int priority)
Creates and starts a new thread.
Definition: thread.c:263
mtime_t i_date
Definition: es_out_timeshift.c:153
Definition: vlc_es_out.h:55
int(* pf_send)(es_out_t *, es_out_id_t *, block_t *)
Definition: vlc_es_out.h:114
Definition: es_out_timeshift.c:82
vlc_cond_t wait
Definition: es_out_timeshift.c:194
Definition: vlc_es_out.h:96
ts_storage_t * p_next
Definition: es_out_timeshift.c:166
void vlc_cond_signal(vlc_cond_t *p_condvar)
Wakes up one thread waiting on a condition variable.
Definition: thread.c:256
Definition: es_out_timeshift.c:89
#define var_InheritString(o, n)
Definition: vlc_variables.h:639
pthread_cond_t vlc_cond_t
Condition variable.
Definition: vlc_threads.h:279
mtime_t i_rate_delay
Definition: es_out_timeshift.c:204
static void CmdCleanControl(ts_cmd_t *p_cmd)
Definition: es_out_timeshift.c:1611
int asprintf(char **, const char *,...)
mtime_t i_pts
Definition: vlc_block.h:123
ts_cmd_control_t control
Definition: es_out_timeshift.c:159
int64_t i_int
Definition: vlc_common.h:327
es_out_t * input_EsOutTimeshiftNew(input_thread_t *, es_out_t *, int i_rate)
Definition: es_out_timeshift.c:300
static void TsDestroy(ts_thread_t *p_ts)
Definition: es_out_timeshift.c:770
static int ControlLocked(es_out_t *p_out, int i_query, va_list args)
Definition: es_out_timeshift.c:622
Definition: vlc_es_out.h:44
size_t i_file_max
Definition: es_out_timeshift.c:172
mtime_t i_length
Definition: vlc_block.h:125
int(* pf_control)(es_out_t *, int i_query, va_list)
Definition: vlc_es_out.h:116
static int CmdExecuteControl(es_out_t *, ts_cmd_t *)
Definition: es_out_timeshift.c:1531
es_out_id_t * p_es
Definition: es_out_timeshift.c:219
static vlc_mutex_t lock
Definition: interface.c:62
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:84
es_out_id_t * p_es
Definition: es_out_timeshift.c:79
Definition: vlc_es_out.h:111
static es_out_id_t * es_out_Add(es_out_t *out, const es_format_t *fmt)
Definition: vlc_es_out.h:123
Definition: es_out_timeshift.c:77
static int GetTmpFile(char **ppsz_file, const char *psz_path)
Definition: es_out_timeshift.c:1638
static int ControlLockedSetTime(es_out_t *p_out, mtime_t i_date)
Definition: es_out_timeshift.c:604
int vlc_close(int fd)
Closes a file descriptor.
Definition: filesystem.c:88
static bool TsHasCmd(ts_thread_t *)
Definition: es_out_timeshift.c:907
static void TsStoragePack(ts_storage_t *p_storage)
Definition: es_out_timeshift.c:1182
mtime_t i_pause_date
Definition: es_out_timeshift.c:198
static void Del(es_out_t *, es_out_id_t *)
Definition: es_out_timeshift.c:475
int64_t i_i64
Definition: es_out_timeshift.c:97
mtime_t i_rate_date
Definition: es_out_timeshift.c:203
int vlc_unlink(const char *filename)
Removes a file.
Definition: filesystem.c:180
static int es_out_Control(es_out_t *out, int i_query,...)
Definition: vlc_es_out.h:144
vlc_mutex_t lock
Definition: es_out_timeshift.c:193
static void CmdCleanAdd(ts_cmd_t *)
Definition: es_out_timeshift.c:1322
int i_type
Definition: httpd.c:1250
static void Destroy(es_out_t *)
Definition: es_out_timeshift.c:404
static int ControlLockedGetEmpty(es_out_t *p_out, bool *pb_empty)
Definition: es_out_timeshift.c:495
static int TsStart(es_out_t *)
Definition: es_out_timeshift.c:776
int i_cmd_max
Definition: es_out_timeshift.c:180
static int es_out_SetRate(es_out_t *p_out, int i_source_rate, int i_rate)
Definition: es_out.h:134
uint32_t i_flags
Definition: vlc_block.h:120
void vlc_assert_locked(vlc_mutex_t *p_mutex)
Definition: thread.c:117
es_out_id_t *(* pf_add)(es_out_t *, const es_format_t *)
Definition: vlc_es_out.h:113
FILE * p_filew
Definition: es_out_timeshift.c:174
int i_offset
Definition: es_out_timeshift.c:86
Definition: vlc_es_out.h:39
vlc_thread_t thread
Definition: es_out_timeshift.c:186
unsigned i_nb_samples
Definition: vlc_block.h:121
static void block_Release(block_t *block)
Releases a block.
Definition: vlc_block.h:181
static int Control(es_out_t *, int i_query, va_list)
Definition: es_out_timeshift.c:752
#define TAB_APPEND(count, tab, p)
Definition: vlc_arrays.h:64
static void CmdCleanSend(ts_cmd_t *)
Definition: es_out_timeshift.c:1349
static int es_out_ControlModifyPcrSystem(es_out_t *out, bool b_absolute, mtime_t i_system)
Definition: vlc_es_out.h:174
int i_cmd_r
Definition: es_out_timeshift.c:178
int vlc_mkstemp(char *template)
Definition: filesystem.c:99
static int ControlLockedSetFrameNext(es_out_t *p_out)
Definition: es_out_timeshift.c:615
bool b_paused
Definition: es_out_timeshift.c:197
Thread handle.
Definition: vlc_threads.h:252
Definition: es_out_timeshift.c:150
Definition: vlc_es_out.h:48
void vlc_mutex_init(vlc_mutex_t *p_mutex)
Initializes a fast mutex.
Definition: thread.c:85
static void TsStoragePushCmd(ts_storage_t *, const ts_cmd_t *p_cmd, bool b_flush)
Definition: es_out_timeshift.c:1209
static bool es_out_GetBuffering(es_out_t *p_out)
Definition: es_out.h:105
es_out_id_t ** pp_es
Definition: es_out_timeshift.c:246
static void CmdExecuteAdd(es_out_t *, ts_cmd_t *)
Definition: es_out_timeshift.c:1318
#define vlc_cleanup_pop()
Unregisters the last cancellation handler.
Definition: vlc_threads.h:983
static int Send(es_out_t *, es_out_id_t *, block_t *)
Definition: es_out_timeshift.c:455
Definition: vlc_es_out.h:90
Definition: vlc_es_out.h:41
mtime_t i_buffering_delay
Definition: es_out_timeshift.c:207
static void * TsRun(void *)
Definition: es_out_timeshift.c:979
Definition: vlc_es_out.h:68
static bool TsStorageIsFull(ts_storage_t *, const ts_cmd_t *p_cmd)
Definition: es_out_timeshift.c:1194
static bool TsIsUnused(ts_thread_t *)
Definition: es_out_timeshift.c:917
Definition: es_out_timeshift.c:184
const char * psz_tmp_path
Definition: es_out_timeshift.c:190
int i_input_rate_source
Definition: es_out_timeshift.c:242
es_out_t * input_EsOutTimeshiftNew(input_thread_t *p_input, es_out_t *p_next_out, int i_rate)
Definition: es_out_timeshift.c:300
Definition: es_out_timeshift.c:66
es_format_t * p_fmt
Definition: es_out_timeshift.c:74
static int es_out_vaControl(es_out_t *out, int i_query, va_list args)
Definition: vlc_es_out.h:139
struct ts_cmd_control_t::@16::@25 jitter
static int es_out_SetFrameNext(es_out_t *p_out)
Definition: es_out.h:142
#define DIR_SEP_CHAR
Definition: vlc_common.h:1022
static void CmdInitSend(ts_cmd_t *, es_out_id_t *, block_t *)
Definition: es_out_timeshift.c:1328
int vlc_savecancel(void)
Disables thread cancellation.
Definition: thread.c:313
static void es_out_Del(es_out_t *out, es_out_id_t *id)
Definition: vlc_es_out.h:128
int i_es
Definition: es_out.c:137
ts_cmd_add_t add
Definition: es_out_timeshift.c:156
static int CmdExecuteSend(es_out_t *, ts_cmd_t *)
Definition: es_out_timeshift.c:1335
struct ts_cmd_control_t::@16::@21 es_bool
#define VLC_THREAD_PRIORITY_INPUT
Definition: vlc_threads.h:322
pthread_mutex_t vlc_mutex_t
Mutex.
Definition: vlc_threads.h:267
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:349
static int ControlLockedSetPauseState(es_out_t *p_out, bool b_source_paused, bool b_paused, mtime_t i_date)
Definition: es_out_timeshift.c:533
Definition: vlc_es_out.h:65
struct ts_cmd_control_t::@16::@20 int_epg_evt
int i_rate_source
Definition: es_out_timeshift.c:202
char * strdup(const char *)
Definition: vlc_es_out.h:63
Definition: es_out_timeshift.c:67
static void TsStorageDelete(ts_storage_t *)
Definition: es_out_timeshift.c:1161
FILE * p_filer
Definition: es_out_timeshift.c:175
static void TsPushCmd(ts_thread_t *, ts_cmd_t *)
Definition: es_out_timeshift.c:851
mtime_t i_cmd_delay
Definition: es_out_timeshift.c:213
void vlc_cond_destroy(vlc_cond_t *p_condvar)
Deinitializes a condition variable.
Definition: thread.c:228
void vlc_cond_init(vlc_cond_t *p_condvar)
Initializes a condition variable.
Definition: thread.c:216
static int TsPopCmdLocked(ts_thread_t *, ts_cmd_t *, bool b_flush)
Definition: es_out_timeshift.c:886
#define TAB_INIT(count, tab)
Definition: vlc_arrays.h:40
void vlc_cond_wait(vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex)
Waits on a condition variable.
Definition: thread.c:267
static int es_out_SetTime(es_out_t *p_out, mtime_t i_date)
Definition: es_out.h:138
Definition: vlc_es_out.h:99
bool b_input_paused
Definition: es_out_timeshift.c:239
void vlc_epg_Delete(vlc_epg_t *p_epg)
It releases a vlc_epg_t*.
Definition: epg.c:197
int i_rate
Definition: es_out_timeshift.c:201
#define TAB_REMOVE(count, tab, p)
Definition: vlc_arrays.h:91
int64_t i_tmp_size_max
Definition: es_out_timeshift.c:228
void vlc_mutex_destroy(vlc_mutex_t *p_mutex)
Deinitializes a mutex.
Definition: thread.c:110
vlc_epg_event_t * vlc_epg_event_Duplicate(const vlc_epg_event_t *p_src)
Returns a vlc_epg_event_t * duplicated from p_src.
Definition: epg.c:73
es_out_id_t * p_es
Definition: es_out_timeshift.c:98
void vlc_mutex_unlock(vlc_mutex_t *p_mutex)
Releases a mutex.
Definition: thread.c:138
#define unlikely(p)
Definition: vlc_common.h:114
static int CmdInitDel(ts_cmd_t *, es_out_id_t *)
Definition: es_out_timeshift.c:1355
struct ts_cmd_control_t::@16::@18 int_meta
Definition: vlc_es_out.h:73
block_t * block_Alloc(size_t size)
Allocates a block.
Definition: block.c:119
static int ControlLockedSetRate(es_out_t *p_out, int i_src_rate, int i_rate)
Definition: es_out_timeshift.c:568
static mtime_t es_out_GetWakeup(es_out_t *p_out)
Definition: es_out.h:97
Definition: vlc_es_out.h:64
#define vlc_assert_unreachable()
Definition: vlc_common.h:118
static void CmdExecuteDel(es_out_t *, ts_cmd_t *)
Definition: es_out_timeshift.c:1362
void vlc_cancel(vlc_thread_t thread_id)
Marks a thread as cancelled.
Definition: thread.c:297
int64_t mtime_t
High precision date or time interval.
Definition: vlc_common.h:150
struct ts_cmd_control_t::@16::@19 int_epg
es_out_id_t * p_es
Definition: es_out_timeshift.c:73
int64_t i_tmp_size_max
Definition: es_out_timeshift.c:189
uint8_t * p_buffer
Payload start.
Definition: vlc_block.h:115
Definition: vlc_es_out.h:52
Definition: vlc_es_out.h:75
int i_int
Definition: es_out_timeshift.c:96
Definition: es_out_timeshift.c:65
vlc_epg_t * vlc_epg_Duplicate(const vlc_epg_t *p_src)
Returns a duplicated p_src and its associated events.
Definition: epg.c:220
#define attribute_packed
Definition: es_out_timeshift.c:60
static void * vlc_alloc(size_t count, size_t size)
Definition: vlc_common.h:948
mtime_t mdate(void)
Precision monotonic clock.
Definition: thread.c:406
ts_cmd_del_t del
Definition: es_out_timeshift.c:157
#define mwait(d)
Definition: vlc_threads.h:879
struct ts_cmd_control_t::@16::@23 es_policy
static bool es_out_GetEmpty(es_out_t *p_out)
Definition: es_out.h:113
VLC value structure.
Definition: vlc_common.h:325
static bool TsStorageIsEmpty(ts_storage_t *)
Definition: es_out_timeshift.c:1205
es_out_sys_t * p_sys
Definition: vlc_es_out.h:119
bool b_delayed
Definition: es_out_timeshift.c:235
static int TsChangePause(ts_thread_t *, bool b_source_paused, bool b_paused, mtime_t i_date)
Definition: es_out_timeshift.c:929
void vlc_mutex_lock(vlc_mutex_t *p_mutex)
Acquires a mutex.
Definition: thread.c:123
static int es_out_Send(es_out_t *out, es_out_id_t *id, block_t *p_block)
Definition: vlc_es_out.h:133
Definition: vlc_block.h:111
struct ts_cmd_control_t::@16::@17 int_i64
#define msg_Err(p_this,...)
Definition: vlc_messages.h:82
void vlc_epg_event_Delete(vlc_epg_event_t *p_event)
Releases a vlc_epg_event_t*.
Definition: epg.c:46
char * psz_tmp_path
Definition: es_out_timeshift.c:229
static int CmdInitAdd(ts_cmd_t *, es_out_id_t *, const es_format_t *, bool b_copy)
Definition: es_out_timeshift.c:1300
ts_cmd_send_t send
Definition: es_out_timeshift.c:158
int i_query
Definition: es_out_timeshift.c:91
void vlc_join(vlc_thread_t handle, void **result)
Waits for a thread to complete (if needed), then destroys it.
Definition: thread.c:270
int i_cmd_w
Definition: es_out_timeshift.c:179
#define mutex_cleanup_push(lock)
Definition: vlc_threads.h:1013
Definition: vlc_es_out.h:40