[dvblast-devel] [Git][videolan/dvblast][master] fix EIT schedule signaling in SDT
Massiot
gitlab at videolan.org
Sun Apr 30 18:37:37 CEST 2017
Massiot pushed to branch master at videolan / dvblast
Commits:
77cfaa84 by Christophe Massiot at 2017-04-30T18:37:26+02:00
fix EIT schedule signaling in SDT
- - - - -
2 changed files:
- NEWS
- demux.c
Changes:
=====================================
NEWS
=====================================
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ Changes between 3.1 and 3.2:
* Fix segmentation fault when using output charset different from native
* Use default charset ISO 6937 for ASCII strings
* Add /charset= output option
+ * Fix EIT schedule signaling in SDT
Changes between 3.0 and 3.1:
----------------------------
=====================================
demux.c
=====================================
--- a/demux.c
+++ b/demux.c
@@ -1,7 +1,7 @@
/*****************************************************************************
* demux.c
*****************************************************************************
- * Copyright (C) 2004, 2008-2011, 2015-2016 VideoLAN
+ * Copyright (C) 2004, 2008-2011, 2015-2017 VideoLAN
*
* Authors: Christophe Massiot <massiot at via.ecp.fr>
* Andy Gatward <a.j.gatward at reading.ac.uk>
@@ -755,6 +755,8 @@ void demux_Change( output_t *p_output, const output_config_t *p_config )
bool b_pid_change = false, b_tsid_change = false;
bool b_dvb_change = !!((p_output->config.i_config ^ p_config->i_config)
& OUTPUT_DVB);
+ bool b_epg_change = !!((p_output->config.i_config ^ p_config->i_config)
+ & OUTPUT_EPG);
bool b_network_change =
(dvb_string_cmp(&p_output->config.network_name, &p_config->network_name) ||
p_output->config.i_network_id != p_config->i_network_id);
@@ -934,7 +936,7 @@ out_change:
else if ( b_network_change )
NewNIT( p_output );
- if ( !b_tsid_change && b_service_name_change )
+ if ( !b_tsid_change && (b_service_name_change || b_epg_change) )
NewSDT( p_output );
if ( b_pid_change )
@@ -1799,16 +1801,13 @@ static void NewSDT( output_t *p_output )
else
sdtn_set_sid( p_service, p_output->config.i_sid );
- if ( (p_output->config.i_config & OUTPUT_EPG) == OUTPUT_EPG )
- {
- sdtn_set_eitschedule(p_service);
+ /* We always forward EITp/f */
+ if ( sdtn_get_eitpresent(p_current_service) )
sdtn_set_eitpresent(p_service);
- } else {
- if ( sdtn_get_eitschedule(p_current_service) )
- sdtn_set_eitschedule(p_service);
- if ( sdtn_get_eitpresent(p_current_service) )
- sdtn_set_eitpresent(p_service);
- }
+
+ if ( (p_output->config.i_config & OUTPUT_EPG) == OUTPUT_EPG &&
+ sdtn_get_eitschedule(p_current_service) )
+ sdtn_set_eitschedule(p_service);
sdtn_set_running( p_service, sdtn_get_running(p_current_service) );
/* Do not set free_ca */
View it on GitLab: https://code.videolan.org/videolan/dvblast/commit/77cfaa8434cb3f0a9abd5df2bd763efd7cb35f85
More information about the dvblast-devel
mailing list