]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts: tables - add mux name to log msgs
authorJaroslav Kysela <perex@perex.cz>
Fri, 22 May 2015 07:53:41 +0000 (09:53 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 22 May 2015 07:53:41 +0000 (09:53 +0200)
src/input/mpegts/dvb.h
src/input/mpegts/dvb_psi_lib.c
src/input/mpegts/mpegts_input.c
src/muxer/muxer_pass.c

index 513061dde31210395d65df51c10998d3efee88cf..f5ffc728a6a35da8465f1f65cd9d350201b55e04 100644 (file)
@@ -271,7 +271,7 @@ typedef struct mpegts_psi_table
  * Assemble SI section
  */
 void mpegts_psi_section_reassemble
- ( mpegts_psi_table_t *mt, const uint8_t *tsb, int crc,
+ ( mpegts_psi_table_t *mt, const char *logpref, const uint8_t *tsb, int crc,
    mpegts_psi_section_callback_t cb, void *opaque );
 
 /* PSI table parser helpers */
@@ -296,8 +296,9 @@ void dvb_table_parse_init
 void dvb_table_parse_done ( mpegts_psi_table_t *mt);
 
 void dvb_table_parse
-  (mpegts_psi_table_t *mt, const uint8_t *tsb, int len,
-   int crc, int full, mpegts_psi_parse_callback_t cb);
+  (mpegts_psi_table_t *mt, const char *logprefix,
+   const uint8_t *tsb, int len, int crc, int full,
+   mpegts_psi_parse_callback_t cb);
 
 int dvb_table_append_crc32(uint8_t *dst, int off, int maxlen);
 
index 7f48caa9cc9732efdee3c91702b89848cdbb208a..c7f47b6ccd2cd55f0205c495390bfceebac1cb54 100644 (file)
@@ -63,7 +63,8 @@ dvb_servicetype_lookup ( int t )
  */
 static int
 mpegts_psi_section_reassemble0
-  ( mpegts_psi_table_t *mt, const uint8_t *data,
+  ( mpegts_psi_table_t *mt, const char *logpref,
+    const uint8_t *data,
     int len, int start, int crc,
     mpegts_psi_section_callback_t cb, void *opaque)
 {
@@ -99,9 +100,10 @@ mpegts_psi_section_reassemble0
   }
 
   if(crc && tvh_crc32(p, tsize, 0xffffffff)) {
-    if (tvhlog_limit(&mt->mt_err_log, 10))
-      tvhwarn(mt->mt_name, "invalid checksum (len %i, errors %zi)",
-              tsize, mt->mt_err_log.count);
+    if (tvhlog_limit(&mt->mt_err_log, 10)) {
+      tvhwarn(mt->mt_name, "%s: invalid checksum (len %i, errors %zi)",
+              logpref, tsize, mt->mt_err_log.count);
+    }
     return -1;
   }
 
@@ -119,7 +121,8 @@ mpegts_psi_section_reassemble0
  */
 void
 mpegts_psi_section_reassemble
-  (mpegts_psi_table_t *mt, const uint8_t *tsb, int crc,
+  (mpegts_psi_table_t *mt, const char *logprefix,
+   const uint8_t *tsb, int crc,
    mpegts_psi_section_callback_t cb, void *opaque)
 {
   int pusi   = tsb[1] & 0x40;
@@ -130,7 +133,8 @@ mpegts_psi_section_reassemble
   if (cc & 0x10) {
     if (mt->mt_sect.ps_cc != -1 && mt->mt_sect.ps_cc != (cc & 0x0f)) {
       uint16_t pid = ((tsb[1] & 0x1f) << 8) | tsb[2];
-      tvhdebug(mt->mt_name, "PID %04X CC error %d != %d", pid, cc & 0x0f, mt->mt_sect.ps_cc);
+      tvhdebug(mt->mt_name, "%s: PID %04X CC error %d != %d",
+               logprefix, pid, cc & 0x0f, mt->mt_sect.ps_cc);
       mt->mt_sect.ps_lock = 0;
     }
     mt->mt_sect.ps_cc = (cc + 1) & 0x0f;
@@ -148,13 +152,13 @@ mpegts_psi_section_reassemble
         mt->mt_sect.ps_lock = 0;
         return;
       }
-      mpegts_psi_section_reassemble0(mt, tsb + off, len, 0, crc, cb, opaque);
+      mpegts_psi_section_reassemble0(mt, logprefix, tsb + off, len, 0, crc, cb, opaque);
       off += len;
     }
   }
 
   while(off < 188) {
-    r = mpegts_psi_section_reassemble0(mt, tsb + off, 188 - off, pusi, crc,
+    r = mpegts_psi_section_reassemble0(mt, logprefix, tsb + off, 188 - off, pusi, crc,
         cb, opaque);
     if(r < 0) {
       mt->mt_sect.ps_lock = 0;
@@ -405,8 +409,9 @@ dvb_table_parse_cb( const uint8_t *sec, size_t len, void *opaque )
 }
 
 void dvb_table_parse
-  (mpegts_psi_table_t *mt, const uint8_t *tsb, int len,
-  int crc, int full, mpegts_psi_parse_callback_t cb)
+  (mpegts_psi_table_t *mt, const char *logprefix,
+   const uint8_t *tsb, int len,
+   int crc, int full, mpegts_psi_parse_callback_t cb)
 {
   const uint8_t *end;
   struct psi_parse parse;
@@ -416,7 +421,7 @@ void dvb_table_parse
   parse.full = full ? 3 : 0;
 
   for (end = tsb + len; tsb < end; tsb += 188)
-    mpegts_psi_section_reassemble(mt, tsb, crc,
+    mpegts_psi_section_reassemble(mt, logprefix, tsb, crc,
                                   dvb_table_parse_cb, &parse);
 }
 
index 44cf39911b53e452d0ae4bbc0ff8726433804348..d7b4d06f2d2b7dd65d4cc96f2b5992fea6121126 100644 (file)
@@ -940,7 +940,8 @@ mpegts_input_recv_packets
 }
 
 static void
-mpegts_input_table_dispatch ( mpegts_mux_t *mm, const uint8_t *tsb, int tsb_len )
+mpegts_input_table_dispatch
+  ( mpegts_mux_t *mm, const char *logprefix, const uint8_t *tsb, int tsb_len )
 {
   int i, len = 0, c = 0;
   const uint8_t *tsb2, *tsb2_end;
@@ -970,8 +971,8 @@ mpegts_input_table_dispatch ( mpegts_mux_t *mm, const uint8_t *tsb, int tsb_len
     mt = vec[i];
     if (!mt->mt_destroyed && mt->mt_pid == pid)
       for (tsb2 = tsb, tsb2_end = tsb + tsb_len; tsb2 < tsb2_end; tsb2 += 188)
-        mpegts_psi_section_reassemble((mpegts_psi_table_t *)mt, tsb2,
-                                      mt->mt_flags & MT_CRC,
+        mpegts_psi_section_reassemble((mpegts_psi_table_t *)mt, logprefix,
+                                      tsb2, mt->mt_flags & MT_CRC,
                                       mpegts_table_dispatch, mt);
     mpegts_table_release(mt);
   }
@@ -1067,10 +1068,13 @@ mpegts_input_process
 #if ENABLE_TSDEBUG
   off_t tsdebug_pos;
 #endif
+  char muxname[256];
 
   if (mm == NULL || (mmi = mm->mm_active) == NULL)
     return 0;
 
+  mpegts_mux_nice_name(mm, muxname, sizeof(muxname));
+
   assert(mm == mmi->mmi_mux);
 
 #if ENABLE_TSDEBUG
@@ -1119,7 +1123,7 @@ mpegts_input_process
              tsb2 < tsb2_end; tsb2 += 188) {
           cc = tsb2[3] & 0x0f;
           if (cc2 != 0xff && cc2 != cc) {
-            tvhtrace("mpegts", "pid %04X cc err %2d != %2d", pid, cc, cc2);
+            tvhtrace("mpegts", "%s: pid %04X cc err %2d != %2d", muxname, pid, cc, cc2);
             ++mmi->tii_stats.cc;
           }
           cc2 = (cc + 1) & 0xF;
@@ -1163,7 +1167,7 @@ mpegts_input_process
       if (type & (MPS_TABLE | MPS_FTABLE)) {
         if (!(tsb[1] & 0x80)) {
           if (type & MPS_FTABLE)
-            mpegts_input_table_dispatch(mm, tsb, llen);
+            mpegts_input_table_dispatch(mm, muxname, tsb, llen);
           if (type & MPS_TABLE) {
             mpegts_table_feed_t *mtf = malloc(sizeof(mpegts_table_feed_t)+llen);
             mtf->mtf_len = llen;
@@ -1309,6 +1313,8 @@ mpegts_input_table_thread ( void *aux )
 {
   mpegts_table_feed_t   *mtf;
   mpegts_input_t        *mi = aux;
+  mpegts_mux_t          *mm = NULL;
+  char                   muxname[256];
 
   pthread_mutex_lock(&mi->mi_output_lock);
   while (mi->mi_running) {
@@ -1323,8 +1329,13 @@ mpegts_input_table_thread ( void *aux )
     
     /* Process */
     pthread_mutex_lock(&global_lock);
-    if (mtf->mtf_mux && mtf->mtf_mux->mm_active)
-      mpegts_input_table_dispatch(mtf->mtf_mux, mtf->mtf_tsb, mtf->mtf_len);
+    if (mm != mtf->mtf_mux) {
+      mm = mtf->mtf_mux;
+      if (mm)
+        mpegts_mux_nice_name(mm, muxname, sizeof(muxname));
+    }
+    if (mm && mm->mm_active)
+      mpegts_input_table_dispatch(mm, muxname, mtf->mtf_tsb, mtf->mtf_len);
     pthread_mutex_unlock(&global_lock);
 
     /* Cleanup */
index 4501c79adc8c035e798784e9081fde4390025bcb..dc9c6fff084dccda6acd708e673f20c799dabc5f 100644 (file)
@@ -525,17 +525,17 @@ pass_muxer_write_ts(muxer_t *m, pktbuf_t *pb)
         /* PAT */
         if (pid == DVB_PAT_PID) {
 
-          dvb_table_parse(&pm->pm_pat, tsb, l, 1, 0, pass_muxer_pat_cb);
+          dvb_table_parse(&pm->pm_pat, "-", tsb, l, 1, 0, pass_muxer_pat_cb);
 
         /* SDT */
         } else if (pid == DVB_SDT_PID) {
         
-          dvb_table_parse(&pm->pm_sdt, tsb, l, 1, 0, pass_muxer_sdt_cb);
+          dvb_table_parse(&pm->pm_sdt, "-", tsb, l, 1, 0, pass_muxer_sdt_cb);
 
         /* EIT */
         } else if (pid == DVB_EIT_PID) {
         
-          dvb_table_parse(&pm->pm_eit, tsb, l, 1, 0, pass_muxer_eit_cb);
+          dvb_table_parse(&pm->pm_eit, "-", tsb, l, 1, 0, pass_muxer_eit_cb);
 
         /* PMT */
         } else {