diff options
author | Tobias Grimm <git@e-tobi.net> | 2011-10-08 10:00:43 +0200 |
---|---|---|
committer | Tobias Grimm <git@e-tobi.net> | 2011-10-08 10:00:43 +0200 |
commit | e7c8bd88a93ec74943399f3c7b60efd00e92054d (patch) | |
tree | 17bbc6a70ac8dcd4d387fb9e1ac5f3717ea91ad8 /patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch | |
parent | 8b674ddb04a835b23985a0362327afccb5bff509 (diff) | |
download | vdr-plugin-ttxtsubs-0.2.4.tar.gz vdr-plugin-ttxtsubs-0.2.4.tar.bz2 |
Updated patch for VDR 1.7.21v0.2.4release/v0.2.4
Diffstat (limited to 'patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch')
-rw-r--r-- | patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch b/patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch deleted file mode 100644 index 36f8040..0000000 --- a/patches/patch-set.1.7.20/0003-Allow-manual-configuration-of-teletetxt-subtitle-pag.patch +++ /dev/null @@ -1,143 +0,0 @@ -From eb49859708903842aaf85b8cc0f91d45722907bb Mon Sep 17 00:00:00 2001 -From: etobi <git@e-tobi.net> -Date: Fri, 12 Feb 2010 21:56:41 +0100 -Subject: [PATCH 3/6] Allow manual configuration of teletetxt subtitle pages - in channels.conf - ---- - channels.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++----- - channels.h | 1 + - vdr.5 | 7 +++++++ - 3 files changed, 56 insertions(+), 5 deletions(-) - -diff --git a/channels.c b/channels.c -index 907688e..76b9338 100644 ---- a/channels.c -+++ b/channels.c -@@ -381,9 +381,9 @@ void cChannel::SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *Compos - void cChannel::SetTeletextSubtitlePages(tTeletextSubtitlePage pages[], int numberOfPages) - { - int mod = CHANNELMOD_NONE; -- if (totalTtxtSubtitlePages != numberOfPages) -+ if (totalTtxtSubtitlePages != (fixedTtxtSubtitlePages + numberOfPages)) - mod |= CHANNELMOD_PIDS; -- totalTtxtSubtitlePages = 0; -+ totalTtxtSubtitlePages = fixedTtxtSubtitlePages; - for (int i = 0; (i < numberOfPages) && (totalTtxtSubtitlePages < MAXTXTPAGES); i++) { - if (teletextSubtitlePages[totalTtxtSubtitlePages].ttxtMagazine != pages[i].ttxtMagazine || - teletextSubtitlePages[totalTtxtSubtitlePages].ttxtPage != pages[i].ttxtPage || -@@ -526,11 +526,22 @@ cString cChannel::ToText(const cChannel *Channel) - q += IntArrayToString(q, Channel->dpids, 10, Channel->dlangs, Channel->dtypes); - } - *q = 0; -+ const int TBufferSize = 5 + 1 + (MAXTXTPAGES * (3 + 1 + MAXLANGCODE1 + 1)) + 10; // '12345;150=deu,151=fin,...', +10: paranoia -+ char tpidbuf[TBufferSize]; -+ q = tpidbuf; -+ q += snprintf(q, sizeof(tpidbuf), "%d", Channel->tpid); -+ if (Channel->fixedTtxtSubtitlePages > 0) { -+ q += snprintf(q, sizeof(tpidbuf) - (q - tpidbuf), ";"); -+ for (int i = 0; i < Channel->fixedTtxtSubtitlePages; ++i) { -+ tTeletextSubtitlePage page = Channel->teletextSubtitlePages[i]; -+ q += snprintf(q, sizeof(tpidbuf) - (q - tpidbuf), "%d=%s", page.PageNumber(), page.ttxtLanguage); -+ } -+ } - char caidbuf[MAXCAIDS * 5 + 10]; // 5: 4 digits plus delimiting ',', 10: paranoia - q = caidbuf; - q += IntArrayToString(q, Channel->caids, 16); - *q = 0; -- buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->parameters, *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, Channel->tpid, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid); -+ buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%s:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->parameters, *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, tpidbuf, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid); - } - return buffer; - } -@@ -564,8 +575,9 @@ bool cChannel::Parse(const char *s) - char *parambuf = NULL; - char *vpidbuf = NULL; - char *apidbuf = NULL; -+ char *tpidbuf = NULL; - char *caidbuf = NULL; -- int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%d :%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, ¶mbuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpid, &caidbuf, &sid, &nid, &tid, &rid); -+ int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%a[^:]:%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, ¶mbuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpidbuf, &caidbuf, &sid, &nid, &tid, &rid); - if (fields >= 9) { - if (fields == 9) { - // allow reading of old format -@@ -664,7 +676,37 @@ bool cChannel::Parse(const char *s) - dpids[NumDpids] = 0; - dtypes[NumDpids] = 0; - } -- -+ if (tpidbuf) { -+ char *p; -+ fixedTtxtSubtitlePages = 0; -+ // 2001;150=deu,151=fin -+ if ((p = strchr(tpidbuf, ';')) != NULL) { -+ char *q, *strtok_next; -+ *p++ = 0; -+ while ((q = strtok_r(p, ",", &strtok_next)) != NULL) { -+ if (fixedTtxtSubtitlePages < MAXTXTPAGES) { -+ int page; -+ char *l = strchr(q, '='); -+ if (l) -+ *l++ = 0; -+ if (sscanf(q, "%d", &page) == 1) { -+ teletextSubtitlePages[fixedTtxtSubtitlePages] = tTeletextSubtitlePage(page); -+ if (l) -+ strn0cpy(teletextSubtitlePages[fixedTtxtSubtitlePages].ttxtLanguage, l, MAXLANGCODE1); -+ fixedTtxtSubtitlePages++; -+ } -+ else -+ esyslog("ERROR: invalid Teletext page!"); // no need to set ok to 'false' -+ } -+ else -+ esyslog("ERROR: too many Teletext pages!"); // no need to set ok to 'false' -+ p = NULL; -+ } -+ totalTtxtSubtitlePages = fixedTtxtSubtitlePages; -+ } -+ if (sscanf(tpidbuf, "%d", &tpid) != 1) -+ return false; -+ } - if (caidbuf) { - char *p = caidbuf; - char *q; -@@ -701,6 +743,7 @@ bool cChannel::Parse(const char *s) - free(sourcebuf); - free(vpidbuf); - free(apidbuf); -+ free(tpidbuf); - free(caidbuf); - free(namebuf); - if (!GetChannelID().Valid()) { -diff --git a/channels.h b/channels.h -index 3fc443c..6e7367f 100644 ---- a/channels.h -+++ b/channels.h -@@ -126,6 +126,7 @@ private: - uint16_t compositionPageIds[MAXSPIDS]; - uint16_t ancillaryPageIds[MAXSPIDS]; - int tpid; -+ int fixedTtxtSubtitlePages; - int totalTtxtSubtitlePages; - tTeletextSubtitlePage teletextSubtitlePages[MAXTXTPAGES]; - int caids[MAXCAIDS + 1]; // list is zero-terminated -diff --git a/vdr.5 b/vdr.5 -index 6274c1a..dff559d 100644 ---- a/vdr.5 -+++ b/vdr.5 -@@ -214,6 +214,13 @@ if there is an audio type. - .TP - .B TPID - The teletext PID. -+ -+Fixed teletext subtitling pages can be defined separated by a semicolon. -+The pages (separated by commas) can contain ISO 639 language codes, delimited -+by a '=' sign, as in -+ -+.B ...:2001;150=deu,151=fin:... -+ - .TP - .B Conditional access - A hexadecimal integer defining how this channel can be accessed: --- -1.7.5.4 - |