diff options
-rw-r--r-- | HISTORY | 30 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | README | 10 | ||||
-rw-r--r-- | TROUBLESHOOTING | 244 | ||||
-rw-r--r-- | VDR.patch | 80 | ||||
-rw-r--r-- | contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.README | 4 | ||||
-rw-r--r-- | contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.gz | bin | 0 -> 7896 bytes | |||
-rw-r--r-- | siinfo.c | 11 | ||||
-rw-r--r-- | ttxtsubs.c | 38 | ||||
-rw-r--r-- | ttxtsubsdisplay.c | 2 | ||||
-rw-r--r-- | ttxtsubsi18n.c | 1366 |
11 files changed, 1051 insertions, 738 deletions
@@ -1,9 +1,35 @@ VDR Plugin 'ttxtsubs' Revision History -------------------------------------- +2004-05-31: Version 0.0.5 + +- Note: +This version is intended for VDR 1.2.6. There is a patch for VDR 1.3.5 +included. It may or may not work with later VDR versions. Also see +Rolf's patch in the contrib directory. + +This may be the last version for VDR 1.2.x, as I hope to start turning +my attention to VDR 1.3.x now. + +- New features: + - Italian translation, thanks to Sean Carlos + - French translation, thanks to Stéphane Esté-Gracias + - German translation, thanks to Tobias Grimm + - Another ElchiAIO fix, thanks to Rolf Ahrenberg + - Added a "contrib" directory with a VDR 1.3.8 test patch from + Rolf Ahrenberg + - Added a TROUBLESHOOTING document because of reports from Germany + that ttxtsubs doesn't work there. It seems that most German channels + on the birds at 19.2E don't announce the subtitles in their Service + Information. Please see the document for further info. + +- Bugs fixed: + - Corrected (again!) national charset selection bit swapping, there + was a typo in the fix in 0.0.5pre1. + 2004-03-02: Version 0.0.5pre2 -- New features +- New features: - Text colours can be set and row spacing can be adjusted. (The usual semitransparent "background" colour appearently doesn't work with the ElchiAIO patch, don't know why.) @@ -32,7 +58,7 @@ VDR Plugin 'ttxtsubs' Revision History - Remapping option for those French channels that incorrectly sends teletext page numbers in decimal instead of hexadecimal. Very moderate remapping done at the moment, I hope it is enough. - - Subtitles are now recorded with their PTS (timestamps). Not that + - Subtitles are now recorded with their PTS (timestamps). Note that the timestamps are completely wrong on some channels, this may confuse uncareful subtitle extracting software. - Included patch for VDR 1.3.5 - untested! @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile,v 1.21 2004/03/02 01:08:45 ragge Exp $ +# $Id: Makefile,v 1.22 2004/05/31 19:26:05 ragge Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. @@ -50,7 +50,7 @@ DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' OBJS = $(PLUGIN).o ttxtsubsdisplayer.o ttxtsubsdisplay.o teletext.o siinfo.o \ ttxtsubsfilter.o ttxtsubsrecorder.o ttxtsubsreceiver.o ttxtsubsi18n.o -SOURCEFILES = *.c *.h [A-Z]???* +SOURCEFILES = *.c *.h [A-Z]???* contrib ### Implicit rules: @@ -72,14 +72,14 @@ other version of VDR, but don't count on it. Steps: As usual, unpack the plugin and make a link: - cd ..../vdr-1.2.5/PLUGINS/src - tar zxvf ..../vdr-ttxtsubs-0.0.4b.tgz - ln -s ttxtsubs-0.0.4b ttxtsubs + cd ..../vdr-1.2.6/PLUGINS/src + tar zxvf ..../vdr-ttxtsubs-0.0.5.tgz + ln -s ttxtsubs-0.0.5 ttxtsubs Go back to your VDR directory and install the patches and the new files: cd ../../ - cp PLUGINS/src/ttxtsubs-0.0.4b/vdrttxtsubshooks.[ch] . - patch -b < PLUGINS/src/ttxtsubs-0.0.4b/VDR.patch + cp PLUGINS/src/ttxtsubs-0.0.5/vdrttxtsubshooks.[ch] . + patch -b < PLUGINS/src/ttxtsubs-0.0.5/VDR.patch Rebuild VDR: make clean diff --git a/TROUBLESHOOTING b/TROUBLESHOOTING new file mode 100644 index 0000000..062becd --- /dev/null +++ b/TROUBLESHOOTING @@ -0,0 +1,244 @@ + +Ttxtsubs is made to be fully automatic with no other user settable +settings than preferred subtitling language or languages and a few +appearance options. This is how set top boxes work, and, in my +opinion, how these things should work. Users should not have to know +anything about PIDs, encodings or other strange information as in this +case teletext page numbers. + +Sadly, some channels do not provide the information necessary for +automatic subtitle decoders to do it's work, and some do but do it +wrong. There has also been bugs in ttxtsubs that made it incorrectly +parse the information it gets, I of course hope those are gone by now. + +If you think there are subtitles on a channel but ttxtsubs doesn't +show them, you may want to read the text below. + + +Troubleshooting ttxtsubs +------------------------ + +A good thing to check first is how another set top box behaves. If the +other set top box automatically finds and displays teletext subtitles +while ttxtsubs don't, there is probably a problem in ttxtsubs. If the +channel in question is a French, please see the French channel problem +section below. + +If neither the set top box nor ttxtsubs automatically finds the +subtitles but you can get them by manually entering the teletext page +number for them on your TV set or your DVB decoder, chances are that +the subtitles aren't announced in the channel's "service information", +at least not correctly. You can double check this using dvbsnoop, see +below. + + +To find the subtitles, a DVB receiver as ttxtsubs scans the channel's +"Service Information". This meta data contains information about what +PIDs to use for receiving the channel, such as what PID to use for +video and what audio PID should be used for what language. VDR 1.3 and +up uses the Service Information for automatic video and audio PID +setup just as a typical set top box does. + +For teletext with or without subtitles, the Service Information +contains information about what PID and what teletext page to use for +what language and purpose. A typical set of information for a channel +with Norwegian and Swedish teletext with subtitles could look like +this: + PID Language Teletext Page Purpose + 4711 nor 200 Initial page for teletext browsing + 4711 nor 299 Subtitles + 4711 nor 298 Subtitles for hearing impaired + 4711 swe 300 Initial page for teletext browsing + 4711 swe 399 Subtitles + 4711 swe 398 Subtitles for hearing impaired +In this case, a receiver set up for Norwegian subtitles for hearing +impaired would use PID 4711 and teletext page 298 for subtitles. If +the user pushes the button for interactive teletext information +browsing, the set top box should start with presenting page 200 which +is supposed to be an index page in Norwegian. +Note that the PID may be different for each language and purpose. This +is one reason why ttxtsubs has to find out the PID itself and doesn't +care at all about how you set up the channel's TPid. + + +To find out what ttxtsubs is doing, you must currently (0.0.5pre2) +look at the stderr output in the shell where you run VDR. In a future +version, it may instead show this in the VDR menus in a more user +friendly manner. At the end of this text you can find some typical +messages from ttxtsubs with explanations. + + +You can use dvbsnoop, http://dvbsnoop.sourceforge.net, to check what +the service information really says. +First dump pid 0 to find the Program Map PID for your channel: + $ dvbsnoop -n 1 0 +and get for example: + Program_number: 5060 (0x13c4) + reserved: 7 (0x07) + Program_map_PID: 5060 (0x13c4) +The entry you are looking for is the one with a Program_number the +same as the Sid number in VDR. +If you don't know the program number, you can dump pid 17 and +look for the channel name you want and get the Service_id number: + $ dvbsnoop -n 1 17 +You may need to do this several times to find your channel (or use a +number larger than 1 after -n). +In this case the program map PID is the same as the Program Number. + +When you know the program map PID, dump it: + $ dvbsnoop -n 1 5060 +and look for + DVB-DescriptorTag: 86 (0x56) [= teletext_descriptor] +Again, you may need to do this several times to find this information +(or use a number larger than 1 after -n). +On a well behaved channel with teletext subtitles you should see +something like this: +... + Elementary_PID: 1024 (0x0400) +... + DVB-DescriptorTag: 86 (0x56) [= teletext_descriptor] + Descriptor_length: 30 (0x1e) + ISO639_language_code: swe + Teletext_type: 1 (0x01) [= initial teletext page] + Teletext_magazine_number: 1 (0x01) + Teletext_page_number: 0 (0x00) + + ISO639_language_code: swe + Teletext_type: 2 (0x02) [= teletext subtitle page] + Teletext_magazine_number: 6 (0x06) + Teletext_page_number: 146 (0x92) + + ISO639_language_code: swe + Teletext_type: 5 (0x05) [= teletext subtitle page for hearing impaired people] + Teletext_magazine_number: 7 (0x07) + Teletext_page_number: 146 (0x92) +.... +This is the information that a DVB decoder uses to find the +subtitles. If you find a DVB-DescriptorTag of 69 (0x45) = +VBI_data_descriptor or 70 (0x46) = VBI_teletext_descriptor that you +think could point out the subtitles, please contact the +author. Ttxtsubs currently doesn't decode those as I have never seen +them, but it is probably easy to implement. If there is no information +for subtitles but there are subtitles in the teletext stream, please +ask the TV company to fix it, see next section. + + +If you want to watch a channel that has teletext subtitles but the +subtitles aren't announced in the Service Information, contact the TV +company and ask them to correct this. If you politely inform them +about the problem, they may very well correct it. After all, it is in +their interrest to have satisfied viewers. Don't take "you will have +to enter the subtitles page number on your TV set" as an answer - this +is just to sad an user experience and is not how it is supposed to +work with DVB. Try to convince them that this is what you and the +standard and the viewers want. Here is a template for such a letter: +----- +Sirs, + +Your TV channel [CHANNEL NAME] that can be found on DVB +[Satellite/Cable network/Terrestrial network] [SATELLITE POS/NETWORK +NAME] with video PID [NNN], audio PID [NNN] and teletext PID [NNN] has +teletext subtitles on page[s] [NNN[, NNN...]]. Sadly, the DVB service +information for your channel does not announce the subtitles, so my +DVB receiver can not find them and display them. + +I hereby ask you to update your channel's service information to +also announce the existence of the subtitles. Since your service +information already announce the existence of the teletext PID, only a +small addition is needed to also announce the teletext subtitle +page[s]. + +For further information about the service information descriptor that +is needed, please see the standard document ETSI EN 300 468, paragraph +6.2.40. You can download this document for free from www.etsi.org. + +By sending a teletext subtitles descriptor according to this +specification, my and other decoders that are using it will be able to +automatically pick them up and present the subtitles to the viewer. +----- + + +There is a known problem with some French channels. Because of some +old specification interpretation mistake, some channels send the +teletext page number in decimal coded as binary, and not as the +standard says in hexadecimal. Since there are set top boxes sold that +has the same bug so that they can work with there channels, they are +reluctant to correct this. The service information for those channels +typically say that the subtitles are on page 858 or 859 when they +really are on page 888 or 889. To still be able to use those channels, +you can in ttxtsubs turn on the "Workaround for some French chns" +option which will remap numbers in the X5Y range into X8Y. Since this +would also remap the page number for a channel that really is using +for example page 859, this is an option that is off by default. If +you see this problem, please contact the channel provider and make +them understand that time will only make it harder to correct this +mistake as more decoders with this bug will be out there and software +updates for older set top boxes will be harder and harder to get. +Some channels do what they can to gradually correct this by sending +both a descriptor for French subtitles on page 859 (whish is +interpreted as page 889 on the old non standard decoders), and as +French for the Hearing Impaired on page 889 which is the setting that +can be used on standard compliant decoders. +(For the technically interrested: The hundreds figure is in teletext +called "magazine" and is sent separately from the 8 bit "page +number". Each magazine can actually have up to 256 pages and the page +number is really in hex, but only the 100 pages which use only the +figures 0-9 are normally seen by the user as only those numbers can be +entered on the remote control keyboard. 59 hex is 89 decimal, and here +is where something went wrong.) + + +Note that some channels don't use teletext subtitles but instead use +DVB subtitles, which is something different. DVB subtitles are sent as +bitmaps, somewhat like DVD subtitles. You can find a plugin for DVB +subtitles here: http://www.saunalahti.fi/~opvirtan/vdr/subtitles/ + + +Typical ttxtsubs messages and explanations +------------------------------------------ + +===== +ttxtsubs: Found selected subtitles on PID 1024, page 792 +----- +The subtitles for the language that you have selected is at teletext +page 792 on teletext PID 1024. + +===== +ttxtsubs: Found non HI subtitles on PID 976, page 199 +----- +You have selected subtitles for the hearing impaired, but on this +channel there are no such subtitles. Ttxtsubs uses the non hearing +impaired subtitles for the selected language instead. + +===== +ttxtsubs: Wanted subtitle language(s) not found on channel, available languages: + 889: fra (Subtitles) +----- +Subtitles for the language you have selected is not available on this +channel, but there are other alternatives, in this case French. + +===== +ttxtsubs: Wanted subtitle language(s) not found on channel, available languages: + 100: swe (Initial Page (The teletext start page, not a subtitles page!)) +----- +This means that there is a start page for interactive teletext +browsing announced, but no subtitles. There may still be subtitles in +the teletext stream, but ttxtsubs won't find them since they are not +announced correctly. If so, double check that this is the case and +then contact the TV company, see above. + +===== +ttxtsubs: No teletext subtitles on channel. +----- +No teletext stream at all was announced for this channel. + +===== +ttxtsubs: Service Information read: timeout! +----- +No Service Information data could be found for 250 ms (a quarter of a +second). This could be an indication of bad reception, but may also be +because the cards tuner, a motorized antenna or a LNB hasn't yet +settled for the new channel. Ttxtsubs will retry for up to 10 +seconds. Ttxtsubs will cache whatever it finally finds out about the +channel, so you will only see this happening at the most once for each +channel and vdr run. @@ -1,7 +1,7 @@ -diff -upr ./DIST/vdr-1.2.1/Makefile ./Makefile ---- ./DIST/vdr-1.2.1/Makefile 2003-01-06 13:28:09.000000000 +0100 -+++ ./Makefile 2003-07-16 05:39:36.000000000 +0200 -@@ -36,7 +36,8 @@ OBJS = audio.o channels.o ci.o config.o +diff -upr ./DIST/vdr-1.2.5/Makefile ./Makefile +--- ./DIST/vdr-1.2.5/Makefile 2003-08-09 13:09:45.000000000 +0200 ++++ ./Makefile 2003-09-26 01:49:20.000000000 +0200 +@@ -37,7 +37,8 @@ OBJS = audio.o channels.o ci.o config.o dvbplayer.o dvbspu.o eit.o eitscan.o font.o i18n.o interface.o keys.o\ lirc.o menu.o menuitems.o osdbase.o osd.o player.o plugin.o rcu.o\ receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sources.o\ @@ -11,9 +11,9 @@ diff -upr ./DIST/vdr-1.2.1/Makefile ./Makefile OSDFONT = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1 FIXFONT = -adobe-courier-bold-r-normal--25-*-100-100-m-*-iso8859-1 -diff -upr ./DIST/vdr-1.2.1/dvbplayer.c ./dvbplayer.c ---- ./DIST/vdr-1.2.1/dvbplayer.c 2003-05-24 11:04:26.000000000 +0200 -+++ ./dvbplayer.c 2003-07-16 05:39:36.000000000 +0200 +diff -upr ./DIST/vdr-1.2.5/dvbplayer.c ./dvbplayer.c +--- ./DIST/vdr-1.2.5/dvbplayer.c 2003-05-24 11:04:26.000000000 +0200 ++++ ./dvbplayer.c 2003-09-26 01:49:20.000000000 +0200 @@ -14,6 +14,7 @@ #include "ringbuffer.h" #include "thread.h" @@ -88,31 +88,31 @@ diff -upr ./DIST/vdr-1.2.1/dvbplayer.c ./dvbplayer.c if (p) { int w = PlayVideo(p, pc); if (w > 0) { -diff -upr ./DIST/vdr-1.2.1/menu.c ./menu.c ---- ./DIST/vdr-1.2.1/menu.c 2003-06-07 14:31:57.000000000 +0200 -+++ ./menu.c 2003-07-16 05:39:36.000000000 +0200 -@@ -2969,8 +2969,18 @@ cRecordControl::cRecordControl(cDevice * - - cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName); - const cChannel *ch = timer->Channel(); +diff -upr ./DIST/vdr-1.2.5/menu.c ./menu.c +--- ./DIST/vdr-1.2.5/menu.c 2003-09-14 12:49:28.000000000 +0200 ++++ ./menu.c 2003-09-26 01:50:59.000000000 +0200 +@@ -3014,8 +3014,18 @@ cRecordControl::cRecordControl(cDevice * + isyslog("record %s", fileName); + if (MakeDirs(fileName, true)) { + const cChannel *ch = timer->Channel(); +#ifdef VDRTTXTSUBSHOOKS -+ cTtxtSubsRecorderBase *subsRecorder = cVDRTtxtsubsHookListener::Hook() -+ ->NewTtxtSubsRecorder(device, ch); -+ recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2(), subsRecorder); ++ cTtxtSubsRecorderBase *subsRecorder = cVDRTtxtsubsHookListener::Hook() ++ ->NewTtxtSubsRecorder(device, ch); ++ recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2(), subsRecorder); +#else - recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2()); + recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2()); +#endif - if (device->AttachReceiver(recorder)) { + if (device->AttachReceiver(recorder)) { +#ifdef VDRTTXTSUBSHOOKS -+ if(subsRecorder) -+ subsRecorder->DeviceAttach(); ++ if(subsRecorder) ++ subsRecorder->DeviceAttach(); +#endif - Recording.WriteSummary(); - cStatus::MsgRecording(device, Recording.Name()); - if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() -diff -upr ./DIST/vdr-1.2.1/menu.h ./menu.h ---- ./DIST/vdr-1.2.1/menu.h 2003-05-24 18:35:52.000000000 +0200 -+++ ./menu.h 2003-07-16 05:39:36.000000000 +0200 + Recording.WriteSummary(); + cStatus::MsgRecording(device, Recording.Name()); + if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() +diff -upr ./DIST/vdr-1.2.5/menu.h ./menu.h +--- ./DIST/vdr-1.2.5/menu.h 2003-08-03 11:37:18.000000000 +0200 ++++ ./menu.h 2003-09-26 01:49:20.000000000 +0200 @@ -14,6 +14,7 @@ #include "device.h" #include "osd.h" @@ -121,9 +121,9 @@ diff -upr ./DIST/vdr-1.2.1/menu.h ./menu.h #include "recorder.h" #include "recording.h" -diff -upr ./DIST/vdr-1.2.1/osd.c ./osd.c ---- ./DIST/vdr-1.2.1/osd.c 2003-06-04 18:13:00.000000000 +0200 -+++ ./osd.c 2003-07-16 05:43:06.000000000 +0200 +diff -upr ./DIST/vdr-1.2.5/osd.c ./osd.c +--- ./DIST/vdr-1.2.5/osd.c 2003-06-04 18:13:00.000000000 +0200 ++++ ./osd.c 2003-09-26 01:49:20.000000000 +0200 @@ -12,6 +12,7 @@ #include "device.h" #include "i18n.h" @@ -153,9 +153,9 @@ diff -upr ./DIST/vdr-1.2.1/osd.c ./osd.c } void cOsd::Clear(void) -diff -upr ./DIST/vdr-1.2.1/recorder.c ./recorder.c ---- ./DIST/vdr-1.2.1/recorder.c 2003-05-16 15:33:04.000000000 +0200 -+++ ./recorder.c 2003-07-16 05:39:36.000000000 +0200 +diff -upr ./DIST/vdr-1.2.5/recorder.c ./recorder.c +--- ./DIST/vdr-1.2.5/recorder.c 2003-08-02 15:01:19.000000000 +0200 ++++ ./recorder.c 2003-09-26 01:52:35.000000000 +0200 @@ -10,6 +10,8 @@ #include <stdarg.h> #include <stdio.h> @@ -184,10 +184,10 @@ diff -upr ./DIST/vdr-1.2.1/recorder.c ./recorder.c +#ifdef VDRTTXTSUBSHOOKS + ttxtSubsRecorder = tsr; +#endif - isyslog("record %s", FileName); - // Create directories if necessary: -@@ -61,6 +70,10 @@ cRecorder::cRecorder(const char *FileNam + // Make sure the disk is up and running: + +@@ -55,6 +64,10 @@ cRecorder::cRecorder(const char *FileNam cRecorder::~cRecorder() { Detach(); @@ -198,7 +198,7 @@ diff -upr ./DIST/vdr-1.2.1/recorder.c ./recorder.c delete index; delete fileName; delete remux; -@@ -135,6 +148,19 @@ void cRecorder::Action(void) +@@ -129,6 +142,19 @@ void cRecorder::Action(void) break; } fileSize += Result; @@ -218,9 +218,9 @@ diff -upr ./DIST/vdr-1.2.1/recorder.c ./recorder.c } else break; -diff -upr ./DIST/vdr-1.2.1/recorder.h ./recorder.h ---- ./DIST/vdr-1.2.1/recorder.h 2002-06-08 11:35:03.000000000 +0200 -+++ ./recorder.h 2003-07-16 05:39:36.000000000 +0200 +diff -upr ./DIST/vdr-1.2.5/recorder.h ./recorder.h +--- ./DIST/vdr-1.2.5/recorder.h 2002-06-08 11:35:03.000000000 +0200 ++++ ./recorder.h 2003-09-26 01:49:20.000000000 +0200 @@ -15,6 +15,7 @@ #include "remux.h" #include "ringbuffer.h" diff --git a/contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.README b/contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.README new file mode 100644 index 0000000..334cdfc --- /dev/null +++ b/contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.README @@ -0,0 +1,4 @@ + +2004-05-28 +A test patch from Rolf Ahrenberg to make ttxtsubs work with the new +OSD mechanism in VDR 1.3.8. diff --git a/contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.gz b/contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.gz Binary files differnew file mode 100644 index 0000000..461363c --- /dev/null +++ b/contrib/vdr-1.3.8-ttxtsubs-0.0.5pre2-charset_fix-custom_color.diff.gz @@ -332,6 +332,17 @@ static void addpageinfo(struct ttxtinfo *info, uint16_t pid, struct ttxt_descr * pa->mag = descr->d[descr_index].type_mag & 0x7; pa->page = descr->d[descr_index].page_no; +#if 0 + // Test - rewrite initial page 100 into subtitles page 150 + if(pa->type == TTXT_INITIAL_PAGE && + pa->mag = 0x1 && + pa->page == 0x00) { + pa->type = TTXT_SUBTITLE_PAGE; // or TTXT_SUBTITLE_HEARING_IMPAIRED_PAGE ? + pa->mag = 0x1; + pa->page = 0x50; + } +#endif + if(globals.frenchSpecial()) { /* By some silly reason some French channels (Canal+ and CanalSatellite) announce subtitles with the page number in decimal, for example @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: ttxtsubs.c,v 1.23 2004/03/02 01:08:45 ragge Exp $ + * $Id: ttxtsubs.c,v 1.26 2004/05/31 19:59:14 ragge Exp $ */ #include <vdr/plugin.h> @@ -12,6 +12,18 @@ #include <vdr/menuitems.h> #include <vdr/config.h> +#define TIMEMEASURE 0 +#if TIMEMEASURE +#define TIMEVALSIMPL(tv, tv2) \ + if(tv2.tv_usec < tv.tv_usec) { \ + tv2.tv_usec += 1000000; \ + tv2.tv_sec -= 1; \ + } + +#include <sys/time.h> +#include <time.h> +#endif + #include "ttxtsubsglobals.h" #include "ttxtsubsdisplayer.h" #include "ttxtsubsrecorder.h" @@ -20,7 +32,7 @@ #include "siinfo.h" #include "ttxtsubs.h" -static const char *VERSION = "0.0.5pre2"; +static const char *VERSION = "0.0.5"; static const char *DESCRIPTION = "Teletext subtitles"; cTtxtsubsConf globals; @@ -309,6 +321,10 @@ bool cPluginTtxtsubs::SetupParse(const char *Name, const char *Value) void cPluginTtxtsubs::ChannelSwitch(const cDevice *Device, int ChannelNumber) { +#if TIMEMEASURE + struct timeval tv, tv2; + gettimeofday(&tv, NULL); +#endif dprint("cPluginTtxtsubs::ChannelSwitch(devicenr: %d, channelnr: %d) - mDispl: %x\n", Device->DeviceNumber(), ChannelNumber, mDispl); // XXX @@ -333,6 +349,13 @@ void cPluginTtxtsubs::ChannelSwitch(const cDevice *Device, int ChannelNumber) } else StopTtxt(); } +#if TIMEMEASURE + gettimeofday(&tv2, NULL); + TIMEVALSIMPL(tv, tv2); + // tv2.tv_sec - tv.tv_sec + 1000000 * (tv2.tv_usec - tv.tv_usec); + fprintf(stderr, "ttxtsubs: Channel switch time: %d.%06d s\n", + tv2.tv_sec - tv.tv_sec, tv2.tv_usec - tv.tv_usec); +#endif } void cPluginTtxtsubs::Replaying(const cControl *Control, const char *Name) @@ -376,8 +399,9 @@ void cPluginTtxtsubs::StartTtxtLive(const cDevice *Device, int pid, int page) if(!mDispl) { cTtxtSubsLiveReceiver *r; //dprint("teletext subtitles started on pid %d\n", pid); - mDispl = r = new cTtxtSubsLiveReceiver(pid, page); + mDispl = r = new cTtxtSubsLiveReceiver(pid, page); // takes 0.01-0.015 s if(!cDevice::PrimaryDevice()->ActualDevice()->AttachReceiver(r)) + // takes 0.02-0.04 s on a full featured card fprintf(stderr, "ttxtsubs: Error: AttachReceiver failed!\n"); // ShowTtxt(); } else @@ -404,7 +428,7 @@ void cPluginTtxtsubs::StopTtxt(void) cTtxtSubsDisplayer *d = mDispl; HideTtxt(); mDispl = NULL; - delete d; + delete d; // takes 0.03-0.04 s } } @@ -569,8 +593,12 @@ cMenuSetupTtxtsubs::cMenuSetupTtxtsubs(cPluginTtxtsubs *ttxtsubs, int doStore) char str[100]; char *allowedc = "abcdefghijklmnopqrstuvwxyz"; - cOsdItem *item = new cOsdItem("----------------------------"); + cOsdItem *item = new cOsdItem("--------------------------------------------------------"); +#if defined(ELCHIAIOVERSION) + item->SetColor(clrScrolLine); +#else item->SetColor(clrCyan); +#endif Add(item); sprintf(str, "%s %d", tr("Language"), n + 1); diff --git a/ttxtsubsdisplay.c b/ttxtsubsdisplay.c index 5bc302b..32651a3 100644 --- a/ttxtsubsdisplay.c +++ b/ttxtsubsdisplay.c @@ -218,7 +218,7 @@ void cTtxtSubsDisplay::TtxtData(const uint8_t *Data) page.flags |= inhibit_display; // if(fi[7] & 0x02) // Magazine Serial - page.national_charset = ((fi[7] & 0x80) >> 5) + + page.national_charset = ((fi[7] & 0x80) >> 7) + ((fi[7] & 0x20) >> 4) + ((fi[7] & 0x08) >> 1); mPageState = collecting; diff --git a/ttxtsubsi18n.c b/ttxtsubsi18n.c index 6507a5b..1f7498c 100644 --- a/ttxtsubsi18n.c +++ b/ttxtsubsi18n.c @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: ttxtsubsi18n.c,v 1.1 2004/03/02 01:08:45 ragge Exp $ + * $Id: ttxtsubsi18n.c,v 1.6 2004/05/31 19:12:22 ragge Exp $ */ #include "ttxtsubsi18n.h" @@ -12,14 +12,14 @@ const tI18nPhrase Phrases[] = { { "Teletext subtitles", // English - "", // Deutsch + "Videotextuntertitel", // German - Tobias Grimm 2004-05-21 "", // Slovenian - "", // Italian + "Sottotitoli televideo", // Italian - Sean Carlos 2004-03-07 "", // Dutch "", // Portuguese - "", // French + "Sous-titrage télétexte", // French - Stéphane Esté-Gracias 2004-03-02 "", // Norwegian - "Tekstitys (Teksti-TV)", // Finnish + "Tekstitys (Teksti-TV)", // Finnish - Rolf Ahrenberg 2004-03-01 "", // Polish "", // Spanish "", // Greek @@ -31,684 +31,684 @@ const tI18nPhrase Phrases[] = "", // Russian #endif }, - { "Hide teletext subtitles", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Piilota tekstitys (Teksti-TV)", - "", // TODO - "", // TODO - "", // TODO - "Göm textning (Text-TV)", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Display teletext subtitles", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Näytä tekstitys (Teksti-TV)", - "", // TODO - "", // TODO - "", // TODO - "Visa textning (Text-TV)", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Position Teletext Subtitles for 4:3/Anamorph", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "4:3/Anamorfinen tekstitys (Teksti-TV)", - "", // TODO - "", // TODO - "", // TODO - "Textning för 4:3/anamorf (Text-TV)", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Position Teletext Subtitles for Letterbox", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Letterbox tekstitys (Teksti-TV)", - "", // TODO - "", // TODO - "", // TODO - "Textning för brevlådeformat (Text-TV)", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Display Subtitles", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Näytä tekstitykset", - "", // TODO - "", // TODO - "", // TODO - "Visa textning", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Record Subtitles", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Tallenna tekstitykset", - "", // TODO - "", // TODO - "", // TODO - "Spela in textning", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Main Menu Alternative", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Päävalikon toiminnot", - "", // TODO - "", // TODO - "", // TODO - "Huvudmenyalternativ", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Display on/off", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "aktivointi", - "", // TODO - "", // TODO - "", // TODO - "Visa textning på/av", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "4:3/Letterbox", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "kuvasuhde", - "", // TODO - "", // TODO - "", // TODO - "4:3/brevlådeformat", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Text Horizontal Position", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Vaakatasaus", - "", // TODO - "", // TODO - "", // TODO - "Horisontell position", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Left", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "vasen", - "", // TODO - "", // TODO - "", // TODO - "vänster", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Center", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "keskitä", - "", // TODO - "", // TODO - "", // TODO - "centrerad", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Right", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "oikea", - "", // TODO - "", // TODO - "", // TODO - "höger", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Text Vertical Position", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Pystytasaus", - "", // TODO - "", // TODO - "", // TODO - "Vertikal positon", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "4:3/Anamorph", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "4:3/anamorfinen", - "", // TODO - "", // TODO - "", // TODO - "4:3/anamorf", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Letterbox", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "letterbox", - "", // TODO - "", // TODO - "", // TODO - "brevlådeformat", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Text Vertical Adjust", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Pystytasauksen hienosäätö", - "", // TODO - "", // TODO - "", // TODO - "Vertikal justering", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Line Spacing Adjust", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Rivivälin hienosäätö", - "", // TODO - "", // TODO - "", // TODO - "Radavstånd", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Workaround for some French chns", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Ranskalainen silmänkääntötemppu", - "", // TODO - "", // TODO - "", // TODO - "Fix för vissa franska kanaler", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Language", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Tekstityskieli", - "", // TODO - "", // TODO - "", // TODO - "Språk", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Hearing Impaired", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "kuulorajoitteisille", - "", // TODO - "", // TODO - "", // TODO - "Nedsatt hörsel", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Text Color", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Kirjasimen väri", - "", // TODO - "", // TODO - "", // TODO - "Färg på text", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Background Color", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "Taustaväri", - "", // TODO - "", // TODO - "", // TODO - "Färg på bakgrund", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Black", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "musta", - "", // TODO - "", // TODO - "", // TODO - "svart", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "White", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "valkoinen", - "", // TODO - "", // TODO - "", // TODO - "vit", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Red", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "punainen", - "", // TODO - "", // TODO - "", // TODO - "röd", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Green", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "vihreä", - "", // TODO - "", // TODO - "", // TODO - "grön", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Yellow", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "keltainen", - "", // TODO - "", // TODO - "", // TODO - "gul", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Magenta", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "magenta", - "", // TODO - "", // TODO - "", // TODO - "magenta", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Blue", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "sininen", - "", // TODO - "", // TODO - "", // TODO - "blå", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Cyan", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "syaani", - "", // TODO - "", // TODO - "", // TODO - "cyan", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Grey", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "harmaa", - "", // TODO - "", // TODO - "", // TODO - "grå", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Transparent", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "läpinäkyvä", - "", // TODO - "", // TODO - "", // TODO - "transparent", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO -#endif - }, - { "Background", - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "", // TODO - "tausta", - "", // TODO - "", // TODO - "", // TODO - "bakgrund", - "", // TODO - "", // TODO - "", // TODO -#if VDRVERSNUM >= 10300 - "", // TODO + { "Hide teletext subtitles", // English + "Verstecke Videotextuntertitel", // German + "", // Slovenian + "Nascondi sottotitoli televideo", // Italian + "", // Dutch + "", // Portuguese + "Masquer le sous-titrage", // French + "", // Norwegian + "Piilota tekstitys (Teksti-TV)", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Göm textning (Text-TV)", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Display teletext subtitles", // English + "Zeige Videotextuntertitel", // German + "", // Slovenian + "Visualizza sottotitoli televideo", // Italian + "", // Dutch + "", // Portuguese + "Afficher le sous-titrage", // French + "", // Norwegian + "Näytä tekstitys (Teksti-TV)", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Visa textning (Text-TV)", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Position Teletext Subtitles for 4:3/Anamorph", // English + "Positioniere Videotext-Untertitel für 4:3/Anamorph", // German + "", // Slovenian + "Posizionare sottotitoli per 4:3/anamorfico", // Italian + "", // Dutch + "", // Portuguese + "Position du sous-titrage pour 4:3/Anamorph", // French + "", // Norwegian + "4:3/Anamorfinen tekstitys (Teksti-TV)", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Textning för 4:3/anamorf (Text-TV)", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Position Teletext Subtitles for Letterbox", // English + "Positioniere Videotext-Untertitel für Letterbox", // German + "", // Slovenian + "Posizionare sottotitoli per Letterbox", // Italian + "", // Dutch + "", // Portuguese + "Position du sous-titrage pour Letterbox", // French + "", // Norwegian + "Letterbox tekstitys (Teksti-TV)", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Textning för brevlådeformat (Text-TV)", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Display Subtitles", // English + "Zeige Untertitel", // German + "", // Slovenian + "Visualizza sottotitoli", // Italian + "", // Dutch + "", // Portuguese + "Afficher le sous-titrage", // French + "", // Norwegian + "Näytä tekstitykset", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Visa textning", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Record Subtitles", // English + "Nimm Untertitel auf", // German + "", // Slovenian + "Registra sottotitoli", // Italian + "", // Dutch + "", // Portuguese + "Enregistrer le sous-titrage", // French + "", // Norwegian + "Tallenna tekstitykset", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Spela in textning", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Main Menu Alternative", // English + "Hauptmenu Alternative", // German + "", // Slovenian + "Alternativa menù principale", // Italian + "", // Dutch + "", // Portuguese + "Choix du menu principal", // French + "", // Norwegian + "Päävalikon toiminnot", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Huvudmenyalternativ", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Display on/off", // English + "Anzeige ein/aus", // German + "", // Slovenian + "Visualizza sì/no", // Italian + "", // Dutch + "", // Portuguese + "Affichage", // French + "", // Norwegian + "aktivointi", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Visa textning på/av", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "4:3/Letterbox", // English + "4:3/Letterbox", + "", // Slovenian + "4:3/Letterbox", // Italian + "", // Dutch + "", // Portuguese + "4:3/Letterbox", // French + "", // Norwegian + "kuvasuhde", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "4:3/brevlådeformat", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Text Horizontal Position", // English + "Horizontale Textposition", // German + "", // Slovenian + "Posizione testo orizzontale", // Italian + "", // Dutch + "", // Portuguese + "Position horizontale du texte", // French + "", // Norwegian + "Vaakatasaus", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Horisontell position", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Left", // English + "Links", // German + "", // Slovenian + "Sinistra", // Italian + "", // Dutch + "", // Portuguese + "Gauche", // French + "", // Norwegian + "vasen", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "vänster", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Center", // English + "Mitte", // German + "", // Slovenian + "Centro", // Italian + "", // Dutch + "", // Portuguese + "Centre", // French + "", // Norwegian + "keskitä", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "centrerad", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Right", // English + "Rechts", // German + "", // Slovenian + "Destra", // Italian + "", // Dutch + "", // Portuguese + "Droite", // French + "", // Norwegian + "oikea", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "höger", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Text Vertical Position", // English + "Vertikale Textposition", // German + "", // Slovenian + "Posizione testo verticale", // Italian + "", // Dutch + "", // Portuguese + "Position verticale du texte", // French + "", // Norwegian + "Pystytasaus", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Vertikal positon", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "4:3/Anamorph", // English + "4:3/Anamorph", // German + "", // Slovenian + "4:3/anamorfico", // Italian + "", // Dutch + "", // Portuguese + "4:3/Anamorph", // French + "", // Norwegian + "4:3/anamorfinen", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "4:3/anamorf", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Letterbox", // English + "Letterbox", // German + "", // Slovenian + "Letterbox", // Italian + "", // Dutch + "", // Portuguese + "Letterbox", // French + "", // Norwegian + "letterbox", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "brevlådeformat", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Text Vertical Adjust", // English + "Text vertikal verschieben", // German + "", // Slovenian + "Correzione testo verticale", // Italian + "", // Dutch + "", // Portuguese + "Ajustement vertical du texte", // French + "", // Norwegian + "Pystytasauksen hienosäätö", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Vertikal justering", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Line Spacing Adjust", // English + "Zeilenabstand einstellen", // German + "", // Slovenian + "Correzione interlinea", // Italian + "", // Dutch + "", // Portuguese + "Espacement des lignes", // French + "", // Norwegian + "Rivivälin hienosäätö", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Radavstånd", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Workaround for some French chns", // English + "Workaround für französische Kanäle", // German + "", // Slovenian + "Correzione per canali francesi", // Italian + "", // Dutch + "", // Portuguese + "Contournement chaînes françaises", // French + "", // Norwegian + "Ranskalainen silmänkääntötemppu", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Fix för vissa franska kanaler", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Language", // English + "Sprache", // German + "", // Slovenian + "Lingua", // Italian + "", // Dutch + "", // Portuguese + "Langues", // French + "", // Norwegian + "Tekstityskieli", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Språk", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Hearing Impaired", // English + "Gehörlose", // German + "", // Slovenian + "Non udente", // Italian + "", // Dutch + "", // Portuguese + "Malentendant", // French + "", // Norwegian + "kuulorajoitteisille", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Nedsatt hörsel", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Text Color", // English + "Textfarbe", // German + "", // Slovenian + "Colore testo", // Italian + "", // Dutch + "", // Portuguese + "Couleur du text", // French + "", // Norwegian + "Kirjasimen väri", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Färg på text", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Background Color", // English + "Hintergrundfarbe", // German + "", // Slovenian + "Colore sfondo", // Italian + "", // Dutch + "", // Portuguese + "Couleur du fond", // French + "", // Norwegian + "Taustaväri", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "Färg på bakgrund", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Black", // English + "Schwarz", // German + "", // Slovenian + "Nero", // Italian + "", // Dutch + "", // Portuguese + "Noir", // French + "", // Norwegian + "musta", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "svart", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "White", // English + "Weiss", // German + "", // Slovenian + "Bianco", // Italian + "", // Dutch + "", // Portuguese + "Blanc", // French + "", // Norwegian + "valkoinen", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "vit", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Red", // English + "Rot", // German + "", // Slovenian + "Rosso", // Italian + "", // Dutch + "", // Portuguese + "Rouge", // French + "", // Norwegian + "punainen", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "röd", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Green", // English + "Grün", // German + "", // Slovenian + "Verde", // Italian + "", // Dutch + "", // Portuguese + "Vert", // French + "", // Norwegian + "vihreä", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "grön", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Yellow", // English + "Gelb", // German + "", // Slovenian + "Giallo", // Italian + "", // Dutch + "", // Portuguese + "Jaune", // French + "", // Norwegian + "keltainen", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "gul", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Magenta", // English + "Magenta", // German + "", // Slovenian + "Magenta", // Italian + "", // Dutch + "", // Portuguese + "Magenta", // French + "", // Norwegian + "magenta", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "magenta", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Blue", // English + "Blau", // German + "", // Slovenian + "Azzurro", // Italian + "", // Dutch + "", // Portuguese + "Bleu", // French + "", // Norwegian + "sininen", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "blå", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Cyan", // English + "Türkis", // German + "", // Slovenian + "Ciano", // Italian + "", // Dutch + "", // Portuguese + "Cyan", // French + "", // Norwegian + "syaani", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "cyan", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Grey", // English + "Grau", // German + "", // Slovenian + "Grigio", // Italian + "", // Dutch + "", // Portuguese + "Gris", // French + "", // Norwegian + "harmaa", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "grå", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Transparent", // English + "Transparent", // German + "", // Slovenian + "Trasparente", // Italian + "", // Dutch + "", // Portuguese + "Transparent", // French + "", // Norwegian + "läpinäkyvä", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "transparent", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian +#endif + }, + { "Background", // English + "Hintergrund", // German + "", // Slovenian + "Sfondo", // Italian + "", // Dutch + "", // Portuguese + "Fond", // French + "", // Norwegian + "tausta", // Finnish + "", // Polish + "", // Spanish + "", // Greek + "bakgrund", // Swedish + "", // Romanian + "", // Hungarian + "", // Catalenian +#if VDRVERSNUM >= 10300 + "", // Russian #endif }, { NULL } |