git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
just scale by default
[enigma2.git]
/
lib
/
service
/
servicedvb.cpp
diff --git
a/lib/service/servicedvb.cpp
b/lib/service/servicedvb.cpp
index 9f4cc7a136611a3c9afe1843e80caac1d4fb4020..a8485fa4888c9cd4a7d6f706b3934fb8f2601e1a 100644
(file)
--- a/
lib/service/servicedvb.cpp
+++ b/
lib/service/servicedvb.cpp
@@
-428,13
+428,38
@@
int eStaticServiceDVBBouquetInformation::isPlayable(const eServiceReference &ref
return 0;
}
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)
{
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);
((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;
if (tmp > cur)
{
m_playable_service = *it;
@@
-784,7
+809,7
@@
PyObject *eDVBServiceList::getContent(const char* format, bool sorted)
sptr->getName(ref, name);
// filter short name brakets
sptr->getName(ref, name);
// filter short name brakets
-
unsigned in
t pos;
+
size_
t pos;
while((pos = name.find("\xc2\x86")) != std::string::npos)
name.erase(pos,2);
while((pos = name.find("\xc2\x87")) != std::string::npos)
while((pos = name.find("\xc2\x86")) != std::string::npos)
name.erase(pos,2);
while((pos = name.find("\xc2\x87")) != std::string::npos)
@@
-1078,6
+1103,7
@@
void eDVBServicePlay::serviceEvent(int event)
case eDVBServicePMTHandler::eventNoPATEntry:
case eDVBServicePMTHandler::eventNoPMT:
case eDVBServicePMTHandler::eventTuneFailed:
case eDVBServicePMTHandler::eventNoPATEntry:
case eDVBServicePMTHandler::eventNoPMT:
case eDVBServicePMTHandler::eventTuneFailed:
+ case eDVBServicePMTHandler::eventMisconfiguration:
{
eDebug("DVB service failed to tune - error %d", event);
m_event((iPlayableService*)this, evTuneFailed);
{
eDebug("DVB service failed to tune - error %d", event);
m_event((iPlayableService*)this, evTuneFailed);
@@
-2537,7
+2563,16
@@
void eDVBServicePlay::cutlistToCuesheet()
}
}
}
}
- if (in != out)
+ if (in < 0)
+ in = 0;
+ if (out < 0)
+ out = 0;
+ if (in > length)
+ in = length;
+ if (out > length)
+ out = length;
+
+ if (in < out)
m_cue->addSourceSpan(in, out);
in = length;
m_cue->addSourceSpan(in, out);
in = length;
@@
-2829,11
+2864,11
@@
void eDVBServicePlay::checkSubtitleTiming()
// diff = 0;
// }
// diff = 0;
// }
- if (
!diff
)
+ if (
(diff/90)<20
)
{
if (type == TELETEXT)
{
{
if (type == TELETEXT)
{
-
// eDebug("display teletext subtitle page"
);
+
eDebug("display teletext subtitle page %lld", show_time
);
m_subtitle_widget->setPage(page);
m_subtitle_pages.pop_front();
}
m_subtitle_widget->setPage(page);
m_subtitle_pages.pop_front();
}