diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-21 20:32:51 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-21 20:32:51 +0000 |
| commit | 1a3bd31e5cfcba89f2db03a2b4fa550de1fa2823 (patch) | |
| tree | 78ffeb782c3df9319437d064d88484b902f4648e /lib/service | |
| parent | 7b46919af63cfcb6adbe72d8d4183a203dfcfce7 (diff) | |
| download | enigma2-1a3bd31e5cfcba89f2db03a2b4fa550de1fa2823.tar.gz enigma2-1a3bd31e5cfcba89f2db03a2b4fa550de1fa2823.zip | |
format, ac3 and crypted indicators now working
TODO: get format/aspect infos from the mpeg decoder ( EIT information is not working on every service )
Diffstat (limited to 'lib/service')
| -rw-r--r-- | lib/service/iservice.h | 2 | ||||
| -rw-r--r-- | lib/service/servicedvb.cpp | 44 | ||||
| -rw-r--r-- | lib/service/servicedvbrecord.h | 2 |
3 files changed, 44 insertions, 4 deletions
diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 8c68f902..3c3248c4 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -48,7 +48,7 @@ public: std::string path; #endif std::string getPath() { return path; } - std::string setPath( const std::string &n ) { path=n; } + void setPath( const std::string &n ) { path=n; } int getData(unsigned int num) const { diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 4b7ee85c..cad2ea08 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -618,7 +618,8 @@ void eDVBServicePlay::serviceEvent(int event) m_dvb_service->setCachePID(eDVBService::cPCRPID, pcrpid); } } - + + m_event((iPlayableService*)this, evUpdatedInfo); break; } } @@ -841,12 +842,51 @@ int eDVBServicePlay::getInfo(int w) switch (w) { + case sAspect: + if (!program.videoStreams.empty() && program.videoStreams[0].component_tag != -1) + { + ePtr<eServiceEvent> evt; + if (!m_event_handler.getEvent(evt, 0)) + { + ePtr<eComponentData> data; + if (!evt->getComponentData(data, program.videoStreams[0].component_tag)) + { + if ( data->getStreamContent() == 1 ) + { + switch(data->getComponentType()) + { + // SD + case 1: // 4:3 SD PAL + case 2: + case 3: // 16:9 SD PAL + case 4: // > 16:9 PAL + case 5: // 4:3 SD NTSC + case 6: + case 7: // 16:9 SD NTSC + case 8: // > 16:9 NTSC + + // HD + case 9: // 4:3 HD PAL + case 0xA: + case 0xB: // 16:9 HD PAL + case 0xC: // > 16:9 HD PAL + case 0xD: // 4:3 HD NTSC + case 0xE: + case 0xF: // 16:9 HD NTSC + case 0x10: // > 16:9 HD PAL + return data->getComponentType(); + } + } + } + } + } + return -1; + case sIsCrypted: return program.isCrypted; case sVideoPID: if (program.videoStreams.empty()) return -1; return program.videoStreams[0].pid; case sAudioPID: if (program.audioStreams.empty()) return -1; return program.audioStreams[m_current_audio_stream].pid; case sPCRPID: return program.pcrPid; case sPMTPID: return program.pmtPid; case sTXTPID: return -1; - case sSID: return ((const eServiceReferenceDVB&)m_reference).getServiceID().get(); case sONID: return ((const eServiceReferenceDVB&)m_reference).getOriginalNetworkID().get(); case sTSID: return ((const eServiceReferenceDVB&)m_reference).getTransportStreamID().get(); diff --git a/lib/service/servicedvbrecord.h b/lib/service/servicedvbrecord.h index 17e3d166..7d5a4fb3 100644 --- a/lib/service/servicedvbrecord.h +++ b/lib/service/servicedvbrecord.h @@ -23,8 +23,8 @@ private: friend class eServiceFactoryDVB; eDVBServiceRecord(const eServiceReferenceDVB &ref); - eDVBServicePMTHandler m_service_handler; eServiceReferenceDVB m_ref; + eDVBServicePMTHandler m_service_handler; void serviceEvent(int event); ePtr<iDVBTSRecorder> m_record; |
