#include <lib/dvb/metaparser.h>
#include <dvbsi++/ca_program_map_section.h>
-eDVBServicePMTHandler::eDVBServicePMTHandler()
+eDVBServicePMTHandler::eDVBServicePMTHandler(int record)
:m_pmt_pid(0xFFFF), m_ca_servicePtr(0)
{
+ m_record = record;
eDVBResourceManager::getInstance(m_resourceManager);
CONNECT(m_PMT.tableReady, eDVBServicePMTHandler::PMTready);
CONNECT(m_PAT.tableReady, eDVBServicePMTHandler::PATready);
&& (state == iDVBChannel::state_ok) && (!m_demux))
{
if (m_channel)
- if (m_channel->getDemux(m_demux))
- eDebug("shit it failed.. again.");
+ if (m_channel->getDemux(m_demux, m_record ? 0 : iDVBChannel::capDecode))
+ eDebug("Allocating a demux for now tuned-in channel failed.");
serviceEvent(eventTuned);
program.videoStreams.clear();
program.audioStreams.clear();
program.pcrPid = -1;
+ program.pmtPid = m_pmt_pid < 0x1fff ? m_pmt_pid : -1;
if (!m_PMT.getCurrent(ptr))
{
RESULT res;
m_reference = ref;
-// ref.path = "/viva.ts"; // hrhr.
-
/* is this a normal (non PVR) channel? */
if (ref.path.empty())
{
tmp[0] = 0x82; // demux
tmp[1] = 0x02;
- m_parent.m_demux->getCADemuxID(tmp[2]); // descramble on demux
- m_parent.m_demux->getCADemuxID(tmp[3]); // get section data from demux1
+ m_parent.m_demux->getCADemuxID(tmp[3]); // read section data from demux number
+ tmp[2] = 1 << tmp[3]; // descramble bitmask
capmt.injectDescriptor(tmp, false);
tmp[0] = 0x81; // dvbnamespace