{
case iServiceInformation::sDescription:
return iServiceInformation::resIsString;
+ case iServiceInformation::sServiceref:
+ return iServiceInformation::resIsString;
case iServiceInformation::sTimeCreate:
if (m_parser.m_time_create)
return m_parser.m_time_create;
{
case iServiceInformation::sDescription:
return m_parser.m_description;
+ case iServiceInformation::sServiceref:
+ return m_parser.m_ref.toString();
default:
return "";
}
eDVBServicePlay::eDVBServicePlay(const eServiceReference &ref, eDVBService *service):
m_reference(ref), m_dvb_service(service), m_is_paused(0)
{
- m_is_pvr = !ref.path.empty();
+ m_is_primary = 1;
+ 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));
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 */
}
{
h.getDecodeDemux(m_decode_demux);
if (m_decode_demux)
- m_decode_demux->getMPEGDecoder(m_decoder);
+ m_decode_demux->getMPEGDecoder(m_decoder, m_is_primary);
if (m_cue)
m_cue->setDecodingDemux(m_decode_demux, m_decoder);
}
m_decoder->setVideoPID(vpid);
m_current_audio_stream = 0;
m_decoder->setAudioPID(apid, apidtype);
- if (!(m_is_pvr || m_timeshift_active))
+ if (!(m_is_pvr || m_timeshift_active || !m_is_primary))
m_decoder->setSyncPCR(pcrpid);
else
m_decoder->setSyncPCR(-1);
m_decoder->setTextPID(tpid);
+ if (!m_is_primary)
+ m_decoder->setTrickmode(1);
m_decoder->start();
// how we can do this better?
// update cache pid when the user changed the audio track or video track