summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY19
-rw-r--r--README6
-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
-rw-r--r--ttxtsubs.c2
11 files changed, 320 insertions, 361 deletions
diff --git a/HISTORY b/HISTORY
index 33105ea..8dddfc5 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,6 +1,25 @@
VDR Plugin 'ttxtsubs' Revision History
--------------------------------------
+2011-10-08: Version 0.2.4
+- Updated patch for VDR 1.7.21 (Closes #745)
+
+ !!! With this release the channels.conf format has changed !!!
+ !!! You may need to manually update your channels.conf !!!
+
+ With VDR 1.7.21 the subtitle PIDs are stored in the channels.conf as an
+ extension to the teletext PID (see vdr.5 for details).
+
+ This change made it neccessary to change the extension of the tpid in
+ channels.conf used by the ttxtsubs patch:
+
+ old: ...:201;150=deu,151=fin:...
+ new ...:201+150=deu,151=fin;2001,2002:...
+
+ ...where 201 is the TPID, 150 and 151 are the teletext pages for the
+ German and Finnish teletext subtitles and 2001,2002 are the DVB
+ subtitle PIDs.
+
2011-08-21: Version 0.2.3
- Made changes in font settings be applied instantly, without the need to
change the channel (patch provided by Rolf Ahrenberg)
diff --git a/README b/README
index 236da75..96231a0 100644
--- a/README
+++ b/README
@@ -22,7 +22,7 @@ Old homepage:
Copyright:
(C) 2003 - 2008 Ragnar Sundblad
- (C) 2009 - 2010 Tobias Grimm
+ (C) 2009 - 2011 Tobias Grimm
License:
This program is free software; you can redistribute it and/or modify it
@@ -71,7 +71,9 @@ configure the subtitle page(s) for each channel manually.
In order to do so, you have to stop VDR and edit the channels.conf. After the
Tpid entry, you can add tuples of language codes and page numbers like this:
- ...:2001;150=deu,151=fin:...
+ ...:201+150=deu,151=fin...
+
+!!! This format has changed in version 0.2.4 for VDR 1.7.21 (see HISTORY) !!!
See `man 5 vdr` for a detailed description of the channels.conf.
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
diff --git a/ttxtsubs.c b/ttxtsubs.c
index fa44e13..7fd1c19 100644
--- a/ttxtsubs.c
+++ b/ttxtsubs.c
@@ -51,7 +51,7 @@
#error "This version of ttxtsubs requires the ttxtsubs patch version 2 to be applied to VDR!!"
#endif
-static const char *VERSION = "0.2.3";
+static const char *VERSION = "0.2.4";
static const char *DESCRIPTION = trNOOP("Teletext subtitles");
cTtxtsubsConf globals;