diff options
author | etobi <git@e-tobi.net> | 2010-02-12 21:55:04 +0100 |
---|---|---|
committer | etobi <git@e-tobi.net> | 2010-03-06 12:07:45 +0100 |
commit | 2e1ffe9283833fdbe211291f794b8ee2576421de (patch) | |
tree | f26bd116c3dd91dbd81b783bc6af0f66a2628ba8 /pat.c | |
parent | 5ce592e54a4aa741444afae8eb80dff47bc355fd (diff) | |
download | vdr-patches-2e1ffe9283833fdbe211291f794b8ee2576421de.tar.gz vdr-patches-2e1ffe9283833fdbe211291f794b8ee2576421de.tar.bz2 |
Record teletext subtitles
Diffstat (limited to 'pat.c')
-rw-r--r-- | pat.c | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -341,6 +341,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; @@ -426,8 +428,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; @@ -458,6 +473,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, ALangs, Dpids, DLangs, Spids, SLangs, Tpid); + Channel->SetTeletextSubtitlePages(TeletextSubtitlePages, NumTPages); Channel->SetCaIds(CaDescriptors->CaIds()); Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds); } |