[SCM] vdr packaging repository branch, e-tobi, updated. debian/2.0.0-1_etobi4-8-g70f7511

etobi git at e-tobi.net
Sat Apr 13 21:35:12 UTC 2013


The following commit has been merged in the e-tobi branch:
commit 70f75110b27f1242910ce7643fc50365c19b8c02
Merge: cb33da3d6201027b5d6c69a73a56d5bcafd9b569 9738339ec370616ac5493a32ccfec083696bec4f
Author: etobi <git at e-tobi.net>
Date:   Sat Apr 13 23:31:15 2013 +0200

    Merge branch 'master' into e-tobi
    
    Conflicts:
    	debian/.vdr-patches
    	debian/changelog
    	debian/patches/series

diff --combined debian/.vdr-patches
index d114464,5ffc287..5ea2d7a
--- a/debian/.vdr-patches
+++ b/debian/.vdr-patches
@@@ -1,12 -1,4 +1,11 @@@
- debian/patches/opt-41-x_timer-info.patch:8df0fefa8fb9dff3448d6bd3633d7b4e
- debian/patches/12_osdbase-maxitems.patch:3b1184fcb109593c63686108c895fcec
- debian/patches/opt-45_yaepg.patch:d518e012e4a8164246be5ea4135b614d
- debian/patches/04_newplugin.patch:22a72799db5051ed0ef08b0770a5e6f0
- debian/patches/opt-27_ttxtsubs.patch:0cfb2e3a8ea41249af28a3733c703809
- debian/patches/opt-42-x_MainMenuHooks.patch:ef26bc79d45a2d32a3cb7b1589e9b652
- debian/patches/opt-50_graphtft.patch:10a8dfc931180dfc13cf14e4f080b874
- debian/patches/06_default_svdrp_port_0.patch:bb49194133b0487b1efe5619930d7af0
- debian/patches/vdr-2.0.0-fixkeeptracksinit.diff:88942ee1799af959433d5c47e0858cbb
- debian/patches/opt-37-x_menuorg.patch:6dcb9013c5e2bf7d800d9c3b23b97c42
- debian/patches/opt-22-x_edit_marks.patch:29794d91fd06559eaea8970d43689af7
- debian/patches/99_ncursesw-include.patch:9312525e87bdbb7181329cf7ff6c9c0c
 -04_newplugin.patch:be5169037184e60fe7265891bb8f9f94
 -06_default_svdrp_port_0.patch:57814ddbe49c8dbdd22d14904de5051c
 -12_osdbase-maxitems.patch:2453ebb246e91f62943386e196a8233b
++04_newplugin.patch:22a72799db5051ed0ef08b0770a5e6f0
++06_default_svdrp_port_0.patch:bb49194133b0487b1efe5619930d7af0
++12_osdbase-maxitems.patch:3b1184fcb109593c63686108c895fcec
+ 99_ncursesw-include.patch:9312525e87bdbb7181329cf7ff6c9c0c
++opt-22-x_edit_marks.patch:29794d91fd06559eaea8970d43689af7
++opt-27_ttxtsubs.patch:d78c0304a0b74cc829f49cf3c3716a60
++opt-37-x_menuorg.patch:6dcb9013c5e2bf7d800d9c3b23b97c42
++opt-41-x_timer-info.patch:8df0fefa8fb9dff3448d6bd3633d7b4e
++opt-42-x_MainMenuHooks.patch:ef26bc79d45a2d32a3cb7b1589e9b652
++opt-45_yaepg.patch:d518e012e4a8164246be5ea4135b614d
++opt-50_graphtft.patch:10a8dfc931180dfc13cf14e4f080b874
diff --combined debian/changelog
index afbbc16,ad02997..caa6769
--- a/debian/changelog
+++ b/debian/changelog
@@@ -1,37 -1,23 +1,46 @@@
 -vdr (2.0.1-1) UNRELEASED; urgency=low
++vdr (2.0.1-1~etobi1) unstable; urgency=low
+ 
+   * New upstream release
 -  * Dropped vdr-1.7.42-fixpendingtimers.diff - fixed upstream
 -  * Added new config option ENABLE_CORE_DUMPS in /etc/default/vdr
 -  * Append CPPFLAGS to CFLAGS, so this gets stored in vdr.pc
 -    and can be used by plugins
+   * Simplified the commands loader and dropped the ordering via
+     order.reccmds.conf / order.commands.conf
+   * Fixed collection of patch info to work with quilt patches
+ 
 - -- Tobias Grimm <etobi at debian.org>  Sat, 13 Apr 2013 23:25:09 +0200
++ -- Tobias Grimm <etobi at debian.org>  Sat, 13 Apr 2013 23:28:38 +0200
++
 +vdr (2.0.0-1~etobi4) unstable; urgency=low
 +
 +  * Added upstream fix vdr-2.0.0-fixkeeptracksinit.diff
 +
 + -- Tobias Grimm <etobi at debian.org>  Sat, 06 Apr 2013 10:36:35 +0200
 +
 +vdr (2.0.0-1~etobi3) unstable; urgency=low
 +
 +  * Added opt-22-x_edit_marks.patch again
 +
 + -- Tobias Grimm <etobi at debian.org>  Tue, 02 Apr 2013 21:33:01 +0200
 +
 +vdr (2.0.0-1~etobi2) unstable; urgency=low
 +
 +  * Added new config option ENABLE_CORE_DUMPS in /etc/default/vdr
 +  * Append CPPFLAGS to CFLAGS, so this gets stored in vdr.pc
 +    and can be used by plugins
  
 -vdr (1.7.42-2) unstable; urgency=low
 + -- Tobias Grimm <etobi at debian.org>  Mon, 01 Apr 2013 20:19:46 +0200
 +
 +vdr (2.0.0-1~etobi1) unstable; urgency=low
 +
 +  * New upstream release
 +  * Dropped vdr-1.7.42-fixpendingtimers.diff - fixed upstream
 +
 + -- Tobias Grimm <etobi at debian.org>  Sun, 31 Mar 2013 13:45:00 +0200
 +
 +vdr (1.7.42-2~etobi1) unstable; urgency=low
  
    * Added vdr-1.7.42-fixpendingtimers.diff
  
   -- Tobias Grimm <etobi at debian.org>  Tue, 26 Mar 2013 21:52:54 +0100
  
 -vdr (1.7.42-1) unstable; urgency=low
 +vdr (1.7.42-1~etobi1) unstable; urgency=low
  
    * New upstream release
    * Standards-Version: 3.9.4
@@@ -39,7 -25,7 +48,7 @@@
  
   -- Tobias Grimm <etobi at debian.org>  Sat, 23 Mar 2013 21:17:06 +0100
  
 -vdr (1.7.41-1) unstable; urgency=low
 +vdr (1.7.41-1~etobi1) unstable; urgency=low
  
    * New upstream release
    * Improved plugin loading now allows one to explicitly load specific plugins
@@@ -50,17 -36,7 +59,17 @@@
  
   -- Tobias Grimm <etobi at debian.org>  Sun, 17 Mar 2013 19:06:49 +0100
  
 -vdr (1.7.40-1) unstable; urgency=low
 +vdr (1.7.40-1~etobi1) unstable; urgency=low
 +
 +  * New upstream release
 +  * Updated ttxtsubs patch from ttxtsubs plugin version 0.3.0
 +  * Delete /var/lib/vdr/channels.conf(.terr|.cable) in postrm
 +  * Clean up /var/lib/vdr/themes when purging package
 +  * vdr-dbg and vdr-plugin-*-dbg now install the debug symbols
 +
 + -- Tobias Grimm <etobi at debian.org>  Sun, 10 Mar 2013 18:42:30 +0100
 +
 +vdr (1.7.39-1~etobi1) unstable; urgency=low
  
    * New upstream release
    * Dropped 11_sortrecordings.patch - The recording list sorting now is as it is
@@@ -71,13 -47,10 +80,13 @@@
    * Dropped Added 16_channels.conf.terr-fix.patch - fixed upstream
    * Switch to debhelper/compat 9
    * Make use of dh and VDR's install target to simplify debian/rules
 -  * Clean up /var/lib/vdr/themes when purging package
 -  * vdr-dbg and vdr-plugin-*-dbg now install the debug symbols
 +  * Refreshed the patches and dropped the following ones:
 +    - opt-20_liemikuutio.patch
 +    - opt-22-x_edit_marks.patch
 +    - opt-24_jumpplay.patch
 +    - opt-50_graphtft-liemikuutio.patch
  
 - -- Tobias Grimm <etobi at debian.org>  Wed, 23 Jan 2013 22:47:45 +0100
 + -- Tobias Grimm <etobi at debian.org>  Sun, 03 Mar 2013 09:24:30 +0100
  
  vdr (1.7.28-1) unstable; urgency=low
  
diff --combined debian/patches/opt-27_ttxtsubs.patch
index f0b88f2,0000000..cb757e5
mode 100644,000000..100644
--- a/debian/patches/opt-27_ttxtsubs.patch
+++ b/debian/patches/opt-27_ttxtsubs.patch
@@@ -1,1017 -1,0 +1,1018 @@@
 +Description: This patch is needed for the ttxtsubs plugin.
++Author: Tobias Grimm <vdr at e-tobi.net>
 +Origin: ttxsubs plugin
 +
 +Index: vdr/MANUAL
 +===================================================================
 +--- vdr.orig/MANUAL	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/MANUAL	2013-03-31 13:47:44.000000000 +0200
 +@@ -761,6 +761,9 @@
 +                          background transparency. By default the values as broadcast
 +                          are used.
 + 
 ++  Enable teletext support = yes
 ++                         If set to 'yes', enables teletext subtitles.
 ++
 +   LNB:
 + 
 +   Use DiSEqC = no        Generally turns DiSEqC support on or off.
 +Index: vdr/Makefile
 +===================================================================
 +--- vdr.orig/Makefile	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/Makefile	2013-03-31 13:47:44.000000000 +0200
 +@@ -73,6 +73,8 @@
 +        skinclassic.o skinlcars.o skins.o skinsttng.o sourceparams.o sources.o spu.o status.o svdrp.o themes.o thread.o\
 +        timers.o tools.o transfer.o vdr.o videodir.o
 + 
 ++OBJS += vdrttxtsubshooks.o
 ++
 + DEFINES  += $(CDEFINES)
 + INCLUDES += $(CINCLUDES)
 + 
 +Index: vdr/channels.c
 +===================================================================
 +--- vdr.orig/channels.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/channels.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -408,6 +408,26 @@
 +      }
 + }
 + 
 ++void cChannel::SetTeletextSubtitlePages(tTeletextSubtitlePage pages[], int numberOfPages)
 ++{
 ++  int mod = CHANNELMOD_NONE;
 ++  if (totalTtxtSubtitlePages != (fixedTtxtSubtitlePages + numberOfPages))
 ++     mod |= CHANNELMOD_PIDS;
 ++  totalTtxtSubtitlePages = fixedTtxtSubtitlePages;
 ++  for (int i = 0; (i < numberOfPages) && (totalTtxtSubtitlePages < MAXTXTPAGES); i++) {
 ++      if (teletextSubtitlePages[totalTtxtSubtitlePages].ttxtMagazine != pages[i].ttxtMagazine ||
 ++          teletextSubtitlePages[totalTtxtSubtitlePages].ttxtPage != pages[i].ttxtPage ||
 ++          teletextSubtitlePages[totalTtxtSubtitlePages].ttxtType != pages[i].ttxtType ||
 ++          strcmp(teletextSubtitlePages[totalTtxtSubtitlePages].ttxtLanguage, pages[i].ttxtLanguage)) {
 ++         mod |= CHANNELMOD_PIDS;
 ++         teletextSubtitlePages[totalTtxtSubtitlePages] = pages[i];
 ++         }
 ++      totalTtxtSubtitlePages++;
 ++      }
 ++  modification |= mod;
 ++  Channels.SetModified();
 ++}
 ++
 + void cChannel::SetCaIds(const int *CaIds)
 + {
 +   if (caids[0] && caids[0] <= CA_USER_MAX)
 +@@ -536,10 +556,17 @@
 +         q += IntArrayToString(q, Channel->dpids, 10, Channel->dlangs, Channel->dtypes);
 +         }
 +      *q = 0;
 +-     const int TBufferSize = MAXSPIDS * (5 + 1 + MAXLANGCODE2) + 10; // 5 digits plus delimiting ',' or ';' plus optional '=cod+cod', +10: paranoia and tpid
 ++     const int TBufferSize = (MAXTXTPAGES * MAXSPIDS) * (5 + 1 + MAXLANGCODE2) + 10; // 5 digits plus delimiting ',' or ';' plus optional '=cod+cod', +10: paranoia and tpid
 +      char tpidbuf[TBufferSize];
 +      q = tpidbuf;
 +      q += snprintf(q, sizeof(tpidbuf), "%d", Channel->tpid);
 ++     if (Channel->fixedTtxtSubtitlePages > 0) {
 ++        *q++ = '+';
 ++        for (int i = 0; i < Channel->fixedTtxtSubtitlePages; ++i) {
 ++            tTeletextSubtitlePage page = Channel->teletextSubtitlePages[i];
 ++            q += snprintf(q, sizeof(tpidbuf) - (q - tpidbuf), "%d=%s", page.PageNumber(), page.ttxtLanguage);
 ++            }
 ++        }
 +      if (Channel->spids[0]) {
 +         *q++ = ';';
 +         q += IntArrayToString(q, Channel->spids, 10, Channel->slangs);
 +@@ -710,6 +737,32 @@
 +                     }
 +               spids[NumSpids] = 0;
 +               }
 ++           fixedTtxtSubtitlePages = 0;
 ++           if ((p = strchr(tpidbuf, '+')) != NULL) {
 ++              *p++ = 0;
 ++              char *q;
 ++              char *strtok_next;
 ++              while ((q = strtok_r(p, ",", &strtok_next)) != NULL) {
 ++                    if (fixedTtxtSubtitlePages < MAXTXTPAGES) {
 ++                       int page;
 ++                       char *l = strchr(q, '=');
 ++                       if (l)
 ++                          *l++ = 0;
 ++                       if (sscanf(q, "%d", &page) == 1) {
 ++                          teletextSubtitlePages[fixedTtxtSubtitlePages] = tTeletextSubtitlePage(page);
 ++                          if (l)
 ++                             strn0cpy(teletextSubtitlePages[fixedTtxtSubtitlePages].ttxtLanguage, l, MAXLANGCODE2);
 ++                          fixedTtxtSubtitlePages++;
 ++                          }
 ++                       else
 ++                          esyslog("ERROR: invalid Teletext page!"); // no need to set ok to 'false'
 ++                       }
 ++                    else
 ++                       esyslog("ERROR: too many Teletext pages!"); // no need to set ok to 'false'
 ++                    p = NULL;
 ++                    }
 ++              totalTtxtSubtitlePages = fixedTtxtSubtitlePages;
 ++              }
 +            if (sscanf(tpidbuf, "%d", &tpid) != 1)
 +               return false;
 +            if (caidbuf) {
 +Index: vdr/channels.h
 +===================================================================
 +--- vdr.orig/channels.h	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/channels.h	2013-03-31 13:47:44.000000000 +0200
 +@@ -35,6 +35,7 @@
 + #define MAXDPIDS 16 // dolby (AC3 + DTS)
 + #define MAXSPIDS 32 // subtitles
 + #define MAXCAIDS 12 // conditional access
 ++#define MAXTXTPAGES 8 // teletext pages
 + 
 + #define MAXLANGCODE1 4 // a 3 letter language code, zero terminated
 + #define MAXLANGCODE2 8 // up to two 3 letter language codes, separated by '+' and zero terminated
 +@@ -71,6 +72,16 @@
 +   static const tChannelID InvalidID;
 +   };
 + 
 ++struct tTeletextSubtitlePage {
 ++  tTeletextSubtitlePage(void) { ttxtPage = ttxtMagazine = 0; ttxtType = 0x02; strcpy(ttxtLanguage, "und"); }
 ++  tTeletextSubtitlePage(int page) { ttxtMagazine = (page / 100) & 0x7; ttxtPage = (((page % 100) / 10) << 4) + (page % 10); ttxtType = 0x02; strcpy(ttxtLanguage, "und"); }
 ++  char ttxtLanguage[MAXLANGCODE1];
 ++  uchar ttxtPage;
 ++  uchar ttxtMagazine;
 ++  uchar ttxtType;
 ++  int PageNumber(void) const { return BCDCHARTOINT(ttxtMagazine) * 100 + BCDCHARTOINT(ttxtPage); }
 ++  };
 ++
 + class cChannel;
 + 
 + class cLinkChannel : public cListObject {
 +@@ -115,6 +126,9 @@
 +   uint16_t compositionPageIds[MAXSPIDS];
 +   uint16_t ancillaryPageIds[MAXSPIDS];
 +   int tpid;
 ++  int fixedTtxtSubtitlePages;
 ++  int totalTtxtSubtitlePages;
 ++  tTeletextSubtitlePage teletextSubtitlePages[MAXTXTPAGES];
 +   int caids[MAXCAIDS + 1]; // list is zero-terminated
 +   int nid;
 +   int tid;
 +@@ -166,6 +180,8 @@
 +   uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? compositionPageIds[i] : uint16_t(0); }
 +   uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? ancillaryPageIds[i] : uint16_t(0); }
 +   int Tpid(void) const { return tpid; }
 ++  const tTeletextSubtitlePage *TeletextSubtitlePages() const { return teletextSubtitlePages; }
 ++  int TotalTeletextSubtitlePages() const { return totalTtxtSubtitlePages; }
 +   const int *Caids(void) const { return caids; }
 +   int Ca(int Index = 0) const { return Index < MAXCAIDS ? caids[Index] : 0; }
 +   int Nid(void) const { return nid; }
 +@@ -192,6 +208,7 @@
 +   void SetName(const char *Name, const char *ShortName, const char *Provider);
 +   void SetPortalName(const char *PortalName);
 +   void SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);
 ++  void SetTeletextSubtitlePages(tTeletextSubtitlePage pages[], int numberOfPages);
 +   void SetCaIds(const int *CaIds); // list must be zero-terminated
 +   void SetCaDescriptors(int Level);
 +   void SetLinkChannels(cLinkChannels *LinkChannels);
 +Index: vdr/ci.c
 +===================================================================
 +--- vdr.orig/ci.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/ci.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -1914,6 +1914,8 @@
 +          AddPid(Channel->Sid(), *Dpid, STREAM_TYPE_PRIVATE);
 +      for (const int *Spid = Channel->Spids(); *Spid; Spid++)
 +          AddPid(Channel->Sid(), *Spid, STREAM_TYPE_PRIVATE);
 ++     if (Channel->Tpid() && Setup.SupportTeletext)
 ++        AddPid(Channel->Sid(), Channel->Tpid(), STREAM_TYPE_PRIVATE);
 +      }
 + }
 + 
 +@@ -1937,6 +1939,9 @@
 +          CaPmt.AddPid(*Dpid, STREAM_TYPE_PRIVATE);
 +      for (const int *Spid = Channel->Spids(); *Spid; Spid++)
 +          CaPmt.AddPid(*Spid, STREAM_TYPE_PRIVATE);
 ++     if (Channel->Tpid() && Setup.SupportTeletext) {
 ++        CaPmt.AddPid(Channel->Tpid(), STREAM_TYPE_PRIVATE);
 ++        }
 +      cas->SendPMT(&CaPmt);
 +      cTimeMs Timeout(QUERY_REPLY_TIMEOUT);
 +      do {
 +Index: vdr/config.c
 +===================================================================
 +--- vdr.orig/config.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/config.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -397,6 +397,7 @@
 +   MarginStop = 10;
 +   AudioLanguages[0] = -1;
 +   DisplaySubtitles = 0;
 ++  SupportTeletext = 1;
 +   SubtitleLanguages[0] = -1;
 +   SubtitleOffset = 0;
 +   SubtitleFgTransparency = 0;
 +@@ -602,6 +603,7 @@
 +   else if (!strcasecmp(Name, "MarginStop"))          MarginStop         = atoi(Value);
 +   else if (!strcasecmp(Name, "AudioLanguages"))      return ParseLanguages(Value, AudioLanguages);
 +   else if (!strcasecmp(Name, "DisplaySubtitles"))    DisplaySubtitles   = atoi(Value);
 ++  else if (!strcasecmp(Name, "SupportTeletext"))     SupportTeletext    = atoi(Value);
 +   else if (!strcasecmp(Name, "SubtitleLanguages"))   return ParseLanguages(Value, SubtitleLanguages);
 +   else if (!strcasecmp(Name, "SubtitleOffset"))      SubtitleOffset     = atoi(Value);
 +   else if (!strcasecmp(Name, "SubtitleFgTransparency")) SubtitleFgTransparency = atoi(Value);
 +@@ -711,6 +713,7 @@
 +   Store("MarginStop",         MarginStop);
 +   StoreLanguages("AudioLanguages", AudioLanguages);
 +   Store("DisplaySubtitles",   DisplaySubtitles);
 ++  Store("SupportTeletext",    SupportTeletext);
 +   StoreLanguages("SubtitleLanguages", SubtitleLanguages);
 +   Store("SubtitleOffset",     SubtitleOffset);
 +   Store("SubtitleFgTransparency", SubtitleFgTransparency);
 +Index: vdr/config.h
 +===================================================================
 +--- vdr.orig/config.h	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/config.h	2013-03-31 13:47:44.000000000 +0200
 +@@ -273,6 +273,7 @@
 +   int MarginStart, MarginStop;
 +   int AudioLanguages[I18N_MAX_LANGUAGES + 1];
 +   int DisplaySubtitles;
 ++  int SupportTeletext;
 +   int SubtitleLanguages[I18N_MAX_LANGUAGES + 1];
 +   int SubtitleOffset;
 +   int SubtitleFgTransparency, SubtitleBgTransparency;
 +Index: vdr/device.c
 +===================================================================
 +--- vdr.orig/device.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/device.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -18,6 +18,7 @@
 + #include "receiver.h"
 + #include "status.h"
 + #include "transfer.h"
 ++#include "vdrttxtsubshooks.h"
 + 
 + // --- cLiveSubtitle ---------------------------------------------------------
 + 
 +@@ -1312,6 +1313,13 @@
 +                   }
 +                break;
 +           case 0xBD: { // private stream 1
 ++               // EBU Teletext data, ETSI EN 300 472
 ++               // if PES data header length = 24 and data_identifier = 0x10..0x1F (EBU Data)
 ++               if (Data[8] == 0x24 && Data[45] >= 0x10 && Data[45] < 0x20) {
 ++                  cVDRTtxtsubsHookListener::Hook()->PlayerTeletextData((uint8_t*)Data, Length);
 ++                  break;
 ++                  }
 ++
 +                int PayloadOffset = Data[8] + 9;
 + 
 +                // Compatibility mode for old subtitles plugin:
 +@@ -1471,6 +1479,7 @@
 +      tsToPesVideo.Reset();
 +      tsToPesAudio.Reset();
 +      tsToPesSubtitle.Reset();
 ++     tsToPesTeletext.Reset();
 +      }
 +   else if (Length < TS_SIZE) {
 +      esyslog("ERROR: skipped %d bytes of TS fragment", Length);
 +@@ -1515,6 +1524,17 @@
 +                     if (!VideoOnly || HasIBPTrickSpeed())
 +                        PlayTsSubtitle(Data, TS_SIZE);
 +                     }
 ++                 else if (Pid == patPmtParser.Tpid()) {
 ++                    if (!VideoOnly || HasIBPTrickSpeed()) {
 ++                       int l;
 ++                       tsToPesTeletext.PutTs(Data, Length);
 ++                       if (const uchar *p = tsToPesTeletext.GetPes(l)) {
 ++                          if ((l > 45) && (p[0] == 0x00) && (p[1] == 0x00) && (p[2] == 0x01) && (p[3] == 0xbd) && (p[8] == 0x24) && (p[45] >= 0x10) && (p[45] < 0x20))
 ++                             cVDRTtxtsubsHookListener::Hook()->PlayerTeletextData((uchar *)p, l, false, patPmtParser.TeletextSubtitlePages(), patPmtParser.TotalTeletextSubtitlePages());
 ++                          tsToPesTeletext.Reset();
 ++                          }
 ++                       }
 ++                    }
 +                  }
 +               }
 +            else if (Pid == patPmtParser.Ppid()) {
 +Index: vdr/device.h
 +===================================================================
 +--- vdr.orig/device.h	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/device.h	2013-03-31 13:47:44.000000000 +0200
 +@@ -584,6 +584,7 @@
 +   cTsToPes tsToPesVideo;
 +   cTsToPes tsToPesAudio;
 +   cTsToPes tsToPesSubtitle;
 ++  cTsToPes tsToPesTeletext;
 +   bool isPlayingVideo;
 + protected:
 +   const cPatPmtParser *PatPmtParser(void) const { return &patPmtParser; }
 +Index: vdr/menu.c
 +===================================================================
 +--- vdr.orig/menu.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/menu.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -2843,6 +2843,7 @@
 +      Add(new cMenuEditIntItem( tr("Setup.DVB$Subtitle foreground transparency"), &data.SubtitleFgTransparency, 0, 9));
 +      Add(new cMenuEditIntItem( tr("Setup.DVB$Subtitle background transparency"), &data.SubtitleBgTransparency, 0, 10));
 +      }
 ++  Add(new cMenuEditBoolItem(tr("Setup.DVB$Enable teletext support"), &data.SupportTeletext));
 + 
 +   SetCurrent(Get(current));
 +   Display();
 +Index: vdr/pat.c
 +===================================================================
 +--- vdr.orig/pat.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/pat.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -13,6 +13,7 @@
 + #include "libsi/section.h"
 + #include "libsi/descriptor.h"
 + #include "thread.h"
 ++#include "vdrttxtsubshooks.h"
 + 
 + #define PMT_SCAN_TIMEOUT  10 // seconds
 + 
 +@@ -343,6 +344,8 @@
 +         char DLangs[MAXDPIDS][MAXLANGCODE2] = { "" };
 +         char SLangs[MAXSPIDS][MAXLANGCODE2] = { "" };
 +         int Tpid = 0;
 ++        tTeletextSubtitlePage TeletextSubtitlePages[MAXTXTPAGES];
 ++        int NumTPages = 0;
 +         int NumApids = 0;
 +         int NumDpids = 0;
 +         int NumSpids = 0;
 +@@ -434,8 +437,21 @@
 +                                     NumSpids++;
 +                                     }
 +                                  break;
 +-                            case SI::TeletextDescriptorTag:
 ++                            case SI::TeletextDescriptorTag: {
 +                                  Tpid = esPid;
 ++                                 SI::TeletextDescriptor *sd = (SI::TeletextDescriptor *)d;
 ++                                 SI::TeletextDescriptor::Teletext ttxt;
 ++                                 for (SI::Loop::Iterator it; sd->teletextLoop.getNext(ttxt, it); ) {
 ++                                     bool isSubtitlePage = (ttxt.getTeletextType() == 0x02) || (ttxt.getTeletextType() == 0x05);
 ++                                     if ((NumTPages < MAXTXTPAGES) && ttxt.languageCode[0] && isSubtitlePage) {
 ++                                        strn0cpy(TeletextSubtitlePages[NumTPages].ttxtLanguage, I18nNormalizeLanguageCode(ttxt.languageCode), MAXLANGCODE1);
 ++                                        TeletextSubtitlePages[NumTPages].ttxtPage = ttxt.getTeletextPageNumber();
 ++                                        TeletextSubtitlePages[NumTPages].ttxtMagazine = ttxt.getTeletextMagazineNumber();
 ++                                        TeletextSubtitlePages[NumTPages].ttxtType = ttxt.getTeletextType();
 ++                                        NumTPages++;
 ++                                        }
 ++                                     }
 ++                                 }
 +                                  break;
 +                             case SI::ISO639LanguageDescriptorTag: {
 +                                  SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
 +@@ -547,6 +563,12 @@
 +             }
 +         if (Setup.UpdateChannels >= 2) {
 +            Channel->SetPids(Vpid, Ppid, Vtype, Apids, Atypes, ALangs, Dpids, Dtypes, DLangs, Spids, SLangs, Tpid);
 ++           if (NumTPages < MAXTXTPAGES) {
 ++              int manualPageNumber = cVDRTtxtsubsHookListener::Hook()->ManualPageNumber(Channel);
 ++              if (manualPageNumber)
 ++                 TeletextSubtitlePages[NumTPages++] = tTeletextSubtitlePage(manualPageNumber);
 ++              }
 ++           Channel->SetTeletextSubtitlePages(TeletextSubtitlePages, NumTPages);
 +            Channel->SetCaIds(CaDescriptors->CaIds());
 +            Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds);
 +            }
 +Index: vdr/po/ca_ES.po
 +===================================================================
 +--- vdr.orig/po/ca_ES.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/ca_ES.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -974,6 +974,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparència fons subtítols"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "Configuració de l'LNB"
 + 
 +Index: vdr/po/cs_CZ.po
 +===================================================================
 +--- vdr.orig/po/cs_CZ.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/cs_CZ.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -974,6 +974,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Průhlednost pozadí titulků"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/da_DK.po
 +===================================================================
 +--- vdr.orig/po/da_DK.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/da_DK.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -971,6 +971,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Undertekst baggrundsgennemsigtighed"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/de_DE.po
 +===================================================================
 +--- vdr.orig/po/de_DE.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/de_DE.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -971,6 +971,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Untertitel-Transparenz Hintergrund"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr "Videotext-Unterstützung aktivieren"
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/el_GR.po
 +===================================================================
 +--- vdr.orig/po/el_GR.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/el_GR.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -971,6 +971,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr ""
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/es_ES.po
 +===================================================================
 +--- vdr.orig/po/es_ES.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/es_ES.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -972,6 +972,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparencia fondo subtítulos"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/et_EE.po
 +===================================================================
 +--- vdr.orig/po/et_EE.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/et_EE.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -971,6 +971,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Subtiitri tausta läbipaistvus"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr "Teleteksti tugi"
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/fi_FI.po
 +===================================================================
 +--- vdr.orig/po/fi_FI.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/fi_FI.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -975,6 +975,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Tekstityksen taustan läpinäkyvyys"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr "Salli teksti-TV-tuki"
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/fr_FR.po
 +===================================================================
 +--- vdr.orig/po/fr_FR.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/fr_FR.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -981,6 +981,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparence du fond des sous-titres"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/hr_HR.po
 +===================================================================
 +--- vdr.orig/po/hr_HR.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/hr_HR.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -973,6 +973,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparentnost pozadine titla"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/hu_HU.po
 +===================================================================
 +--- vdr.orig/po/hu_HU.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/hu_HU.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -975,6 +975,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Felirat hátterének transzparenciája"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/it_IT.po
 +===================================================================
 +--- vdr.orig/po/it_IT.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/it_IT.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -978,6 +978,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Trasparenza sfondo sottotitoli"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/lt_LT.po
 +===================================================================
 +--- vdr.orig/po/lt_LT.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/lt_LT.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -971,6 +971,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Subtitrų fono permatomumas"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "Konverteris (LNB)"
 + 
 +Index: vdr/po/nl_NL.po
 +===================================================================
 +--- vdr.orig/po/nl_NL.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/nl_NL.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -976,6 +976,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparantie achtergrond ondertiteling"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/nn_NO.po
 +===================================================================
 +--- vdr.orig/po/nn_NO.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/nn_NO.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -972,6 +972,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr ""
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/pl_PL.po
 +===================================================================
 +--- vdr.orig/po/pl_PL.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/pl_PL.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -973,6 +973,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Prze¼rocze podtytu³ów: T³o"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/pt_PT.po
 +===================================================================
 +--- vdr.orig/po/pt_PT.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/pt_PT.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -972,6 +972,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparência de fundo das legendas"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/ro_RO.po
 +===================================================================
 +--- vdr.orig/po/ro_RO.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/ro_RO.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -973,6 +973,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparenţa fundalului subtitrării"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/ru_RU.po
 +===================================================================
 +--- vdr.orig/po/ru_RU.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/ru_RU.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -972,6 +972,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "¿àÞ×àÐçÝÞáâì äÞÝÐ áãÑâØâàÞÒ"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "ºÞÝÒÕàâÕà"
 + 
 +Index: vdr/po/sk_SK.po
 +===================================================================
 +--- vdr.orig/po/sk_SK.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/sk_SK.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -971,6 +971,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Priehµadnos» pozadia titulkov"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB (nízko ¹umová jednotka)"
 + 
 +Index: vdr/po/sl_SI.po
 +===================================================================
 +--- vdr.orig/po/sl_SI.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/sl_SI.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -972,6 +972,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparentnost ozadja podnapisov"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/sv_SE.po
 +===================================================================
 +--- vdr.orig/po/sv_SE.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/sv_SE.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -975,6 +975,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Transparent bakgrund textremsa"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/tr_TR.po
 +===================================================================
 +--- vdr.orig/po/tr_TR.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/tr_TR.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -971,6 +971,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Altyazý arka þeffaflýk"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "LNB"
 + 
 +Index: vdr/po/uk_UA.po
 +===================================================================
 +--- vdr.orig/po/uk_UA.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/uk_UA.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -972,6 +972,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "Прозорість заднього плану субтитрів"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "Конвертер"
 + 
 +Index: vdr/po/zh_CN.po
 +===================================================================
 +--- vdr.orig/po/zh_CN.po	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/po/zh_CN.po	2013-03-31 13:47:44.000000000 +0200
 +@@ -973,6 +973,9 @@
 + msgid "Setup.DVB$Subtitle background transparency"
 + msgstr "字幕背景透明度"
 + 
 ++msgid "Setup.DVB$Enable teletext support"
 ++msgstr ""
 ++
 + msgid "LNB"
 + msgstr "切换器设置"
 + 
 +Index: vdr/receiver.c
 +===================================================================
 +--- vdr.orig/receiver.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/receiver.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -67,7 +67,8 @@
 +             (Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) &&
 +             AddPids(Channel->Apids()) &&
 +             AddPids(Channel->Dpids()) &&
 +-            AddPids(Channel->Spids());
 ++            AddPids(Channel->Spids()) &&
 ++            (!Setup.SupportTeletext || AddPid(Channel->Tpid()));
 +      }
 +   return true;
 + }
 +Index: vdr/remux.c
 +===================================================================
 +--- vdr.orig/remux.c	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/remux.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -385,6 +385,29 @@
 +   return i;
 + }
 + 
 ++int cPatPmtGenerator::MakeTeletextDescriptor(uchar *Target, const tTeletextSubtitlePage *pages, int pageCount)
 ++{
 ++  int i = 0, j = 0;
 ++  Target[i++] = SI::TeletextDescriptorTag;
 ++  int l = i;
 ++  Target[i++] = 0x00; // length
 ++  for (int n = 0; n < pageCount; n++) {
 ++      const char* Language = pages[n].ttxtLanguage;
 ++      Target[i++] = *Language++;
 ++      Target[i++] = *Language++;
 ++      Target[i++] = *Language++;
 ++      Target[i++] = (pages[n].ttxtType << 3) + pages[n].ttxtMagazine;
 ++      Target[i++] = pages[n].ttxtPage;
 ++      j++;
 ++      }
 ++  if (j > 0) {
 ++     Target[l] = j * 5; // update length
 ++     IncEsInfoLength(i);
 ++     return i;
 ++     }
 ++  return 0;
 ++}
 ++
 + int cPatPmtGenerator::MakeLanguageDescriptor(uchar *Target, const char *Language)
 + {
 +   int i = 0;
 +@@ -472,6 +495,7 @@
 +   if (Channel) {
 +      int Vpid = Channel->Vpid();
 +      int Ppid = Channel->Ppid();
 ++     int Tpid = Channel->Tpid();
 +      uchar *p = buf;
 +      int i = 0;
 +      p[i++] = 0x02; // table id
 +@@ -504,6 +528,10 @@
 +          i += MakeStream(buf + i, 0x06, Channel->Spid(n));
 +          i += MakeSubtitlingDescriptor(buf + i, Channel->Slang(n), Channel->SubtitlingType(n), Channel->CompositionPageId(n), Channel->AncillaryPageId(n));
 +          }
 ++     if (Tpid) {
 ++        i += MakeStream(buf + i, 0x06, Tpid);
 ++        i += MakeTeletextDescriptor(buf + i, Channel->TeletextSubtitlePages(), Channel->TotalTeletextSubtitlePages());
 ++        }
 + 
 +      int sl = i - SectionLength - 2 + 4; // -2 = SectionLength storage, +4 = length of CRC
 +      buf[SectionLength] |= (sl >> 8) & 0x0F;
 +@@ -577,6 +605,7 @@
 +   pmtPids[0] = 0;
 +   vpid = vtype = 0;
 +   ppid = 0;
 ++  tpid = 0;
 + }
 + 
 + void cPatPmtParser::ParsePat(const uchar *Data, int Length)
 +@@ -665,11 +694,13 @@
 +      int NumSpids = 0;
 +      vpid = vtype = 0;
 +      ppid = 0;
 ++     tpid = 0;
 +      apids[0] = 0;
 +      dpids[0] = 0;
 +      spids[0] = 0;
 +      atypes[0] = 0;
 +      dtypes[0] = 0;
 ++     totalTtxtSubtitlePages = 0;
 +      SI::PMT::Stream stream;
 +      for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
 +          dbgpatpmt("     stream type = %02X, pid = %d", stream.getStreamType(), stream.getPid());
 +@@ -768,6 +799,28 @@
 +                                     spids[NumSpids] = 0;
 +                                     }
 +                                  break;
 ++                            case SI::TeletextDescriptorTag: {
 ++                                 dbgpatpmt(" teletext");
 ++                                 tpid = stream.getPid();
 ++                                 SI::TeletextDescriptor *sd = (SI::TeletextDescriptor *)d;
 ++                                 SI::TeletextDescriptor::Teletext ttxt;
 ++                                 if (totalTtxtSubtitlePages < MAXTXTPAGES) {
 ++                                    for (SI::Loop::Iterator it; sd->teletextLoop.getNext(ttxt, it); ) {
 ++                                        bool isSubtitlePage = (ttxt.getTeletextType() == 0x02) || (ttxt.getTeletextType() == 0x05);
 ++                                        if (isSubtitlePage && ttxt.languageCode[0]) {
 ++                                           dbgpatpmt(" '%s:%x.%x'", ttxt.languageCode, ttxt.getTeletextMagazineNumber(), ttxt.getTeletextPageNumber());
 ++                                           strn0cpy(teletextSubtitlePages[totalTtxtSubtitlePages].ttxtLanguage, I18nNormalizeLanguageCode(ttxt.languageCode), MAXLANGCODE1);
 ++                                           teletextSubtitlePages[totalTtxtSubtitlePages].ttxtPage = ttxt.getTeletextPageNumber();
 ++                                           teletextSubtitlePages[totalTtxtSubtitlePages].ttxtMagazine = ttxt.getTeletextMagazineNumber();
 ++                                           teletextSubtitlePages[totalTtxtSubtitlePages].ttxtType = ttxt.getTeletextType();
 ++                                           totalTtxtSubtitlePages++;
 ++                                           if (totalTtxtSubtitlePages >= MAXTXTPAGES)
 ++                                              break;
 ++                                           }
 ++                                        }
 ++                                    }
 ++                                 }
 ++                                 break;
 +                             case SI::ISO639LanguageDescriptorTag: {
 +                                  SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
 +                                  dbgpatpmt(" '%s'", ld->languageCode);
 +Index: vdr/remux.h
 +===================================================================
 +--- vdr.orig/remux.h	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/remux.h	2013-03-31 13:47:44.000000000 +0200
 +@@ -294,6 +294,7 @@
 +   int MakeStream(uchar *Target, uchar Type, int Pid);
 +   int MakeAC3Descriptor(uchar *Target, uchar Type);
 +   int MakeSubtitlingDescriptor(uchar *Target, const char *Language, uchar SubtitlingType, uint16_t CompositionPageId, uint16_t AncillaryPageId);
 ++  int MakeTeletextDescriptor(uchar *Target, const tTeletextSubtitlePage *pages, int pageCount);
 +   int MakeLanguageDescriptor(uchar *Target, const char *Language);
 +   int MakeCRC(uchar *Target, const uchar *Data, int Length);
 +   void GeneratePmtPid(const cChannel *Channel);
 +@@ -341,6 +342,7 @@
 +   int vpid;
 +   int ppid;
 +   int vtype;
 ++  int tpid;
 +   int apids[MAXAPIDS + 1]; // list is zero-terminated
 +   int atypes[MAXAPIDS + 1]; // list is zero-terminated
 +   char alangs[MAXAPIDS][MAXLANGCODE2];
 +@@ -353,6 +355,8 @@
 +   uint16_t compositionPageIds[MAXSPIDS];
 +   uint16_t ancillaryPageIds[MAXSPIDS];
 +   bool updatePrimaryDevice;
 ++  int totalTtxtSubtitlePages;
 ++  tTeletextSubtitlePage teletextSubtitlePages[MAXTXTPAGES];
 + protected:
 +   int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; }
 + public:
 +@@ -389,6 +393,9 @@
 +   int Vtype(void) const { return vtype; }
 +        ///< Returns the video stream type as defined by the current PMT, or 0 if no video
 +        ///< stream type has been detected, yet.
 ++  int Tpid(void) { return tpid; }
 ++       ///< Returns the teletext pid as defined by the current PMT, or 0 if no teletext
 ++       ///< pid has been detected, yet.
 +   const int *Apids(void) const { return apids; }
 +   const int *Dpids(void) const { return dpids; }
 +   const int *Spids(void) const { return spids; }
 +@@ -403,6 +410,8 @@
 +   uchar SubtitlingType(int i) const { return (0 <= i && i < MAXSPIDS) ? subtitlingTypes[i] : uchar(0); }
 +   uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? compositionPageIds[i] : uint16_t(0); }
 +   uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? ancillaryPageIds[i] : uint16_t(0); }
 ++  const tTeletextSubtitlePage *TeletextSubtitlePages() const { return teletextSubtitlePages; }
 ++  int TotalTeletextSubtitlePages() const { return totalTtxtSubtitlePages; }
 +   };
 + 
 + // TS to PES converter:
 +Index: vdr/vdr.5
 +===================================================================
 +--- vdr.orig/vdr.5	2013-03-31 13:46:30.000000000 +0200
 ++++ vdr/vdr.5	2013-03-31 13:47:44.000000000 +0200
 +@@ -240,6 +240,12 @@
 + 
 + .B ...:201;2001=deu,2002=eng:...
 + 
 ++Manual teletext subtitling pages can be defined separated by a '+' sign.
 ++The pages (separated by commas) can contain language codes, delimited by a '='
 ++sign, as in
 ++
 ++.B ...:201+150=deu,151=fin;2001,2002:...
 ++
 + .TP
 + .B Conditional access
 + A hexadecimal integer defining how this channel can be accessed:
 +Index: vdr/vdrttxtsubshooks.c
 +===================================================================
 +--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 ++++ vdr/vdrttxtsubshooks.c	2013-03-31 13:47:44.000000000 +0200
 +@@ -0,0 +1,63 @@
 ++/*
 ++ * vdr-ttxtsubs - A plugin for the Linux Video Disk Recorder
 ++ * Copyright (c) 2003 - 2008 Ragnar Sundblad <ragge at nada.kth.se>
 ++ *
 ++ * This program is free software; you can redistribute it and/or modify it
 ++ * under the terms of the GNU General Public License as published by the
 ++ * Free Software Foundation; either version 2 of the License, or (at your option)
 ++ * any later version.
 ++ *
 ++ * This program is distributed in the hope that it will be useful, but
 ++ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 ++ * details.
 ++ *
 ++ * You should have received a copy of the GNU General Public License along with
 ++ * this program; if not, write to the Free Software Foundation, Inc.,
 ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 ++ *
 ++ */
 ++
 ++#include <stdlib.h>
 ++#include <stdio.h>
 ++#include <stdint.h>
 ++
 ++#include "vdrttxtsubshooks.h"
 ++
 ++// XXX Really should be a list...
 ++static cVDRTtxtsubsHookListener *gListener;
 ++
 ++// ------ class cVDRTtxtsubsHookProxy ------
 ++
 ++class cVDRTtxtsubsHookProxy : public cVDRTtxtsubsHookListener
 ++{
 ++ public:
 ++  virtual void HideOSD(void) { if(gListener) gListener->HideOSD(); };
 ++  virtual void ShowOSD(void) { if(gListener) gListener->ShowOSD(); };
 ++  virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording, const struct tTeletextSubtitlePage teletextSubtitlePages[] = NULL, int pageCount = 0)
 ++    { if(gListener) gListener->PlayerTeletextData(p, length, IsPesRecording, teletextSubtitlePages, pageCount); };
 ++  virtual int ManualPageNumber(const cChannel *channel)
 ++    { if(gListener) return gListener->ManualPageNumber(channel); else return 0; };
 ++};
 ++
 ++
 ++// ------ class cVDRTtxtsubsHookListener ------
 ++
 ++cVDRTtxtsubsHookListener::~cVDRTtxtsubsHookListener()
 ++{
 ++  gListener = 0;
 ++}
 ++
 ++void cVDRTtxtsubsHookListener::HookAttach(void)
 ++{
 ++  gListener = this;
 ++  //printf("cVDRTtxtsubsHookListener::HookAttach\n");
 ++}
 ++
 ++static cVDRTtxtsubsHookProxy gProxy;
 ++
 ++cVDRTtxtsubsHookListener *cVDRTtxtsubsHookListener::Hook(void)
 ++{
 ++  return &gProxy;
 ++}
 ++
 +Index: vdr/vdrttxtsubshooks.h
 +===================================================================
 +--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 ++++ vdr/vdrttxtsubshooks.h	2013-03-31 13:47:44.000000000 +0200
 +@@ -0,0 +1,46 @@
 ++/*
 ++ * vdr-ttxtsubs - A plugin for the Linux Video Disk Recorder
 ++ * Copyright (c) 2003 - 2008 Ragnar Sundblad <ragge at nada.kth.se>
 ++ *
 ++ * This program is free software; you can redistribute it and/or modify it
 ++ * under the terms of the GNU General Public License as published by the
 ++ * Free Software Foundation; either version 2 of the License, or (at your option)
 ++ * any later version.
 ++ *
 ++ * This program is distributed in the hope that it will be useful, but
 ++ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 ++ * details.
 ++ *
 ++ * You should have received a copy of the GNU General Public License along with
 ++ * this program; if not, write to the Free Software Foundation, Inc.,
 ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 ++ *
 ++ */
 ++
 ++#ifndef __VDRTTXTSUBSHOOKS_H
 ++#define __VDRTTXTSUBSHOOKS_H
 ++
 ++#define TTXTSUBSVERSNUM 2
 ++
 ++class cDevice;
 ++class cChannel;
 ++struct tTeletextSubtitlePage;
 ++
 ++class cVDRTtxtsubsHookListener {
 ++ public:
 ++  cVDRTtxtsubsHookListener(void) {};
 ++  virtual ~cVDRTtxtsubsHookListener();
 ++
 ++  void HookAttach(void);
 ++
 ++  virtual void HideOSD(void) {};
 ++  virtual void ShowOSD(void) {};
 ++  virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording = true, const struct tTeletextSubtitlePage teletextSubtitlePages[] = NULL, int pageCount = 0) {};
 ++  virtual int ManualPageNumber(const cChannel *channel) { return 0; };
 ++
 ++  // used by VDR to call hook listeners
 ++  static cVDRTtxtsubsHookListener *Hook(void);
 ++};
 ++
 ++#endif
diff --combined debian/patches/series
index 0b5d975,c223546..afd386d
--- a/debian/patches/series
+++ b/debian/patches/series
@@@ -3,32 -3,3 +3,30 @@@
  12_osdbase-maxitems.patch
  
  99_ncursesw-include.patch
 +
- vdr-2.0.0-fixkeeptracksinit.diff
- 
 +# Move cut mark 10 seconds with 1/3 and stop playback when toggeling cut mark
 +opt-22-x_edit_marks.patch
 +
 +# Patch needed for the ttxtsubs plugin.
 +opt-27_ttxtsubs.patch
 +
 +# Speed up zapping channels.
 +# opt-29_syncearly.patch
 +
 +# Patch that shows if there is a valid setup value left or right with < and >.
 +# opt-35_setup-show-valid.patch
 +
 +# Patch needed for the menuorg plugin.
 +opt-37-x_menuorg.patch
 +
 +# Patch to show an info, if it is possible to record an event in the timer-info.
 +opt-41-x_timer-info.patch
 +
 +# Patch to allow plugins to replace the VDR mainmenus
 +opt-42-x_MainMenuHooks.patch
 +
 +# Patch needed for the yaepg plugin.
 +opt-45_yaepg.patch
 +
 +# Patch required for the GraphTFT plugin
 +opt-50_graphtft.patch
diff --combined debian/patchinfo
index 0000000,1e7ae1e..0feefb9
mode 000000,100644..100644
--- a/debian/patchinfo
+++ b/debian/patchinfo
@@@ -1,0 -1,25 +1,67 @@@
+ Patches applied to vanilla vdr sources
+ --------------------------------------
+ 
+ 04_newplugin.patch
+     Thomas Schmidt <tschmidt at debian.org>
+ 
+     Patch for the newplugin-script, to not require a normal vdr-source-dir
+ 
+ 06_default_svdrp_port_0.patch
+     Thomas Schmidt <tschmidt at debian.org>
+ 
+     This sets the default svdrp-port to 0, which means that SVDRP is disabled by
+     default unless someone specifies another port with the --port option when
+     starting vdr
+ 
+ 12_osdbase-maxitems.patch
+     Andreas Brugger <brougs78 at gmx.net>
+ 
+     Fixes problems with text2skin skin enigma.
+ 
+ 99_ncursesw-include.patch
+     Tobias Grimm <tg at e-tobi.net>
+ 
+     Use ncursesw header file
+ 
++opt-22-x_edit_marks.patch
++    FrankJepsen at vdrportal.de
++
++    Patch adds keys '1', '3' in replay mode to move marks by +/-5secs. When in
++    replay mode key '0' sets a mark and stops there. 'Green' and 'Yellow' act as
++    'Prev' and 'Next'.
++
++opt-27_ttxtsubs.patch
++    Tobias Grimm <vdr at e-tobi.net>
++
++    This patch is needed for the ttxtsubs plugin.
++
++opt-37-x_menuorg.patch
++    Tobias Grimm <tg at e-tobi.net>
++
++    This patch is required by the MenuOrg plugin. It adds a service interface,
++    that can be implemented by plugins to reorganize  VDR's main menu entries
++    with the ability to create custom sub menus. This is version 0.4.s of the
++    patch
++
++opt-41-x_timer-info.patch
++    Andreas Brugger <brougs78 at gmx.net>, Thomas Günther <tom at toms-cafe.de>
++
++    Shows info, if it is possible to record an event in the timer-info of vdr -
++    see README.timer-info for details.
++
++opt-42-x_MainMenuHooks.patch
++    Frank Schmirler <vdrdev at schmirler.de>
++
++    This patch allows plugins to replace the VDR mainmenus "Schedule",
++    "Channels", "Timers" and "Recordings" by a different implementation.
++
++opt-45_yaepg.patch
++    bball950 at yahoo.com
++
++    This patch is needed for the yaepg plugin.
++
++opt-50_graphtft.patch
++    Jörg Wendel (Horchi)
++
++    Patch required for the GraphTFT plugin.
++
diff --combined debian/vdr.install
index 1a4149a,c9745be..3ca3146
--- a/debian/vdr.install
+++ b/debian/vdr.install
@@@ -25,13 -25,9 +25,11 @@@ debian/vdr.group
  debian/R90.custom                       etc/vdr/recording-hooks/
  debian/S90.custom                       etc/vdr/shutdown-hooks/
  debian/order.conf                       etc/vdr/plugins/
- debian/order.commands.conf              etc/vdr/command-hooks/
- debian/order.reccmds.conf               etc/vdr/command-hooks/
  debian/commands.custom.conf             etc/vdr/command-hooks/
  debian/reccmds.custom.conf              etc/vdr/command-hooks/
  
  debian/commands.update-recordings.conf  usr/share/vdr/command-hooks/
  
  debian/themes/*.theme                   var/lib/vdr/themes/
 +
 +debian/vdraptrefresh                    usr/sbin/

-- 
vdr packaging repository



More information about the pkg-vdr-dvb-changes mailing list