aboutsummaryrefslogtreecommitdiff
path: root/lib/service
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-12-21 20:32:51 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-12-21 20:32:51 +0000
commit1a3bd31e5cfcba89f2db03a2b4fa550de1fa2823 (patch)
tree78ffeb782c3df9319437d064d88484b902f4648e /lib/service
parent7b46919af63cfcb6adbe72d8d4183a203dfcfce7 (diff)
downloadenigma2-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.h2
-rw-r--r--lib/service/servicedvb.cpp44
-rw-r--r--lib/service/servicedvbrecord.h2
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;