+void eDVBCISlot::addVtunerPid(eDVBServicePMTHandler *pmthandler)
+{
+ ePtr<iDVBDemux> demux;
+ eDVBServicePMTHandler::program p;
+
+ bool ignore = 0;
+ if (!pmthandler->getDataDemux(demux))
+ {
+
+ if (!pmthandler->getProgramInfo(p))
+ {
+ for (std::list<eDVBServicePMTHandler::program::capid_pair>::const_iterator i(p.caids.begin());
+ i != p.caids.end(); ++i)
+ {
+ ignore = 0;
+ for (eSmartPtrList<eDVBECMParser>::iterator it(m_ecms.begin()); it != m_ecms.end(); ++it)
+ {
+ if(it->getPid() == i->capid)
+ {
+ ignore = 1;
+ break;
+ }
+ }
+
+ if (i->capid >= 0 && !ignore)
+ {
+ ePtr<eDVBECMParser> ecm;
+ eDebug("PES Start CAPID = %d Caid = %d", i->capid, i->caid);
+ ecm = new eDVBECMParser(demux);
+ m_ecms.push_back(ecm);
+ ecm->start(i->capid);
+ }
+ }
+ }
+ }
+
+}
+
+void eDVBCISlot::removeVtunerPid(void)
+{
+ eDebugCI("eDVBCISlot::removeVtunerPid...");
+ for (eSmartPtrList<eDVBECMParser>::iterator it(m_ecms.begin()); it != m_ecms.end(); ++it)
+ {
+ it->stop();
+ }
+ m_ecms.clear();
+}
+