summaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2009-05-07 07:35:45 (GMT)
committerghost <andreas.monzner@multimedia-labs.de>2009-05-07 07:35:45 (GMT)
commit09d90704f6cae05c67e08d10a46f28b2e2b0b1c7 (patch)
tree9968ef0dcc5c3c5dd3f9c9506cffbf03a3a3664b /lib/dvb
parent01261afa97d904fa9b2564aedabe1363d87ff186 (diff)
add support for 2nd PCR, add support for 2nd ttx pid
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/decoder.cpp15
-rw-r--r--lib/dvb/decoder.h8
2 files changed, 13 insertions, 10 deletions
diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp
index bd52ea0..92652a4 100644
--- a/lib/dvb/decoder.cpp
+++ b/lib/dvb/decoder.cpp
@@ -12,8 +12,10 @@
#define dmxPesFilterParams dmx_pes_filter_params
#define DMX_PES_VIDEO0 DMX_PES_VIDEO
#define DMX_PES_AUDIO0 DMX_PES_AUDIO
+#define DMX_PES_PCR0 DMX_PES_PCR
#define DMX_PES_VIDEO1 DMX_PES_VIDEO
#define DMX_PES_AUDIO1 DMX_PES_AUDIO
+#define DMX_PES_PCR1 DMX_PES_PCR
#include <ost/dmx.h>
#include <ost/video.h>
#include <ost/audio.h>
@@ -686,7 +688,7 @@ int eDVBVideo::getFrameRate()
DEFINE_REF(eDVBPCR);
-eDVBPCR::eDVBPCR(eDVBDemux *demux): m_demux(demux)
+eDVBPCR::eDVBPCR(eDVBDemux *demux, int dev): m_demux(demux), m_dev(dev)
{
char filename[128];
#if HAVE_DVB_API_VERSION < 3
@@ -745,7 +747,7 @@ int eDVBPCR::startPid(int pid)
pes.pid = pid;
pes.input = DMX_IN_FRONTEND;
pes.output = DMX_OUT_DECODER;
- pes.pes_type = DMX_PES_PCR;
+ pes.pes_type = m_dev ? DMX_PES_PCR1 : DMX_PES_PCR0; /* FIXME */
pes.flags = 0;
eDebugNoNewLine("DMX_SET_PES_FILTER(0x%02x) - pcr - ", pid);
if (::ioctl(m_fd_demux, DMX_SET_PES_FILTER, &pes) < 0)
@@ -782,7 +784,8 @@ eDVBPCR::~eDVBPCR()
DEFINE_REF(eDVBTText);
-eDVBTText::eDVBTText(eDVBDemux *demux): m_demux(demux)
+eDVBTText::eDVBTText(eDVBDemux *demux, int dev)
+ :m_demux(demux), m_dev(dev)
{
char filename[128];
#if HAVE_DVB_API_VERSION < 3
@@ -804,7 +807,7 @@ int eDVBTText::startPid(int pid)
pes.pid = pid;
pes.input = DMX_IN_FRONTEND;
pes.output = DMX_OUT_DECODER;
- pes.pes_type = DMX_PES_TELETEXT;
+ pes.pes_type = m_dev ? DMX_PES_TELETEXT1 : DMX_PES_TELETEXT0; // FIXME
pes.flags = 0;
eDebugNoNewLine("DMX_SET_PES_FILTER(0x%02x) - ttx - ", pid);
@@ -960,7 +963,7 @@ int eTSMPEGDecoder::setState()
{
if ((m_pcrpid >= 0) && (m_pcrpid < 0x1FFF))
{
- m_pcr = new eDVBPCR(m_demux);
+ m_pcr = new eDVBPCR(m_demux, m_decoder);
if (m_pcr->startPid(m_pcrpid))
res = -1;
}
@@ -991,7 +994,7 @@ int eTSMPEGDecoder::setState()
{
if ((m_textpid >= 0) && (m_textpid < 0x1FFF) && !nott)
{
- m_text = new eDVBTText(m_demux);
+ m_text = new eDVBTText(m_demux, m_decoder);
if (m_text->startPid(m_textpid))
res = -1;
}
diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h
index 51be514..3bfc70c 100644
--- a/lib/dvb/decoder.h
+++ b/lib/dvb/decoder.h
@@ -80,9 +80,9 @@ class eDVBPCR: public iObject
DECLARE_REF(eDVBPCR);
private:
ePtr<eDVBDemux> m_demux;
- int m_fd_demux;
+ int m_fd_demux, m_dev;
public:
- eDVBPCR(eDVBDemux *demux);
+ eDVBPCR(eDVBDemux *demux, int dev);
#if HAVE_DVB_API_VERSION < 3
int setPid(int pid);
int startPid();
@@ -98,9 +98,9 @@ class eDVBTText: public iObject
DECLARE_REF(eDVBTText);
private:
ePtr<eDVBDemux> m_demux;
- int m_fd_demux;
+ int m_fd_demux, m_dev;
public:
- eDVBTText(eDVBDemux *demux);
+ eDVBTText(eDVBDemux *demux, int dev);
int startPid(int pid);
void stop();
virtual ~eDVBTText();