aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dvb/decoder.cpp4
-rw-r--r--lib/dvb_ci/dvbci.cpp20
2 files changed, 11 insertions, 13 deletions
diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp
index 374d3106..90bf19e1 100644
--- a/lib/dvb/decoder.cpp
+++ b/lib/dvb/decoder.cpp
@@ -13,9 +13,11 @@
#define DMX_PES_VIDEO0 DMX_PES_VIDEO
#define DMX_PES_AUDIO0 DMX_PES_AUDIO
#define DMX_PES_PCR0 DMX_PES_PCR
+#define DMX_PES_TELETEXT0 DMX_PES_TELETEXT
#define DMX_PES_VIDEO1 DMX_PES_VIDEO
#define DMX_PES_AUDIO1 DMX_PES_AUDIO
#define DMX_PES_PCR1 DMX_PES_PCR
+#define DMX_PES_TELETEXT1 DMX_PES_TELETEXT
#include <ost/dmx.h>
#include <ost/video.h>
#include <ost/audio.h>
@@ -901,7 +903,7 @@ int eTSMPEGDecoder::setState()
}
if (m_changed & changePCR)
{
- m_pcr = new eDVBPCR(m_demux);
+ m_pcr = new eDVBPCR(m_demux, m_decoder);
if (m_pcr->setPid(m_pcrpid))
res = -1;
}
diff --git a/lib/dvb_ci/dvbci.cpp b/lib/dvb_ci/dvbci.cpp
index 0a32b8f2..037103cf 100644
--- a/lib/dvb_ci/dvbci.cpp
+++ b/lib/dvb_ci/dvbci.cpp
@@ -552,6 +552,7 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler)
if (it != m_pmt_handlers.end())
{
eDVBCISlot *slot = it->cislot;
+ eDVBCISlot *base_slot = slot;
eDVBServicePMTHandler *pmthandler = it->pmthandler;
m_pmt_handlers.erase(it);
@@ -575,20 +576,17 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler)
while(slot)
{
+ eDVBCISlot *next = slot->linked_next;
if (!sameServiceExist)
{
-// if (slot->getNumOfServices() > 1)
- {
- eDebug("[eDVBCIInterfaces] remove last pmt handler for service %s send empty capmt",
- service_to_remove.toString().c_str());
- std::vector<uint16_t> caids;
- caids.push_back(0xFFFF);
- slot->sendCAPMT(pmthandler, caids); // send a capmt without caids to remove a running service
- }
+ eDebug("[eDVBCIInterfaces] remove last pmt handler for service %s send empty capmt",
+ service_to_remove.toString().c_str());
+ std::vector<uint16_t> caids;
+ caids.push_back(0xFFFF);
+ slot->sendCAPMT(pmthandler, caids); // send a capmt without caids to remove a running service
slot->removeService(service_to_remove.getServiceID().get());
}
- eDVBCISlot *next = slot->linked_next;
if (!--slot->use_count)
{
if (slot->linked_next)
@@ -596,9 +594,7 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler)
else
setInputSource(slot->current_tuner, slot->current_source);
- if (it->cislot == slot) // remove the base slot
- it->cislot = slot->linked_next;
- else
+ if (base_slot != slot)
{
eDVBCISlot *tmp = it->cislot;
while(tmp->linked_next != slot)