diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-11-22 20:03:07 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-11-22 20:03:07 +0000 |
| commit | c326dee2e7ce346cffecd196d971dd91ef1454f5 (patch) | |
| tree | 8e39dacf813ba3dc8ca8043bc18b33ce7148d26b /lib/dvb/pmt.cpp | |
| parent | 68b9c0b37d880a7c98e63b6cda04cd4457a29f47 (diff) | |
| download | enigma2-c326dee2e7ce346cffecd196d971dd91ef1454f5.tar.gz enigma2-c326dee2e7ce346cffecd196d971dd91ef1454f5.zip | |
work on ci support
please update the libdvbsi++ to CVSDATE >= 20051119
Diffstat (limited to 'lib/dvb/pmt.cpp')
| -rw-r--r-- | lib/dvb/pmt.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index c886c39a..e77c097d 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -3,6 +3,7 @@ #include <lib/dvb/specs.h> #include <lib/dvb/dvb.h> #include <lib/dvb/metaparser.h> +#include <lib/dvb_ci/dvbci.h> #include <dvbsi++/ca_program_map_section.h> eDVBServicePMTHandler::eDVBServicePMTHandler(int record) @@ -12,6 +13,7 @@ eDVBServicePMTHandler::eDVBServicePMTHandler(int record) eDVBResourceManager::getInstance(m_resourceManager); CONNECT(m_PMT.tableReady, eDVBServicePMTHandler::PMTready); CONNECT(m_PAT.tableReady, eDVBServicePMTHandler::PATready); + eDVBCIInterfaces::getInstance()->addPMTHandler(this); eDebug("new PMT handler record: %d", m_record); } @@ -27,6 +29,7 @@ eDVBServicePMTHandler::~eDVBServicePMTHandler() m_PMT.getCurrent(ptr); eDVBCAService::unregister_service(m_reference, demux_num, ptr); } + eDVBCIInterfaces::getInstance()->removePMTHandler(this); } void eDVBServicePMTHandler::channelStateChanged(iDVBChannel *channel) @@ -69,11 +72,15 @@ void eDVBServicePMTHandler::PMTready(int error) else { serviceEvent(eventNewProgramInfo); - if (!m_pvr_channel && !m_ca_servicePtr) // don't send campmt to camd.socket for playbacked services + if (!m_pvr_channel) { - uint8_t demux_num; - m_demux->getCADemuxID(demux_num); - eDVBCAService::register_service(m_reference, demux_num, m_ca_servicePtr); + eDVBCIInterfaces::getInstance()->gotPMT(this); + if(!m_ca_servicePtr) // don't send campmt to camd.socket for playbacked services + { + uint8_t demux_num; + m_demux->getCADemuxID(demux_num); + eDVBCAService::register_service(m_reference, demux_num, m_ca_servicePtr); + } } if (m_ca_servicePtr) { @@ -200,6 +207,15 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) return -1; } +int eDVBServicePMTHandler::getChannel(eUsePtr<iDVBChannel> &channel) +{ + channel = m_channel; + if (channel) + return 0; + else + return -1; +} + int eDVBServicePMTHandler::getDemux(ePtr<iDVBDemux> &demux) { demux = m_demux; |
