aboutsummaryrefslogtreecommitdiff
path: root/lib/service/servicedvb.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-01-03 11:23:46 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-01-03 11:23:46 +0000
commit089df6a2a17ec560a9c525857b4bbe43442b5ca8 (patch)
treee1f33b220198561d695e33caa912050d510c9461 /lib/service/servicedvb.cpp
parent61ea204d226d23041b40248f3b2336fbb2f53b77 (diff)
downloadenigma2-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.cpp29
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;