diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-11-12 18:42:54 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-11-12 18:42:54 +0000 |
| commit | 99e6feec1546d5fa2ff8e5cdfdf84438db4281b3 (patch) | |
| tree | 3d52309c89f8345fcc8e77d0b0a0117cc7dac00c /lib/service/servicedvb.cpp | |
| parent | 233d539468f8a5b89782e9e92be224fcd7c21ab6 (diff) | |
| download | enigma2-99e6feec1546d5fa2ff8e5cdfdf84438db4281b3.tar.gz enigma2-99e6feec1546d5fa2ff8e5cdfdf84438db4281b3.zip | |
add possibility to set tuner priority for alternative services in Customize
menu (just with expert usage level)
Diffstat (limited to 'lib/service/servicedvb.cpp')
| -rw-r--r-- | lib/service/servicedvb.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index c66b3da1..53bc17a8 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -428,13 +428,38 @@ int eStaticServiceDVBBouquetInformation::isPlayable(const eServiceReference &ref return 0; } + int prio_order = eDVBFrontend::getTypePriorityOrder(); int cur=0; eDVBChannelID chid, chid_ignore; ((const eServiceReferenceDVB&)ignore).getChannelID(chid_ignore); for (std::list<eServiceReference>::iterator it(bouquet->m_services.begin()); it != bouquet->m_services.end(); ++it) { + static unsigned char prio_map[6][3] = { + { 3, 2, 1 }, // -S -C -T + { 3, 1, 2 }, // -S -T -C + { 2, 3, 1 }, // -C -S -T + { 1, 3, 2 }, // -C -T -S + { 1, 2, 3 }, // -T -C -S + { 2, 1, 3 } // -T -S -C + }; ((const eServiceReferenceDVB&)*it).getChannelID(chid); int tmp=res->canAllocateChannel(chid, chid_ignore); + switch(tmp) + { + case 0: + break; + case 30000: // cached DVB-T channel + case 1: // DVB-T frontend + tmp = prio_map[prio_order][2]; + break; + case 40000: // cached DVB-C channel + case 2: + tmp = prio_map[prio_order][1]; + break; + default: // DVB-S + tmp = prio_map[prio_order][0]; + break; + } if (tmp > cur) { m_playable_service = *it; |
