|
SASC
DVBSoftCAM
|
Inheritance diagram for cTpsAuHook:Public Member Functions | |
| cTpsAuHook (void) | |
| ~cTpsAuHook () | |
| virtual void | Process (int pid, unsigned char *data) |
| cTpsAuHook (void) | |
| virtual | ~cTpsAuHook () |
| virtual void | Process (int pid, unsigned char *data) |
| void | DummyProcess (unsigned char *data, int size) |
| cTpsAuHook (void) | |
| ~cTpsAuHook () | |
| virtual void | Process (int pid, unsigned char *data) |
| cTpsAuHook (void) | |
| virtual | ~cTpsAuHook () |
| virtual void | Process (int pid, unsigned char *data) |
| void | DummyProcess (unsigned char *data, int size) |
| cTpsAuHook::cTpsAuHook | ( | void | ) |
Definition at line 960 of file tps.c.
References cPids::AddPid(), and cLogHook::pids.
:cLogHook(HOOK_TPSAU,"tpsau") { mod=0; pmtpid=aupid=-1; pids.AddPid(0x0000,0x00,0xff); // PAT }
| cTpsAuHook::cTpsAuHook | ( | void | ) |
| virtual cTpsAuHook::~cTpsAuHook | ( | ) | [virtual] |
| cTpsAuHook::cTpsAuHook | ( | void | ) |
| cTpsAuHook::~cTpsAuHook | ( | ) |
| cTpsAuHook::cTpsAuHook | ( | void | ) |
| virtual cTpsAuHook::~cTpsAuHook | ( | ) | [virtual] |
| void cTpsAuHook::DummyProcess | ( | unsigned char * | data, |
| int | size | ||
| ) |
Definition at line 60 of file testTPS.c.
References cStructLoaderPlain::Load(), cStructLoaderPlain::Save(), and tpskeys.
Referenced by main().
| void cTpsAuHook::DummyProcess | ( | unsigned char * | data, |
| int | size | ||
| ) |
| virtual void cTpsAuHook::Process | ( | int | pid, |
| unsigned char * | data | ||
| ) | [virtual] |
Implements cLogHook.
| virtual void cTpsAuHook::Process | ( | int | pid, |
| unsigned char * | data | ||
| ) | [virtual] |
Implements cLogHook.
| void cTpsAuHook::Process | ( | int | pid, |
| unsigned char * | data | ||
| ) | [virtual] |
Implements cLogHook.
Definition at line 972 of file tps.c.
References cOpenTVModule::AddPart(), SI::PAT::associationLoop, AUSID, cLogHook::BailOut(), SI::CRCSection::CheckCRCAndParse(), cPid::filter, cSimpleList< T >::First(), cPidFilter::Flush(), SI::PMT::Stream::getPid(), SI::PAT::Association::getPid(), SI::PMT::getServiceId(), SI::PAT::Association::getServiceId(), SI::PMT::Stream::getStreamType(), cOpenTVModule::Id(), SI::PAT::Association::isNITPid(), L_GEN_DEBUG, L_SYS_TPSAU, mod, cLogHook::pids, PRINTF, SCT_LEN, cPidFilter::Start(), and SI::PMT::streamLoop.
{
if(data) {
if(pid==0) { // PAT
SI::PAT pat(data,false);
if(pat.CheckCRCAndParse()) {
SI::PAT::Association assoc;
for(SI::Loop::Iterator it; pat.associationLoop.getNext(assoc,it);) {
if(!assoc.isNITPid() && assoc.getServiceId()==AUSID) {
pmtpid=assoc.getPid();
PRINTF(L_SYS_TPSAU,"got PMT pid %04x for SID %04x",pmtpid,AUSID);
cPid *pid=pids.First();
if(pid && pid->filter) {
pid->filter->Start(pmtpid,0x02,0xFF);
pid->filter->Flush();
}
else PRINTF(L_GEN_DEBUG,"internal: no pid/filter in cTpsAuHook/pat");
return;
}
}
PRINTF(L_SYS_TPSAU,"no PMT pid found for SID %04x",AUSID);
BailOut();
}
}
else if(pid==pmtpid) { // PMT
SI::PMT pmt(data,false);
if(pmt.CheckCRCAndParse() && pmt.getServiceId()==AUSID) {
SI::PMT::Stream stream;
for(SI::Loop::Iterator it; pmt.streamLoop.getNext(stream,it); ) {
if(stream.getStreamType()==0x05) {
aupid=stream.getPid();
PRINTF(L_SYS_TPSAU,"got AU pid %04x",aupid);
cPid *pid=pids.First();
if(pid && pid->filter) {
pid->filter->Start(aupid,0x87,0xFF);
pid->filter->Flush();
}
else PRINTF(L_GEN_DEBUG,"internal: no pid/filter in cTpsAuHook/pmt");
return;
}
}
PRINTF(L_SYS_TPSAU,"could not locate AU pid in PMT %04x data",pmtpid);
BailOut();
}
}
else if(pid==aupid) {
if(cOpenTVModule::Id(data)==2) {
if(!mod) mod=new cOpenTVModule(data);
if(mod) {
int r=mod->AddPart(data,SCT_LEN(data));
if(r>0) {
PRINTF(L_SYS_TPSAU,"received complete OpenTV module ID 2");
if(tpskeys.ProcessAu(mod)) BailOut();
r=-1;
}
if(r<0) { delete mod; mod=0; }
}
}
}
}
}
| virtual void cTpsAuHook::Process | ( | int | pid, |
| unsigned char * | data | ||
| ) | [virtual] |
Implements cLogHook.