case eDVBFrontendParametersSatellite::RollOff::alpha_0_20: tmp="0.20"; break;
}
PutToDict(dict, "roll off", tmp);
- if (feparm.modulation == eDVBFrontendParametersSatellite::Modulation::M8PSK)
+ switch(feparm.pilot)
{
- switch(feparm.pilot)
- {
- case eDVBFrontendParametersSatellite::Pilot::On: tmp="ON"; break;
- case eDVBFrontendParametersSatellite::Pilot::Off: tmp="OFF"; break;
- default:
- case eDVBFrontendParametersSatellite::Pilot::Unknown: tmp="AUTO"; break;
- }
- PutToDict(dict, "pilot", tmp);
+ case eDVBFrontendParametersSatellite::Pilot::On: tmp="ON"; break;
+ case eDVBFrontendParametersSatellite::Pilot::Off: tmp="OFF"; break;
+ default:
+ case eDVBFrontendParametersSatellite::Pilot::Unknown: tmp="AUTO"; break;
}
+ PutToDict(dict, "pilot", tmp);
tmp="DVB-S2";
break;
}
return -1;
}
-int eStaticServiceDVBBouquetInformation::isPlayable(const eServiceReference &ref, const eServiceReference &ignore)
+int eStaticServiceDVBBouquetInformation::isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate)
{
if (ref.flags & eServiceReference::isGroup)
{
{ 2, 1, 3 } // -T -S -C
};
((const eServiceReferenceDVB&)*it).getChannelID(chid);
- int tmp=res->canAllocateChannel(chid, chid_ignore);
+ int tmp=res->canAllocateChannel(chid, chid_ignore, simulate);
switch(tmp)
{
case 0:
m_tune_state = -1;
- CONNECT(m_subtitle_sync_timer.timeout, eDVBServicePlay::checkSubtitleTiming);
+ m_subtitle_sync_timer = eTimer::create(eApp);
+
+ CONNECT(m_subtitle_sync_timer->timeout, eDVBServicePlay::checkSubtitleTiming);
}
eDVBServicePlay::~eDVBServicePlay()
return m_event_handler.getEvent(evt, nownext);
}
+static int readMpegProc(char *str, int decoder)
+{
+ int val = -1;
+ char tmp[64];
+ sprintf(tmp, "/proc/stb/vmpeg/%d/%s", decoder, str);
+ FILE *f = fopen(tmp, "r");
+ if (f)
+ {
+ fscanf(f, "%x", &val);
+ fclose(f);
+ }
+ return val;
+}
+
int eDVBServicePlay::getInfo(int w)
{
eDVBServicePMTHandler::program program;
-
+
if (w == sCAIDs)
return resIsPyObject;
eDVBServicePMTHandler &h = m_timeshift_active ? m_service_handler_timeshift : m_service_handler;
-
+
int no_program_info = 0;
-
+
if (h.getProgramInfo(program))
no_program_info = 1;
-
+
switch (w)
{
#if HAVE_DVB_API_VERSION >= 3
case sVideoHeight:
- if (m_videoEventData.type != iTSMPEGDecoder::videoEvent::eventUnknown)
+ if (m_videoEventData.type == iTSMPEGDecoder::videoEvent::eventSizeChanged)
return m_videoEventData.height;
- return -1;
+ else
+ return readMpegProc("yres", !m_is_primary);
case sVideoWidth:
- if (m_videoEventData.type != iTSMPEGDecoder::videoEvent::eventUnknown)
+ if (m_videoEventData.type == iTSMPEGDecoder::videoEvent::eventSizeChanged)
return m_videoEventData.width;
- return -1;
+ else
+ return readMpegProc("xres", !m_is_primary);
+ case sFrameRate:
+ if (m_videoEventData.type == iTSMPEGDecoder::videoEvent::eventFrameRateChanged)
+ return m_videoEventData.framerate;
+ else
+ return readMpegProc("framerate", !m_is_primary);
+ case sProgressive:
+ if (m_videoEventData.type == iTSMPEGDecoder::videoEvent::eventProgressiveChanged)
+ return m_videoEventData.progressive;
+ return readMpegProc("progressive", !m_is_primary);
#else
-#warning "FIXMEE implement sVideoHeight, sVideoWidth for old DVB API"
+#warning "FIXMEE implement sFrameRate, sProgressive, sVideoHeight, sVideoWidth for old DVB API"
#endif
case sAspect:
+ {
+ int val;
#if HAVE_DVB_API_VERSION >= 3
- if (m_videoEventData.type != iTSMPEGDecoder::videoEvent::eventUnknown)
+ if (m_videoEventData.type == iTSMPEGDecoder::videoEvent::eventSizeChanged)
return m_videoEventData.aspect == VIDEO_FORMAT_4_3 ? 1 : 3;
+ else if ((val=readMpegProc("aspect", !m_is_primary)) != -1)
+ return val;
else
#else
#warning "FIXMEE implement sAspect for old DVB API"
}
}
return -1;
+ }
case sIsCrypted: if (no_program_info) return -1; return program.isCrypted();
case sVideoPID: if (no_program_info) return -1; if (program.videoStreams.empty()) return -1; return program.videoStreams[0].pid;
case sVideoType: if (no_program_info) return -1; if (program.videoStreams.empty()) return -1; return program.videoStreams[0].type;
} else
{
eDebug("start subtitle delay %d", diff / 90);
- m_subtitle_sync_timer.start(diff / 90, 1);
+ m_subtitle_sync_timer->start(diff / 90, 1);
break;
}
}
void eDVBServicePlay::video_event(struct iTSMPEGDecoder::videoEvent event)
{
- memcpy(&m_videoEventData, &event, sizeof(iTSMPEGDecoder::videoEvent));
+ memcpy(&m_videoEventData, &event, sizeof(event));
switch(event.type) {
case iTSMPEGDecoder::videoEvent::eventSizeChanged:
m_event((iPlayableService*)this, evVideoSizeChanged);
case iTSMPEGDecoder::videoEvent::eventProgressiveChanged:
m_event((iPlayableService*)this, evVideoProgressiveChanged);
break;
+ default:
+ break;
}
}