add ability to "zapto" and "record" services and use just cached pids (no use of PMT) ( no playback yet !!!! )
this is implemented likewise to enigma1
Example entry in lamedb:
6dca:
00c00000:044d:0001:1:0
Das Erste
p:ARD,c:000065,c:010066,c:020068,c:030065,f:4
p: is the provider name
c:XXPPPP: are cached pids
00 is the video pid
01 is the audio pid
02 is the text pid
03 is the pcr pid
f: is a flag bitmask
bit 3 (decimal 4) is used for disable use of the pmt (just use cached pids)
0);
fprintf(f, "%s\n", i->second->m_service_name.c_str());
+
fprintf(f, "p:%s", i->second->m_provider_name.c_str());
// write cached pids
ca != i->second->m_ca.end(); ++ca)
fprintf(f, ",C:%04x", *ca);
+ if (it->second->m_flags)
+ fprintf(f, ",f:%x", it->second->m_flags);
+
fprintf(f, "\n");
services++;
}
std::string m_provider_name;
void genSortName();
-
+
int m_flags;
+ enum
+ {
+#if 0 // not yet implemented
+ dxNoSDT=1, // don't get SDT
+ dxDontshow=2,
+ dxHoldName=8,
+ dxNewFound=64, // found in prev scan
+#endif
+ dxNoDVB=4 // dont use PMT for this service ( use cached pids )
+ };
+
+ bool usePMT() const { return !(m_flags & dxNoDVB); }
+
std::set<int> m_ca;
std::map<int,int> m_cache;
virtual ~eDVBService();
program.pmtPid = -1;
program.textPid = -1;
- if (!m_PMT.getCurrent(ptr))
+ if ( ((m_service && m_service->usePMT()) || !m_service) && !m_PMT.getCurrent(ptr))
{
int cached_apid_ac3 = -1;
int cached_apid_mpeg = -1;
eDebug("allocatePVRChannel failed!\n");
m_channel = m_pvr_channel;
}
-
+
+ ePtr<iDVBChannelList> db;
+ if (!m_resourceManager->getChannelList(db))
+ db->getService((eServiceReferenceDVB&)m_reference, m_service);
+
if (m_channel)
{
m_channel->connectStateChange(
m_pvr_channel->playFile(ref.path.c_str());
}
- ePtr<iDVBChannelList> db;
- if (!m_resourceManager->getChannelList(db))
- db->getService((eServiceReferenceDVB&)m_reference, m_service);
-
return res;
}