X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fservice%2Fservicedvb.cpp;h=01169986e10e443ee71bc9b1f5370d814459efc3;hb=29c3340e877cfa1d1818a140f76f14270b84c3d2;hp=5166414f82b727eac56ef0f5e485262407a96656;hpb=c6de231f8b5fbd3656d65a4a62b12cdfbd546171;p=vuplus_dvbapp diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 5166414..0116998 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -466,6 +466,7 @@ public: RESULT deleteFromDisk(int simulate); RESULT getListOfFilenames(std::list &); + RESULT reindex(); }; DEFINE_REF(eDVBPVRServiceOfflineOperations); @@ -528,6 +529,42 @@ RESULT eDVBPVRServiceOfflineOperations::getListOfFilenames(std::listgetPid() != rdsPid) { + m_rds_decoder = 0; ePtr data_demux; if (!h.getDataDemux(data_demux)) { - m_rds_decoder = new eDVBRdsDecoder(data_demux); + m_rds_decoder = new eDVBRdsDecoder(data_demux, different_pid); m_rds_decoder->connectEvent(slot(*this, &eDVBServicePlay::rdsDecoderEvent), m_rds_decoder_event_connection); + m_rds_decoder->start(rdsPid); } } - - /* if we decided that we need one, update the pid */ - if (m_rds_decoder) - m_rds_decoder->start(apid); + } /* store new pid as default only when: a.) we have an entry in the service db for the current service, @@ -2329,29 +2371,32 @@ void eDVBServicePlay::updateDecoder() m_decoder->connectVideoEvent(slot(*this, &eDVBServicePlay::video_event), m_video_event_connection); if (m_is_primary) { - ePyObject subs; - if (m_timeshift_changed) - subs = getCachedSubtitle(); m_teletext_parser = new eDVBTeletextParser(m_decode_demux); m_teletext_parser->connectNewPage(slot(*this, &eDVBServicePlay::newSubtitlePage), m_new_subtitle_page_connection); m_subtitle_parser = new eDVBSubtitleParser(m_decode_demux); m_subtitle_parser->connectNewPage(slot(*this, &eDVBServicePlay::newDVBSubtitlePage), m_new_dvb_subtitle_page_connection); - if (subs) + if (m_timeshift_changed) { - int type = PyInt_AsLong(PyTuple_GET_ITEM(subs, 0)), - pid = PyInt_AsLong(PyTuple_GET_ITEM(subs, 1)), - comp_page = PyInt_AsLong(PyTuple_GET_ITEM(subs, 2)), // ttx page - anc_page = PyInt_AsLong(PyTuple_GET_ITEM(subs, 3)); // ttx magazine - if (type == 0) // dvb - m_subtitle_parser->start(pid, comp_page, anc_page); - else if (type == 1) // ttx - m_teletext_parser->setPageAndMagazine(comp_page, anc_page); + ePyObject subs = getCachedSubtitle(); + if (subs != Py_None) + { + int type = PyInt_AsLong(PyTuple_GET_ITEM(subs, 0)), + pid = PyInt_AsLong(PyTuple_GET_ITEM(subs, 1)), + comp_page = PyInt_AsLong(PyTuple_GET_ITEM(subs, 2)), // ttx page + anc_page = PyInt_AsLong(PyTuple_GET_ITEM(subs, 3)); // ttx magazine + if (type == 0) // dvb + m_subtitle_parser->start(pid, comp_page, anc_page); + else if (type == 1) // ttx + m_teletext_parser->setPageAndMagazine(comp_page, anc_page); + } Py_DECREF(subs); } } + m_decoder->play(); /* pids will be set later */ } if (m_cue) m_cue->setDecodingDemux(m_decode_demux, m_decoder); + m_decoder->play(); /* pids will be set later. */ } m_timeshift_changed = 0; @@ -2425,13 +2470,7 @@ void eDVBServicePlay::updateDecoder() m_decoder->setRadioPic(radio_pic); } -/* if (!m_is_primary) - m_decoder->setTrickmode(); - else */ if (m_is_paused) - m_decoder->pause(); - else - m_decoder->play(); - + m_decoder->set(); m_decoder->setAudioChannel(achannel); /* don't worry about non-existing services, nor pvr services */