summaryrefslogtreecommitdiff
path: root/patches/patch-set.1.7.20
diff options
context:
space:
mode:
Diffstat (limited to 'patches/patch-set.1.7.20')
-rw-r--r--patches/patch-set.1.7.20/0001-Record-teletext-subtitles.patch243
-rw-r--r--patches/patch-set.1.7.20/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch470
-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.20/0004-Decrypt-teletext-stream.patch35
-rw-r--r--patches/patch-set.1.7.20/0005-Capture-teletext-subtitle-pages-from-PMT.patch92
-rw-r--r--patches/patch-set.1.7.20/0006-Ttxtsubs-plugin-hook.patch256
6 files changed, 0 insertions, 1239 deletions
diff --git a/patches/patch-set.1.7.20/0001-Record-teletext-subtitles.patch b/patches/patch-set.1.7.20/0001-Record-teletext-subtitles.patch
deleted file mode 100644
index 80b79f1..0000000
--- a/patches/patch-set.1.7.20/0001-Record-teletext-subtitles.patch
+++ /dev/null
@@ -1,243 +0,0 @@
-From 9f3bb093c7db326d050cce3745d376c8d1eb5810 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
-
----
- channels.c | 20 ++++++++++++++++++++
- channels.h | 16 ++++++++++++++++
- pat.c | 18 +++++++++++++++++-
- receiver.c | 3 ++-
- remux.c | 29 +++++++++++++++++++++++++++++
- remux.h | 3 +++
- 6 files changed, 87 insertions(+), 2 deletions(-)
-
-diff --git a/channels.c b/channels.c
-index c689850..907688e 100644
---- a/channels.c
-+++ b/channels.c
-@@ -378,6 +378,26 @@ void cChannel::SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *Compos
- }
- }
-
-+void cChannel::SetTeletextSubtitlePages(tTeletextSubtitlePage pages[], int numberOfPages)
-+{
-+ int mod = CHANNELMOD_NONE;
-+ if (totalTtxtSubtitlePages != numberOfPages)
-+ mod |= CHANNELMOD_PIDS;
-+ totalTtxtSubtitlePages = 0;
-+ for (int i = 0; (i < numberOfPages) && (totalTtxtSubtitlePages < MAXTXTPAGES); i++) {
-+ if (teletextSubtitlePages[totalTtxtSubtitlePages].ttxtMagazine != pages[i].ttxtMagazine ||
-+ teletextSubtitlePages[totalTtxtSubtitlePages].ttxtPage != pages[i].ttxtPage ||
-+ teletextSubtitlePages[totalTtxtSubtitlePages].ttxtType != pages[i].ttxtType ||
-+ strcmp(teletextSubtitlePages[totalTtxtSubtitlePages].ttxtLanguage, pages[i].ttxtLanguage)) {
-+ mod |= CHANNELMOD_PIDS;
-+ teletextSubtitlePages[totalTtxtSubtitlePages] = pages[i];
-+ }
-+ totalTtxtSubtitlePages++;
-+ }
-+ modification |= mod;
-+ Channels.SetModified();
-+}
-+
- void cChannel::SetCaIds(const int *CaIds)
- {
- if (caids[0] && caids[0] <= CA_USER_MAX)
-diff --git a/channels.h b/channels.h
-index 51f9830..3fc443c 100644
---- a/channels.h
-+++ b/channels.h
-@@ -35,6 +35,7 @@
- #define MAXDPIDS 16 // dolby (AC3 + DTS)
- #define MAXSPIDS 32 // subtitles
- #define MAXCAIDS 12 // conditional access
-+#define MAXTXTPAGES 8 // teletext pages
-
- #define MAXLANGCODE1 4 // a 3 letter language code, zero terminated
- #define MAXLANGCODE2 8 // up to two 3 letter language codes, separated by '+' and zero terminated
-@@ -71,6 +72,16 @@ public:
- static const tChannelID InvalidID;
- };
-
-+struct tTeletextSubtitlePage {
-+ tTeletextSubtitlePage(void) { ttxtPage = ttxtMagazine = 0; ttxtType = 0x02; strcpy(ttxtLanguage, "und"); }
-+ tTeletextSubtitlePage(int page) { ttxtMagazine = (page / 100) & 0x7; ttxtPage = (((page % 100) / 10) << 4) + (page % 10); ttxtType = 0x02; strcpy(ttxtLanguage, "und"); }
-+ char ttxtLanguage[MAXLANGCODE1];
-+ uchar ttxtPage;
-+ uchar ttxtMagazine;
-+ uchar ttxtType;
-+ int PageNumber(void) const { return BCDCHARTOINT(ttxtMagazine) * 100 + BCDCHARTOINT(ttxtPage); }
-+ };
-+
- class cChannel;
-
- class cLinkChannel : public cListObject {
-@@ -115,6 +126,8 @@ private:
- uint16_t compositionPageIds[MAXSPIDS];
- uint16_t ancillaryPageIds[MAXSPIDS];
- int tpid;
-+ int totalTtxtSubtitlePages;
-+ tTeletextSubtitlePage teletextSubtitlePages[MAXTXTPAGES];
- int caids[MAXCAIDS + 1]; // list is zero-terminated
- int nid;
- int tid;
-@@ -164,6 +177,8 @@ public:
- uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? compositionPageIds[i] : uint16_t(0); }
- uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? ancillaryPageIds[i] : uint16_t(0); }
- int Tpid(void) const { return tpid; }
-+ const tTeletextSubtitlePage *TeletextSubtitlePages() const { return teletextSubtitlePages; }
-+ int TotalTeletextSubtitlePages() const { return totalTtxtSubtitlePages; }
- const int *Caids(void) const { return caids; }
- int Ca(int Index = 0) const { return Index < MAXCAIDS ? caids[Index] : 0; }
- int Nid(void) const { return nid; }
-@@ -190,6 +205,7 @@ public:
- void SetName(const char *Name, const char *ShortName, const char *Provider);
- void SetPortalName(const char *PortalName);
- void SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);
-+ void SetTeletextSubtitlePages(tTeletextSubtitlePage pages[], int numberOfPages);
- void SetCaIds(const int *CaIds); // list must be zero-terminated
- void SetCaDescriptors(int Level);
- void SetLinkChannels(cLinkChannels *LinkChannels);
-diff --git a/pat.c b/pat.c
-index b7493ec..d2b8ce8 100644
---- a/pat.c
-+++ b/pat.c
-@@ -343,6 +343,8 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
- char DLangs[MAXDPIDS][MAXLANGCODE2] = { "" };
- char SLangs[MAXSPIDS][MAXLANGCODE2] = { "" };
- int Tpid = 0;
-+ tTeletextSubtitlePage TeletextSubtitlePages[MAXTXTPAGES];
-+ int NumTPages = 0;
- int NumApids = 0;
- int NumDpids = 0;
- int NumSpids = 0;
-@@ -434,8 +436,21 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
- NumSpids++;
- }
- break;
-- case SI::TeletextDescriptorTag:
-+ case SI::TeletextDescriptorTag: {
- Tpid = esPid;
-+ SI::TeletextDescriptor *sd = (SI::TeletextDescriptor *)d;
-+ SI::TeletextDescriptor::Teletext ttxt;
-+ for (SI::Loop::Iterator it; sd->teletextLoop.getNext(ttxt, it); ) {
-+ bool isSubtitlePage = (ttxt.getTeletextType() == 0x02) || (ttxt.getTeletextType() == 0x05);
-+ if ((NumTPages < MAXTXTPAGES) && ttxt.languageCode[0] && isSubtitlePage) {
-+ strn0cpy(TeletextSubtitlePages[NumTPages].ttxtLanguage, I18nNormalizeLanguageCode(ttxt.languageCode), MAXLANGCODE1);
-+ TeletextSubtitlePages[NumTPages].ttxtPage = ttxt.getTeletextPageNumber();
-+ TeletextSubtitlePages[NumTPages].ttxtMagazine = ttxt.getTeletextMagazineNumber();
-+ TeletextSubtitlePages[NumTPages].ttxtType = ttxt.getTeletextType();
-+ NumTPages++;
-+ }
-+ }
-+ }
- break;
- case SI::ISO639LanguageDescriptorTag: {
- SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
-@@ -537,6 +552,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
- }
- if (Setup.UpdateChannels >= 2) {
- Channel->SetPids(Vpid, Ppid, Vtype, Apids, Atypes, ALangs, Dpids, Dtypes, DLangs, Spids, SLangs, Tpid);
-+ Channel->SetTeletextSubtitlePages(TeletextSubtitlePages, NumTPages);
- Channel->SetCaIds(CaDescriptors->CaIds());
- Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds);
- }
-diff --git a/receiver.c b/receiver.c
-index 6a9ba04..1312b9b 100644
---- a/receiver.c
-+++ b/receiver.c
-@@ -81,7 +81,8 @@ bool cReceiver::SetPids(const cChannel *Channel)
- (Channel->Ppid() == Channel->Vpid() || AddPid(Channel->Ppid())) &&
- AddPids(Channel->Apids()) &&
- AddPids(Channel->Dpids()) &&
-- AddPids(Channel->Spids());
-+ AddPids(Channel->Spids()) &&
-+ AddPid(Channel->Tpid());
- }
- return true;
- }
-diff --git a/remux.c b/remux.c
-index f174f61..11e34c7 100644
---- a/remux.c
-+++ b/remux.c
-@@ -219,6 +219,29 @@ int cPatPmtGenerator::MakeSubtitlingDescriptor(uchar *Target, const char *Langua
- return i;
- }
-
-+int cPatPmtGenerator::MakeTeletextDescriptor(uchar *Target, const tTeletextSubtitlePage *pages, int pageCount)
-+{
-+ int i = 0, j = 0;
-+ Target[i++] = SI::TeletextDescriptorTag;
-+ int l = i;
-+ Target[i++] = 0x00; // length
-+ for (int n = 0; n < pageCount; n++) {
-+ const char* Language = pages[n].ttxtLanguage;
-+ Target[i++] = *Language++;
-+ Target[i++] = *Language++;
-+ Target[i++] = *Language++;
-+ Target[i++] = (pages[n].ttxtType << 3) + pages[n].ttxtMagazine;
-+ Target[i++] = pages[n].ttxtPage;
-+ j++;
-+ }
-+ if (j > 0) {
-+ Target[l] = j * 5; // update length
-+ IncEsInfoLength(i);
-+ return i;
-+ }
-+ return 0;
-+}
-+
- int cPatPmtGenerator::MakeLanguageDescriptor(uchar *Target, const char *Language)
- {
- int i = 0;
-@@ -306,6 +329,7 @@ void cPatPmtGenerator::GeneratePmt(const cChannel *Channel)
- if (Channel) {
- int Vpid = Channel->Vpid();
- int Ppid = Channel->Ppid();
-+ int Tpid = Channel->Tpid();
- uchar *p = buf;
- int i = 0;
- p[i++] = 0x02; // table id
-@@ -338,6 +362,10 @@ void cPatPmtGenerator::GeneratePmt(const cChannel *Channel)
- i += MakeStream(buf + i, 0x06, Channel->Spid(n));
- i += MakeSubtitlingDescriptor(buf + i, Channel->Slang(n), Channel->SubtitlingType(n), Channel->CompositionPageId(n), Channel->AncillaryPageId(n));
- }
-+ if (Tpid) {
-+ i += MakeStream(buf + i, 0x06, Tpid);
-+ i += MakeTeletextDescriptor(buf + i, Channel->TeletextSubtitlePages(), Channel->TotalTeletextSubtitlePages());
-+ }
-
- int sl = i - SectionLength - 2 + 4; // -2 = SectionLength storage, +4 = length of CRC
- buf[SectionLength] |= (sl >> 8) & 0x0F;
-@@ -501,6 +529,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
- spids[0] = 0;
- atypes[0] = 0;
- dtypes[0] = 0;
-+ totalTtxtSubtitlePages = 0;
- SI::PMT::Stream stream;
- for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
- dbgpatpmt(" stream type = %02X, pid = %d", stream.getStreamType(), stream.getPid());
-diff --git a/remux.h b/remux.h
-index 3204bb4..492044c 100644
---- a/remux.h
-+++ b/remux.h
-@@ -174,6 +174,7 @@ protected:
- int MakeStream(uchar *Target, uchar Type, int Pid);
- int MakeAC3Descriptor(uchar *Target, uchar Type);
- int MakeSubtitlingDescriptor(uchar *Target, const char *Language, uchar SubtitlingType, uint16_t CompositionPageId, uint16_t AncillaryPageId);
-+ int MakeTeletextDescriptor(uchar *Target, const tTeletextSubtitlePage *pages, int pageCount);
- int MakeLanguageDescriptor(uchar *Target, const char *Language);
- int MakeCRC(uchar *Target, const uchar *Data, int Length);
- void GeneratePmtPid(const cChannel *Channel);
-@@ -231,6 +232,8 @@ private:
- uint16_t compositionPageIds[MAXSPIDS];
- uint16_t ancillaryPageIds[MAXSPIDS];
- bool updatePrimaryDevice;
-+ int totalTtxtSubtitlePages;
-+ tTeletextSubtitlePage teletextSubtitlePages[MAXTXTPAGES];
- protected:
- int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; }
- public:
---
-1.7.5.4
-
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.20/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch
deleted file mode 100644
index eda7723..0000000
--- a/patches/patch-set.1.7.20/0002-Added-setup-option-to-enable-teletext-subtitle-recor.patch
+++ /dev/null
@@ -1,470 +0,0 @@
-From 73a69fc122dd744f48d1d51e1b5747c67b5822dc 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
-
----
- MANUAL | 3 +++
- config.c | 3 +++
- config.h | 1 +
- menu.c | 1 +
- po/ca_ES.po | 3 +++
- po/cs_CZ.po | 3 +++
- po/da_DK.po | 3 +++
- po/de_DE.po | 3 +++
- po/el_GR.po | 3 +++
- po/es_ES.po | 3 +++
- po/et_EE.po | 3 +++
- po/fi_FI.po | 3 +++
- po/fr_FR.po | 3 +++
- po/hr_HR.po | 3 +++
- po/hu_HU.po | 3 +++
- po/it_IT.po | 3 +++
- po/lt_LT.po | 3 +++
- po/nl_NL.po | 3 +++
- po/nn_NO.po | 3 +++
- po/pl_PL.po | 3 +++
- po/pt_PT.po | 3 +++
- po/ro_RO.po | 3 +++
- po/ru_RU.po | 3 +++
- po/sk_SK.po | 3 +++
- po/sl_SI.po | 3 +++
- po/sv_SE.po | 3 +++
- po/tr_TR.po | 3 +++
- po/uk_UA.po | 3 +++
- po/zh_CN.po | 3 +++
- receiver.c | 2 +-
- 30 files changed, 84 insertions(+), 1 deletions(-)
-
-diff --git a/MANUAL b/MANUAL
-index 54e166e..57b687f 100644
---- a/MANUAL
-+++ b/MANUAL
-@@ -730,6 +730,9 @@ Version 1.6
- background transparency. By default the values as broadcast
- are used.
-
-+ Record Teletext Subtitles = no
-+ If set to 'yes', teletext subtitles will be recorded.
-+
- LNB:
-
- SLOF = 11700 The switching frequency (in MHz) between low and
-diff --git a/config.c b/config.c
-index 6767b5c..4137abb 100644
---- a/config.c
-+++ b/config.c
-@@ -333,6 +333,7 @@ cSetup::cSetup(void)
- MarginStop = 10;
- AudioLanguages[0] = -1;
- DisplaySubtitles = 0;
-+ SupportTeletext = 0;
- SubtitleLanguages[0] = -1;
- SubtitleOffset = 0;
- SubtitleFgTransparency = 0;
-@@ -525,6 +526,7 @@ bool cSetup::Parse(const char *Name, const char *Value)
- else if (!strcasecmp(Name, "MarginStop")) MarginStop = atoi(Value);
- else if (!strcasecmp(Name, "AudioLanguages")) return ParseLanguages(Value, AudioLanguages);
- else if (!strcasecmp(Name, "DisplaySubtitles")) DisplaySubtitles = atoi(Value);
-+ else if (!strcasecmp(Name, "SupportTeletext")) SupportTeletext = atoi(Value);
- else if (!strcasecmp(Name, "SubtitleLanguages")) return ParseLanguages(Value, SubtitleLanguages);
- else if (!strcasecmp(Name, "SubtitleOffset")) SubtitleOffset = atoi(Value);
- else if (!strcasecmp(Name, "SubtitleFgTransparency")) SubtitleFgTransparency = atoi(Value);
-@@ -621,6 +623,7 @@ bool cSetup::Save(void)
- Store("MarginStop", MarginStop);
- StoreLanguages("AudioLanguages", AudioLanguages);
- Store("DisplaySubtitles", DisplaySubtitles);
-+ Store("SupportTeletext", SupportTeletext);
- StoreLanguages("SubtitleLanguages", SubtitleLanguages);
- Store("SubtitleOffset", SubtitleOffset);
- Store("SubtitleFgTransparency", SubtitleFgTransparency);
-diff --git a/config.h b/config.h
-index 19f8768..c4c2bc4 100644
---- a/config.h
-+++ b/config.h
-@@ -235,6 +235,7 @@ public:
- int MarginStart, MarginStop;
- int AudioLanguages[I18N_MAX_LANGUAGES + 1];
- int DisplaySubtitles;
-+ int SupportTeletext;
- int SubtitleLanguages[I18N_MAX_LANGUAGES + 1];
- int SubtitleOffset;
- int SubtitleFgTransparency, SubtitleBgTransparency;
-diff --git a/menu.c b/menu.c
-index 3978514..8831fb4 100644
---- a/menu.c
-+++ b/menu.c
-@@ -2797,6 +2797,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));
- }
-+ Add(new cMenuEditBoolItem(tr("Setup.DVB$Enable teletext support"), &data.SupportTeletext));
-
- SetCurrent(Get(current));
- Display();
-diff --git a/po/ca_ES.po b/po/ca_ES.po
-index 835f93d..0e973fa 100644
---- a/po/ca_ES.po
-+++ b/po/ca_ES.po
-@@ -944,6 +944,9 @@ msgstr "Transpar
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparncia fons subttols"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "Configuraci de l'LNB"
-
-diff --git a/po/cs_CZ.po b/po/cs_CZ.po
-index e6ebdfd..bfc8085 100644
---- a/po/cs_CZ.po
-+++ b/po/cs_CZ.po
-@@ -943,6 +943,9 @@ msgstr "Průhlednost písma titulků"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Průhlednost pozadí titulků"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/da_DK.po b/po/da_DK.po
-index c837986..a7c0230 100644
---- a/po/da_DK.po
-+++ b/po/da_DK.po
-@@ -941,6 +941,9 @@ msgstr "Undertekst forgrundsgennemsigtighed"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Undertekst baggrundsgennemsigtighed"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/de_DE.po b/po/de_DE.po
-index 75dc3a6..b4f459c 100644
---- a/po/de_DE.po
-+++ b/po/de_DE.po
-@@ -941,6 +941,9 @@ msgstr "Untertitel-Transparenz Vordergrund"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Untertitel-Transparenz Hintergrund"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr "Videotext-Untersttzung aktivieren"
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/el_GR.po b/po/el_GR.po
-index a35fa3b..46fdac5 100644
---- a/po/el_GR.po
-+++ b/po/el_GR.po
-@@ -941,6 +941,9 @@ msgstr ""
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr ""
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/es_ES.po b/po/es_ES.po
-index 88b693e..afcf548 100644
---- a/po/es_ES.po
-+++ b/po/es_ES.po
-@@ -942,6 +942,9 @@ msgstr "Transparencia primer plano subt
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparencia fondo subttulos"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/et_EE.po b/po/et_EE.po
-index 8c8ad1f..07d92f8 100644
---- a/po/et_EE.po
-+++ b/po/et_EE.po
-@@ -941,6 +941,9 @@ msgstr "Subtiitri l
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Subtiitri tausta lbipaistvus"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr "Teleteksti tugi"
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/fi_FI.po b/po/fi_FI.po
-index 1b06c3f..0fda001 100644
---- a/po/fi_FI.po
-+++ b/po/fi_FI.po
-@@ -944,6 +944,9 @@ msgstr "Tekstityksen läpinäkyvyys"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Tekstityksen taustan läpinäkyvyys"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr "Salli teksti-TV-tuki"
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/fr_FR.po b/po/fr_FR.po
-index 68a581c..7a7d948 100644
---- a/po/fr_FR.po
-+++ b/po/fr_FR.po
-@@ -947,6 +947,9 @@ msgstr "Transparence de l'avant-plan"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparence du fond"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/hr_HR.po b/po/hr_HR.po
-index 69104b4..aea74c6 100644
---- a/po/hr_HR.po
-+++ b/po/hr_HR.po
-@@ -943,6 +943,9 @@ msgstr "Transparentnost titla"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparentnost pozadine titla"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/hu_HU.po b/po/hu_HU.po
-index b7cf1a7..125ffe6 100644
---- a/po/hu_HU.po
-+++ b/po/hu_HU.po
-@@ -944,6 +944,9 @@ msgstr "Felirat transzparenci
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Felirat htternek transzparencija"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/it_IT.po b/po/it_IT.po
-index 24e5412..02b33bd 100644
---- a/po/it_IT.po
-+++ b/po/it_IT.po
-@@ -948,6 +948,9 @@ msgstr "Trasparenza sottotitoli"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Trasparenza sfondo sottotitoli"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/lt_LT.po b/po/lt_LT.po
-index a8dfcb9..adbac95 100644
---- a/po/lt_LT.po
-+++ b/po/lt_LT.po
-@@ -941,6 +941,9 @@ msgstr "Subtitrų fonto permatomumas"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Subtitrų fono permatomumas"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "Konverteris (LNB)"
-
-diff --git a/po/nl_NL.po b/po/nl_NL.po
-index 66febc5..4fa7d9f 100644
---- a/po/nl_NL.po
-+++ b/po/nl_NL.po
-@@ -945,6 +945,9 @@ msgstr "Transparantie voorgrond ondertiteling"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparantie achtergrond ondertiteling"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/nn_NO.po b/po/nn_NO.po
-index a49ab6b..24e697d 100644
---- a/po/nn_NO.po
-+++ b/po/nn_NO.po
-@@ -942,6 +942,9 @@ msgstr ""
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr ""
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/pl_PL.po b/po/pl_PL.po
-index e56f3bf..3202caf 100644
---- a/po/pl_PL.po
-+++ b/po/pl_PL.po
-@@ -942,6 +942,9 @@ msgstr "Prze
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Przerocze podtytuw: To"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/pt_PT.po b/po/pt_PT.po
-index 2eae063..39319b9 100644
---- a/po/pt_PT.po
-+++ b/po/pt_PT.po
-@@ -942,6 +942,9 @@ msgstr "Transpar
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparncia de fundo das legendas"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/ro_RO.po b/po/ro_RO.po
-index cd1a4d0..d4bd3db 100644
---- a/po/ro_RO.po
-+++ b/po/ro_RO.po
-@@ -944,6 +944,9 @@ msgstr "Transparen
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparena fundalului subtitrrii"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/ru_RU.po b/po/ru_RU.po
-index 57210f0..ac7b507 100644
---- a/po/ru_RU.po
-+++ b/po/ru_RU.po
-@@ -942,6 +942,9 @@ msgstr "
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr " "
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr ""
-
-diff --git a/po/sk_SK.po b/po/sk_SK.po
-index a8faa76..e46ae57 100644
---- a/po/sk_SK.po
-+++ b/po/sk_SK.po
-@@ -941,6 +941,9 @@ msgstr "Prieh
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Priehadnos pozadia titulkov"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/sl_SI.po b/po/sl_SI.po
-index 2e6667d..8cc86bd 100644
---- a/po/sl_SI.po
-+++ b/po/sl_SI.po
-@@ -942,6 +942,9 @@ msgstr "Transparentnost podnapisov"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparentnost ozadja podnapisov"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/sv_SE.po b/po/sv_SE.po
-index 41b6592..99e166b 100644
---- a/po/sv_SE.po
-+++ b/po/sv_SE.po
-@@ -944,6 +944,9 @@ msgstr "Transparent f
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Transparent bakgrund textremsa"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/tr_TR.po b/po/tr_TR.po
-index b0ad00f..2831961 100644
---- a/po/tr_TR.po
-+++ b/po/tr_TR.po
-@@ -941,6 +941,9 @@ msgstr "Altyaz
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Altyaz arka effaflk"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "LNB"
-
-diff --git a/po/uk_UA.po b/po/uk_UA.po
-index f316e29..5e7c5ea 100644
---- a/po/uk_UA.po
-+++ b/po/uk_UA.po
-@@ -941,6 +941,9 @@ msgstr "Прозорість переднього плану субтитрів"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "Прозорість заднього плану субтитрів"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "Конвертер"
-
-diff --git a/po/zh_CN.po b/po/zh_CN.po
-index 11ccd84..49bb638 100644
---- a/po/zh_CN.po
-+++ b/po/zh_CN.po
-@@ -944,6 +944,9 @@ msgstr "字幕前景透明度"
- msgid "Setup.DVB$Subtitle background transparency"
- msgstr "字幕背景透明度"
-
-+msgid "Setup.DVB$Enable teletext support"
-+msgstr ""
-+
- msgid "LNB"
- msgstr "切换器设置"
-
-diff --git a/receiver.c b/receiver.c
-index 1312b9b..a5c8967 100644
---- a/receiver.c
-+++ b/receiver.c
-@@ -82,7 +82,7 @@ bool cReceiver::SetPids(const cChannel *Channel)
- AddPids(Channel->Apids()) &&
- AddPids(Channel->Dpids()) &&
- AddPids(Channel->Spids()) &&
-- AddPid(Channel->Tpid());
-+ (!Setup.SupportTeletext || AddPid(Channel->Tpid()));
- }
- return true;
- }
---
-1.7.5.4
-
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/0004-Decrypt-teletext-stream.patch b/patches/patch-set.1.7.20/0004-Decrypt-teletext-stream.patch
deleted file mode 100644
index f92a5ae..0000000
--- a/patches/patch-set.1.7.20/0004-Decrypt-teletext-stream.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ac44ba83d8bfdd36fc41d42947c09e365e5f33b1 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
-
----
- ci.c | 5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/ci.c b/ci.c
-index 59d62ef..b024f67 100644
---- a/ci.c
-+++ b/ci.c
-@@ -1913,6 +1913,8 @@ void cCamSlot::AddChannel(const cChannel *Channel)
- AddPid(Channel->Sid(), *Dpid, STREAM_TYPE_PRIVATE);
- for (const int *Spid = Channel->Spids(); *Spid; Spid++)
- AddPid(Channel->Sid(), *Spid, STREAM_TYPE_PRIVATE);
-+ if (Channel->Tpid() && Setup.SupportTeletext)
-+ AddPid(Channel->Sid(), Channel->Tpid(), STREAM_TYPE_PRIVATE);
- }
- }
-
-@@ -1936,6 +1938,9 @@ bool cCamSlot::CanDecrypt(const cChannel *Channel)
- CaPmt.AddPid(*Dpid, STREAM_TYPE_PRIVATE);
- for (const int *Spid = Channel->Spids(); *Spid; Spid++)
- CaPmt.AddPid(*Spid, STREAM_TYPE_PRIVATE);
-+ if (Channel->Tpid() && Setup.SupportTeletext) {
-+ CaPmt.AddPid(Channel->Tpid(), STREAM_TYPE_PRIVATE);
-+ }
- cas->SendPMT(&CaPmt);
- cTimeMs Timeout(QUERY_REPLY_TIMEOUT);
- do {
---
-1.7.5.4
-
diff --git a/patches/patch-set.1.7.20/0005-Capture-teletext-subtitle-pages-from-PMT.patch b/patches/patch-set.1.7.20/0005-Capture-teletext-subtitle-pages-from-PMT.patch
deleted file mode 100644
index acb5725..0000000
--- a/patches/patch-set.1.7.20/0005-Capture-teletext-subtitle-pages-from-PMT.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 8ffcf9b992ec861604034b312ddb8dd14358bc60 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
-
----
- remux.c | 24 ++++++++++++++++++++++++
- remux.h | 5 +++++
- 2 files changed, 29 insertions(+), 0 deletions(-)
-
-diff --git a/remux.c b/remux.c
-index 11e34c7..0c1b361 100644
---- a/remux.c
-+++ b/remux.c
-@@ -439,6 +439,7 @@ void cPatPmtParser::Reset(void)
- pmtPid = -1;
- vpid = vtype = 0;
- ppid = 0;
-+ tpid = 0;
- }
-
- void cPatPmtParser::ParsePat(const uchar *Data, int Length)
-@@ -524,6 +525,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
- int NumSpids = 0;
- vpid = vtype = 0;
- ppid = 0;
-+ tpid = 0;
- apids[0] = 0;
- dpids[0] = 0;
- spids[0] = 0;
-@@ -628,6 +630,28 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
- spids[NumSpids]= 0;
- }
- break;
-+ case SI::TeletextDescriptorTag: {
-+ dbgpatpmt(" teletext");
-+ tpid = stream.getPid();
-+ SI::TeletextDescriptor *sd = (SI::TeletextDescriptor *)d;
-+ SI::TeletextDescriptor::Teletext ttxt;
-+ if (totalTtxtSubtitlePages < MAXTXTPAGES) {
-+ for (SI::Loop::Iterator it; sd->teletextLoop.getNext(ttxt, it); ) {
-+ bool isSubtitlePage = (ttxt.getTeletextType() == 0x02) || (ttxt.getTeletextType() == 0x05);
-+ if (isSubtitlePage && ttxt.languageCode[0]) {
-+ dbgpatpmt(" '%s:%x.%x'", ttxt.languageCode, ttxt.getTeletextMagazineNumber(), ttxt.getTeletextPageNumber());
-+ strn0cpy(teletextSubtitlePages[totalTtxtSubtitlePages].ttxtLanguage, I18nNormalizeLanguageCode(ttxt.languageCode), MAXLANGCODE1);
-+ teletextSubtitlePages[totalTtxtSubtitlePages].ttxtPage = ttxt.getTeletextPageNumber();
-+ teletextSubtitlePages[totalTtxtSubtitlePages].ttxtMagazine = ttxt.getTeletextMagazineNumber();
-+ teletextSubtitlePages[totalTtxtSubtitlePages].ttxtType = ttxt.getTeletextType();
-+ totalTtxtSubtitlePages++;
-+ if (totalTtxtSubtitlePages >= MAXTXTPAGES)
-+ break;
-+ }
-+ }
-+ }
-+ }
-+ break;
- case SI::ISO639LanguageDescriptorTag: {
- SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
- dbgpatpmt(" '%s'", ld->languageCode);
-diff --git a/remux.h b/remux.h
-index 492044c..23fb645 100644
---- a/remux.h
-+++ b/remux.h
-@@ -220,6 +220,7 @@ private:
- int vpid;
- int ppid;
- int vtype;
-+ int tpid;
- int apids[MAXAPIDS + 1]; // list is zero-terminated
- int atypes[MAXAPIDS + 1]; // list is zero-terminated
- char alangs[MAXAPIDS][MAXLANGCODE2];
-@@ -266,6 +267,9 @@ public:
- int Vtype(void) const { return vtype; }
- ///< Returns the video stream type as defined by the current PMT, or 0 if no video
- ///< stream type has been detected, yet.
-+ int Tpid(void) { return tpid; }
-+ ///< Returns the teletext pid as defined by the current PMT, or 0 if no teletext
-+ ///< pid has been detected, yet.
- const int *Apids(void) const { return apids; }
- const int *Dpids(void) const { return dpids; }
- const int *Spids(void) const { return spids; }
-@@ -280,6 +284,7 @@ public:
- uchar SubtitlingType(int i) const { return (0 <= i && i < MAXSPIDS) ? subtitlingTypes[i] : uchar(0); }
- uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? compositionPageIds[i] : uint16_t(0); }
- uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? ancillaryPageIds[i] : uint16_t(0); }
-+ const tTeletextSubtitlePage* TeletextSubtitlePages() const { return teletextSubtitlePages; }
- };
-
- // TS to PES converter:
---
-1.7.5.4
-
diff --git a/patches/patch-set.1.7.20/0006-Ttxtsubs-plugin-hook.patch b/patches/patch-set.1.7.20/0006-Ttxtsubs-plugin-hook.patch
deleted file mode 100644
index a961eba..0000000
--- a/patches/patch-set.1.7.20/0006-Ttxtsubs-plugin-hook.patch
+++ /dev/null
@@ -1,256 +0,0 @@
-From fd8e60b778faa10adeffa96fa0c734d8b0f8384f 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
-
----
- Makefile | 2 +
- device.c | 20 ++++++++++++++++
- device.h | 1 +
- pat.c | 6 +++++
- remux.h | 3 +-
- vdrttxtsubshooks.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- vdrttxtsubshooks.h | 46 ++++++++++++++++++++++++++++++++++++++
- 7 files changed, 140 insertions(+), 1 deletions(-)
- create mode 100644 vdrttxtsubshooks.c
- create mode 100644 vdrttxtsubshooks.h
-
-diff --git a/Makefile b/Makefile
-index 18d7eb9..3da4382 100644
---- a/Makefile
-+++ b/Makefile
-@@ -45,6 +45,8 @@ OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o d
- skinclassic.o skins.o skinsttng.o sourceparams.o sources.o spu.o status.o svdrp.o themes.o thread.o\
- timers.o tools.o transfer.o vdr.o videodir.o
-
-+OBJS += vdrttxtsubshooks.o
-+
- ifndef NO_KBD
- DEFINES += -DREMOTE_KBD
- endif
-diff --git a/device.c b/device.c
-index 0759993..f4b3e2a 100644
---- a/device.c
-+++ b/device.c
-@@ -18,6 +18,7 @@
- #include "receiver.h"
- #include "status.h"
- #include "transfer.h"
-+#include "vdrttxtsubshooks.h"
-
- // --- cLiveSubtitle ---------------------------------------------------------
-
-@@ -1245,6 +1246,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
- }
- break;
- case 0xBD: { // private stream 1
-+ // EBU Teletext data, ETSI EN 300 472
-+ // if PES data header length = 24 and data_identifier = 0x10..0x1F (EBU Data)
-+ if (Data[8] == 0x24 && Data[45] >= 0x10 && Data[45] < 0x20) {
-+ cVDRTtxtsubsHookListener::Hook()->PlayerTeletextData((uint8_t*)Data, Length);
-+ break;
-+ }
-+
- int PayloadOffset = Data[8] + 9;
-
- // Compatibility mode for old subtitles plugin:
-@@ -1404,6 +1412,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
- tsToPesVideo.Reset();
- tsToPesAudio.Reset();
- tsToPesSubtitle.Reset();
-+ tsToPesTeletext.Reset();
- }
- 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)
- if (!VideoOnly || HasIBPTrickSpeed())
- PlayTsSubtitle(Data, TS_SIZE);
- }
-+ else if (Pid == patPmtParser.Tpid()) {
-+ if (!VideoOnly || HasIBPTrickSpeed()) {
-+ int l;
-+ tsToPesTeletext.PutTs(Data, Length);
-+ if (const uchar *p = tsToPesTeletext.GetPes(l)) {
-+ if ((l > 45) && (p[0] == 0x00) && (p[1] == 0x00) && (p[2] == 0x01) && (p[3] == 0xbd) && (p[8] == 0x24) && (p[45] >= 0x10) && (p[45] < 0x20))
-+ cVDRTtxtsubsHookListener::Hook()->PlayerTeletextData((uchar *)p, l, false, patPmtParser.TeletextSubtitlePages(), patPmtParser.TotalTeletextSubtitlePages());
-+ tsToPesTeletext.Reset();
-+ }
-+ }
-+ }
- }
- }
- else if (Pid == patPmtParser.Ppid()) {
-diff --git a/device.h b/device.h
-index d937e5f..841a5d4 100644
---- a/device.h
-+++ b/device.h
-@@ -534,6 +534,7 @@ private:
- cTsToPes tsToPesVideo;
- cTsToPes tsToPesAudio;
- cTsToPes tsToPesSubtitle;
-+ cTsToPes tsToPesTeletext;
- bool isPlayingVideo;
- protected:
- const cPatPmtParser *PatPmtParser(void) const { return &patPmtParser; }
-diff --git a/pat.c b/pat.c
-index d2b8ce8..9262491 100644
---- a/pat.c
-+++ b/pat.c
-@@ -13,6 +13,7 @@
- #include "libsi/section.h"
- #include "libsi/descriptor.h"
- #include "thread.h"
-+#include "vdrttxtsubshooks.h"
-
- #define PMT_SCAN_TIMEOUT 10 // seconds
-
-@@ -552,6 +553,11 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
- }
- if (Setup.UpdateChannels >= 2) {
- Channel->SetPids(Vpid, Ppid, Vtype, Apids, Atypes, ALangs, Dpids, Dtypes, DLangs, Spids, SLangs, Tpid);
-+ if (NumTPages < MAXTXTPAGES) {
-+ int manualPageNumber = cVDRTtxtsubsHookListener::Hook()->ManualPageNumber(Channel);
-+ if (manualPageNumber)
-+ TeletextSubtitlePages[NumTPages++] = tTeletextSubtitlePage(manualPageNumber);
-+ }
- Channel->SetTeletextSubtitlePages(TeletextSubtitlePages, NumTPages);
- Channel->SetCaIds(CaDescriptors->CaIds());
- Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds);
-diff --git a/remux.h b/remux.h
-index 23fb645..d6b0274 100644
---- a/remux.h
-+++ b/remux.h
-@@ -284,7 +284,8 @@ public:
- uchar SubtitlingType(int i) const { return (0 <= i && i < MAXSPIDS) ? subtitlingTypes[i] : uchar(0); }
- uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? compositionPageIds[i] : uint16_t(0); }
- uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? ancillaryPageIds[i] : uint16_t(0); }
-- const tTeletextSubtitlePage* TeletextSubtitlePages() const { return teletextSubtitlePages; }
-+ const tTeletextSubtitlePage *TeletextSubtitlePages() const { return teletextSubtitlePages; }
-+ int TotalTeletextSubtitlePages() const { return totalTtxtSubtitlePages; }
- };
-
- // TS to PES converter:
-diff --git a/vdrttxtsubshooks.c b/vdrttxtsubshooks.c
-new file mode 100644
-index 0000000..2471788
---- /dev/null
-+++ b/vdrttxtsubshooks.c
-@@ -0,0 +1,63 @@
-+/*
-+ * vdr-ttxtsubs - A plugin for the Linux Video Disk Recorder
-+ * Copyright (c) 2003 - 2008 Ragnar Sundblad <ragge@nada.kth.se>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-+ * details.
-+ *
-+ * You should have received a copy of the GNU General Public License along with
-+ * this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <stdint.h>
-+
-+#include "vdrttxtsubshooks.h"
-+
-+// XXX Really should be a list...
-+static cVDRTtxtsubsHookListener *gListener;
-+
-+// ------ class cVDRTtxtsubsHookProxy ------
-+
-+class cVDRTtxtsubsHookProxy : public cVDRTtxtsubsHookListener
-+{
-+ public:
-+ virtual void HideOSD(void) { if(gListener) gListener->HideOSD(); };
-+ virtual void ShowOSD(void) { if(gListener) gListener->ShowOSD(); };
-+ virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording, const struct tTeletextSubtitlePage teletextSubtitlePages[] = NULL, int pageCount = 0)
-+ { if(gListener) gListener->PlayerTeletextData(p, length, IsPesRecording, teletextSubtitlePages, pageCount); };
-+ virtual int ManualPageNumber(const cChannel *channel)
-+ { if(gListener) return gListener->ManualPageNumber(channel); else return 0; };
-+};
-+
-+
-+// ------ class cVDRTtxtsubsHookListener ------
-+
-+cVDRTtxtsubsHookListener::~cVDRTtxtsubsHookListener()
-+{
-+ gListener = 0;
-+}
-+
-+void cVDRTtxtsubsHookListener::HookAttach(void)
-+{
-+ gListener = this;
-+ //printf("cVDRTtxtsubsHookListener::HookAttach\n");
-+}
-+
-+static cVDRTtxtsubsHookProxy gProxy;
-+
-+cVDRTtxtsubsHookListener *cVDRTtxtsubsHookListener::Hook(void)
-+{
-+ return &gProxy;
-+}
-+
-diff --git a/vdrttxtsubshooks.h b/vdrttxtsubshooks.h
-new file mode 100644
-index 0000000..2f97969
---- /dev/null
-+++ b/vdrttxtsubshooks.h
-@@ -0,0 +1,46 @@
-+/*
-+ * vdr-ttxtsubs - A plugin for the Linux Video Disk Recorder
-+ * Copyright (c) 2003 - 2008 Ragnar Sundblad <ragge@nada.kth.se>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-+ * details.
-+ *
-+ * You should have received a copy of the GNU General Public License along with
-+ * this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ */
-+
-+#ifndef __VDRTTXTSUBSHOOKS_H
-+#define __VDRTTXTSUBSHOOKS_H
-+
-+#define TTXTSUBSVERSNUM 2
-+
-+class cDevice;
-+class cChannel;
-+struct tTeletextSubtitlePage;
-+
-+class cVDRTtxtsubsHookListener {
-+ public:
-+ cVDRTtxtsubsHookListener(void) {};
-+ virtual ~cVDRTtxtsubsHookListener();
-+
-+ void HookAttach(void);
-+
-+ virtual void HideOSD(void) {};
-+ virtual void ShowOSD(void) {};
-+ virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording = true, const struct tTeletextSubtitlePage teletextSubtitlePages[] = NULL, int pageCount = 0) {};
-+ virtual int ManualPageNumber(const cChannel *channel) { return 0; };
-+
-+ // used by VDR to call hook listeners
-+ static cVDRTtxtsubsHookListener *Hook(void);
-+};
-+
-+#endif
---
-1.7.5.4
-