summaryrefslogtreecommitdiff
path: root/patches
diff options
context:
space:
mode:
authorTobias Grimm <git@e-tobi.net>2011-10-08 10:00:43 +0200
committerTobias Grimm <git@e-tobi.net>2011-10-08 10:00:43 +0200
commite7c8bd88a93ec74943399f3c7b60efd00e92054d (patch)
tree17bbc6a70ac8dcd4d387fb9e1ac5f3717ea91ad8 /patches
parent8b674ddb04a835b23985a0362327afccb5bff509 (diff)
downloadvdr-plugin-ttxtsubs-0.2.4.tar.gz
vdr-plugin-ttxtsubs-0.2.4.tar.bz2
Updated patch for VDR 1.7.21v0.2.4release/v0.2.4
Diffstat (limited to 'patches')
-rw-r--r--patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch143
-rw-r--r--patches/patch-set.1.7.21/0001-Record-teletext-subtitles.patch (renamed from patches/patch-set.1.7.20/0001-Record-teletext-subtitles.patch)10
-rw-r--r--patches/patch-set.1.7.21/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch (renamed from patches/patch-set.1.7.20/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch)112
-rw-r--r--patches/patch-set.1.7.21/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch112
-rw-r--r--patches/patch-set.1.7.21/0004-Decrypt-teletext-stream.patch (renamed from patches/patch-set.1.7.20/0004-Decrypt-teletext-stream.patch)4
-rw-r--r--patches/patch-set.1.7.21/0005-Capture-teletext-subtitle-pages-from-PMT.patch (renamed from patches/patch-set.1.7.20/0005-Capture-teletext-subtitle-pages-from-PMT.patch)8
-rw-r--r--patches/patch-set.1.7.21/0006-Ttxtsubs-plugin-hook.patch (renamed from patches/patch-set.1.7.20/0006-Ttxtsubs-plugin-hook.patch)18
-rw-r--r--patches/vdr-1.7.21-ttxtsubs.patch (renamed from patches/vdr-1.7.20-ttxtsubs.patch)247
8 files changed, 296 insertions, 358 deletions
diff --git a/patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch b/patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch
deleted file mode 100644
index 36f8040..0000000
--- a/patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From eb49859708903842aaf85b8cc0f91d45722907bb Mon Sep 17 00:00:00 2001
-From: etobi <git@e-tobi.net>
-Date: Fri, 12 Feb 2010 21:56:41 +0100
-Subject: [PATCH 3/6] Allow manual configuration of teletetxt subtitle pages
- in channels.conf
-
----
- channels.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++-----
- channels.h | 1 +
- vdr.5 | 7 +++++++
- 3 files changed, 56 insertions(+), 5 deletions(-)
-
-diff --git a/channels.c b/channels.c
-index 907688e..76b9338 100644
---- a/channels.c
-+++ b/channels.c
-@@ -381,9 +381,9 @@ void cChannel::SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *Compos
- void cChannel::SetTeletextSubtitlePages(tTeletextSubtitlePage pages[], int numberOfPages)
- {
- int mod = CHANNELMOD_NONE;
-- if (totalTtxtSubtitlePages != numberOfPages)
-+ if (totalTtxtSubtitlePages != (fixedTtxtSubtitlePages + numberOfPages))
- mod |= CHANNELMOD_PIDS;
-- totalTtxtSubtitlePages = 0;
-+ totalTtxtSubtitlePages = fixedTtxtSubtitlePages;
- for (int i = 0; (i < numberOfPages) && (totalTtxtSubtitlePages < MAXTXTPAGES); i++) {
- if (teletextSubtitlePages[totalTtxtSubtitlePages].ttxtMagazine != pages[i].ttxtMagazine ||
- teletextSubtitlePages[totalTtxtSubtitlePages].ttxtPage != pages[i].ttxtPage ||
-@@ -526,11 +526,22 @@ cString cChannel::ToText(const cChannel *Channel)
- q += IntArrayToString(q, Channel->dpids, 10, Channel->dlangs, Channel->dtypes);
- }
- *q = 0;
-+ const int TBufferSize = 5 + 1 + (MAXTXTPAGES * (3 + 1 + MAXLANGCODE1 + 1)) + 10; // '12345;150=deu,151=fin,...', +10: paranoia
-+ char tpidbuf[TBufferSize];
-+ q = tpidbuf;
-+ q += snprintf(q, sizeof(tpidbuf), "%d", Channel->tpid);
-+ if (Channel->fixedTtxtSubtitlePages > 0) {
-+ q += snprintf(q, sizeof(tpidbuf) - (q - tpidbuf), ";");
-+ 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);
-+ }
-+ }
- char caidbuf[MAXCAIDS * 5 + 10]; // 5: 4 digits plus delimiting ',', 10: paranoia
- q = caidbuf;
- q += IntArrayToString(q, Channel->caids, 16);
- *q = 0;
-- buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->parameters, *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, Channel->tpid, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid);
-+ buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%s:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->parameters, *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, tpidbuf, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid);
- }
- return buffer;
- }
-@@ -564,8 +575,9 @@ bool cChannel::Parse(const char *s)
- char *parambuf = NULL;
- char *vpidbuf = NULL;
- char *apidbuf = NULL;
-+ char *tpidbuf = NULL;
- char *caidbuf = NULL;
-- int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%d :%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, &parambuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpid, &caidbuf, &sid, &nid, &tid, &rid);
-+ int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%a[^:]:%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, &parambuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpidbuf, &caidbuf, &sid, &nid, &tid, &rid);
- if (fields >= 9) {
- if (fields == 9) {
- // allow reading of old format
-@@ -664,7 +676,37 @@ bool cChannel::Parse(const char *s)
- dpids[NumDpids] = 0;
- dtypes[NumDpids] = 0;
- }
--
-+ if (tpidbuf) {
-+ char *p;
-+ fixedTtxtSubtitlePages = 0;
-+ // 2001;150=deu,151=fin
-+ if ((p = strchr(tpidbuf, ';')) != NULL) {
-+ char *q, *strtok_next;
-+ *p++ = 0;
-+ 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, MAXLANGCODE1);
-+ 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) {
- char *p = caidbuf;
- char *q;
-@@ -701,6 +743,7 @@ bool cChannel::Parse(const char *s)
- free(sourcebuf);
- free(vpidbuf);
- free(apidbuf);
-+ free(tpidbuf);
- free(caidbuf);
- free(namebuf);
- if (!GetChannelID().Valid()) {
-diff --git a/channels.h b/channels.h
-index 3fc443c..6e7367f 100644
---- a/channels.h
-+++ b/channels.h
-@@ -126,6 +126,7 @@ private:
- 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
-diff --git a/vdr.5 b/vdr.5
-index 6274c1a..dff559d 100644
---- a/vdr.5
-+++ b/vdr.5
-@@ -214,6 +214,13 @@ if there is an audio type.
- .TP
- .B TPID
- The teletext PID.
-+
-+Fixed teletext subtitling pages can be defined separated by a semicolon.
-+The pages (separated by commas) can contain ISO 639 language codes, delimited
-+by a '=' sign, as in
-+
-+.B ...:2001;150=deu,151=fin:...
-+
- .TP
- .B Conditional access
- A hexadecimal integer defining how this channel can be accessed:
---
-1.7.5.4
-
diff --git a/patches/patch-set.1.7.20/0001-Record-teletext-subtitles.patch b/patches/patch-set.1.7.21/0001-Record-teletext-subtitles.patch
index 80b79f1..775c3b7 100644
--- a/patches/patch-set.1.7.20/0001-Record-teletext-subtitles.patch
+++ b/patches/patch-set.1.7.21/0001-Record-teletext-subtitles.patch
@@ -1,4 +1,4 @@
-From 9f3bb093c7db326d050cce3745d376c8d1eb5810 Mon Sep 17 00:00:00 2001
+From be0b774e54f1bf208e5d2316cc47c806d30e36a8 Mon Sep 17 00:00:00 2001
From: etobi <git@e-tobi.net>
Date: Fri, 12 Feb 2010 21:55:04 +0100
Subject: [PATCH 1/6] Record teletext subtitles
@@ -13,7 +13,7 @@ Subject: [PATCH 1/6] Record teletext subtitles
6 files changed, 87 insertions(+), 2 deletions(-)
diff --git a/channels.c b/channels.c
-index c689850..907688e 100644
+index b9204f2..5ab31bb 100644
--- a/channels.c
+++ b/channels.c
@@ -378,6 +378,26 @@ void cChannel::SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *Compos
@@ -157,7 +157,7 @@ index 6a9ba04..1312b9b 100644
return true;
}
diff --git a/remux.c b/remux.c
-index f174f61..11e34c7 100644
+index 78ab294..adec265 100644
--- a/remux.c
+++ b/remux.c
@@ -219,6 +219,29 @@ int cPatPmtGenerator::MakeSubtitlingDescriptor(uchar *Target, const char *Langua
@@ -218,7 +218,7 @@ index f174f61..11e34c7 100644
for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
dbgpatpmt(" stream type = %02X, pid = %d", stream.getStreamType(), stream.getPid());
diff --git a/remux.h b/remux.h
-index 3204bb4..492044c 100644
+index b882279..80d6afd 100644
--- a/remux.h
+++ b/remux.h
@@ -174,6 +174,7 @@ protected:
@@ -239,5 +239,5 @@ index 3204bb4..492044c 100644
int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; }
public:
--
-1.7.5.4
+1.7.6.3
diff --git a/patches/patch-set.1.7.20/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch b/patches/patch-set.1.7.21/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch
index eda7723..da73b30 100644
--- a/patches/patch-set.1.7.20/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch
+++ b/patches/patch-set.1.7.21/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch
@@ -1,4 +1,4 @@
-From 73a69fc122dd744f48d1d51e1b5747c67b5822dc Mon Sep 17 00:00:00 2001
+From 2b3cb0d3fd76c6f4d2beb299d291cb7c0933d9e5 Mon Sep 17 00:00:00 2001
From: etobi <git@e-tobi.net>
Date: Sat, 13 Feb 2010 14:42:30 +0100
Subject: [PATCH 2/6] Added setup option to enable teletext subtitle recording
@@ -51,7 +51,7 @@ index 54e166e..57b687f 100644
SLOF = 11700 The switching frequency (in MHz) between low and
diff --git a/config.c b/config.c
-index 6767b5c..4137abb 100644
+index 73bb00d..982bd78 100644
--- a/config.c
+++ b/config.c
@@ -333,6 +333,7 @@ cSetup::cSetup(void)
@@ -79,7 +79,7 @@ index 6767b5c..4137abb 100644
Store("SubtitleOffset", SubtitleOffset);
Store("SubtitleFgTransparency", SubtitleFgTransparency);
diff --git a/config.h b/config.h
-index 19f8768..c4c2bc4 100644
+index c51e3df..e46b4bd 100644
--- a/config.h
+++ b/config.h
@@ -235,6 +235,7 @@ public:
@@ -91,10 +91,10 @@ index 19f8768..c4c2bc4 100644
int SubtitleOffset;
int SubtitleFgTransparency, SubtitleBgTransparency;
diff --git a/menu.c b/menu.c
-index 3978514..8831fb4 100644
+index ef2bb46..3548ccd 100644
--- a/menu.c
+++ b/menu.c
-@@ -2797,6 +2797,7 @@ void cMenuSetupDVB::Setup(void)
+@@ -2798,6 +2798,7 @@ void cMenuSetupDVB::Setup(void)
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));
}
@@ -103,10 +103,10 @@ index 3978514..8831fb4 100644
SetCurrent(Get(current));
Display();
diff --git a/po/ca_ES.po b/po/ca_ES.po
-index 835f93d..0e973fa 100644
+index b104fea..1c09d79 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
-@@ -944,6 +944,9 @@ msgstr "Transpar
+@@ -950,6 +950,9 @@ msgstr "Transpar
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparncia fons subttols"
@@ -117,10 +117,10 @@ index 835f93d..0e973fa 100644
msgstr "Configuraci de l'LNB"
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
-index e6ebdfd..bfc8085 100644
+index bcafac7..370609f 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
-@@ -943,6 +943,9 @@ msgstr "Průhlednost písma titulků"
+@@ -949,6 +949,9 @@ msgstr "Průhlednost písma titulků"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Průhlednost pozadí titulků"
@@ -131,10 +131,10 @@ index e6ebdfd..bfc8085 100644
msgstr "LNB"
diff --git a/po/da_DK.po b/po/da_DK.po
-index c837986..a7c0230 100644
+index 81b11eb..5daca8d 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
-@@ -941,6 +941,9 @@ msgstr "Undertekst forgrundsgennemsigtighed"
+@@ -947,6 +947,9 @@ msgstr "Undertekst forgrundsgennemsigtighed"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Undertekst baggrundsgennemsigtighed"
@@ -145,10 +145,10 @@ index c837986..a7c0230 100644
msgstr "LNB"
diff --git a/po/de_DE.po b/po/de_DE.po
-index 75dc3a6..b4f459c 100644
+index 6d5b822..0a00a5a 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
-@@ -941,6 +941,9 @@ msgstr "Untertitel-Transparenz Vordergrund"
+@@ -947,6 +947,9 @@ msgstr "Untertitel-Transparenz Vordergrund"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Untertitel-Transparenz Hintergrund"
@@ -159,10 +159,10 @@ index 75dc3a6..b4f459c 100644
msgstr "LNB"
diff --git a/po/el_GR.po b/po/el_GR.po
-index a35fa3b..46fdac5 100644
+index 9756ea7..5d4d6ea 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
-@@ -941,6 +941,9 @@ msgstr ""
+@@ -947,6 +947,9 @@ msgstr ""
msgid "Setup.DVB$Subtitle background transparency"
msgstr ""
@@ -173,10 +173,10 @@ index a35fa3b..46fdac5 100644
msgstr "LNB"
diff --git a/po/es_ES.po b/po/es_ES.po
-index 88b693e..afcf548 100644
+index 193e75e..1f36b60 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
-@@ -942,6 +942,9 @@ msgstr "Transparencia primer plano subt
+@@ -948,6 +948,9 @@ msgstr "Transparencia primer plano subt
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparencia fondo subttulos"
@@ -187,10 +187,10 @@ index 88b693e..afcf548 100644
msgstr "LNB"
diff --git a/po/et_EE.po b/po/et_EE.po
-index 8c8ad1f..07d92f8 100644
+index 49794dd..83ff319 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
-@@ -941,6 +941,9 @@ msgstr "Subtiitri l
+@@ -947,6 +947,9 @@ msgstr "Subtiitri l
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Subtiitri tausta lbipaistvus"
@@ -201,10 +201,10 @@ index 8c8ad1f..07d92f8 100644
msgstr "LNB"
diff --git a/po/fi_FI.po b/po/fi_FI.po
-index 1b06c3f..0fda001 100644
+index b093e88..4abf6a8 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
-@@ -944,6 +944,9 @@ msgstr "Tekstityksen läpinäkyvyys"
+@@ -950,6 +950,9 @@ msgstr "Tekstityksen läpinäkyvyys"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Tekstityksen taustan läpinäkyvyys"
@@ -215,10 +215,10 @@ index 1b06c3f..0fda001 100644
msgstr "LNB"
diff --git a/po/fr_FR.po b/po/fr_FR.po
-index 68a581c..7a7d948 100644
+index b5c5120..86a961a 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
-@@ -947,6 +947,9 @@ msgstr "Transparence de l'avant-plan"
+@@ -953,6 +953,9 @@ msgstr "Transparence de l'avant-plan"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparence du fond"
@@ -229,10 +229,10 @@ index 68a581c..7a7d948 100644
msgstr "LNB"
diff --git a/po/hr_HR.po b/po/hr_HR.po
-index 69104b4..aea74c6 100644
+index ed519a2..43f2ea5 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
-@@ -943,6 +943,9 @@ msgstr "Transparentnost titla"
+@@ -949,6 +949,9 @@ msgstr "Transparentnost titla"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparentnost pozadine titla"
@@ -243,10 +243,10 @@ index 69104b4..aea74c6 100644
msgstr "LNB"
diff --git a/po/hu_HU.po b/po/hu_HU.po
-index b7cf1a7..125ffe6 100644
+index 17b905f..06f4505 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
-@@ -944,6 +944,9 @@ msgstr "Felirat transzparenci
+@@ -950,6 +950,9 @@ msgstr "Felirat transzparenci
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Felirat htternek transzparencija"
@@ -257,10 +257,10 @@ index b7cf1a7..125ffe6 100644
msgstr "LNB"
diff --git a/po/it_IT.po b/po/it_IT.po
-index 24e5412..02b33bd 100644
+index 501300e..e0227d3 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
-@@ -948,6 +948,9 @@ msgstr "Trasparenza sottotitoli"
+@@ -954,6 +954,9 @@ msgstr "Trasparenza sottotitoli"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Trasparenza sfondo sottotitoli"
@@ -271,10 +271,10 @@ index 24e5412..02b33bd 100644
msgstr "LNB"
diff --git a/po/lt_LT.po b/po/lt_LT.po
-index a8dfcb9..adbac95 100644
+index 6cb1faa..4efc707 100644
--- a/po/lt_LT.po
+++ b/po/lt_LT.po
-@@ -941,6 +941,9 @@ msgstr "Subtitrų fonto permatomumas"
+@@ -947,6 +947,9 @@ msgstr "Subtitrų fonto permatomumas"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Subtitrų fono permatomumas"
@@ -285,10 +285,10 @@ index a8dfcb9..adbac95 100644
msgstr "Konverteris (LNB)"
diff --git a/po/nl_NL.po b/po/nl_NL.po
-index 66febc5..4fa7d9f 100644
+index ae2b85e..34a71e9 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
-@@ -945,6 +945,9 @@ msgstr "Transparantie voorgrond ondertiteling"
+@@ -951,6 +951,9 @@ msgstr "Transparantie voorgrond ondertiteling"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparantie achtergrond ondertiteling"
@@ -299,10 +299,10 @@ index 66febc5..4fa7d9f 100644
msgstr "LNB"
diff --git a/po/nn_NO.po b/po/nn_NO.po
-index a49ab6b..24e697d 100644
+index 8ec8dfb..9c129ee 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
-@@ -942,6 +942,9 @@ msgstr ""
+@@ -948,6 +948,9 @@ msgstr ""
msgid "Setup.DVB$Subtitle background transparency"
msgstr ""
@@ -313,10 +313,10 @@ index a49ab6b..24e697d 100644
msgstr "LNB"
diff --git a/po/pl_PL.po b/po/pl_PL.po
-index e56f3bf..3202caf 100644
+index a5c1b47..9645eca 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
-@@ -942,6 +942,9 @@ msgstr "Prze
+@@ -948,6 +948,9 @@ msgstr "Prze
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Przerocze podtytuw: To"
@@ -327,10 +327,10 @@ index e56f3bf..3202caf 100644
msgstr "LNB"
diff --git a/po/pt_PT.po b/po/pt_PT.po
-index 2eae063..39319b9 100644
+index c443312..3c108ea 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
-@@ -942,6 +942,9 @@ msgstr "Transpar
+@@ -948,6 +948,9 @@ msgstr "Transpar
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparncia de fundo das legendas"
@@ -341,10 +341,10 @@ index 2eae063..39319b9 100644
msgstr "LNB"
diff --git a/po/ro_RO.po b/po/ro_RO.po
-index cd1a4d0..d4bd3db 100644
+index f8c5a1e..35ec9ec 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
-@@ -944,6 +944,9 @@ msgstr "Transparen
+@@ -950,6 +950,9 @@ msgstr "Transparen
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparena fundalului subtitrrii"
@@ -355,10 +355,10 @@ index cd1a4d0..d4bd3db 100644
msgstr "LNB"
diff --git a/po/ru_RU.po b/po/ru_RU.po
-index 57210f0..ac7b507 100644
+index e683b8b..b90e565 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
-@@ -942,6 +942,9 @@ msgstr "
+@@ -948,6 +948,9 @@ msgstr "
msgid "Setup.DVB$Subtitle background transparency"
msgstr " "
@@ -369,10 +369,10 @@ index 57210f0..ac7b507 100644
msgstr ""
diff --git a/po/sk_SK.po b/po/sk_SK.po
-index a8faa76..e46ae57 100644
+index 46edef5..aabb641 100644
--- a/po/sk_SK.po
+++ b/po/sk_SK.po
-@@ -941,6 +941,9 @@ msgstr "Prieh
+@@ -947,6 +947,9 @@ msgstr "Prieh
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Priehadnos pozadia titulkov"
@@ -383,10 +383,10 @@ index a8faa76..e46ae57 100644
msgstr "LNB"
diff --git a/po/sl_SI.po b/po/sl_SI.po
-index 2e6667d..8cc86bd 100644
+index 89c6923..8ef4387 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
-@@ -942,6 +942,9 @@ msgstr "Transparentnost podnapisov"
+@@ -948,6 +948,9 @@ msgstr "Transparentnost podnapisov"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparentnost ozadja podnapisov"
@@ -397,10 +397,10 @@ index 2e6667d..8cc86bd 100644
msgstr "LNB"
diff --git a/po/sv_SE.po b/po/sv_SE.po
-index 41b6592..99e166b 100644
+index 150f95e..020c64d 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
-@@ -944,6 +944,9 @@ msgstr "Transparent f
+@@ -950,6 +950,9 @@ msgstr "Transparent f
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparent bakgrund textremsa"
@@ -411,10 +411,10 @@ index 41b6592..99e166b 100644
msgstr "LNB"
diff --git a/po/tr_TR.po b/po/tr_TR.po
-index b0ad00f..2831961 100644
+index 194943b..338c649 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
-@@ -941,6 +941,9 @@ msgstr "Altyaz
+@@ -947,6 +947,9 @@ msgstr "Altyaz
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Altyaz arka effaflk"
@@ -425,10 +425,10 @@ index b0ad00f..2831961 100644
msgstr "LNB"
diff --git a/po/uk_UA.po b/po/uk_UA.po
-index f316e29..5e7c5ea 100644
+index 433ec70..c0a7947 100644
--- a/po/uk_UA.po
+++ b/po/uk_UA.po
-@@ -941,6 +941,9 @@ msgstr "Прозорість переднього плану субтитрів"
+@@ -947,6 +947,9 @@ msgstr "Прозорість переднього плану субтитрів"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Прозорість заднього плану субтитрів"
@@ -439,10 +439,10 @@ index f316e29..5e7c5ea 100644
msgstr "Конвертер"
diff --git a/po/zh_CN.po b/po/zh_CN.po
-index 11ccd84..49bb638 100644
+index c28fe88..8a594e3 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
-@@ -944,6 +944,9 @@ msgstr "字幕前景透明度"
+@@ -950,6 +950,9 @@ msgstr "字幕前景透明度"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "字幕背景透明度"
@@ -466,5 +466,5 @@ index 1312b9b..a5c8967 100644
return true;
}
--
-1.7.5.4
+1.7.6.3
diff --git a/patches/patch-set.1.7.21/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch b/patches/patch-set.1.7.21/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch
new file mode 100644
index 0000000..e772f77
--- /dev/null
+++ b/patches/patch-set.1.7.21/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch
@@ -0,0 +1,112 @@
+From 88c023f4fc9025de7b1d98ae1bd4523378b012fb Mon Sep 17 00:00:00 2001
+From: etobi <git@e-tobi.net>
+Date: Fri, 12 Feb 2010 21:56:41 +0100
+Subject: [PATCH 3/6] Allow manual configuration of teletetxt subtitle pages
+ in channels.conf
+
+---
+ channels.c | 39 ++++++++++++++++++++++++++++++++++++---
+ channels.h | 1 +
+ vdr.5 | 6 ++++++
+ 3 files changed, 43 insertions(+), 3 deletions(-)
+
+diff --git a/channels.c b/channels.c
+index 5ab31bb..44d4be2 100644
+--- a/channels.c
++++ b/channels.c
+@@ -381,9 +381,9 @@ void cChannel::SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *Compos
+ void cChannel::SetTeletextSubtitlePages(tTeletextSubtitlePage pages[], int numberOfPages)
+ {
+ int mod = CHANNELMOD_NONE;
+- if (totalTtxtSubtitlePages != numberOfPages)
++ if (totalTtxtSubtitlePages != (fixedTtxtSubtitlePages + numberOfPages))
+ mod |= CHANNELMOD_PIDS;
+- totalTtxtSubtitlePages = 0;
++ totalTtxtSubtitlePages = fixedTtxtSubtitlePages;
+ for (int i = 0; (i < numberOfPages) && (totalTtxtSubtitlePages < MAXTXTPAGES); i++) {
+ if (teletextSubtitlePages[totalTtxtSubtitlePages].ttxtMagazine != pages[i].ttxtMagazine ||
+ teletextSubtitlePages[totalTtxtSubtitlePages].ttxtPage != pages[i].ttxtPage ||
+@@ -526,10 +526,17 @@ cString cChannel::ToText(const cChannel *Channel)
+ 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);
+@@ -698,6 +705,32 @@ bool cChannel::Parse(const char *s)
+ }
+ 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) {
+diff --git a/channels.h b/channels.h
+index 3fc443c..6e7367f 100644
+--- a/channels.h
++++ b/channels.h
+@@ -126,6 +126,7 @@ private:
+ 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
+diff --git a/vdr.5 b/vdr.5
+index c46a2bf..96e142a 100644
+--- a/vdr.5
++++ b/vdr.5
+@@ -225,6 +225,12 @@ by an '=' sign, as in
+
+ .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:
+--
+1.7.6.3
+
diff --git a/patches/patch-set.1.7.20/0004-Decrypt-teletext-stream.patch b/patches/patch-set.1.7.21/0004-Decrypt-teletext-stream.patch
index f92a5ae..9abaede 100644
--- a/patches/patch-set.1.7.20/0004-Decrypt-teletext-stream.patch
+++ b/patches/patch-set.1.7.21/0004-Decrypt-teletext-stream.patch
@@ -1,4 +1,4 @@
-From ac44ba83d8bfdd36fc41d42947c09e365e5f33b1 Mon Sep 17 00:00:00 2001
+From e2833f1f09f24154b664e956ae31bcae6d101ce9 Mon Sep 17 00:00:00 2001
From: etobi <git@e-tobi.net>
Date: Sun, 14 Feb 2010 01:30:34 +0100
Subject: [PATCH 4/6] Decrypt teletext stream
@@ -31,5 +31,5 @@ index 59d62ef..b024f67 100644
cTimeMs Timeout(QUERY_REPLY_TIMEOUT);
do {
--
-1.7.5.4
+1.7.6.3
diff --git a/patches/patch-set.1.7.20/0005-Capture-teletext-subtitle-pages-from-PMT.patch b/patches/patch-set.1.7.21/0005-Capture-teletext-subtitle-pages-from-PMT.patch
index acb5725..1600431 100644
--- a/patches/patch-set.1.7.20/0005-Capture-teletext-subtitle-pages-from-PMT.patch
+++ b/patches/patch-set.1.7.21/0005-Capture-teletext-subtitle-pages-from-PMT.patch
@@ -1,4 +1,4 @@
-From 8ffcf9b992ec861604034b312ddb8dd14358bc60 Mon Sep 17 00:00:00 2001
+From 9960c81bed0689a397f8a3b9e3de91a3f75e5237 Mon Sep 17 00:00:00 2001
From: etobi <git@e-tobi.net>
Date: Fri, 12 Feb 2010 22:06:19 +0100
Subject: [PATCH 5/6] Capture teletext subtitle pages from PMT
@@ -9,7 +9,7 @@ Subject: [PATCH 5/6] Capture teletext subtitle pages from PMT
2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/remux.c b/remux.c
-index 11e34c7..0c1b361 100644
+index adec265..4f9950f 100644
--- a/remux.c
+++ b/remux.c
@@ -439,6 +439,7 @@ void cPatPmtParser::Reset(void)
@@ -58,7 +58,7 @@ index 11e34c7..0c1b361 100644
SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
dbgpatpmt(" '%s'", ld->languageCode);
diff --git a/remux.h b/remux.h
-index 492044c..23fb645 100644
+index 80d6afd..5f15dfe 100644
--- a/remux.h
+++ b/remux.h
@@ -220,6 +220,7 @@ private:
@@ -88,5 +88,5 @@ index 492044c..23fb645 100644
// TS to PES converter:
--
-1.7.5.4
+1.7.6.3
diff --git a/patches/patch-set.1.7.20/0006-Ttxtsubs-plugin-hook.patch b/patches/patch-set.1.7.21/0006-Ttxtsubs-plugin-hook.patch
index a961eba..d6e2358 100644
--- a/patches/patch-set.1.7.20/0006-Ttxtsubs-plugin-hook.patch
+++ b/patches/patch-set.1.7.21/0006-Ttxtsubs-plugin-hook.patch
@@ -1,4 +1,4 @@
-From fd8e60b778faa10adeffa96fa0c734d8b0f8384f Mon Sep 17 00:00:00 2001
+From a87fe8b8dbc21e308d2cd0d3547b77133ac0e149 Mon Sep 17 00:00:00 2001
From: etobi <git@e-tobi.net>
Date: Sat, 13 Feb 2010 00:28:21 +0100
Subject: [PATCH 6/6] Ttxtsubs plugin hook
@@ -29,7 +29,7 @@ index 18d7eb9..3da4382 100644
DEFINES += -DREMOTE_KBD
endif
diff --git a/device.c b/device.c
-index 0759993..f4b3e2a 100644
+index ba098d8..84bdd30 100644
--- a/device.c
+++ b/device.c
@@ -18,6 +18,7 @@
@@ -40,7 +40,7 @@ index 0759993..f4b3e2a 100644
// --- cLiveSubtitle ---------------------------------------------------------
-@@ -1245,6 +1246,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
+@@ -1250,6 +1251,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
}
break;
case 0xBD: { // private stream 1
@@ -54,7 +54,7 @@ index 0759993..f4b3e2a 100644
int PayloadOffset = Data[8] + 9;
// Compatibility mode for old subtitles plugin:
-@@ -1404,6 +1412,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
+@@ -1409,6 +1417,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
tsToPesVideo.Reset();
tsToPesAudio.Reset();
tsToPesSubtitle.Reset();
@@ -62,7 +62,7 @@ index 0759993..f4b3e2a 100644
}
else if (Length < TS_SIZE) {
esyslog("ERROR: skipped %d bytes of TS fragment", Length);
-@@ -1449,6 +1458,17 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
+@@ -1454,6 +1463,17 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
if (!VideoOnly || HasIBPTrickSpeed())
PlayTsSubtitle(Data, TS_SIZE);
}
@@ -81,10 +81,10 @@ index 0759993..f4b3e2a 100644
}
else if (Pid == patPmtParser.Ppid()) {
diff --git a/device.h b/device.h
-index d937e5f..841a5d4 100644
+index fd587a8..078f080 100644
--- a/device.h
+++ b/device.h
-@@ -534,6 +534,7 @@ private:
+@@ -538,6 +538,7 @@ private:
cTsToPes tsToPesVideo;
cTsToPes tsToPesAudio;
cTsToPes tsToPesSubtitle;
@@ -117,7 +117,7 @@ index d2b8ce8..9262491 100644
Channel->SetCaIds(CaDescriptors->CaIds());
Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds);
diff --git a/remux.h b/remux.h
-index 23fb645..d6b0274 100644
+index 5f15dfe..4af51e5 100644
--- a/remux.h
+++ b/remux.h
@@ -284,7 +284,8 @@ public:
@@ -252,5 +252,5 @@ index 0000000..2f97969
+
+#endif
--
-1.7.5.4
+1.7.6.3
diff --git a/patches/vdr-1.7.20-ttxtsubs.patch b/patches/vdr-1.7.21-ttxtsubs.patch
index 159d1a4..83fbd2b 100644
--- a/patches/vdr-1.7.20-ttxtsubs.patch
+++ b/patches/vdr-1.7.21-ttxtsubs.patch
@@ -26,7 +26,7 @@ index 18d7eb9..3da4382 100644
DEFINES += -DREMOTE_KBD
endif
diff --git a/channels.c b/channels.c
-index c689850..76b9338 100644
+index b9204f2..44d4be2 100644
--- a/channels.c
+++ b/channels.c
@@ -378,6 +378,26 @@ void cChannel::SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *Compos
@@ -56,88 +56,58 @@ index c689850..76b9338 100644
void cChannel::SetCaIds(const int *CaIds)
{
if (caids[0] && caids[0] <= CA_USER_MAX)
-@@ -506,11 +526,22 @@ cString cChannel::ToText(const cChannel *Channel)
+@@ -506,10 +526,17 @@ cString cChannel::ToText(const cChannel *Channel)
q += IntArrayToString(q, Channel->dpids, 10, Channel->dlangs, Channel->dtypes);
}
*q = 0;
-+ const int TBufferSize = 5 + 1 + (MAXTXTPAGES * (3 + 1 + MAXLANGCODE1 + 1)) + 10; // '12345;150=deu,151=fin,...', +10: paranoia
-+ char tpidbuf[TBufferSize];
-+ q = tpidbuf;
-+ q += snprintf(q, sizeof(tpidbuf), "%d", Channel->tpid);
+- 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 += snprintf(q, sizeof(tpidbuf) - (q - tpidbuf), ";");
++ *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);
+ }
+ }
- char caidbuf[MAXCAIDS * 5 + 10]; // 5: 4 digits plus delimiting ',', 10: paranoia
- q = caidbuf;
- q += IntArrayToString(q, Channel->caids, 16);
- *q = 0;
-- buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->parameters, *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, Channel->tpid, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid);
-+ buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%s:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->parameters, *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, tpidbuf, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid);
- }
- return buffer;
- }
-@@ -544,8 +575,9 @@ bool cChannel::Parse(const char *s)
- char *parambuf = NULL;
- char *vpidbuf = NULL;
- char *apidbuf = NULL;
-+ char *tpidbuf = NULL;
- char *caidbuf = NULL;
-- int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%d :%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, &parambuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpid, &caidbuf, &sid, &nid, &tid, &rid);
-+ int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%a[^:]:%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, &parambuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpidbuf, &caidbuf, &sid, &nid, &tid, &rid);
- if (fields >= 9) {
- if (fields == 9) {
- // allow reading of old format
-@@ -644,7 +676,37 @@ bool cChannel::Parse(const char *s)
- dpids[NumDpids] = 0;
- dtypes[NumDpids] = 0;
+ if (Channel->spids[0]) {
+ *q++ = ';';
+ q += IntArrayToString(q, Channel->spids, 10, Channel->slangs);
+@@ -678,6 +705,32 @@ bool cChannel::Parse(const char *s)
+ }
+ spids[NumSpids] = 0;
}
--
-+ if (tpidbuf) {
-+ char *p;
-+ fixedTtxtSubtitlePages = 0;
-+ // 2001;150=deu,151=fin
-+ if ((p = strchr(tpidbuf, ';')) != NULL) {
-+ char *q, *strtok_next;
-+ *p++ = 0;
-+ while ((q = strtok_r(p, ",", &strtok_next)) != NULL) {
-+ if (fixedTtxtSubtitlePages < MAXTXTPAGES) {
-+ int page;
-+ char *l = strchr(q, '=');
++ 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)
-+ *l++ = 0;
-+ if (sscanf(q, "%d", &page) == 1) {
-+ teletextSubtitlePages[fixedTtxtSubtitlePages] = tTeletextSubtitlePage(page);
-+ if (l)
-+ strn0cpy(teletextSubtitlePages[fixedTtxtSubtitlePages].ttxtLanguage, l, MAXLANGCODE1);
-+ fixedTtxtSubtitlePages++;
-+ }
-+ else
-+ esyslog("ERROR: invalid Teletext page!"); // no need to set ok to 'false'
++ strn0cpy(teletextSubtitlePages[fixedTtxtSubtitlePages].ttxtLanguage, l, MAXLANGCODE2);
++ fixedTtxtSubtitlePages++;
+ }
+ else
-+ esyslog("ERROR: too many Teletext pages!"); // no need to set ok to 'false'
-+ p = NULL;
++ esyslog("ERROR: invalid Teletext page!"); // no need to set ok to 'false'
+ }
-+ totalTtxtSubtitlePages = fixedTtxtSubtitlePages;
-+ }
-+ if (sscanf(tpidbuf, "%d", &tpid) != 1)
-+ return 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) {
- char *p = caidbuf;
- char *q;
-@@ -681,6 +743,7 @@ bool cChannel::Parse(const char *s)
- free(sourcebuf);
- free(vpidbuf);
- free(apidbuf);
-+ free(tpidbuf);
- free(caidbuf);
- free(namebuf);
- if (!GetChannelID().Valid()) {
diff --git a/channels.h b/channels.h
index 51f9830..6e7367f 100644
--- a/channels.h
@@ -218,7 +188,7 @@ index 59d62ef..b024f67 100644
cTimeMs Timeout(QUERY_REPLY_TIMEOUT);
do {
diff --git a/config.c b/config.c
-index 6767b5c..4137abb 100644
+index 73bb00d..982bd78 100644
--- a/config.c
+++ b/config.c
@@ -333,6 +333,7 @@ cSetup::cSetup(void)
@@ -246,7 +216,7 @@ index 6767b5c..4137abb 100644
Store("SubtitleOffset", SubtitleOffset);
Store("SubtitleFgTransparency", SubtitleFgTransparency);
diff --git a/config.h b/config.h
-index 19f8768..c4c2bc4 100644
+index c51e3df..e46b4bd 100644
--- a/config.h
+++ b/config.h
@@ -235,6 +235,7 @@ public:
@@ -258,7 +228,7 @@ index 19f8768..c4c2bc4 100644
int SubtitleOffset;
int SubtitleFgTransparency, SubtitleBgTransparency;
diff --git a/device.c b/device.c
-index 0759993..f4b3e2a 100644
+index ba098d8..84bdd30 100644
--- a/device.c
+++ b/device.c
@@ -18,6 +18,7 @@
@@ -269,7 +239,7 @@ index 0759993..f4b3e2a 100644
// --- cLiveSubtitle ---------------------------------------------------------
-@@ -1245,6 +1246,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
+@@ -1250,6 +1251,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
}
break;
case 0xBD: { // private stream 1
@@ -283,7 +253,7 @@ index 0759993..f4b3e2a 100644
int PayloadOffset = Data[8] + 9;
// Compatibility mode for old subtitles plugin:
-@@ -1404,6 +1412,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
+@@ -1409,6 +1417,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
tsToPesVideo.Reset();
tsToPesAudio.Reset();
tsToPesSubtitle.Reset();
@@ -291,7 +261,7 @@ index 0759993..f4b3e2a 100644
}
else if (Length < TS_SIZE) {
esyslog("ERROR: skipped %d bytes of TS fragment", Length);
-@@ -1449,6 +1458,17 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
+@@ -1454,6 +1463,17 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
if (!VideoOnly || HasIBPTrickSpeed())
PlayTsSubtitle(Data, TS_SIZE);
}
@@ -310,10 +280,10 @@ index 0759993..f4b3e2a 100644
}
else if (Pid == patPmtParser.Ppid()) {
diff --git a/device.h b/device.h
-index d937e5f..841a5d4 100644
+index fd587a8..078f080 100644
--- a/device.h
+++ b/device.h
-@@ -534,6 +534,7 @@ private:
+@@ -538,6 +538,7 @@ private:
cTsToPes tsToPesVideo;
cTsToPes tsToPesAudio;
cTsToPes tsToPesSubtitle;
@@ -322,10 +292,10 @@ index d937e5f..841a5d4 100644
protected:
const cPatPmtParser *PatPmtParser(void) const { return &patPmtParser; }
diff --git a/menu.c b/menu.c
-index 3978514..8831fb4 100644
+index ef2bb46..3548ccd 100644
--- a/menu.c
+++ b/menu.c
-@@ -2797,6 +2797,7 @@ void cMenuSetupDVB::Setup(void)
+@@ -2798,6 +2798,7 @@ void cMenuSetupDVB::Setup(void)
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));
}
@@ -391,10 +361,10 @@ index b7493ec..9262491 100644
Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds);
}
diff --git a/po/ca_ES.po b/po/ca_ES.po
-index 835f93d..0e973fa 100644
+index b104fea..1c09d79 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
-@@ -944,6 +944,9 @@ msgstr "Transpar
+@@ -950,6 +950,9 @@ msgstr "Transpar
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparncia fons subttols"
@@ -405,10 +375,10 @@ index 835f93d..0e973fa 100644
msgstr "Configuraci de l'LNB"
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
-index e6ebdfd..bfc8085 100644
+index bcafac7..370609f 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
-@@ -943,6 +943,9 @@ msgstr "Průhlednost písma titulků"
+@@ -949,6 +949,9 @@ msgstr "Průhlednost písma titulků"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Průhlednost pozadí titulků"
@@ -419,10 +389,10 @@ index e6ebdfd..bfc8085 100644
msgstr "LNB"
diff --git a/po/da_DK.po b/po/da_DK.po
-index c837986..a7c0230 100644
+index 81b11eb..5daca8d 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
-@@ -941,6 +941,9 @@ msgstr "Undertekst forgrundsgennemsigtighed"
+@@ -947,6 +947,9 @@ msgstr "Undertekst forgrundsgennemsigtighed"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Undertekst baggrundsgennemsigtighed"
@@ -433,10 +403,10 @@ index c837986..a7c0230 100644
msgstr "LNB"
diff --git a/po/de_DE.po b/po/de_DE.po
-index 75dc3a6..b4f459c 100644
+index 6d5b822..0a00a5a 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
-@@ -941,6 +941,9 @@ msgstr "Untertitel-Transparenz Vordergrund"
+@@ -947,6 +947,9 @@ msgstr "Untertitel-Transparenz Vordergrund"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Untertitel-Transparenz Hintergrund"
@@ -447,10 +417,10 @@ index 75dc3a6..b4f459c 100644
msgstr "LNB"
diff --git a/po/el_GR.po b/po/el_GR.po
-index a35fa3b..46fdac5 100644
+index 9756ea7..5d4d6ea 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
-@@ -941,6 +941,9 @@ msgstr ""
+@@ -947,6 +947,9 @@ msgstr ""
msgid "Setup.DVB$Subtitle background transparency"
msgstr ""
@@ -461,10 +431,10 @@ index a35fa3b..46fdac5 100644
msgstr "LNB"
diff --git a/po/es_ES.po b/po/es_ES.po
-index 88b693e..afcf548 100644
+index 193e75e..1f36b60 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
-@@ -942,6 +942,9 @@ msgstr "Transparencia primer plano subt
+@@ -948,6 +948,9 @@ msgstr "Transparencia primer plano subt
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparencia fondo subttulos"
@@ -475,10 +445,10 @@ index 88b693e..afcf548 100644
msgstr "LNB"
diff --git a/po/et_EE.po b/po/et_EE.po
-index 8c8ad1f..07d92f8 100644
+index 49794dd..83ff319 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
-@@ -941,6 +941,9 @@ msgstr "Subtiitri l
+@@ -947,6 +947,9 @@ msgstr "Subtiitri l
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Subtiitri tausta lbipaistvus"
@@ -489,10 +459,10 @@ index 8c8ad1f..07d92f8 100644
msgstr "LNB"
diff --git a/po/fi_FI.po b/po/fi_FI.po
-index 1b06c3f..0fda001 100644
+index b093e88..4abf6a8 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
-@@ -944,6 +944,9 @@ msgstr "Tekstityksen läpinäkyvyys"
+@@ -950,6 +950,9 @@ msgstr "Tekstityksen läpinäkyvyys"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Tekstityksen taustan läpinäkyvyys"
@@ -503,10 +473,10 @@ index 1b06c3f..0fda001 100644
msgstr "LNB"
diff --git a/po/fr_FR.po b/po/fr_FR.po
-index 68a581c..7a7d948 100644
+index b5c5120..86a961a 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
-@@ -947,6 +947,9 @@ msgstr "Transparence de l'avant-plan"
+@@ -953,6 +953,9 @@ msgstr "Transparence de l'avant-plan"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparence du fond"
@@ -517,10 +487,10 @@ index 68a581c..7a7d948 100644
msgstr "LNB"
diff --git a/po/hr_HR.po b/po/hr_HR.po
-index 69104b4..aea74c6 100644
+index ed519a2..43f2ea5 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
-@@ -943,6 +943,9 @@ msgstr "Transparentnost titla"
+@@ -949,6 +949,9 @@ msgstr "Transparentnost titla"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparentnost pozadine titla"
@@ -531,10 +501,10 @@ index 69104b4..aea74c6 100644
msgstr "LNB"
diff --git a/po/hu_HU.po b/po/hu_HU.po
-index b7cf1a7..125ffe6 100644
+index 17b905f..06f4505 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
-@@ -944,6 +944,9 @@ msgstr "Felirat transzparenci
+@@ -950,6 +950,9 @@ msgstr "Felirat transzparenci
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Felirat htternek transzparencija"
@@ -545,10 +515,10 @@ index b7cf1a7..125ffe6 100644
msgstr "LNB"
diff --git a/po/it_IT.po b/po/it_IT.po
-index 24e5412..02b33bd 100644
+index 501300e..e0227d3 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
-@@ -948,6 +948,9 @@ msgstr "Trasparenza sottotitoli"
+@@ -954,6 +954,9 @@ msgstr "Trasparenza sottotitoli"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Trasparenza sfondo sottotitoli"
@@ -559,10 +529,10 @@ index 24e5412..02b33bd 100644
msgstr "LNB"
diff --git a/po/lt_LT.po b/po/lt_LT.po
-index a8dfcb9..adbac95 100644
+index 6cb1faa..4efc707 100644
--- a/po/lt_LT.po
+++ b/po/lt_LT.po
-@@ -941,6 +941,9 @@ msgstr "Subtitrų fonto permatomumas"
+@@ -947,6 +947,9 @@ msgstr "Subtitrų fonto permatomumas"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Subtitrų fono permatomumas"
@@ -573,10 +543,10 @@ index a8dfcb9..adbac95 100644
msgstr "Konverteris (LNB)"
diff --git a/po/nl_NL.po b/po/nl_NL.po
-index 66febc5..4fa7d9f 100644
+index ae2b85e..34a71e9 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
-@@ -945,6 +945,9 @@ msgstr "Transparantie voorgrond ondertiteling"
+@@ -951,6 +951,9 @@ msgstr "Transparantie voorgrond ondertiteling"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparantie achtergrond ondertiteling"
@@ -587,10 +557,10 @@ index 66febc5..4fa7d9f 100644
msgstr "LNB"
diff --git a/po/nn_NO.po b/po/nn_NO.po
-index a49ab6b..24e697d 100644
+index 8ec8dfb..9c129ee 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
-@@ -942,6 +942,9 @@ msgstr ""
+@@ -948,6 +948,9 @@ msgstr ""
msgid "Setup.DVB$Subtitle background transparency"
msgstr ""
@@ -601,10 +571,10 @@ index a49ab6b..24e697d 100644
msgstr "LNB"
diff --git a/po/pl_PL.po b/po/pl_PL.po
-index e56f3bf..3202caf 100644
+index a5c1b47..9645eca 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
-@@ -942,6 +942,9 @@ msgstr "Prze
+@@ -948,6 +948,9 @@ msgstr "Prze
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Przerocze podtytuw: To"
@@ -615,10 +585,10 @@ index e56f3bf..3202caf 100644
msgstr "LNB"
diff --git a/po/pt_PT.po b/po/pt_PT.po
-index 2eae063..39319b9 100644
+index c443312..3c108ea 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
-@@ -942,6 +942,9 @@ msgstr "Transpar
+@@ -948,6 +948,9 @@ msgstr "Transpar
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparncia de fundo das legendas"
@@ -629,10 +599,10 @@ index 2eae063..39319b9 100644
msgstr "LNB"
diff --git a/po/ro_RO.po b/po/ro_RO.po
-index cd1a4d0..d4bd3db 100644
+index f8c5a1e..35ec9ec 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
-@@ -944,6 +944,9 @@ msgstr "Transparen
+@@ -950,6 +950,9 @@ msgstr "Transparen
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparena fundalului subtitrrii"
@@ -643,10 +613,10 @@ index cd1a4d0..d4bd3db 100644
msgstr "LNB"
diff --git a/po/ru_RU.po b/po/ru_RU.po
-index 57210f0..ac7b507 100644
+index e683b8b..b90e565 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
-@@ -942,6 +942,9 @@ msgstr "
+@@ -948,6 +948,9 @@ msgstr "
msgid "Setup.DVB$Subtitle background transparency"
msgstr " "
@@ -657,10 +627,10 @@ index 57210f0..ac7b507 100644
msgstr ""
diff --git a/po/sk_SK.po b/po/sk_SK.po
-index a8faa76..e46ae57 100644
+index 46edef5..aabb641 100644
--- a/po/sk_SK.po
+++ b/po/sk_SK.po
-@@ -941,6 +941,9 @@ msgstr "Prieh
+@@ -947,6 +947,9 @@ msgstr "Prieh
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Priehadnos pozadia titulkov"
@@ -671,10 +641,10 @@ index a8faa76..e46ae57 100644
msgstr "LNB"
diff --git a/po/sl_SI.po b/po/sl_SI.po
-index 2e6667d..8cc86bd 100644
+index 89c6923..8ef4387 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
-@@ -942,6 +942,9 @@ msgstr "Transparentnost podnapisov"
+@@ -948,6 +948,9 @@ msgstr "Transparentnost podnapisov"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparentnost ozadja podnapisov"
@@ -685,10 +655,10 @@ index 2e6667d..8cc86bd 100644
msgstr "LNB"
diff --git a/po/sv_SE.po b/po/sv_SE.po
-index 41b6592..99e166b 100644
+index 150f95e..020c64d 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
-@@ -944,6 +944,9 @@ msgstr "Transparent f
+@@ -950,6 +950,9 @@ msgstr "Transparent f
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Transparent bakgrund textremsa"
@@ -699,10 +669,10 @@ index 41b6592..99e166b 100644
msgstr "LNB"
diff --git a/po/tr_TR.po b/po/tr_TR.po
-index b0ad00f..2831961 100644
+index 194943b..338c649 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
-@@ -941,6 +941,9 @@ msgstr "Altyaz
+@@ -947,6 +947,9 @@ msgstr "Altyaz
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Altyaz arka effaflk"
@@ -713,10 +683,10 @@ index b0ad00f..2831961 100644
msgstr "LNB"
diff --git a/po/uk_UA.po b/po/uk_UA.po
-index f316e29..5e7c5ea 100644
+index 433ec70..c0a7947 100644
--- a/po/uk_UA.po
+++ b/po/uk_UA.po
-@@ -941,6 +941,9 @@ msgstr "Прозорість переднього плану субтитрів"
+@@ -947,6 +947,9 @@ msgstr "Прозорість переднього плану субтитрів"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "Прозорість заднього плану субтитрів"
@@ -727,10 +697,10 @@ index f316e29..5e7c5ea 100644
msgstr "Конвертер"
diff --git a/po/zh_CN.po b/po/zh_CN.po
-index 11ccd84..49bb638 100644
+index c28fe88..8a594e3 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
-@@ -944,6 +944,9 @@ msgstr "字幕前景透明度"
+@@ -950,6 +950,9 @@ msgstr "字幕前景透明度"
msgid "Setup.DVB$Subtitle background transparency"
msgstr "字幕背景透明度"
@@ -755,7 +725,7 @@ index 6a9ba04..a5c8967 100644
return true;
}
diff --git a/remux.c b/remux.c
-index f174f61..0c1b361 100644
+index 78ab294..4f9950f 100644
--- a/remux.c
+++ b/remux.c
@@ -219,6 +219,29 @@ int cPatPmtGenerator::MakeSubtitlingDescriptor(uchar *Target, const char *Langua
@@ -859,7 +829,7 @@ index f174f61..0c1b361 100644
SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
dbgpatpmt(" '%s'", ld->languageCode);
diff --git a/remux.h b/remux.h
-index 3204bb4..d6b0274 100644
+index b882279..4af51e5 100644
--- a/remux.h
+++ b/remux.h
@@ -174,6 +174,7 @@ protected:
@@ -907,19 +877,18 @@ index 3204bb4..d6b0274 100644
// TS to PES converter:
diff --git a/vdr.5 b/vdr.5
-index 6274c1a..dff559d 100644
+index c46a2bf..96e142a 100644
--- a/vdr.5
+++ b/vdr.5
-@@ -214,6 +214,13 @@ if there is an audio type.
- .TP
- .B TPID
- The teletext PID.
-+
-+Fixed teletext subtitling pages can be defined separated by a semicolon.
-+The pages (separated by commas) can contain ISO 639 language codes, delimited
-+by a '=' sign, as in
+@@ -225,6 +225,12 @@ by an '=' sign, as in
+
+ .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 ...:2001;150=deu,151=fin:...
++.B ...:201+150=deu,151=fin;2001,2002:...
+
.TP
.B Conditional access