case 0:
case 0x1111:
return 0;
+ case 0x13E: // workaround for 11258H and 11470V on hotbird with same ONID/TSID (0x13E/0x578)
+ return orbital_position != 130 || tsid != 0x578;
case 1:
return orbital_position == 192;
case 0x00B1:
return tsid != 0x00B0;
+ case 0x00eb:
+ return tsid != 0x4321;
case 0x0002:
return abs(orbital_position-282) < 6;
default:
RESULT eDVBScan::startFilter()
{
bool startSDT=true;
- assert(m_demux);
+ ASSERT(m_demux);
/* only start required filters filter */
{
std::vector<ProgramAssociationSection*>::const_iterator i =
m_PAT->getSections().begin();
- assert(i != m_PAT->getSections().end());
+ ASSERT(i != m_PAT->getSections().end());
tsid = (*i)->getTableIdExtension(); // in PAT this is the transport stream id
m_pat_tsid = eTransportStreamID(tsid);
for (; i != m_PAT->getSections().end(); ++i)
}
case iDVBFrontend::feTerrestrial:
{
+ ePtr<iDVBFrontend> fe;
eDVBFrontendParametersTerrestrial parm;
m_ch_current->getDVBT(parm);
snprintf(sname, 255, "%d SID 0x%02x",
parm.frequency/1000,
m_pmt_in_progress->first);
+ if (!m_channel->getFrontend(fe))
+ {
+ ePyObject tp_dict = PyDict_New();
+ fe->getTransponderData(tp_dict, false);
+ m_corrected_frequencys[m_chid_current] =
+ PyInt_AsLong(PyDict_GetItemString(tp_dict, "frequency"));
+ Py_DECREF(tp_dict);
+ }
break;
}
case iDVBFrontend::feCable:
if (!(m_flags & scanOnlyFree) || !m_pmt_in_progress->second.scrambled) {
SCAN_eDebug("add not scrambled!");
- std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i = m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
+ std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i =
+ m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
if (i.second)
{
m_last_service = i.first;
for (std::map<eDVBChannelID, ePtr<iDVBFrontendParameters> >::const_iterator
ch(m_new_channels.begin()); ch != m_new_channels.end(); ++ch)
{
+ int system;
+ ch->second->getSystem(system);
+ if (system == iDVBFrontend::feTerrestrial)
+ {
+ std::map<eDVBChannelID, unsigned int>::iterator it = m_corrected_frequencys.find(ch->first);
+ if (it != m_corrected_frequencys.end())
+ {
+ eDVBFrontendParameters *p = (eDVBFrontendParameters*)&(*ch->second);
+ eDVBFrontendParametersTerrestrial parm;
+ p->getDVBT(parm);
+ eDebug("corrected freq for tsid %04x, onid %04x, ns %08x is %d, old was %d",
+ ch->first.transport_stream_id.get(), ch->first.original_network_id.get(),
+ ch->first.dvbnamespace.get(), it->second, parm.frequency);
+ parm.frequency = it->second;
+ p->setDVBT(parm);
+ m_corrected_frequencys.erase(it);
+ }
+ }
if (m_flags & scanOnlyFree)
{
eDVBFrontendParameters *ptr = (eDVBFrontendParameters*)&(*ch->second);
}
}
- std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i = m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
+ std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i =
+ m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
if (i.second)
{