X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/99e6feec1546d5fa2ff8e5cdfdf84438db4281b3..a1595050bc43d70aa8df213c0c7ac8217d61b778:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 53bc17a8..e036307b 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -166,15 +166,25 @@ void PutSatelliteDataToDict(ePyObject &dict, eDVBFrontendParametersSatellite &fe default: case eDVBFrontendParametersSatellite::System::DVB_S: tmp="DVB-S"; break; case eDVBFrontendParametersSatellite::System::DVB_S2: - switch(feparm.roll_off) + switch(feparm.rolloff) { + default: case eDVBFrontendParametersSatellite::RollOff::alpha_0_35: tmp="0.35"; break; case eDVBFrontendParametersSatellite::RollOff::alpha_0_25: tmp="0.25"; break; case eDVBFrontendParametersSatellite::RollOff::alpha_0_20: tmp="0.20"; break; - default: - case eDVBFrontendParametersSatellite::RollOff::alpha_auto: tmp="AUTO"; break; } PutToDict(dict, "roll off", tmp); + if (feparm.modulation == eDVBFrontendParametersSatellite::Modulation::M8PSK) + { + 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); + } tmp="DVB-S2"; break; } @@ -668,7 +678,11 @@ eServiceFactoryDVB::eServiceFactoryDVB() eServiceCenter::getPrivInstance(sc); if (sc) - sc->addServiceFactory(eServiceFactoryDVB::id, this); + { + std::list extensions; + extensions.push_back("ts"); + sc->addServiceFactory(eServiceFactoryDVB::id, this, extensions); + } m_StaticServiceDVBInfo = new eStaticServiceDVBInformation; m_StaticServiceDVBBouquetInfo = new eStaticServiceDVBBouquetInformation; @@ -809,7 +823,7 @@ PyObject *eDVBServiceList::getContent(const char* format, bool sorted) sptr->getName(ref, name); // filter short name brakets - unsigned int pos; + size_t pos; while((pos = name.find("\xc2\x86")) != std::string::npos) name.erase(pos,2); while((pos = name.find("\xc2\x87")) != std::string::npos) @@ -1096,6 +1110,7 @@ void eDVBServicePlay::serviceEvent(int event) else m_event_handler.start(m_demux, sid); } + m_event((iPlayableService*)this, evTunedIn); break; } case eDVBServicePMTHandler::eventNoResources: @@ -1103,6 +1118,7 @@ void eDVBServicePlay::serviceEvent(int event) case eDVBServicePMTHandler::eventNoPATEntry: case eDVBServicePMTHandler::eventNoPMT: case eDVBServicePMTHandler::eventTuneFailed: + case eDVBServicePMTHandler::eventMisconfiguration: { eDebug("DVB service failed to tune - error %d", event); m_event((iPlayableService*)this, evTuneFailed); @@ -1215,8 +1231,8 @@ RESULT eDVBServicePlay::stop() { int perc = play_position * 100LL / length; - /* only store last play position when between 5% and 95% */ - if ((5 < perc) && (perc < 95)) + /* only store last play position when between 1% and 99% */ + if ((1 < perc) && (perc < 99)) m_cue_entries.insert(cueEntry(play_position, 3)); /* last play position */ } m_cuesheet_changed = 1; @@ -2562,7 +2578,16 @@ void eDVBServicePlay::cutlistToCuesheet() } } - if (in != out) + if (in < 0) + in = 0; + if (out < 0) + out = 0; + if (in > length) + in = length; + if (out > length) + out = length; + + if (in < out) m_cue->addSourceSpan(in, out); in = length; @@ -2929,7 +2954,17 @@ void eDVBServicePlay::setPCMDelay(int delay) void eDVBServicePlay::video_event(struct iTSMPEGDecoder::videoEvent event) { memcpy(&m_videoEventData, &event, sizeof(iTSMPEGDecoder::videoEvent)); - m_event((iPlayableService*)this, evVideoSizeChanged); + switch(event.type) { + case iTSMPEGDecoder::videoEvent::eventSizeChanged: + m_event((iPlayableService*)this, evVideoSizeChanged); + break; + case iTSMPEGDecoder::videoEvent::eventFrameRateChanged: + m_event((iPlayableService*)this, evVideoFramerateChanged); + break; + case iTSMPEGDecoder::videoEvent::eventProgressiveChanged: + m_event((iPlayableService*)this, evVideoProgressiveChanged); + break; + } } RESULT eDVBServicePlay::stream(ePtr &ptr)