]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Add support for disabling EIT grabbing on selected services.
authorMarc Perrudin <gentoo@ekass.net>
Fri, 19 Aug 2011 15:54:12 +0000 (17:54 +0200)
committerMarc Perrudin <gentoo@ekass.net>
Fri, 19 Aug 2011 15:54:12 +0000 (17:54 +0200)
src/dvb/dvb_tables.c
src/dvb/dvb_transport.c
src/service.c
src/service.h
src/webui/extjs.c
src/webui/static/app/dvb.js

index f5b34b3d22949d0bcb15a7f0bff63739181a8abd..74aa46766dfdd70deb4ba265cdc203a7d46f8970 100644 (file)
@@ -537,6 +537,9 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
   if(t == NULL || !t->s_enabled || (ch = t->s_ch) == NULL)
     return 0;
 
+  if(!t->s_dvb_eit_enable)
+    return 0;
+
   while(len >= 12) {
     event_id                  = ptr[0] << 8 | ptr[1];
     start_time                = dvb_convert_date(&ptr[2]);
index 62b776bc726da6cd08dddca61eca50be72e70493..ad41234fca241996d41f884bfc074e2d7c0deddb 100644 (file)
@@ -238,6 +238,10 @@ dvb_transport_load(th_dvb_mux_instance_t *tdmi)
     s = htsmsg_get_str(c, "dvb_default_charset");
     t->s_dvb_default_charset = s ? strdup(s) : NULL;
 
+    if(htsmsg_get_u32(c, "dvb_eit_enable", &u32))
+      u32 = 1;
+    t->s_dvb_eit_enable = u32;
+
     s = htsmsg_get_str(c, "channelname");
     if(htsmsg_get_u32(c, "mapped", &u32))
       u32 = 0;
@@ -278,6 +282,8 @@ dvb_transport_save(service_t *t)
   if(t->s_dvb_default_charset != NULL)
     htsmsg_add_str(m, "dvb_default_charset", t->s_dvb_default_charset);
   
+  htsmsg_add_u32(m, "dvb_eit_enable", t->s_dvb_eit_enable);
+
   pthread_mutex_lock(&t->s_stream_mutex);
   psi_save_service_settings(m, t);
   pthread_mutex_unlock(&t->s_stream_mutex);
@@ -440,6 +446,8 @@ dvb_transport_build_msg(service_t *t)
   if(t->s_dvb_default_charset != NULL)
     htsmsg_add_str(m, "dvb_default_charset", t->s_dvb_default_charset);
 
+  htsmsg_add_u32(m, "dvb_eit_enable", t->s_dvb_eit_enable);
+
   return m;
 }
 
index 49e04bd734945fb53bf6f8c40dc3ded67df88108..b7eec88131fa9460f1cbb539c3da0ee5611da1c9 100644 (file)
@@ -505,6 +505,7 @@ service_create(const char *identifier, int type, int source_type)
   t->s_enabled = 1;
   t->s_pcr_last = PTS_UNSET;
   t->s_dvb_default_charset = NULL;
+  t->s_dvb_eit_enable = 1;
   TAILQ_INIT(&t->s_components);
 
   streaming_pad_init(&t->s_streaming_pad);
@@ -692,6 +693,18 @@ service_set_dvb_default_charset(service_t *t, const char *dvb_default_charset)
   t->s_config_save(t);
 }
 
+/**
+ *
+ */
+void
+service_set_dvb_eit_enable(service_t *t, int dvb_eit_enable)
+{
+  if(t->s_dvb_eit_enable == dvb_eit_enable)
+    return;
+
+  t->s_dvb_eit_enable = dvb_eit_enable;
+  t->s_config_save(t);
+}
 
 /**
  *
index 4b8458e564aca573127de6df29797c27869cc0f4..2185e42250e557090c69bae0cb82402e1b83ee1f 100644 (file)
@@ -482,6 +482,11 @@ typedef struct service {
    */
   char *s_dvb_default_charset;
 
+  /**
+   * Set if EIT grab is enabled for DVB service (the default).
+   */
+  int s_dvb_eit_enable;
+
 } service_t;
 
 
@@ -569,4 +574,6 @@ int service_get_signal_status(service_t *t, signal_status_t *status);
 
 void service_set_dvb_default_charset(service_t *t, const char *dvb_default_charset);
 
+void service_set_dvb_eit_enable(service_t *t, int dvb_eit_enable);
+
 #endif // SERVICE_H__
index cd95ceb47c68f77fee896a2b7d129e97688a20ed..b959214f50e484a4f70421429b6ec8767756b3a9 100644 (file)
@@ -1134,6 +1134,9 @@ service_update(htsmsg_t *in)
 
     if((dvb_default_charset = htsmsg_get_str(c, "dvb_default_charset")) != NULL)
       service_set_dvb_default_charset(t, dvb_default_charset);
+
+    if(!htsmsg_get_u32(c, "dvb_eit_enable", &u32))
+      service_set_dvb_eit_enable(t, u32);
   }
 }
 
@@ -1218,6 +1221,8 @@ extjs_servicedetails(http_connection_t *hc,
   if(t->s_dvb_default_charset != NULL)
     htsmsg_add_str(out, "dvb_default_charset", t->s_dvb_default_charset);
 
+  htsmsg_add_u32(out, "dvb_eit_enable", t->s_dvb_eit_enable);
+
   pthread_mutex_unlock(&global_lock);
 
   htsmsg_json_serialize(out, hq, 0);
@@ -1460,6 +1465,9 @@ extjs_service_update(htsmsg_t *in)
 
     if((dvb_default_charset = htsmsg_get_str(c, "dvb_default_charset")) != NULL)
       service_set_dvb_default_charset(t, dvb_default_charset);
+
+    if(!htsmsg_get_u32(c, "dvb_eit_enable", &u32))
+      service_set_dvb_eit_enable(t, u32);
   }
 }
 
index 9063cdbcbec58c393c6139d9e456cf60e0c99604..f98a9a485f15e2a9bfc8fd4342026d7ee0e48b7f 100644 (file)
@@ -433,6 +433,47 @@ tvheadend.dvb_services = function(adapterId) {
                        valueField:'key'
                })
        },
+       {
+        header: "EIT",
+        dataIndex: 'dvb_eit_enable',
+               width: 100,
+               renderer: function(value, metadata, record, row, col, store) {
+                       if (value == '0')
+                   return 'Disabled';
+                       if (value == '1')
+                               return 'Enabled';
+               },
+               editor: new fm.ComboBox({
+                       mode: 'local',
+                       store: new Ext.data.SimpleStore({
+                               fields: ['key','value'],
+                               data: [
+                                       ['0','Disabled'],
+                                       ['1','Enabled']
+                                       ]
+                       }),
+                       typeAhead: true,
+                       lazyRender: true,
+                       triggerAction: 'all',
+                       displayField:'value',
+                       valueField:'key'
+               })
+       },
+/*    var eitColumn = new Ext.grid.CheckColumn({
+       header: "EIT Check",
+       dataIndex: 'dvb_eit_enable',
+       width: 45
+    });
+
+       {
+        header: "EIT",
+        dataIndex: 'dvb_eit_enable',
+               width: 45,
+               editor: new fm.Checkbox({
+                       fieldLabel: 'EIT',
+                       name: 'eit',
+               })
+       },*/
        {
            header: "Type",
            dataIndex: 'type',
@@ -478,8 +519,8 @@ tvheadend.dvb_services = function(adapterId) {
     var store = new Ext.data.JsonStore({
        root: 'entries',
        fields: Ext.data.Record.create([
-           'id', 'enabled', 'type', 'sid', 'pmt', 'pcr', 
-           'svcname', 'network', 'provider', 'mux', 'channelname', 'dvb_default_charset'
+           'id', 'enabled', 'type', 'sid', 'pmt', 'pcr', 'svcname', 'network',
+        'provider', 'mux', 'channelname', 'dvb_default_charset', 'dvb_eit_enable'
        ]),
        url: "dvb/services/" + adapterId,
        autoLoad: true,