X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/2d30f6d03db0b0da0b3677d04180c1ba56709a6c..c2a0bd6f431cb9c9e891950824c279bbee7bf81d:/lib/service/servicedvb.cpp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 99474a86..c95923c9 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -395,6 +396,7 @@ RESULT eDVBServiceList::getContent(std::list &list, bool sort // useable format options are // R = Service Reference (as swig object .. this is very slow) // S = Service Reference (as python string object .. same as ref.toString()) +// C = Service Reference (as python string object .. same as ref.toCompareString()) // N = Service Name (as python string object) // when exactly one return value per service is selected in the format string, // then each value is directly a list entry @@ -434,6 +436,9 @@ PyObject *eDVBServiceList::getContent(const char* format, bool sorted) case 'R': // service reference (swig)object tmp = New_eServiceReference(ref); break; + case 'C': // service reference compare string + tmp = PyString_FromString(ref.toCompareString().c_str()); + break; case 'S': // service reference string tmp = PyString_FromString(ref.toString().c_str()); break; @@ -826,7 +831,12 @@ RESULT eDVBServicePlay::stop() m_service_handler.free(); if (m_is_pvr && m_cuesheet_changed) - saveCuesheet(); + { + struct stat s; + /* save cuesheet only when main file is accessible. */ + if (!::stat(m_reference.path.c_str(), &s)) + saveCuesheet(); + } return 0; } @@ -1630,9 +1640,11 @@ void eDVBServicePlay::switchToLive() m_decode_demux = 0; m_teletext_parser = 0; m_radiotext_parser = 0; + m_subtitle_parser = 0; + m_new_dvb_subtitle_region_connection = 0; m_new_subtitle_page_connection = 0; m_radiotext_updated_connection = 0; - + /* free the timeshift service handler, we need the resources */ m_service_handler_timeshift.free(); m_timeshift_active = 0; @@ -1651,7 +1663,9 @@ void eDVBServicePlay::switchToTimeshift() m_decoder = 0; m_teletext_parser = 0; m_radiotext_parser = 0; + m_subtitle_parser = 0; m_new_subtitle_page_connection = 0; + m_new_dvb_subtitle_region_connection = 0; m_radiotext_updated_connection = 0; m_timeshift_active = 1; @@ -1676,7 +1690,7 @@ void eDVBServicePlay::updateDecoder() std::string default_ac3; if (!ePythonConfigQuery::getConfigValue("config.av.defaultac3", default_ac3)) - defaultac3 = default_ac3 == "enable"; + defaultac3 = default_ac3 == "True"; eDVBServicePMTHandler::program program; if (h.getProgramInfo(program)) @@ -1741,6 +1755,8 @@ void eDVBServicePlay::updateDecoder() m_teletext_parser = new eDVBTeletextParser(m_decode_demux); m_teletext_parser->connectNewPage(slot(*this, &eDVBServicePlay::newSubtitlePage), m_new_subtitle_page_connection); #endif + m_subtitle_parser = new eDVBSubtitleParser(m_decode_demux); + m_subtitle_parser->connectNewRegion(slot(*this, &eDVBServicePlay::newDVBSubtitleRegion), m_new_dvb_subtitle_region_connection); } if (m_decoder) @@ -1803,6 +1819,9 @@ void eDVBServicePlay::updateDecoder() if (m_teletext_parser) m_teletext_parser->start(tpid); +// if (m_subtitle_parser && program.subtitleStreams.size() > 0) +// m_subtitle_parser->start(program.subtitleStreams[0].pid); + if (!m_is_primary) m_decoder->setTrickmode(1); @@ -2065,6 +2084,16 @@ void eDVBServicePlay::checkSubtitleTiming() } } +void eDVBServicePlay::newDVBSubtitleRegion(const eDVBSubtitleRegion &p) +{ + eDebug("new dvb subtitle region"); +} + +void eDVBServicePlay::checkDvbSubtitleTiming() +{ + eDebug("check dvb subtitle timing"); +} + int eDVBServicePlay::getAC3Delay() { if (m_dvb_service)