From b0e030b326c04c5c16e7a1bac59e0540fb8bb2d5 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 8 Dec 2014 20:39:21 +0100 Subject: [PATCH] descrambler: move the key change code to proper location --- src/descrambler/descrambler.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/descrambler/descrambler.c b/src/descrambler/descrambler.c index 6c690ffd..b97c25d4 100755 --- a/src/descrambler/descrambler.c +++ b/src/descrambler/descrambler.c @@ -371,6 +371,16 @@ descrambler_descramble ( service_t *t, } if (td->td_keystate != DS_RESOLVED) continue; + + if (dr->dr_key_changed) { + dr->dr_csa.csa_flush(&dr->dr_csa, (mpegts_service_t *)td->td_service); + if (dr->dr_key_changed & 1) + tvhcsa_set_key_even(&dr->dr_csa, dr->dr_key_even); + if (dr->dr_key_changed & 2) + tvhcsa_set_key_odd(&dr->dr_csa, dr->dr_key_odd); + dr->dr_key_changed = 0; + } + 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; @@ -404,15 +414,6 @@ descrambler_descramble ( service_t *t, sbuf_free(&dr->dr_buf); } - if (dr->dr_key_changed) { - dr->dr_csa.csa_flush(&dr->dr_csa, (mpegts_service_t *)td->td_service); - if (dr->dr_key_changed & 1) - tvhcsa_set_key_even(&dr->dr_csa, dr->dr_key_even); - if (dr->dr_key_changed & 2) - tvhcsa_set_key_odd(&dr->dr_csa, dr->dr_key_odd); - dr->dr_key_changed = 0; - } - ki = tsb[3]; if ((ki & 0x80) != 0x00) { if (key_valid(dr, ki) == 0) {