Magnus Andersson wrote:
> Rolf Ahrenberg wrote:
>   
>> I don't have any channels with teletext subtitles and haven't used the 
>> plugin for years. However, if someone is keen enough to make a real fix 
>> and send it to me, I can update my patches...
>>
>> BR,
>> --
>> rofa
>>
>>   
>>     
Big thanks to Jose Alberto who sent this patch with the following
instructions.

Magnus, I can't write to the list, I send to you my patches to make it work 
with UTF-8.

I do:

mv teletext-chars.h teletext-chars.h.sav
iconv -f ISO-8859-15 -t UTF-8 teletext-chars.h.sav > teletext-chars.h

and change in line 51 in teletext-chars.h:

uint8_t laG0_nat_opts[13][14] = {

for

uint16_t laG0_nat_opts[13][14] = {

and apply the attached patch.

Jose Alberto


diff -aur ttxtsubs-0.0.5/teletext.c ttxtsubs-0.0.5.coque/teletext.c
--- ttxtsubs-0.0.5/teletext.c	2007-06-29 16:24:31.000000000 +0200
+++ ttxtsubs-0.0.5.coque/teletext.c	2007-06-29 15:10:14.000000000 +0200
@@ -108,7 +108,7 @@
  * Also strips parity
  */
 
-uint8_t ttxt_laG0_la1_char(int Gtriplet, int natopts, uint8_t inchar)
+uint16_t ttxt_laG0_la1_char(int Gtriplet, int natopts, uint8_t inchar)
 {
   int no = laG0_nat_opts_lookup[Gtriplet & 0xf][natopts & 0x7];
   uint8_t c = inchar & 0x7f;
diff -aur ttxtsubs-0.0.5/teletext.h ttxtsubs-0.0.5.coque/teletext.h
--- ttxtsubs-0.0.5/teletext.h	2004-03-01 23:53:17.000000000 +0100
+++ ttxtsubs-0.0.5.coque/teletext.h	2007-06-29 15:21:59.000000000 +0200
@@ -80,7 +80,7 @@
  * inchar - 7 bits = characted to remap
  * Also strips parity
  */
-uint8_t ttxt_laG0_la1_char(int Gtriplet, int natopts, uint8_t inchar);
+uint16_t ttxt_laG0_la1_char(int Gtriplet, int natopts, uint8_t inchar);
 
 /*
  * Map Latin G2 teletext characters into a ISO-8859-1 approximation.
Sólo en ttxtsubs-0.0.5.coque: teletext.o
Sólo en ttxtsubs-0.0.5.coque: ttxtsubschannelsettings.o
diff -aur ttxtsubs-0.0.5/ttxtsubsdisplay.c ttxtsubs-0.0.5.coque/ttxtsubsdisplay.c
--- ttxtsubs-0.0.5/ttxtsubsdisplay.c	2007-06-29 16:24:31.000000000 +0200
+++ ttxtsubs-0.0.5.coque/ttxtsubsdisplay.c	2007-06-29 16:22:00.000000000 +0200
@@ -284,7 +284,10 @@
       continue;
 
     if(c >= 0x20) {
-      buf[j++] = ttxt_laG0_la1_char(0, natopts, c);
+      uint16_t aux = ttxt_laG0_la1_char(0, natopts, c);
+      if (aux & 0xff00)
+        buf[j++] = (aux & 0xff00) >> 8;
+      buf[j++] = aux & 0x00ff;
     }
   }
 
@@ -370,7 +373,7 @@
 {
   int i, y;
   int rowcount = 0;
-  char buf[TTXT_DISPLAYABLE_ROWS][41];
+  char buf[TTXT_DISPLAYABLE_ROWS][82];
   int bottom = globals.bottomAdj() + (globals.bottomLB() ? BOTLETTERBOX : BOTNORM);
   tArea areas[MAXOSDAREAS];
   int numAreas = 0;
@@ -412,7 +415,9 @@
        }
      }
 
+#if defined(APIVERSNUM) && APIVERSNUM < 10500
   cFont::SetCode(I18nCharSets()[globals.i18nLanguage()]);
+#endif
   if(rowcount > MAXTTXTROWS)
     rowcount = MAXTTXTROWS;
   y = bottom - SCREENTOP - ROWH - ((ROWINCR + globals.lineSpacing()) * (rowcount-1));
@@ -435,7 +440,9 @@
     y += (ROWINCR + globals.lineSpacing());
   }
   if (mOsd->CanHandleAreas(areas, numAreas) != oeOk) {
+#if defined(APIVERSNUM) && APIVERSNUM < 10500
      cFont::SetCode(I18nCharSets()[Setup.OSDLanguage]);
+#endif
      dprint("ttxtsubs: OSD Cannot handle areas (error code: %d) - try to enlarge the line spacing!\n", mOsd->CanHandleAreas(areas, numAreas));
      }
   else {
@@ -460,7 +467,9 @@
       //dprint("%d/%d (%d,%d) (%d,%d): %s\n", i, rowcount-1, areas[i].x1, areas[i].y1, left + TEXTX, y + TEXTY, buf[i]);
       y += (ROWINCR + globals.lineSpacing());
       }
+#if defined(APIVERSNUM) && APIVERSNUM < 10500
     cFont::SetCode(I18nCharSets()[Setup.OSDLanguage]);
+#endif
     mOsd->Flush();
     }
 }
_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

Reply via email to