fix wrong encoding of event description during pvr playback.. when info button is...
authorghost <andreas.monzner@multimedia-labs.de>
Tue, 22 Sep 2009 09:47:48 +0000 (11:47 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Tue, 22 Sep 2009 09:47:48 +0000 (11:47 +0200)
lib/dvb/pmt.cpp
lib/service/servicedvb.cpp

index a4fa212..9bd065b 100644 (file)
@@ -184,7 +184,6 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program)
 
        int first_ac3 = -1;
        program.defaultAudioStream = 0;
-       int rdsPid = -1;
        audioStream *prev_audio = 0;
 
        if ( m_service && !m_service->cacheEmpty() )
@@ -698,10 +697,7 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
                        eDVBCIInterfaces::getInstance()->addPMTHandler(this);
        } else if (!simulate) // no simulation of playback services
        {
-               eDVBMetaParser parser;
-
-               int ret=parser.parseFile(ref.path);
-               if (ret || !parser.m_ref.getServiceID().get() /* incorrect sid in meta file or recordings.epl*/ )
+               if (!ref.getServiceID().get() /* incorrect sid in meta file or recordings.epl*/ )
                {
                        eWarning("no .meta file found, trying to find PMT pid");
                        eDVBTSTools tstools;
@@ -717,9 +713,7 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
                                        m_pmt_pid = pmt_pid;
                                }
                        }
-               } else
-                       m_reference = parser.m_ref;
-               
+               }
                eDebug("alloc PVR");
                        /* allocate PVR */
                res = m_resourceManager->allocatePVRChannel(m_pvr_channel);
index 0628519..1a28fbd 100644 (file)
@@ -1061,22 +1061,30 @@ void eDVBServicePlay::serviceEventTimeshift(int event)
 
 RESULT eDVBServicePlay::start()
 {
-       int r;
+       eServiceReferenceDVB service = (eServiceReferenceDVB&)m_reference;
+
                /* 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. */
        if (m_is_pvr)
+       {
+               eDVBMetaParser meta;
+               if (!meta.parseFile(m_reference.path))
+               {
+                       service = meta.m_ref;
+                       service.path = m_reference.path;
+               }
                m_cue = new eCueSheet();
+       }
        else
                m_event(this, evStart);
 
        m_first_program_info = 1;
-       eServiceReferenceDVB &service = (eServiceReferenceDVB&)m_reference;
-       r = m_service_handler.tune(service, m_is_pvr, m_cue, false, m_dvb_service);
+       m_service_handler.tune(service, m_is_pvr, m_cue, false, m_dvb_service);
 
-               /* inject EIT if there is a stored one */
        if (m_is_pvr)
        {
+               /* inject EIT if there is a stored one */
                std::string filename = service.path;
                filename.erase(filename.length()-2, 2);
                filename+="eit";
@@ -1087,10 +1095,6 @@ RESULT eDVBServicePlay::start()
                        m_event_handler.inject(event, 0);
                        m_event_handler.inject(empty, 1);
                }
-       }
-
-       if (m_is_pvr)
-       {
                loadCuesheet();
                m_event(this, evStart);
        }