diff options
author | etobi <git@e-tobi.net> | 2010-02-12 22:06:19 +0100 |
---|---|---|
committer | etobi <git@e-tobi.net> | 2013-03-10 13:52:15 +0100 |
commit | 0460f10ead868f796e642adf6a3bdc1b6d8ca190 (patch) | |
tree | 958075dab594d4ba5b1d550c4d4f688571e059ef /remux.c | |
parent | 08f2963cfb42038575a741e2902b9b7a95c0a0f8 (diff) | |
download | vdr-patches-0460f10ead868f796e642adf6a3bdc1b6d8ca190.tar.gz vdr-patches-0460f10ead868f796e642adf6a3bdc1b6d8ca190.tar.bz2 |
Capture teletext subtitle pages from PMT
Diffstat (limited to 'remux.c')
-rw-r--r-- | remux.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -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); |