summaryrefslogtreecommitdiff
path: root/patches/patch-set/0005-Capture-teletext-subtitle-pages-from-PMT.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/patch-set/0005-Capture-teletext-subtitle-pages-from-PMT.patch')
-rw-r--r--patches/patch-set/0005-Capture-teletext-subtitle-pages-from-PMT.patch46
1 files changed, 17 insertions, 29 deletions
diff --git a/patches/patch-set/0005-Capture-teletext-subtitle-pages-from-PMT.patch b/patches/patch-set/0005-Capture-teletext-subtitle-pages-from-PMT.patch
index 91b57c3..3acdd15 100644
--- a/patches/patch-set/0005-Capture-teletext-subtitle-pages-from-PMT.patch
+++ b/patches/patch-set/0005-Capture-teletext-subtitle-pages-from-PMT.patch
@@ -1,15 +1,15 @@
-From cd69cfb12c691834710beb346527920b8802552e Mon Sep 17 00:00:00 2001
+From c53754118c53807da2b62d3bb985bfd1e2bd0197 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 | 26 ++++++++++++++++++++++++++
- remux.h | 6 ++++++
- 2 files changed, 32 insertions(+), 0 deletions(-)
+ remux.c | 24 ++++++++++++++++++++++++
+ remux.h | 5 +++++
+ 2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/remux.c b/remux.c
-index 869b6e4..24fcbd3 100644
+index b5c7a06..ead63ea 100644
--- a/remux.c
+++ b/remux.c
@@ -431,6 +431,7 @@ void cPatPmtParser::Reset(void)
@@ -20,18 +20,15 @@ index 869b6e4..24fcbd3 100644
}
void cPatPmtParser::ParsePat(const uchar *Data, int Length)
-@@ -514,8 +515,10 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
- int NumApids = 0;
- int NumDpids = 0;
+@@ -516,6 +517,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
int NumSpids = 0;
-+ int NumTPages = 0;
vpid = vtype = 0;
ppid = 0;
+ tpid = 0;
apids[0] = 0;
dpids[0] = 0;
spids[0] = 0;
-@@ -614,6 +617,29 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
+@@ -615,6 +617,28 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
spids[NumSpids]= 0;
}
break;
@@ -40,21 +37,20 @@ index 869b6e4..24fcbd3 100644
+ tpid = stream.getPid();
+ SI::TeletextDescriptor *sd = (SI::TeletextDescriptor *)d;
+ SI::TeletextDescriptor::Teletext ttxt;
-+ if (NumTPages < MAXTXTPAGES) {
++ 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[NumTPages].ttxtLanguage, I18nNormalizeLanguageCode(ttxt.languageCode), MAXLANGCODE1);
-+ teletextSubtitlePages[NumTPages].ttxtPage = ttxt.getTeletextPageNumber();
-+ teletextSubtitlePages[NumTPages].ttxtMagazine = ttxt.getTeletextMagazineNumber();
-+ teletextSubtitlePages[NumTPages].ttxtType = ttxt.getTeletextType();
-+ NumTPages++;
-+ if (NumTPages >= MAXTXTPAGES)
++ 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;
+ }
+ }
-+ teletextSubtitlePages[NumTPages].ttxtType = 0; // indicates end of list
+ }
+ }
+ break;
@@ -62,7 +58,7 @@ index 869b6e4..24fcbd3 100644
SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
dbgpatpmt(" '%s'", ld->languageCode);
diff --git a/remux.h b/remux.h
-index cef50d7..43809fc 100644
+index 5ee6722..390236a 100644
--- a/remux.h
+++ b/remux.h
@@ -216,6 +216,7 @@ private:
@@ -73,15 +69,7 @@ index cef50d7..43809fc 100644
int apids[MAXAPIDS + 1]; // list is zero-terminated
int atypes[MAXAPIDS + 1]; // list is zero-terminated
char alangs[MAXAPIDS][MAXLANGCODE2];
-@@ -228,6 +229,7 @@ private:
- uint16_t compositionPageIds[MAXSPIDS];
- uint16_t ancillaryPageIds[MAXSPIDS];
- bool updatePrimaryDevice;
-+ tTeletextSubtitlePage teletextSubtitlePages[MAXTXTPAGES + 1]; // list is zero-terminated
- protected:
- int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; }
- public:
-@@ -260,6 +262,9 @@ public:
+@@ -262,6 +263,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.
@@ -91,7 +79,7 @@ index cef50d7..43809fc 100644
const int *Apids(void) const { return apids; }
const int *Dpids(void) const { return dpids; }
const int *Spids(void) const { return spids; }
-@@ -274,6 +279,7 @@ public:
+@@ -276,6 +280,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); }