aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/teletext.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-02 21:35:40 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-02 21:35:40 +0000
commit4dfa43611e65709b6cdb570868055bd19382cf6a (patch)
tree470d9ed768cb14b3a3076d5f9d9c25ffdf34635a /lib/dvb/teletext.cpp
parent071089dadf70e673b4558dc77b85f596b750b4a5 (diff)
downloadenigma2-4dfa43611e65709b6cdb570868055bd19382cf6a.tar.gz
enigma2-4dfa43611e65709b6cdb570868055bd19382cf6a.zip
fix national option subset selection,
fix national option subset char offset
Diffstat (limited to 'lib/dvb/teletext.cpp')
-rw-r--r--lib/dvb/teletext.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/dvb/teletext.cpp b/lib/dvb/teletext.cpp
index fe31c178..4fa0a8a6 100644
--- a/lib/dvb/teletext.cpp
+++ b/lib/dvb/teletext.cpp
@@ -376,17 +376,23 @@ void eDVBTeletextParser::addSubtitleString(int color, std::string string)
idx = 0,
outidx = 0,
Gtriplet = 0,
- nat_opts = (m_C >> 11) & 0x7,
+ nat_opts = (m_C & (1<<14) ? 1 : 0) | (m_C & (1<<13) ? 2 : 0) | (m_C & (1<<12) ? 4 : 0),
nat_subset = NationalOptionSubsetsLookup[Gtriplet*8+nat_opts];
+// eDebug("nat_opts = %d, nat_subset = %d, m_C %08x, C121314 = %d%d%d",
+// nat_opts, nat_subset, m_C,
+// (m_C & (1<<12))?1:0,
+// (m_C & (1<<13))?1:0,
+// (m_C & (1<<14))?1:0);
while (idx < len)
{
unsigned char c = string[idx];
if (c >= 0x20)
{
- if (NationalReplaceMap[c])
+ unsigned char offs = NationalReplaceMap[c];
+ if (offs)
{
unsigned int utf8_code =
- NationalOptionSubsets[nat_subset*14+c];
+ NationalOptionSubsets[nat_subset*14+offs];
if (utf8_code > 0xFFFFFF)
out[outidx++]=(utf8_code&0xFF000000)>>24;
if (utf8_code > 0xFFFF)