[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