descrambler: introduce descrambler_keys()
This commit is contained in:
parent
fb12cf9239
commit
9887c5773d
4 changed files with 27 additions and 28 deletions
|
@ -125,6 +125,8 @@ void descrambler_done ( void );
|
|||
void descrambler_service_start ( struct service *t );
|
||||
void descrambler_service_stop ( struct service *t );
|
||||
void descrambler_caid_changed ( struct service *t );
|
||||
void descrambler_keys ( th_descrambler_t *t,
|
||||
const uint8_t *even, const uint8_t *odd );
|
||||
int descrambler_descramble ( struct service *t,
|
||||
struct elementary_stream *st,
|
||||
const uint8_t *tsb );
|
||||
|
|
|
@ -901,7 +901,6 @@ capmt_process_key(capmt_t *capmt, uint8_t adapter, uint16_t seq,
|
|||
{
|
||||
mpegts_service_t *t;
|
||||
capmt_service_t *ct;
|
||||
unsigned int i;
|
||||
|
||||
pthread_mutex_lock(&capmt->capmt_mutex);
|
||||
LIST_FOREACH(ct, &capmt->capmt_services, ct_link) {
|
||||
|
@ -922,22 +921,7 @@ capmt_process_key(capmt_t *capmt, uint8_t adapter, uint16_t seq,
|
|||
if (adapter != ct->ct_adapter)
|
||||
continue;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
if (even[i]) {
|
||||
tvhcsa_set_key_even(&ct->ct_csa, even);
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < 8; i++)
|
||||
if (odd[i]) {
|
||||
tvhcsa_set_key_odd(&ct->ct_csa, odd);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ct->td_keystate != DS_RESOLVED)
|
||||
tvhlog(LOG_DEBUG, "capmt", "Obtained key for service \"%s\"",
|
||||
t->s_dvb_svcname);
|
||||
|
||||
ct->td_keystate = DS_RESOLVED;
|
||||
descrambler_keys((th_descrambler_t *)ct, even, odd);
|
||||
}
|
||||
pthread_mutex_unlock(&capmt->capmt_mutex);
|
||||
}
|
||||
|
|
|
@ -797,17 +797,7 @@ forbid:
|
|||
t->s_dvb_svcname, delay, ct->cs_cwc->cwc_hostname,
|
||||
ct->cs_cwc->cwc_port);
|
||||
|
||||
ct->td_keystate = DS_RESOLVED;
|
||||
for (i = 3; i < 3 + 8; i++)
|
||||
if (msg[i]) {
|
||||
tvhcsa_set_key_even(&ct->cs_csa, msg + 3);
|
||||
break;
|
||||
}
|
||||
for (i = 3 + 8; i < 3 + 8 + 8; i++)
|
||||
if (msg[i]) {
|
||||
tvhcsa_set_key_odd(&ct->cs_csa, msg + 3 + 8);
|
||||
break;
|
||||
}
|
||||
descrambler_keys((th_descrambler_t *)ct, msg + 3, msg + 3 + 8);
|
||||
|
||||
ep = LIST_FIRST(&ct->cs_pids);
|
||||
while(ep != NULL) {
|
||||
|
|
|
@ -160,6 +160,29 @@ descrambler_caid_changed ( service_t *t )
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
descrambler_keys ( th_descrambler_t *td,
|
||||
const uint8_t *even, const uint8_t *odd )
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
if (even[i]) {
|
||||
tvhcsa_set_key_even(td->td_csa, even);
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < 8; i++)
|
||||
if (odd[i]) {
|
||||
tvhcsa_set_key_odd(td->td_csa, odd);
|
||||
break;
|
||||
}
|
||||
|
||||
if (td->td_keystate != DS_RESOLVED)
|
||||
tvhlog(LOG_DEBUG, "descrambler", "Obtained key for service \"%s\"",
|
||||
((mpegts_service_t *)td->td_service)->s_dvb_svcname);
|
||||
td->td_keystate = DS_RESOLVED;
|
||||
}
|
||||
|
||||
int
|
||||
descrambler_descramble ( service_t *t,
|
||||
elementary_stream_t *st,
|
||||
|
|
Loading…
Add table
Reference in a new issue