Merge branch 'bug_615_replace_rawfile' into m2ts_test
authorghost <andreas.monzner@multimedia-labs.de>
Wed, 24 Nov 2010 15:15:02 +0000 (16:15 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Wed, 24 Nov 2010 15:15:02 +0000 (16:15 +0100)
1  2 
lib/dvb/pmt.cpp

diff --combined lib/dvb/pmt.cpp
index 0d2f85c443c68d3132a6e6024ddd7d14391820ff,46fa12edb6e8903ab40a633ee61b6f2e3a70dca8..e54601cfca99a06d4e6cc22e3bf8a54521f3bc10
@@@ -131,8 -131,6 +131,8 @@@ void eDVBServicePMTHandler::PATready(in
        ePtr<eTable<ProgramAssociationSection> > ptr;
        if (!m_PAT.getCurrent(ptr))
        {
 +              int service_id_single = -1;
 +              int pmtpid_single = -1;
                int pmtpid = -1;
                std::vector<ProgramAssociationSection*>::const_iterator i;
                for (i = ptr->getSections().begin(); pmtpid == -1 && i != ptr->getSections().end(); ++i)
                        const ProgramAssociationSection &pat = **i;
                        ProgramAssociationConstIterator program;
                        for (program = pat.getPrograms()->begin(); pmtpid == -1 && program != pat.getPrograms()->end(); ++program)
 +                      {
                                if (eServiceID((*program)->getProgramNumber()) == m_reference.getServiceID())
                                        pmtpid = (*program)->getProgramMapPid();
 +                              if (pmtpid_single == -1 && pmtpid == -1)
 +                              {
 +                                      pmtpid_single = (*program)->getProgramMapPid();
 +                                      service_id_single = (*program)->getProgramNumber();
 +                              }
 +                              else
 +                                      pmtpid_single = service_id_single = -1;
 +                      }
 +              }
 +              if (pmtpid_single != -1) // only one PAT entry .. so we use this one
 +              {
 +                      m_reference.setServiceID(eServiceID(service_id_single));
 +                      pmtpid = pmtpid_single;
                }
                if (pmtpid == -1)
                        serviceEvent(eventNoPATEntry);
@@@ -691,11 -675,11 +691,11 @@@ void eDVBServicePMTHandler::SDTScanEven
  
  int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux, eCueSheet *cue, bool simulate, eDVBService *service)
  {
-       ePtr<iDataSource> s;
+       ePtr<iTsSource> s;
        return tuneExt(ref, use_decode_demux, s, NULL, cue, simulate, service);
  }
  
- int eDVBServicePMTHandler::tuneExt(eServiceReferenceDVB &ref, int use_decode_demux, ePtr<iDataSource> &source, const char *streaminfo_file, eCueSheet *cue, bool simulate, eDVBService *service)
+ int eDVBServicePMTHandler::tuneExt(eServiceReferenceDVB &ref, int use_decode_demux, ePtr<iTsSource> &source, const char *streaminfo_file, eCueSheet *cue, bool simulate, eDVBService *service)
  {
        RESULT res=0;
        m_reference = ref;