diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-01-03 11:23:46 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-01-03 11:23:46 +0000 |
| commit | 089df6a2a17ec560a9c525857b4bbe43442b5ca8 (patch) | |
| tree | e1f33b220198561d695e33caa912050d510c9461 /lib/service/servicedvb.cpp | |
| parent | 61ea204d226d23041b40248f3b2336fbb2f53b77 (diff) | |
| download | enigma2-089df6a2a17ec560a9c525857b4bbe43442b5ca8.tar.gz enigma2-089df6a2a17ec560a9c525857b4bbe43442b5ca8.zip | |
store and use previous selected audio pid
Diffstat (limited to 'lib/service/servicedvb.cpp')
| -rw-r--r-- | lib/service/servicedvb.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index cad2ea08..9cba0aaf 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -8,6 +8,7 @@ #include <lib/dvb/dvb.h> #include <lib/dvb/db.h> +#include <lib/dvb/decoder.h> #include <lib/service/servicedvbrecord.h> #include <lib/dvb/metaparser.h> @@ -613,8 +614,17 @@ void eDVBServicePlay::serviceEvent(int event) /* don't worry about non-existing services, nor pvr services */ if (m_dvb_service && !m_is_pvr) { + if (apidtype == eDVBAudio::aMPEG) + { + m_dvb_service->setCachePID(eDVBService::cAPID, apid); + m_dvb_service->setCachePID(eDVBService::cAC3PID, -1); + } + else + { + m_dvb_service->setCachePID(eDVBService::cAPID, -1); + m_dvb_service->setCachePID(eDVBService::cAC3PID, apid); + } m_dvb_service->setCachePID(eDVBService::cVPID, vpid); - m_dvb_service->setCachePID(eDVBService::cAPID, apid); m_dvb_service->setCachePID(eDVBService::cPCRPID, pcrpid); } } @@ -979,6 +989,23 @@ int eDVBServicePlay::selectAudioStream(int i) if (m_decoder->setAudioPID(program.audioStreams[i].pid, program.audioStreams[i].type)) return -4; + if (m_dvb_service && !m_is_pvr) + { + if (m_dvb_service && !m_is_pvr) + { + if (program.audioStreams[i].type == eDVBAudio::aMPEG) + { + m_dvb_service->setCachePID(eDVBService::cAPID, program.audioStreams[i].pid); + m_dvb_service->setCachePID(eDVBService::cAC3PID, -1); + } + else + { + m_dvb_service->setCachePID(eDVBService::cAPID, -1); + m_dvb_service->setCachePID(eDVBService::cAC3PID, program.audioStreams[i].pid); + } + } + } + m_current_audio_stream = i; return 0; |
