fix for recorded files
[enigma2.git] / lib / service / servicedvb.cpp
index dcf11d237d2beec586634f90f2adbfdc960468e3..3f5ecb86c4ee769f378cf6d4a37281183cffe936 100644 (file)
@@ -96,7 +96,7 @@ int eStaticServiceDVBInformation::isPlayable(const eServiceReference &ref, const
 {
        ePtr<eDVBResourceManager> res_mgr;
        if ( eDVBResourceManager::getInstance( res_mgr ) )
-               eDebug("isPlayble... no res manager!!");
+               eDebug("isPlayable... no res manager!!");
        else
        {
                eDVBChannelID chid, chid_ignore;
@@ -125,7 +125,7 @@ extern void PutToDict(ePyObject &dict, const char*key, const char *value);
 void PutSatelliteDataToDict(ePyObject &dict, eDVBFrontendParametersSatellite &feparm)
 {
        const char *tmp=0;
-       PutToDict(dict, "type", "satellite");
+       PutToDict(dict, "type", "Satellite");
        PutToDict(dict, "frequency", feparm.frequency);
        PutToDict(dict, "symbolrate", feparm.symbol_rate);
        PutToDict(dict, "orbital position", feparm.orbital_position);
@@ -192,14 +192,14 @@ void PutSatelliteDataToDict(ePyObject &dict, eDVBFrontendParametersSatellite &fe
 
 void PutTerrestrialDataToDict(ePyObject &dict, eDVBFrontendParametersTerrestrial &feparm)
 {
-       PutToDict(dict, "type", "terrestrial");
+       PutToDict(dict, "type", "Terrestrial");
        PutToDict(dict, "frequency", feparm.frequency);
        const char *tmp=0;
        switch (feparm.bandwidth)
        {
-       case eDVBFrontendParametersTerrestrial::Bandwidth::Bw8MHz: tmp="8 Mhz"; break;
-       case eDVBFrontendParametersTerrestrial::Bandwidth::Bw7MHz: tmp="7 Mhz"; break;
-       case eDVBFrontendParametersTerrestrial::Bandwidth::Bw6MHz: tmp="6 Mhz"; break;
+       case eDVBFrontendParametersTerrestrial::Bandwidth::Bw8MHz: tmp="8 MHz"; break;
+       case eDVBFrontendParametersTerrestrial::Bandwidth::Bw7MHz: tmp="7 MHz"; break;
+       case eDVBFrontendParametersTerrestrial::Bandwidth::Bw6MHz: tmp="6 MHz"; break;
        default:
        case eDVBFrontendParametersTerrestrial::Bandwidth::BwAuto: tmp="AUTO"; break;
        }
@@ -276,7 +276,7 @@ void PutTerrestrialDataToDict(ePyObject &dict, eDVBFrontendParametersTerrestrial
 void PutCableDataToDict(ePyObject &dict, eDVBFrontendParametersCable &feparm)
 {
        const char *tmp=0;
-       PutToDict(dict, "type", "cable");
+       PutToDict(dict, "type", "Cable");
        PutToDict(dict, "frequency", feparm.frequency);
        PutToDict(dict, "symbolrate", feparm.symbol_rate);
        switch (feparm.modulation)
@@ -360,7 +360,12 @@ PyObject *eStaticServiceDVBInformation::getInfoObject(const eServiceReference &r
                                                                                PutCableDataToDict(dict, c);
                                                                                break;
                                                                        }
+                                                                       default:
+                                                                               eDebug("unknown frontend type %d", system);
+                                                                               Py_DECREF(dict);
+                                                                               break;
                                                                }
+                                                               return dict;
                                                        }
                                                }
                                        }
@@ -1044,6 +1049,7 @@ void eDVBServicePlay::serviceEvent(int event)
                }
                break;
        }
+       case eDVBServicePMTHandler::eventNoResources:
        case eDVBServicePMTHandler::eventNoPAT:
        case eDVBServicePMTHandler::eventNoPATEntry:
        case eDVBServicePMTHandler::eventNoPMT:
@@ -1102,6 +1108,8 @@ RESULT eDVBServicePlay::start()
                   to start recording from the data demux. */
        if (m_is_pvr)
                m_cue = new eCueSheet();
+       else
+               m_event(this, evStart);
 
        m_first_program_info = 1;
        eServiceReferenceDVB &service = (eServiceReferenceDVB&)m_reference;
@@ -1123,9 +1131,11 @@ RESULT eDVBServicePlay::start()
        }
 
        if (m_is_pvr)
+       {
                loadCuesheet();
+               m_event(this, evStart);
+       }
 
-       m_event(this, evStart);
        m_event((iPlayableService*)this, evSeekableStatusChanged);
        return 0;
 }
@@ -2702,4 +2712,16 @@ void eDVBServicePlay::video_event(struct iTSMPEGDecoder::videoEvent event)
 
 DEFINE_REF(eDVBServicePlay)
 
+PyObject *eDVBService::getInfoObject(const eServiceReference &ref, int w)
+{
+       switch (w)
+       {
+       case iServiceInformation::sTransponderData:
+               return eStaticServiceDVBInformation().getInfoObject(ref, w);
+       default:
+               break;
+       }
+       return iStaticServiceInformation::getInfoObject(ref, w);
+}
+
 eAutoInitPtr<eServiceFactoryDVB> init_eServiceFactoryDVB(eAutoInitNumbers::service+1, "eServiceFactoryDVB");