summaryrefslogtreecommitdiff
path: root/pat.c
diff options
context:
space:
mode:
authoretobi <git@e-tobi.net>2010-02-12 21:55:04 +0100
committeretobi <git@e-tobi.net>2010-03-06 12:07:45 +0100
commit2e1ffe9283833fdbe211291f794b8ee2576421de (patch)
treef26bd116c3dd91dbd81b783bc6af0f66a2628ba8 /pat.c
parent5ce592e54a4aa741444afae8eb80dff47bc355fd (diff)
downloadvdr-patches-2e1ffe9283833fdbe211291f794b8ee2576421de.tar.gz
vdr-patches-2e1ffe9283833fdbe211291f794b8ee2576421de.tar.bz2
Record teletext subtitles
Diffstat (limited to 'pat.c')
-rw-r--r--pat.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/pat.c b/pat.c
index 9b3ded6..ff25501 100644
--- a/pat.c
+++ b/pat.c
@@ -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);
}