scansdt: more checks if the same TP

This commit is contained in:
Jacek Jendrzej
2018-10-08 13:18:40 +02:00
parent 41b7be69ad
commit 213656914f

View File

@@ -103,7 +103,7 @@ bool CSdt::PMTPing(unsigned short pid, unsigned short sid)
} }
#ifdef DEBUG_SDT #ifdef DEBUG_SDT
if(!ret) if(!ret)
printf("Ping: PMT-pid 0%x %s\n", pid,badservice ? "not supportet stream type":"failed"); printf("Ping: PMT-pid 0%x %s\n", pid,badservice ? "not supported stream type":"failed");
#endif #endif
return ret; return ret;
} }
@@ -232,6 +232,11 @@ bool CSdt::Parse(t_transport_stream_id &tsid, t_original_network_id &onid)
ParseServiceDescriptor(NULL, NULL, patit->first); ParseServiceDescriptor(NULL, NULL, patit->first);
ret = true; ret = true;
} }
if(current && current_tp_id != CFEManager::getInstance()->getLiveFE()->getTsidOnid()){
ret = false;
break;
}
} }
} }
return ret; return ret;
@@ -240,6 +245,7 @@ bool CSdt::Parse(t_transport_stream_id &tsid, t_original_network_id &onid)
if(!sdt_read) if(!sdt_read)
return false; return false;
bool feiled = false;
bool updated = false; bool updated = false;
for (it = sections.begin(); it != sections.end(); ++it) { for (it = sections.begin(); it != sections.end(); ++it) {
ServiceDescriptionSection * sdt = *it; ServiceDescriptionSection * sdt = *it;
@@ -309,14 +315,18 @@ bool CSdt::Parse(t_transport_stream_id &tsid, t_original_network_id &onid)
break; break;
} }
} }
if(current && current_tp_id != CFEManager::getInstance()->getLiveFE()->getTsidOnid()) if(current && current_tp_id != CFEManager::getInstance()->getLiveFE()->getTsidOnid()){
feiled = true;
break; break;
} }
} }
}
if(pat_tsid == transport_stream_id){ if(pat_tsid == transport_stream_id){
for (std::map<int,int>::iterator patit=sidpmt.begin(); patit!=sidpmt.end(); ++patit){ for (std::map<int,int>::iterator patit=sidpmt.begin(); patit!=sidpmt.end(); ++patit){
if(current && current_tp_id != CFEManager::getInstance()->getLiveFE()->getTsidOnid()) if(current && current_tp_id != CFEManager::getInstance()->getLiveFE()->getTsidOnid()){
feiled = true;
break; break;
}
if(patit->first != 0 && patit->second != 0){ if(patit->first != 0 && patit->second != 0){
if(PMTPing(patit->second,patit->first)){ if(PMTPing(patit->second,patit->first)){
ParseServiceDescriptor(NULL, NULL, patit->first); ParseServiceDescriptor(NULL, NULL, patit->first);
@@ -328,6 +338,9 @@ bool CSdt::Parse(t_transport_stream_id &tsid, t_original_network_id &onid)
tsid = transport_stream_id; tsid = transport_stream_id;
onid = original_network_id; onid = original_network_id;
if(feiled)
return false;
if(current && current_tp_id != CFEManager::getInstance()->getLiveFE()->getTsidOnid()) if(current && current_tp_id != CFEManager::getInstance()->getLiveFE()->getTsidOnid())
return false; return false;