vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Dec 27 15:35:01 2016 +0100| [c86f386639a9b198baf47e53dcd0f62ed6903065] | committer: Francois Cartegnie
es_out: add ES_OUT_SET_EPG_TIME Because EIT time/date is not correlated to PCR, GET_TIME (relative) or current time(), time base must be the one provided by SI tables. (TOT/TDT) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c86f386639a9b198baf47e53dcd0f62ed6903065 --- include/vlc_es_out.h | 2 ++ src/input/es_out.c | 16 ++++++++++++++++ src/input/es_out_timeshift.c | 7 +++++++ 3 files changed, 25 insertions(+) diff --git a/include/vlc_es_out.h b/include/vlc_es_out.h index 4f7b77a..b6f40df 100644 --- a/include/vlc_es_out.h +++ b/include/vlc_es_out.h @@ -72,6 +72,8 @@ enum es_out_query_e /* Set epg for group (dynamic) (The vlc_epg_t is not modified nor released) */ ES_OUT_SET_GROUP_EPG, /* arg1=int i_group arg2=const vlc_epg_t * */ ES_OUT_SET_GROUP_EPG_EVENT, /* arg1=int i_group arg2=const vlc_epg_event_t * */ + ES_OUT_SET_EPG_TIME, /* arg1=int int64_t */ + /* */ ES_OUT_DEL_GROUP, /* arg1=int i_group */ diff --git a/src/input/es_out.c b/src/input/es_out.c index 1fd8e6a..90a58e5 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -1413,6 +1413,15 @@ static void EsOutProgramEpg( es_out_t *out, int i_group, const vlc_epg_t *p_epg free( psz_cat ); } +static void EsOutEpgTime( es_out_t *out, int64_t time ) +{ + es_out_sys_t *p_sys = out->p_sys; + input_thread_t *p_input = p_sys->p_input; + input_item_t *p_item = input_priv(p_input)->p_item; + + input_item_SetEpgTime( p_item, time ); +} + static void EsOutProgramUpdateScrambled( es_out_t *p_out, es_out_pgrm_t *p_pgrm ) { es_out_sys_t *p_sys = p_out->p_sys; @@ -2495,6 +2504,13 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args ) EsOutProgramEpgEvent( out, i_group, p_evt ); return VLC_SUCCESS; } + case ES_OUT_SET_EPG_TIME: + { + int i64 = (int64_t)va_arg( args, int64_t ); + + EsOutEpgTime( out, i64 ); + return VLC_SUCCESS; + } case ES_OUT_DEL_GROUP: { diff --git a/src/input/es_out_timeshift.c b/src/input/es_out_timeshift.c index 0c4a7d9..c4d1820 100644 --- a/src/input/es_out_timeshift.c +++ b/src/input/es_out_timeshift.c @@ -638,6 +638,7 @@ static int ControlLocked( es_out_t *p_out, int i_query, va_list args ) case ES_OUT_SET_GROUP_META: case ES_OUT_SET_GROUP_EPG: case ES_OUT_SET_GROUP_EPG_EVENT: + case ES_OUT_SET_EPG_TIME: case ES_OUT_SET_ES_SCRAMBLED_STATE: case ES_OUT_DEL_GROUP: case ES_OUT_SET_META: @@ -1467,6 +1468,9 @@ static int CmdInitControl( ts_cmd_t *p_cmd, int i_query, va_list args, bool b_co } break; } + case ES_OUT_SET_EPG_TIME: /* arg1=int64_t (seconds) */ + p_cmd->u.control.u.i_i64 = (int64_t)va_arg( args, int64_t ); + break; /* Modified control */ case ES_OUT_SET_ES: /* arg1= es_out_id_t* */ @@ -1569,6 +1573,9 @@ static int CmdExecuteControl( es_out_t *p_out, ts_cmd_t *p_cmd ) return es_out_Control( p_out, i_query, p_cmd->u.control.u.int_epg_evt.i_int, p_cmd->u.control.u.int_epg_evt.p_evt ); + case ES_OUT_SET_EPG_TIME: /* arg1=int64_t */ + return es_out_Control( p_out, i_query, p_cmd->u.control.u.i_i64 ); + case ES_OUT_SET_ES_SCRAMBLED_STATE: /* arg1=int es_out_id_t* arg2=bool */ return es_out_Control( p_out, i_query, p_cmd->u.control.u.es_bool.p_es->p_es, p_cmd->u.control.u.es_bool.b_bool ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
