]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
descrambler: show the not available key for multipid
authorJaroslav Kysela <perex@perex.cz>
Mon, 12 Jun 2017 19:23:24 +0000 (21:23 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 12 Jun 2017 19:23:24 +0000 (21:23 +0200)
src/descrambler.h
src/descrambler/descrambler.c

index d45003930b9646b7aa708cb56d7771b88edba99c..d38d18b85ca5e2cb970914a1d091fe521f6c2ec3 100644 (file)
@@ -81,6 +81,7 @@ typedef struct th_descrambler_key {
   uint8_t  key_index;
   uint8_t  key_valid;
   uint8_t  key_changed;
+  tvhlog_limit_t key_loglimit;
 } th_descrambler_key_t;
 
 typedef struct th_descrambler_runtime {
index 05492bf7dd43051fdcb73bba131a80911b8c8729..554c13d1064469fa50111e7552b1fc6b1f3acc0d 100644 (file)
@@ -1014,7 +1014,13 @@ descrambler_descramble ( service_t *t,
         goto dd_destroy;
       if (dr->dr_key_multipid) {
         tk = key_find_struct(dr, tk, tsb2, t);
-        if (tk == NULL) goto next;
+        if (tk == NULL) {
+          if (t->s_start_time + MAX(3000000, tk->key_interval) < mclk() &&
+              tvhlog_limit(&dr->dr_loglimit_key, 10))
+            tvhwarn(LS_DESCRAMBLER, "%s stream key[%d] is not available",
+                    ((mpegts_service_t *)t)->s_dvb_svcname, tk->key_pid);
+          goto next;
+        }
       }
       now = mclk();
 #ifdef DEBUG2