[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