diff options
author | Tobias Grimm <git@e-tobi.net> | 2013-03-10 12:47:32 +0100 |
---|---|---|
committer | Tobias Grimm <git@e-tobi.net> | 2013-03-10 13:14:05 +0100 |
commit | f4204840f538e914541f43f23ce8bc94d3fc19aa (patch) | |
tree | 25ea9d7bd6ba927dc7e1ba8e3c6bb0a614387b6a /patches/patch-set.1.7.38/0005-Capture-teletext-subtitle-pages-from-PMT.patch | |
parent | c8d5d2f4aec922c001ff011f422317a228dcdde4 (diff) | |
download | vdr-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.patch | 92 |
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 + |