]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Remove dmx_sct_filter_params from all over the place
authorAndreas Öman <andreas@lonelycoder.com>
Fri, 19 Oct 2012 10:08:23 +0000 (12:08 +0200)
committerAndreas Öman <andreas@lonelycoder.com>
Thu, 25 Oct 2012 11:06:05 +0000 (13:06 +0200)
src/dvb/dvb.h
src/dvb/dvb_tables.c
src/epggrab/module/eit.c
src/epggrab/module/opentv.c

index 7a71bf9cf42f9c626193a3757481faa87240be3d..63cbae670772d66f00cc71efb523710bddfda88b 100644 (file)
@@ -273,10 +273,12 @@ typedef struct th_dvb_table {
   int tdt_count;
   int tdt_pid;
 
-  struct dmx_sct_filter_params *tdt_fparams;
-
   int tdt_id;
 
+  int tdt_table;
+  int tdt_mask;
+
+
 } th_dvb_table_t;
 
 
@@ -456,13 +458,10 @@ void dvb_table_add_pmt(th_dvb_mux_instance_t *tdmi, int pmt_pid);
 
 void dvb_table_rem_pmt(th_dvb_mux_instance_t *tdmi, int pmt_pid);
 
-struct dmx_sct_filter_params *dvb_fparams_alloc(void);
-
-void
-tdt_add(th_dvb_mux_instance_t *tdmi, struct dmx_sct_filter_params *fparams,
-       int (*callback)(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len,
-                        uint8_t tableid, void *opaque), void *opaque,
-       const char *name, int flags, int pid, th_dvb_table_t *tdt);
+void tdt_add(th_dvb_mux_instance_t *tdmi, int table, int mask,
+            int (*callback)(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len,
+                            uint8_t tableid, void *opaque), void *opaque,
+            const char *name, int flags, int pid, th_dvb_table_t *tdt);
 
 int dvb_pidx11_callback
   (th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
index f4aa6899933bafcf4368db0e58cae19240ae42bf..5e8da3383774b6dd9dc8a8456ab05a59466ebf84 100644 (file)
 
 static int tdt_id_tally;
 
-/**
- * Helper for preparing a section filter parameter struct
- */
-struct dmx_sct_filter_params *
-dvb_fparams_alloc(void)
-{
-  return calloc(1, sizeof(struct dmx_sct_filter_params));
-}
-
 /**
  *
  */
@@ -107,7 +98,18 @@ tdt_open_fd(th_dvb_mux_instance_t *tdmi, th_dvb_table_t *tdt)
       close(tdt->tdt_fd);
       tdt->tdt_fd = -1;
     } else {
-      if(ioctl(tdt->tdt_fd, DMX_SET_FILTER, tdt->tdt_fparams)) {
+
+      struct dmx_sct_filter_params fp = {0};
+  
+      fp.filter.filter[0] = tdt->tdt_table;
+      fp.filter.mask[0]   = tdt->tdt_mask;
+
+      if(tdt->tdt_flags & TDT_CRC)
+       fp.flags |= DMX_CHECK_CRC;
+      fp.flags |= DMX_IMMEDIATE_START;
+      fp.pid = tdt->tdt_pid;
+
+      if(ioctl(tdt->tdt_fd, DMX_SET_FILTER, &fp)) {
        close(tdt->tdt_fd);
        tdt->tdt_fd = -1;
       }
@@ -265,7 +267,6 @@ dvb_tdt_destroy(th_dvb_adapter_t *tda, th_dvb_mux_instance_t *tdmi,
   }
 
   free(tdt->tdt_name);
-  free(tdt->tdt_fparams);
   free(tdt);
 }
 
@@ -276,7 +277,7 @@ dvb_tdt_destroy(th_dvb_adapter_t *tda, th_dvb_mux_instance_t *tdmi,
  * Add a new DVB table
  */
 void
-tdt_add(th_dvb_mux_instance_t *tdmi, struct dmx_sct_filter_params *fparams,
+tdt_add(th_dvb_mux_instance_t *tdmi, int tableid, int mask,
        int (*callback)(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len,
                         uint8_t tableid, void *opaque), void *opaque,
        const char *name, int flags, int pid, th_dvb_table_t *tdt)
@@ -291,18 +292,10 @@ tdt_add(th_dvb_mux_instance_t *tdmi, struct dmx_sct_filter_params *fparams,
     if(pid == t->tdt_pid && 
        t->tdt_callback == callback && t->tdt_opaque == opaque) {
       if (tdt)     free(tdt);
-      if (fparams) free(fparams);
       return;
     }
   }
 
-  if(fparams == NULL)
-    fparams = dvb_fparams_alloc();
-
-  if(flags & TDT_CRC) fparams->flags |= DMX_CHECK_CRC;
-  fparams->flags |= DMX_IMMEDIATE_START;
-  fparams->pid = pid;
-
 
   if(tdt == NULL)
     tdt = calloc(1, sizeof(th_dvb_table_t));
@@ -312,7 +305,8 @@ tdt_add(th_dvb_mux_instance_t *tdmi, struct dmx_sct_filter_params *fparams,
   tdt->tdt_opaque = opaque;
   tdt->tdt_pid = pid;
   tdt->tdt_flags = flags;
-  tdt->tdt_fparams = fparams;
+  tdt->tdt_table = tableid;
+  tdt->tdt_mask = mask;
   LIST_INSERT_HEAD(&tdmi->tdmi_tables, tdt, tdt_link);
   tdt->tdt_fd = -1;
   TAILQ_INSERT_TAIL(&tdmi->tdmi_table_queue, tdt, tdt_pending_link);
@@ -700,7 +694,7 @@ dvb_cat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
       if(pid == 0)
        break;
 
-      tdt_add(tdmi, NULL, dvb_ca_callback, (void *)caid, "CA", 
+      tdt_add(tdmi, 0, 0, dvb_ca_callback, (void *)caid, "CA", 
              TDT_CA, pid, NULL);
       break;
 
@@ -1140,24 +1134,21 @@ dvb_pmt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
 static void
 dvb_table_add_default_dvb(th_dvb_mux_instance_t *tdmi)
 {
-  struct dmx_sct_filter_params *fp;
-
   /* Network Information Table */
 
-  fp = dvb_fparams_alloc();
+  int table;
 
   if(tdmi->tdmi_adapter->tda_nitoid) {
-    fp->filter.filter[0] = 0x41;
+    table = 0x41;
   } else {
-    fp->filter.filter[0] = 0x40;
+    table = 0x40;
   }
-  fp->filter.mask[0] = 0xff;
-  tdt_add(tdmi, fp, dvb_nit_callback, NULL, "nit", 
+  tdt_add(tdmi, table, 0xff, dvb_nit_callback, NULL, "nit", 
          TDT_QUICKREQ | TDT_CRC, 0x10, NULL);
 
   /* Service Descriptor Table and Bouqeut Allocation Table */
 
-  tdt_add(tdmi, NULL, dvb_pidx11_callback, NULL, "pidx11", 
+  tdt_add(tdmi, 0, 0, dvb_pidx11_callback, NULL, "pidx11", 
          TDT_QUICKREQ | TDT_CRC, 0x11, NULL);
 }
 
@@ -1168,7 +1159,6 @@ dvb_table_add_default_dvb(th_dvb_mux_instance_t *tdmi)
 static void
 dvb_table_add_default_atsc(th_dvb_mux_instance_t *tdmi)
 {
-  struct dmx_sct_filter_params *fp;
   int tableid;
 
   if(tdmi->tdmi_conf.dmc_fe_params.u.vsb.modulation == VSB_8) {
@@ -1177,11 +1167,7 @@ dvb_table_add_default_atsc(th_dvb_mux_instance_t *tdmi)
     tableid = 0xc9; // Cable
   }
 
-  /* Virtual Channel Table */
-  fp = dvb_fparams_alloc();
-  fp->filter.filter[0] = tableid;
-  fp->filter.mask[0] = 0xff;
-  tdt_add(tdmi, fp, atsc_vct_callback, NULL, "vct",
+  tdt_add(tdmi, tableid, 0xff, atsc_vct_callback, NULL, "vct",
          TDT_QUICKREQ | TDT_CRC, 0x1ffb, NULL);
 }
 
@@ -1194,22 +1180,12 @@ dvb_table_add_default_atsc(th_dvb_mux_instance_t *tdmi)
 void
 dvb_table_add_default(th_dvb_mux_instance_t *tdmi)
 {
-  struct dmx_sct_filter_params *fp;
-
   /* Program Allocation Table */
-
-  fp = dvb_fparams_alloc();
-  fp->filter.filter[0] = 0x00;
-  fp->filter.mask[0] = 0xff;
-  tdt_add(tdmi, fp, dvb_pat_callback, NULL, "pat", 
+  tdt_add(tdmi, 0x00, 0xff, dvb_pat_callback, NULL, "pat", 
          TDT_QUICKREQ | TDT_CRC, 0, NULL);
 
   /* Conditional Access Table */
-
-  fp = dvb_fparams_alloc();
-  fp->filter.filter[0] = 0x1;
-  fp->filter.mask[0] = 0xff;
-  tdt_add(tdmi, fp, dvb_cat_callback, NULL, "cat", 
+  tdt_add(tdmi, 0x1, 0xff, dvb_cat_callback, NULL, "cat", 
          TDT_CRC, 1, NULL);
 
 
@@ -1233,14 +1209,10 @@ dvb_table_add_default(th_dvb_mux_instance_t *tdmi)
 void
 dvb_table_add_pmt(th_dvb_mux_instance_t *tdmi, int pmt_pid)
 {
-  struct dmx_sct_filter_params *fp;
   char pmtname[100];
 
   snprintf(pmtname, sizeof(pmtname), "PMT(%d)", pmt_pid);
-  fp = dvb_fparams_alloc();
-  fp->filter.filter[0] = 0x02;
-  fp->filter.mask[0] = 0xff;
-  tdt_add(tdmi, fp, dvb_pmt_callback, NULL, pmtname, 
+  tdt_add(tdmi, 0x2, 0xff, dvb_pmt_callback, NULL, pmtname, 
          TDT_CRC | TDT_QUICKREQ | TDT_TDT, pmt_pid, NULL);
 }
 
index 9e0add8aadc4f880bfc98fe33bfc64bc984ec032..abad1ec281ed15fbca63266c5c1b13e61d0dfc2a 100644 (file)
@@ -839,19 +839,19 @@ static void _eit_start
   /* Freesat (3002/3003) */
   if (!strcmp("uk_freesat", m->id)) {
 #ifdef IGNORE_TOO_SLOW
-    tdt_add(tdmi, NULL, dvb_pidx11_callback, m, m->id, TDT_CRC, 3840, NULL);
-    tdt_add(tdmi, NULL, _eit_callback, m, m->id, TDT_CRC, 3841, NULL);
+    tdt_add(tdmi, 0, 0, dvb_pidx11_callback, m, m->id, TDT_CRC, 3840, NULL);
+    tdt_add(tdmi, 0, 0, _eit_callback, m, m->id, TDT_CRC, 3841, NULL);
 #endif
-    tdt_add(tdmi, NULL, dvb_pidx11_callback, m, m->id, TDT_CRC, 3002, NULL);
-    tdt_add(tdmi, NULL, _eit_callback, m, m->id, TDT_CRC, 3003, NULL);
+    tdt_add(tdmi, 0, 0, dvb_pidx11_callback, m, m->id, TDT_CRC, 3002, NULL);
+    tdt_add(tdmi, 0, 0, _eit_callback, m, m->id, TDT_CRC, 3003, NULL);
 
   /* Viasat Baltic (0x39) */
   } else if (!strcmp("viasat_baltic", m->id)) {
-    tdt_add(tdmi, NULL, _eit_callback, m, m->id, TDT_CRC, 0x39, NULL);
+    tdt_add(tdmi, 0, 0, _eit_callback, m, m->id, TDT_CRC, 0x39, NULL);
 
   /* Standard (0x12) */
   } else {
-    tdt_add(tdmi, NULL, _eit_callback, m, m->id, TDT_CRC, 0x12, NULL);
+    tdt_add(tdmi, 0, 0, _eit_callback, m, m->id, TDT_CRC, 0x12, NULL);
   }
   tvhlog(LOG_DEBUG, m->id, "install table handlers");
 }
index e66dd8b1e720a4435914ae52b57efbd3a4c2c705..8b6010aa197ad5e50506f4c334d6a311c1c60a93 100644 (file)
@@ -641,7 +641,6 @@ static void _opentv_start
   ( epggrab_module_ota_t *m, th_dvb_mux_instance_t *tdmi )
 {
   int *t;
-  struct dmx_sct_filter_params *fp;
   epggrab_ota_mux_t *ota;
   opentv_module_t *mod = (opentv_module_t*)m;
   opentv_status_t *sta;
@@ -668,33 +667,24 @@ static void _opentv_start
   /* Channels */
   t = mod->channel;
   while (*t) {
-    fp = dvb_fparams_alloc();
-    fp->filter.filter[0] = 0x4a;
-    fp->filter.mask[0]   = 0xff;
     // TODO: what about 0x46 (service description)
-    tdt_add(tdmi, fp, _opentv_channel_callback, m,
+    tdt_add(tdmi, 0x4a, 0xff, _opentv_channel_callback, m,
             m->id, TDT_CRC, *t++, NULL);
   }
 
   /* Titles */
   t = mod->title;
   while (*t) {
-    fp = dvb_fparams_alloc();
-    fp->filter.filter[0] = 0xa0;
-    fp->filter.mask[0]   = 0xfc;
     _opentv_status_get_pid(sta, *t);
-    tdt_add(tdmi, fp, _opentv_title_callback, m,
+    tdt_add(tdmi, 0xa0, 0xfc, _opentv_title_callback, m,
             m->id, TDT_CRC | TDT_TDT, *t++, NULL);
   }
 
   /* Summaries */
   t = mod->summary;
   while (*t) {
-    fp = dvb_fparams_alloc();
-    fp->filter.filter[0] = 0xa8;
-    fp->filter.mask[0]   = 0xfc;
     _opentv_status_get_pid(sta, *t);
-    tdt_add(tdmi, fp, _opentv_summary_callback, m,
+    tdt_add(tdmi, 0xa8, 0xfc, _opentv_summary_callback, m,
             m->id, TDT_CRC | TDT_TDT, *t++, NULL);
   }
 }