eDebug("ok ... now we start!!");
if (m_pmt_pid == -1)
- m_PAT.begin(eApp, eDVBPATSpec(m_reference.path.empty() ? false : true), m_demux);
+ m_PAT.begin(eApp, eDVBPATSpec(), m_demux);
else
- m_PMT.begin(eApp, eDVBPMTSpec(m_pmt_pid, m_reference.getServiceID().get(), m_reference.path.empty() ? false : true), m_demux);
+ m_PMT.begin(eApp, eDVBPMTSpec(m_pmt_pid, m_reference.getServiceID().get()), m_demux);
if ( m_service && !m_service->cacheEmpty() )
serviceEvent(eventNewProgramInfo);
if (pmtpid == -1)
serviceEvent(eventNoPATEntry);
else
- m_PMT.begin(eApp, eDVBPMTSpec(pmtpid, m_reference.getServiceID().get(), m_reference.path.empty() ? false : true), m_demux);
+ m_PMT.begin(eApp, eDVBPMTSpec(pmtpid, m_reference.getServiceID().get()), m_demux);
} else
serviceEvent(eventNoPAT);
}
for (SubtitlingConstIterator it(list->begin()); it != list->end(); ++it)
{
s.subtitling_type = (*it)->getSubtitlingType();
+ switch(s.subtitling_type)
+ {
+ case 0x10 ... 0x13:
+ case 0x20 ... 0x23: // dvb subtitles
+ break;
+ default:
+ eDebug("dvb subtitle %s PID %04x with wrong subtitling type (%02x)... force 0x10!!",
+ s.language_code.c_str(), s.pid, s.subtitling_type);
+ s.subtitling_type = 0x10;
+ break;
+ }
s.composition_page_id = (*it)->getCompositionPageId();
s.ancillary_page_id = (*it)->getAncillaryPageId();
s.language_code = (*it)->getIso639LanguageCode();
- // eDebug("add dvb subtitle %s PID %04x, type %d, composition page %d, ancillary_page %d",
- // s.language_code.c_str(), s.pid, s.subtitling_type, s.composition_page_id, s.ancillary_page_id);
+// eDebug("add dvb subtitle %s PID %04x, type %d, composition page %d, ancillary_page %d",
+// s.language_code.c_str(), s.pid, s.subtitling_type, s.composition_page_id, s.ancillary_page_id);
program.subtitleStreams.push_back(s);
}
break;
if (ref.path.empty())
{
- delete m_dvb_scan;
m_dvb_scan = new eDVBScan(m_channel, true, false);
m_dvb_scan->connectEvent(slot(*this, &eDVBServicePMTHandler::SDTScanEvent), m_scan_event_connection);
}
void eDVBServicePMTHandler::free()
{
m_dvb_scan = 0;
- delete m_dvb_scan;
if (m_ca_servicePtr)
{
ePtr<eConnection> eDVBCAService::m_chanAddedConn;
eDVBCAService::eDVBCAService()
- :m_sn(0), m_prev_build_hash(0), m_sendstate(0), m_retryTimer(eApp)
+ : m_prev_build_hash(0), m_sendstate(0), m_retryTimer(eTimer::create(eApp))
{
memset(m_used_demux, 0xFF, sizeof(m_used_demux));
- CONNECT(m_retryTimer.timeout, eDVBCAService::sendCAPMT);
+ CONNECT(m_retryTimer->timeout, eDVBCAService::sendCAPMT);
Connect();
}
{
eDebug("[eDVBCAService] free service %s", m_service.toString().c_str());
::close(m_sock);
- delete m_sn;
}
// begin static methods
void eDVBCAService::Connect()
{
- if (m_sn) {
- delete m_sn;
- m_sn=0;
- }
+ m_sn=0;
memset(&m_servaddr, 0, sizeof(struct sockaddr_un));
m_servaddr.sun_family = AF_UNIX;
strcpy(m_servaddr.sun_path, "/tmp/camd.socket");
int val=1;
fcntl(m_sock, F_SETFL, O_NONBLOCK);
setsockopt(m_sock, SOL_SOCKET, SO_REUSEADDR, &val, 4);
- m_sn = new eSocketNotifier(eApp, m_sock,
+ m_sn = eSocketNotifier::create(eApp, m_sock,
eSocketNotifier::Read|eSocketNotifier::Priority|eSocketNotifier::Error|eSocketNotifier::Hungup);
CONNECT(m_sn->activated, eDVBCAService::socketCB);
{
case 0xFFFFFFFF:
++m_sendstate;
- m_retryTimer.start(0,true);
+ m_retryTimer->start(0,true);
// eDebug("[eDVBCAService] send failed .. immediate retry");
break;
default:
- m_retryTimer.start(5000,true);
+ m_retryTimer->start(5000,true);
// eDebug("[eDVBCAService] send failed .. retry in 5 sec");
break;
}