]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
descrambler: add a timewindow for the odd/even key change
authorJaroslav Kysela <perex@perex.cz>
Wed, 11 Jun 2014 12:32:19 +0000 (14:32 +0200)
committerJaroslav Kysela <perex@perex.cz>
Wed, 11 Jun 2014 12:32:19 +0000 (14:32 +0200)
src/descrambler/descrambler.c

index 5a65a8726628944b91a6da486c70395ec51fdbd3..fc0fe98cc0f68ab30864354602b3176e3f91deb2 100755 (executable)
@@ -272,7 +272,8 @@ descrambler_descramble ( service_t *t,
     if (dr->dr_buf.sb_ptr > 0) {
       for (off = 0, size = dr->dr_buf.sb_ptr; off < size; off += 188) {
         tsb2 = dr->dr_buf.sb_data + off;
-        if ((tsb2[3] & 0x80) != 0x00 && dr->dr_key_index != (tsb2[3] & 0x40)) {
+        if ((tsb2[3] & 0x80) != 0x00 && dr->dr_key_index != (tsb2[3] & 0x40) &&
+            dr->dr_key_start + 2 < dispatch_clock) {
           tvhtrace("descrambler", "%s - stream key changed to %s",
                                   ((mpegts_service_t *)t)->s_dvb_svcname,
                                   (tsb2[3] & 0x40) ? "odd" : "even");
@@ -288,7 +289,8 @@ descrambler_descramble ( service_t *t,
       }
       sbuf_free(&dr->dr_buf);
     }
-    if ((tsb[3] & 0x80) != 0x00 && dr->dr_key_index != (tsb[3] & 0x40)) {
+    if ((tsb[3] & 0x80) != 0x00 && dr->dr_key_index != (tsb[3] & 0x40) &&
+       dr->dr_key_start + 2 < dispatch_clock) {
       tvhtrace("descrambler", "%s - stream key changed to %s",
                               ((mpegts_service_t *)t)->s_dvb_svcname,
                               (tsb[3] & 0x40) ? "odd" : "even");