subscription: Move TSS_NO_ACCESS outside of the fatal errors
... but keep to report it as the first reason for which the streaming was canceled ... Remove also the 25-seconds descrambler check. There is a global streaming timeout which takes care now.
This commit is contained in:
parent
abad73972d
commit
651d0404bd
4 changed files with 28 additions and 25 deletions
|
@ -60,7 +60,6 @@ typedef struct th_descrambler {
|
|||
} th_descrambler_t;
|
||||
|
||||
typedef struct th_descrambler_runtime {
|
||||
time_t dr_last_descramble;
|
||||
uint32_t dr_key:1;
|
||||
uint32_t dr_key_first:1;
|
||||
uint8_t dr_key_index;
|
||||
|
|
|
@ -133,7 +133,6 @@ descrambler_service_start ( service_t *t )
|
|||
t->s_descramble = dr = calloc(1, sizeof(th_descrambler_runtime_t));
|
||||
sbuf_init(&dr->dr_buf);
|
||||
dr->dr_key_index = 0xff;
|
||||
dr->dr_last_descramble = dispatch_clock;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -362,8 +361,8 @@ descrambler_descramble ( service_t *t,
|
|||
td->td_csa->csa_descramble(td->td_csa,
|
||||
(mpegts_service_t *)td->td_service,
|
||||
tsb2);
|
||||
dr->dr_last_descramble = dispatch_clock;
|
||||
}
|
||||
service_reset_streaming_status_flags(t, TSS_NO_ACCESS);
|
||||
sbuf_free(&dr->dr_buf);
|
||||
}
|
||||
ki = tsb[3];
|
||||
|
@ -396,7 +395,7 @@ descrambler_descramble ( service_t *t,
|
|||
td->td_csa->csa_descramble(td->td_csa,
|
||||
(mpegts_service_t *)td->td_service,
|
||||
tsb);
|
||||
dr->dr_last_descramble = dispatch_clock;
|
||||
service_reset_streaming_status_flags(t, TSS_NO_ACCESS);
|
||||
return 1;
|
||||
next:
|
||||
flush_data = 1;
|
||||
|
@ -446,12 +445,13 @@ next2:
|
|||
}
|
||||
}
|
||||
sbuf_append(&dr->dr_buf, tsb, 188);
|
||||
service_set_streaming_status_flags(t, TSS_NO_ACCESS);
|
||||
}
|
||||
} else {
|
||||
service_set_streaming_status_flags(t, TSS_NO_ACCESS);
|
||||
}
|
||||
if (flush_data)
|
||||
descrambler_flush_table_data(t);
|
||||
if (dr->dr_last_descramble + 25 < dispatch_clock)
|
||||
return -1;
|
||||
if (count && count == failed)
|
||||
return -1;
|
||||
return count;
|
||||
|
|
|
@ -1120,29 +1120,24 @@ service_servicetype_txt ( service_t *s )
|
|||
void
|
||||
service_set_streaming_status_flags_(service_t *t, int set)
|
||||
{
|
||||
int n;
|
||||
streaming_message_t *sm;
|
||||
lock_assert(&t->s_stream_mutex);
|
||||
|
||||
n = t->s_streaming_status;
|
||||
|
||||
n |= set;
|
||||
|
||||
if(n == t->s_streaming_status)
|
||||
if(set == t->s_streaming_status)
|
||||
return; // Already set
|
||||
|
||||
t->s_streaming_status = n;
|
||||
t->s_streaming_status = set;
|
||||
|
||||
tvhlog(LOG_DEBUG, "service", "%s: Status changed to %s%s%s%s%s%s%s%s",
|
||||
service_nicename(t),
|
||||
n & TSS_INPUT_HARDWARE ? "[Hardware input] " : "",
|
||||
n & TSS_INPUT_SERVICE ? "[Input on service] " : "",
|
||||
n & TSS_MUX_PACKETS ? "[Demuxed packets] " : "",
|
||||
n & TSS_PACKETS ? "[Reassembled packets] " : "",
|
||||
n & TSS_NO_DESCRAMBLER ? "[No available descrambler] " : "",
|
||||
n & TSS_NO_ACCESS ? "[No access] " : "",
|
||||
n & TSS_GRACEPERIOD ? "[Graceperiod expired] " : "",
|
||||
n & TSS_TIMEOUT ? "[Data timeout] " : "");
|
||||
set & TSS_INPUT_HARDWARE ? "[Hardware input] " : "",
|
||||
set & TSS_INPUT_SERVICE ? "[Input on service] " : "",
|
||||
set & TSS_MUX_PACKETS ? "[Demuxed packets] " : "",
|
||||
set & TSS_PACKETS ? "[Reassembled packets] " : "",
|
||||
set & TSS_NO_DESCRAMBLER ? "[No available descrambler] " : "",
|
||||
set & TSS_NO_ACCESS ? "[No access] " : "",
|
||||
set & TSS_GRACEPERIOD ? "[Graceperiod expired] " : "",
|
||||
set & TSS_TIMEOUT ? "[Data timeout] " : "");
|
||||
|
||||
sm = streaming_msg_create_code(SMT_SERVICE_STATUS,
|
||||
t->s_streaming_status);
|
||||
|
|
|
@ -379,13 +379,13 @@ typedef struct service {
|
|||
#define TSS_INPUT_SERVICE 0x2
|
||||
#define TSS_MUX_PACKETS 0x4
|
||||
#define TSS_PACKETS 0x8
|
||||
#define TSS_NO_ACCESS 0x10
|
||||
|
||||
#define TSS_GRACEPERIOD 0x8000
|
||||
|
||||
// Errors
|
||||
#define TSS_NO_DESCRAMBLER 0x10000
|
||||
#define TSS_NO_ACCESS 0x20000
|
||||
#define TSS_TIMEOUT 0x40000
|
||||
#define TSS_TIMEOUT 0x20000
|
||||
|
||||
#define TSS_ERRORS 0xffff0000
|
||||
|
||||
|
@ -506,8 +506,17 @@ void service_set_streaming_status_flags_(service_t *t, int flag);
|
|||
static inline void
|
||||
service_set_streaming_status_flags(service_t *t, int flag)
|
||||
{
|
||||
if ((t->s_streaming_status & flag) != flag)
|
||||
service_set_streaming_status_flags_(t, flag);
|
||||
int n = t->s_streaming_status;
|
||||
if ((n & flag) != flag)
|
||||
service_set_streaming_status_flags_(t, n | flag);
|
||||
}
|
||||
|
||||
static inline void
|
||||
service_reset_streaming_status_flags(service_t *t, int flag)
|
||||
{
|
||||
int n = t->s_streaming_status;
|
||||
if ((n & flag) != 0)
|
||||
service_set_streaming_status_flags_(t, n & ~flag);
|
||||
}
|
||||
|
||||
struct streaming_start;
|
||||
|
|
Loading…
Add table
Reference in a new issue