workaround for transponder with same tsid/onid on hotbird (11470V, 11258H)
[enigma2.git] / lib / dvb / scan.cpp
index 2a08bf79701d0ad7136683bfea48d95e3c6c010e..76c7101157a78cbaffef8f365d0a8c4f24d2c546 100644 (file)
@@ -40,6 +40,8 @@ int eDVBScan::isValidONIDTSID(int orbital_position, eOriginalNetworkID onid, eTr
        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:
@@ -205,7 +207,7 @@ RESULT eDVBScan::startFilter()
                if (m_ready_all & readyPAT)
                {
                        m_PAT = new eTable<ProgramAssociationSection>(m_scan_debug);
-                       if (m_PAT->start(m_demux, eDVBPATSpec()))
+                       if (m_PAT->start(m_demux, eDVBPATSpec(4000)))
                                return -1;
                        CONNECT(m_PAT->tableReady, eDVBScan::PATready);
                }
@@ -376,7 +378,7 @@ void eDVBScan::PMTready(int err)
        }
 
        if (m_pmt_in_progress != m_pmts_to_read.end())
-               m_PMT->start(m_demux, eDVBPMTSpec(m_pmt_in_progress->second.pmtPid, m_pmt_in_progress->first));
+               m_PMT->start(m_demux, eDVBPMTSpec(m_pmt_in_progress->second.pmtPid, m_pmt_in_progress->first, 4000));
        else
        {
                m_PMT = 0;
@@ -758,7 +760,7 @@ void eDVBScan::channelDone()
                        SCAN_eDebug("name '%s', provider_name '%s'", sname, pname);
                        service->m_service_name = convertDVBUTF8(sname);
                        service->genSortName();
-                       service->m_provider_name = pname;
+                       service->m_provider_name = convertDVBUTF8(pname);
                }
 
                if (!(m_flags & scanOnlyFree) || !m_pmt_in_progress->second.scrambled) {