summaryrefslogtreecommitdiff
path: root/patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch
diff options
context:
space:
mode:
authorTobias Grimm <git@e-tobi.net>2013-03-10 12:47:32 +0100
committerTobias Grimm <git@e-tobi.net>2013-03-10 13:14:05 +0100
commitf4204840f538e914541f43f23ce8bc94d3fc19aa (patch)
tree25ea9d7bd6ba927dc7e1ba8e3c6bb0a614387b6a /patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch
parentc8d5d2f4aec922c001ff011f422317a228dcdde4 (diff)
downloadvdr-plugin-ttxtsubs-f4204840f538e914541f43f23ce8bc94d3fc19aa.tar.gz
vdr-plugin-ttxtsubs-f4204840f538e914541f43f23ce8bc94d3fc19aa.tar.bz2
Updated patch-set
Diffstat (limited to 'patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch')
-rw-r--r--patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch92
1 files changed, 92 insertions, 0 deletions
diff --git a/patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch b/patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch
new file mode 100644
index 0000000..e2c088a
--- /dev/null
+++ b/patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch
@@ -0,0 +1,92 @@
+From 8061253a177218ffea0b7a823a8a2f742a033290 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(+)
+
+diff --git a/remux.c b/remux.c
+index 2e31012..3c7a156 100644
+--- a/remux.c
++++ b/remux.c
+@@ -605,6 +605,7 @@ void cPatPmtParser::Reset(void)
+ pmtPids[0] = 0;
+ vpid = vtype = 0;
+ ppid = 0;
++ tpid = 0;
+ }
+
+ void cPatPmtParser::ParsePat(const uchar *Data, int Length)
+@@ -693,6 +694,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;
+@@ -797,6 +799,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 4cef4da..203ed34 100644
+--- a/remux.h
++++ b/remux.h
+@@ -342,6 +342,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];
+@@ -392,6 +393,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; }
+@@ -406,6 +410,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.10.4
+