diff --git a/src/descrambler.h b/src/descrambler.h index c5ba14a1..9bd2cda7 100755 --- a/src/descrambler.h +++ b/src/descrambler.h @@ -69,6 +69,7 @@ typedef struct th_descrambler_runtime { time_t dr_key_timestamp[2]; time_t dr_ecm_start; time_t dr_ecm_key_time; + time_t dr_last_err; sbuf_t dr_buf; loglimiter_t dr_loglimit_key; } th_descrambler_runtime_t; diff --git a/src/descrambler/descrambler.c b/src/descrambler/descrambler.c index 4d3b4f56..12cd0092 100755 --- a/src/descrambler/descrambler.c +++ b/src/descrambler/descrambler.c @@ -409,8 +409,14 @@ next2: */ if (dr->dr_buf.sb_ptr >= 3000 * 188) { sbuf_cut(&dr->dr_buf, 300 * 188); - tvhtrace("descrambler", "cannot decode packets for service \"%s\"", - ((mpegts_service_t *)t)->s_dvb_svcname); + if (dr->dr_last_err + 10 < dispatch_clock) { + dr->dr_last_err = dispatch_clock; + tvherror("descrambler", "cannot decode packets for service \"%s\"", + ((mpegts_service_t *)t)->s_dvb_svcname); + } else { + tvhtrace("descrambler", "cannot decode packets for service \"%s\"", + ((mpegts_service_t *)t)->s_dvb_svcname); + } } sbuf_append(&dr->dr_buf, tsb, 188); }