From 6186747ba45ca7395b4d217072d74c1c908e57a0 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Wed, 12 Aug 2009 23:12:31 +0200 Subject: [PATCH] Updated current EIT event only on Current/Following EIT tables. --- modules/demux/ts.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/demux/ts.c b/modules/demux/ts.c index 19d9db5f5f..98e6721154 100644 --- a/modules/demux/ts.c +++ b/modules/demux/ts.c @@ -2870,7 +2870,8 @@ static char *EITConvertToUTF8( const unsigned char *psz_instring, return psz_outstring; } -static void EITCallBack( demux_t *p_demux, dvbpsi_eit_t *p_eit ) +static void EITCallBack( demux_t *p_demux, + dvbpsi_eit_t *p_eit, bool b_current_following ) { demux_sys_t *p_sys = p_demux->p_sys; dvbpsi_eit_event_t *p_evt; @@ -2987,7 +2988,7 @@ static void EITCallBack( demux_t *p_demux, dvbpsi_eit_t *p_eit ) } if( p_epg->i_event > 0 ) { - if( p_eit->i_service_id == p_sys->i_current_program ) + if( p_eit->i_service_id == p_sys->i_current_program && b_current_following ) { p_sys->i_dvb_length = 0; p_sys->i_dvb_start = 0; @@ -3004,6 +3005,14 @@ static void EITCallBack( demux_t *p_demux, dvbpsi_eit_t *p_eit ) dvbpsi_DeleteEIT( p_eit ); } +static void EITCallBackCurrentFollowing( demux_t *p_demux, dvbpsi_eit_t *p_eit ) +{ + EITCallBack( p_demux, p_eit, true ); +} +static void EITCallBackSchedule( demux_t *p_demux, dvbpsi_eit_t *p_eit ) +{ + EITCallBack( p_demux, p_eit, false ); +} static void PSINewTableCallBack( demux_t *p_demux, dvbpsi_handle h, uint8_t i_table_id, uint16_t i_extension ) @@ -3027,8 +3036,10 @@ static void PSINewTableCallBack( demux_t *p_demux, dvbpsi_handle h, msg_Dbg( p_demux, "PSINewTableCallBack: table 0x%x(%d) ext=0x%x(%d)", i_table_id, i_table_id, i_extension, i_extension ); - dvbpsi_AttachEIT( h, i_table_id, i_extension, - (dvbpsi_eit_callback)EITCallBack, p_demux ); + dvbpsi_eit_callback cb = i_table_id == 0x4e ? + (dvbpsi_eit_callback)EITCallBackCurrentFollowing : + (dvbpsi_eit_callback)EITCallBackSchedule; + dvbpsi_AttachEIT( h, i_table_id, i_extension, cb, p_demux ); } } #endif -- 2.20.1