m_reference(ref), m_dvb_service(service), m_is_paused(0)
{
m_is_primary = 1;
- /* HACK!!! */
- if (m_reference.path == "s")
- {
- m_reference.path = "";
- ref.path = "";
- m_is_primary = 0;
- }
-
- m_is_pvr = !ref.path.empty();
+ m_is_pvr = !m_reference.path.empty();
m_timeshift_enabled = m_timeshift_active = 0;
m_skipmode = 0;
/* in pvr mode, we only want to use one demux. in tv mode, we're using
two (one for decoding, one for data source), as we must be prepared
to start recording from the data demux. */
- m_cue = new eCueSheet();
+ if (m_is_pvr)
+ m_cue = new eCueSheet();
m_first_program_info = 1;
eServiceReferenceDVB &service = (eServiceReferenceDVB&)m_reference;
return 0;
}
+RESULT eDVBServicePlay::setTarget(int target)
+{
+ m_is_primary = !target;
+ return 0;
+}
+
RESULT eDVBServicePlay::connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection)
{
connection = new eConnection((iPlayableService*)this, m_event.connect(event));
{
eDVBServicePMTHandler::program program;
+ if (w == sCAIDs)
+ return resIsPyObject;
+
if (m_service_handler.getProgramInfo(program))
return -1;
}
std::string eDVBServicePlay::getInfoString(int w)
-{
+{
switch (w)
{
case sProvider:
if (!m_dvb_service) return "";
return m_dvb_service->m_provider_name;
default:
- return "";
+ break;
}
+ return iServiceInformation::getInfoString(w);
+}
+
+PyObject *eDVBServicePlay::getInfoObject(int w)
+{
+ switch (w)
+ {
+ case sCAIDs:
+ if (m_dvb_service)
+ return m_service_handler.getCaIds();
+ default:
+ break;
+ }
+ return iServiceInformation::getInfoObject(w);
}
int eDVBServicePlay::getNumberOfTracks()
if (!m_timeshift_active)
return;
+ m_cue = 0;
m_decoder = 0;
m_decode_demux = 0;
/* free the timeshift service handler, we need the resources */
eServiceReferenceDVB r = (eServiceReferenceDVB&)m_reference;
r.path = m_timeshift_file;
+ m_cue = new eCueSheet();
m_service_handler_timeshift.tune(r, 1, m_cue); /* use the decoder demux for everything */
updateDecoder(); /* mainly to switch off PCR */
}