mirror of
				https://github.com/rofafor/vdr-plugin-femon.git
				synced 2023-10-10 11:36:53 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 5819441c03 | ||
|  | b0b0fe4f02 | ||
|  | 64e56af6dc | ||
|  | 830aa73e1a | 
							
								
								
									
										18
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								COPYING
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | |||||||
| 		       Version 2, June 1991 | 		       Version 2, June 1991 | ||||||
|  |  | ||||||
|  Copyright (C) 1989, 1991 Free Software Foundation, Inc. |  Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||||||
|                        59 Temple Place, Suite 330, Boston, MA  02111-1307  USA |  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
|  Everyone is permitted to copy and distribute verbatim copies |  Everyone is permitted to copy and distribute verbatim copies | ||||||
|  of this license document, but changing it is not allowed. |  of this license document, but changing it is not allowed. | ||||||
|  |  | ||||||
| @@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This | |||||||
| General Public License applies to most of the Free Software | General Public License applies to most of the Free Software | ||||||
| Foundation's software and to any other program whose authors commit to | Foundation's software and to any other program whose authors commit to | ||||||
| using it.  (Some other Free Software Foundation software is covered by | using it.  (Some other Free Software Foundation software is covered by | ||||||
| the GNU Library General Public License instead.)  You can apply it to | the GNU Lesser General Public License instead.)  You can apply it to | ||||||
| your programs, too. | your programs, too. | ||||||
|  |  | ||||||
|   When we speak of free software, we are referring to freedom, not |   When we speak of free software, we are referring to freedom, not | ||||||
| @@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all. | |||||||
|  |  | ||||||
|   The precise terms and conditions for copying, distribution and |   The precise terms and conditions for copying, distribution and | ||||||
| modification follow. | modification follow. | ||||||
|  |  | ||||||
| 		    GNU GENERAL PUBLIC LICENSE | 		    GNU GENERAL PUBLIC LICENSE | ||||||
|    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||||
|  |  | ||||||
| @@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions: | |||||||
|     License.  (Exception: if the Program itself is interactive but |     License.  (Exception: if the Program itself is interactive but | ||||||
|     does not normally print such an announcement, your work based on |     does not normally print such an announcement, your work based on | ||||||
|     the Program is not required to print an announcement.) |     the Program is not required to print an announcement.) | ||||||
|  |  | ||||||
| These requirements apply to the modified work as a whole.  If | These requirements apply to the modified work as a whole.  If | ||||||
| identifiable sections of that work are not derived from the Program, | identifiable sections of that work are not derived from the Program, | ||||||
| and can be reasonably considered independent and separate works in | and can be reasonably considered independent and separate works in | ||||||
| @@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent | |||||||
| access to copy the source code from the same place counts as | access to copy the source code from the same place counts as | ||||||
| distribution of the source code, even though third parties are not | distribution of the source code, even though third parties are not | ||||||
| compelled to copy the source along with the object code. | compelled to copy the source along with the object code. | ||||||
|  |  | ||||||
|   4. You may not copy, modify, sublicense, or distribute the Program |   4. You may not copy, modify, sublicense, or distribute the Program | ||||||
| except as expressly provided under this License.  Any attempt | except as expressly provided under this License.  Any attempt | ||||||
| otherwise to copy, modify, sublicense or distribute the Program is | otherwise to copy, modify, sublicense or distribute the Program is | ||||||
| @@ -225,7 +225,7 @@ impose that choice. | |||||||
|  |  | ||||||
| This section is intended to make thoroughly clear what is believed to | This section is intended to make thoroughly clear what is believed to | ||||||
| be a consequence of the rest of this License. | be a consequence of the rest of this License. | ||||||
|  |  | ||||||
|   8. If the distribution and/or use of the Program is restricted in |   8. If the distribution and/or use of the Program is restricted in | ||||||
| certain countries either by patents or by copyrighted interfaces, the | certain countries either by patents or by copyrighted interfaces, the | ||||||
| original copyright holder who places the Program under this License | original copyright holder who places the Program under this License | ||||||
| @@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | |||||||
| POSSIBILITY OF SUCH DAMAGES. | POSSIBILITY OF SUCH DAMAGES. | ||||||
|  |  | ||||||
| 		     END OF TERMS AND CONDITIONS | 		     END OF TERMS AND CONDITIONS | ||||||
|  |  | ||||||
| 	    How to Apply These Terms to Your New Programs | 	    How to Apply These Terms to Your New Programs | ||||||
|  |  | ||||||
|   If you develop a new program, and you want it to be of the greatest |   If you develop a new program, and you want it to be of the greatest | ||||||
| @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. | |||||||
|  |  | ||||||
|     You should have received a copy of the GNU General Public License |     You should have received a copy of the GNU General Public License | ||||||
|     along with this program; if not, write to the Free Software |     along with this program; if not, write to the Free Software | ||||||
|     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA |     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
|  |  | ||||||
|  |  | ||||||
| Also add information on how to contact you by electronic and paper mail. | Also add information on how to contact you by electronic and paper mail. | ||||||
| @@ -336,5 +336,5 @@ necessary.  Here is a sample; alter the names: | |||||||
| This General Public License does not permit incorporating your program into | This General Public License does not permit incorporating your program into | ||||||
| proprietary programs.  If your program is a subroutine library, you may | proprietary programs.  If your program is a subroutine library, you may | ||||||
| consider it more useful to permit linking proprietary applications with the | consider it more useful to permit linking proprietary applications with the | ||||||
| library.  If this is what you want to do, use the GNU Library General | library.  If this is what you want to do, use the GNU Lesser General | ||||||
| Public License instead of this License. | Public License instead of this License. | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -244,3 +244,39 @@ VDR Plugin 'femon' Revision History | |||||||
| 2007-01-08: Version 1.1.1 | 2007-01-08: Version 1.1.1 | ||||||
|  |  | ||||||
| - Updated for vdr-1.5.0. | - Updated for vdr-1.5.0. | ||||||
|  |  | ||||||
|  | 2007-05-01: Version 1.1.2 | ||||||
|  |  | ||||||
|  | - Fixed opening while replaying (Thanks to Antti Sepp<70>l<EFBFBD> for reporting this one). | ||||||
|  |  | ||||||
|  | 2007-05-15: Version 1.1.3 | ||||||
|  |  | ||||||
|  | - Fixed a race condition in cFemonReceiver (Thanks to Reinhard Nissl). | ||||||
|  |  | ||||||
|  | 2007-10-14: Version 1.1.4 | ||||||
|  |  | ||||||
|  | - Backported from 1.2.2. | ||||||
|  |  | ||||||
|  | 2008-01-20: Version 1.1.5 | ||||||
|  |  | ||||||
|  | - Updated Italian translation (Thanks to Gringo). | ||||||
|  | - Added '-Wno-parentheses' to the compiler options. | ||||||
|  |  | ||||||
|  | 2007-08-14: Version 1.2.0 | ||||||
|  |  | ||||||
|  | - Updated for vdr-1.5.7. | ||||||
|  |  | ||||||
|  | 2007-08-19: Version 1.2.1 | ||||||
|  |  | ||||||
|  | - Updated for vdr-1.5.8. | ||||||
|  |  | ||||||
|  | 2007-10-14: Version 1.2.2 | ||||||
|  |  | ||||||
|  | - Added Spids support. | ||||||
|  | - Minor OSD layout changes. | ||||||
|  |  | ||||||
|  | 2008-01-20: Version 1.2.3 | ||||||
|  |  | ||||||
|  | - Updated Italian translation (Thanks to Gringo). | ||||||
|  | - Added '-Wno-parentheses' to the compiler options. | ||||||
|  | - Mapped 'kInfo' as help key in setup menu. | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Makefile
									
									
									
									
									
								
							| @@ -15,17 +15,19 @@ STRIP = strip | |||||||
| # The official name of this plugin. | # The official name of this plugin. | ||||||
| # This name will be used in the '-P...' option of VDR to load the plugin. | # This name will be used in the '-P...' option of VDR to load the plugin. | ||||||
| # By default the main source file also carries this name. | # By default the main source file also carries this name. | ||||||
|  | # IMPORTANT: the presence of this macro is important for the Make.config | ||||||
|  | # file. So it must be defined, even if it is not used here! | ||||||
| # | # | ||||||
| PLUGIN = femon | PLUGIN = femon | ||||||
|  |  | ||||||
| ### The version number of this plugin (taken from the main source file): | ### The version number of this plugin (taken from the main source file): | ||||||
|  |  | ||||||
| VERSION = $(shell grep 'static const char VERSION\[\] *=' $(PLUGIN).h | awk '{ print $$6 }' | sed -e 's/[";]//g') | VERSION = $(shell grep 'static const char VERSION\[\] *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g') | ||||||
|  |  | ||||||
| ### The C++ compiler and options: | ### The C++ compiler and options: | ||||||
|  |  | ||||||
| CXX      ?= g++ | CXX      ?= g++ | ||||||
| CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual | CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses | ||||||
|  |  | ||||||
| ### The directory environment: | ### The directory environment: | ||||||
|  |  | ||||||
| @@ -67,14 +69,18 @@ all-redirect: all | |||||||
|  |  | ||||||
| OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o femontools.o | OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o femontools.o | ||||||
|  |  | ||||||
|  | ### The main target: | ||||||
|  |  | ||||||
|  | all: libvdr-$(PLUGIN).so | ||||||
|  |  | ||||||
| ### Implicit rules: | ### Implicit rules: | ||||||
|  |  | ||||||
| %.o: %.c | %.o: %.c | ||||||
| 	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $< | 	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $< | ||||||
|  |  | ||||||
| # Dependencies: | ### Dependencies: | ||||||
|  |  | ||||||
| MAKEDEP = g++ -MM -MG | MAKEDEP = $(CXX) -MM -MG | ||||||
| DEPFILE = .dependencies | DEPFILE = .dependencies | ||||||
| $(DEPFILE): Makefile | $(DEPFILE): Makefile | ||||||
| 	@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ | 	@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ | ||||||
| @@ -83,8 +89,6 @@ $(DEPFILE): Makefile | |||||||
|  |  | ||||||
| ### Targets: | ### Targets: | ||||||
|  |  | ||||||
| all: libvdr-$(PLUGIN).so |  | ||||||
|  |  | ||||||
| libvdr-$(PLUGIN).so: $(OBJS) | libvdr-$(PLUGIN).so: $(OBJS) | ||||||
| 	$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@ | 	$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@ | ||||||
| ifndef FEMON_DEBUG | ifndef FEMON_DEBUG | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								README
									
									
									
									
									
								
							| @@ -1,11 +1,16 @@ | |||||||
| This is a DVB Frontend Status Monitor plugin for the Video Disk Recorder (VDR). | This is a DVB Frontend Status Monitor plugin for the Video Disk Recorder (VDR). | ||||||
|  |  | ||||||
| Written by:                  R o l f . A h r e n b e r g @ s c i . f i | Written by:                  Rolf Ahrenberg | ||||||
|  |                              < R o l f . A h r e n b e r g @ s c i . f i > | ||||||
|  |  | ||||||
| Project's homepage:          http://www.saunalahti.fi/~rahrenbe/vdr/femon/ | Project's homepage:          http://www.saunalahti.fi/~rahrenbe/vdr/femon/ | ||||||
|  |  | ||||||
| Latest version available at: http://www.saunalahti.fi/~rahrenbe/vdr/femon/ | Latest version available at: http://www.saunalahti.fi/~rahrenbe/vdr/femon/ | ||||||
|  |  | ||||||
|  | This program is free software; you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU General Public License as published by | ||||||
|  | the Free Software Foundation; either version 2 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
| See the file COPYING for license information. | See the file COPYING for license information. | ||||||
|  |  | ||||||
| Requirements: | Requirements: | ||||||
|   | |||||||
							
								
								
									
										53
									
								
								femon.c
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								femon.c
									
									
									
									
									
								
							| @@ -6,6 +6,7 @@ | |||||||
|  * $Id$ |  * $Id$ | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | #include <vdr/menu.h> | ||||||
| #include <vdr/remote.h> | #include <vdr/remote.h> | ||||||
| #include "femoncfg.h" | #include "femoncfg.h" | ||||||
| #include "femoni18n.h" | #include "femoni18n.h" | ||||||
| @@ -13,12 +14,38 @@ | |||||||
| #include "femonosd.h" | #include "femonosd.h" | ||||||
| #include "femonservice.h" | #include "femonservice.h" | ||||||
| #include "femontools.h" | #include "femontools.h" | ||||||
| #include "femon.h" |  | ||||||
|  |  | ||||||
| #if defined(APIVERSNUM) && APIVERSNUM < 10400 | #if defined(APIVERSNUM) && APIVERSNUM < 10400 | ||||||
| #error "VDR-1.4.0 API version or greater is required!" | #error "VDR-1.4.0 API version or greater is required!" | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | static const char VERSION[]       = "1.1.5"; | ||||||
|  | static const char DESCRIPTION[]   = "DVB Signal Information Monitor (OSD)"; | ||||||
|  | static const char MAINMENUENTRY[] = "Signal Information"; | ||||||
|  |  | ||||||
|  | class cPluginFemon : public cPlugin { | ||||||
|  | public: | ||||||
|  |   cPluginFemon(void); | ||||||
|  |   virtual ~cPluginFemon(); | ||||||
|  |   virtual const char *Version(void) { return VERSION; } | ||||||
|  |   virtual const char *Description(void) { return tr(DESCRIPTION); } | ||||||
|  |   virtual const char *CommandLineHelp(void); | ||||||
|  |   virtual bool ProcessArgs(int argc, char *argv[]); | ||||||
|  |   virtual bool Initialize(void); | ||||||
|  |   virtual bool Start(void); | ||||||
|  |   virtual void Stop(void); | ||||||
|  |   virtual void Housekeeping(void); | ||||||
|  |   virtual void MainThreadHook(void) {} | ||||||
|  |   virtual cString Active(void) { return NULL; } | ||||||
|  |   virtual const char *MainMenuEntry(void) { return (femonConfig.hidemenu ? NULL : tr(MAINMENUENTRY)); } | ||||||
|  |   virtual cOsdObject *MainMenuAction(void); | ||||||
|  |   virtual cMenuSetupPage *SetupMenu(void); | ||||||
|  |   virtual bool SetupParse(const char *Name, const char *Value); | ||||||
|  |   virtual bool Service(const char *Id, void *Data); | ||||||
|  |   virtual const char **SVDRPHelpPages(void); | ||||||
|  |   virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode); | ||||||
|  |   }; | ||||||
|  |  | ||||||
| cPluginFemon::cPluginFemon() | cPluginFemon::cPluginFemon() | ||||||
| { | { | ||||||
|   // Initialize any member variables here. |   // Initialize any member variables here. | ||||||
| @@ -72,7 +99,11 @@ cOsdObject *cPluginFemon::MainMenuAction(void) | |||||||
| { | { | ||||||
|   // Perform the action when selected from the main VDR menu. |   // Perform the action when selected from the main VDR menu. | ||||||
|   Dprintf("%s()\n", __PRETTY_FUNCTION__); |   Dprintf("%s()\n", __PRETTY_FUNCTION__); | ||||||
|   return cFemonOsd::Instance(true); |   if (cReplayControl::NowReplaying()) | ||||||
|  |      Skins.Message(mtInfo, tr("Femon not available while replaying")); | ||||||
|  |   else | ||||||
|  |      return cFemonOsd::Instance(true); | ||||||
|  |   return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cPluginFemon::SetupParse(const char *Name, const char *Value) | bool cPluginFemon::SetupParse(const char *Name, const char *Value) | ||||||
| @@ -160,6 +191,10 @@ const char **cPluginFemon::SVDRPHelpPages(void) | |||||||
| cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) | cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) | ||||||
| { | { | ||||||
|   if (strcasecmp(Command, "OPEN") == 0) { |   if (strcasecmp(Command, "OPEN") == 0) { | ||||||
|  |      if (cReplayControl::NowReplaying()) { | ||||||
|  |         ReplyCode = 550; // Requested action not taken | ||||||
|  |         return cString("Cannot open femon plugin while replaying"); | ||||||
|  |         } | ||||||
|      if (!cFemonOsd::Instance()) |      if (!cFemonOsd::Instance()) | ||||||
|         cRemote::CallPlugin("femon"); |         cRemote::CallPlugin("femon"); | ||||||
|      return cString("Opening femon plugin"); |      return cString("Opening femon plugin"); | ||||||
| @@ -225,6 +260,20 @@ cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int | |||||||
|   return NULL; |   return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | class cMenuFemonSetup : public cMenuSetupPage { | ||||||
|  | private: | ||||||
|  |   const char *dispmodes[eFemonModeMaxNumber]; | ||||||
|  |   const char *skins[eFemonSkinMaxNumber]; | ||||||
|  |   const char *themes[eFemonThemeMaxNumber]; | ||||||
|  |   cFemonConfig data; | ||||||
|  |   virtual void Setup(void); | ||||||
|  | protected: | ||||||
|  |   virtual eOSState ProcessKey(eKeys Key); | ||||||
|  |   virtual void Store(void); | ||||||
|  | public: | ||||||
|  |   cMenuFemonSetup(void); | ||||||
|  |   }; | ||||||
|  |  | ||||||
| cMenuFemonSetup::cMenuFemonSetup(void) | cMenuFemonSetup::cMenuFemonSetup(void) | ||||||
| { | { | ||||||
|   Dprintf("%s()\n", __PRETTY_FUNCTION__); |   Dprintf("%s()\n", __PRETTY_FUNCTION__); | ||||||
|   | |||||||
							
								
								
									
										56
									
								
								femon.h
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								femon.h
									
									
									
									
									
								
							| @@ -1,56 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Frontend Status Monitor plugin for the Video Disk Recorder |  | ||||||
|  * |  | ||||||
|  * See the README file for copyright information and how to reach the author. |  | ||||||
|  * |  | ||||||
|  * $Id$ |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| #ifndef __FEMON_H |  | ||||||
| #define __FEMON_H |  | ||||||
|  |  | ||||||
| #include <vdr/plugin.h> |  | ||||||
|  |  | ||||||
| static const char VERSION[]       = "1.1.1"; |  | ||||||
| static const char DESCRIPTION[]   = "DVB Signal Information Monitor (OSD)"; |  | ||||||
| static const char MAINMENUENTRY[] = "Signal Information"; |  | ||||||
|  |  | ||||||
| class cPluginFemon : public cPlugin { |  | ||||||
| public: |  | ||||||
|   cPluginFemon(void); |  | ||||||
|   virtual ~cPluginFemon(); |  | ||||||
|   virtual const char *Version(void) { return VERSION; } |  | ||||||
|   virtual const char *Description(void) { return tr(DESCRIPTION); } |  | ||||||
|   virtual const char *CommandLineHelp(void); |  | ||||||
|   virtual bool ProcessArgs(int argc, char *argv[]); |  | ||||||
|   virtual bool Initialize(void); |  | ||||||
|   virtual bool Start(void); |  | ||||||
|   virtual void Stop(void); |  | ||||||
|   virtual void Housekeeping(void); |  | ||||||
|   virtual void MainThreadHook(void) {} |  | ||||||
|   virtual cString Active(void) { return NULL; } |  | ||||||
|   virtual const char *MainMenuEntry(void) { return (femonConfig.hidemenu ? NULL : tr(MAINMENUENTRY)); } |  | ||||||
|   virtual cOsdObject *MainMenuAction(void); |  | ||||||
|   virtual cMenuSetupPage *SetupMenu(void); |  | ||||||
|   virtual bool SetupParse(const char *Name, const char *Value); |  | ||||||
|   virtual bool Service(const char *Id, void *Data); |  | ||||||
|   virtual const char **SVDRPHelpPages(void); |  | ||||||
|   virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode); |  | ||||||
|   }; |  | ||||||
|  |  | ||||||
| class cMenuFemonSetup : public cMenuSetupPage { |  | ||||||
| private: |  | ||||||
|   const char *dispmodes[eFemonModeMaxNumber]; |  | ||||||
|   const char *skins[eFemonSkinMaxNumber]; |  | ||||||
|   const char *themes[eFemonThemeMaxNumber]; |  | ||||||
|   cFemonConfig data; |  | ||||||
|   virtual void Setup(void); |  | ||||||
| protected: |  | ||||||
|   virtual eOSState ProcessKey(eKeys Key); |  | ||||||
|   virtual void Store(void); |  | ||||||
| public: |  | ||||||
|   cMenuFemonSetup(void); |  | ||||||
|   }; |  | ||||||
|  |  | ||||||
| #endif //__FEMON_H |  | ||||||
|  |  | ||||||
							
								
								
									
										172
									
								
								femoni18n.c
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								femoni18n.c
									
									
									
									
									
								
							| @@ -12,7 +12,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "DVB Signal Information Monitor (OSD)", // English |   { "DVB Signal Information Monitor (OSD)", // English | ||||||
|     "DVB Signal Informationsanzeige (OSD)", // Deutsch |     "DVB Signal Informationsanzeige (OSD)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "Visualizza le informazioni sul segnale DVB", // Italiano |     "Visualizza informazioni segnale DVB", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Affiche les informations du signal DVB", // Fran<61>ais |     "Affiche les informations du signal DVB", // Fran<61>ais | ||||||
| @@ -34,7 +34,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Signal Information", // English |   { "Signal Information", // English | ||||||
|     "Signalinformationen", // Deutsch |     "Signalinformationen", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "Informazioni sul segnale", // Italiano |     "Informazioni segnale", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Signal DVB", // Fran<61>ais |     "Signal DVB", // Fran<61>ais | ||||||
| @@ -100,7 +100,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Horizontal offset", // English |   { "Horizontal offset", // English | ||||||
|     "Horizontaler Offset", // Deutsch |     "Horizontaler Offset", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Limite orizzontale", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "D<EFBFBD>placement horizontal", // Fran<61>ais |     "D<EFBFBD>placement horizontal", // Fran<61>ais | ||||||
| @@ -122,7 +122,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Default display mode", // English |   { "Default display mode", // English | ||||||
|     "Standard Anzeigemodus", // Deutsch |     "Standard Anzeigemodus", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "Modo di visualizzazione standard", // Italiano |     "Modalit<EFBFBD> visualizz. standard", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Affichage par d<>faut", // Fran<61>ais |     "Affichage par d<>faut", // Fran<61>ais | ||||||
| @@ -144,7 +144,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "basic", // English |   { "basic", // English | ||||||
|     "Standard", // Deutsch |     "Standard", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "base", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "basique", // Fran<61>ais |     "basique", // Fran<61>ais | ||||||
| @@ -166,7 +166,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "transponder", // English |   { "transponder", // English | ||||||
|     "Transponder", // Deutsch |     "Transponder", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "transponder", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "transpondeur", // Fran<61>ais |     "transpondeur", // Fran<61>ais | ||||||
| @@ -188,7 +188,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "stream", // English |   { "stream", // English | ||||||
|     "Stream", // Deutsch |     "Stream", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "flusso", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "flux", // Fran<61>ais |     "flux", // Fran<61>ais | ||||||
| @@ -210,7 +210,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Skin", // English |   { "Skin", // English | ||||||
|     "Oberfl<EFBFBD>che", // Deutsch |     "Oberfl<EFBFBD>che", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Interfaccia", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Skin", // Fran<61>ais |     "Skin", // Fran<61>ais | ||||||
| @@ -232,7 +232,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Theme", // English |   { "Theme", // English | ||||||
|     "Thema", // Deutsch |     "Thema", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Tema", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Th<EFBFBD>me", // Fran<61>ais |     "Th<EFBFBD>me", // Fran<61>ais | ||||||
| @@ -254,7 +254,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Classic", // English |   { "Classic", // English | ||||||
|     "Klassischer", // Deutsch |     "Klassischer", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Classico", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Classique", // Fran<61>ais |     "Classique", // Fran<61>ais | ||||||
| @@ -430,7 +430,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Hide main menu entry", // English |   { "Hide main menu entry", // English | ||||||
|     "Hauptmen<EFBFBD>eintrag verstecken", // Deutsch |     "Hauptmen<EFBFBD>eintrag verstecken", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "Nascondi voce men<EFBFBD>", // Italiano |     "Nascondi voce menu principale", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Masquer dans le menu principal", // Fran<61>ais |     "Masquer dans le menu principal", // Fran<61>ais | ||||||
| @@ -452,7 +452,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "OSD update interval [0.1s]", // English |   { "OSD update interval [0.1s]", // English | ||||||
|     "OSD Updateintervall [0.1s]", // Deutsch |     "OSD Updateintervall [0.1s]", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "Intervallo di aggiornamento [0.1s]", // Italiano |     "Intervallo aggiornamento OSD [0.1s]", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Intervalle de mise <20> jour (0,1s)", // Fran<61>ais |     "Intervalle de mise <20> jour (0,1s)", // Fran<61>ais | ||||||
| @@ -474,7 +474,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Analyze stream", // English |   { "Analyze stream", // English | ||||||
|     "Stream analysieren", // Deutsch |     "Stream analysieren", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Analizza flusso", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Analyser le flux", // Fran<61>ais |     "Analyser le flux", // Fran<61>ais | ||||||
| @@ -496,7 +496,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Calculation interval [0.1s]", // English |   { "Calculation interval [0.1s]", // English | ||||||
|     "Berechnungsintervall [0.1s]", // Deutsch |     "Berechnungsintervall [0.1s]", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "Intervallo di calcolo [0.1s]", // Italiano |     "Intervallo calcolo [0.1s]", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Intervalle de calcul (0,1s)", // Fran<61>ais |     "Intervalle de calcul (0,1s)", // Fran<61>ais | ||||||
| @@ -540,7 +540,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Green limit [%]", // English |   { "Green limit [%]", // English | ||||||
|     "Grenze Gr<47>n [%]", // Deutsch |     "Grenze Gr<47>n [%]", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "Limite de verde [%]", // Italiano |     "Limite verde [%]", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Limite du vert (%)", // Fran<61>ais |     "Limite du vert (%)", // Fran<61>ais | ||||||
| @@ -716,7 +716,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "None", // English |   { "None", // English | ||||||
|     "Nichts", // Deutsch |     "Nichts", // Deutsch | ||||||
|     "None", // Slovenski |     "None", // Slovenski | ||||||
|     "None", // Italiano |     "Nessuno", // Italiano | ||||||
|     "None", // Nederlands |     "None", // Nederlands | ||||||
|     "None", // Portugu<67>s |     "None", // Portugu<67>s | ||||||
|     "Aucun", // Fran<61>ais |     "Aucun", // Fran<61>ais | ||||||
| @@ -738,7 +738,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Off", // English |   { "Off", // English | ||||||
|     "Aus", // Deutsch |     "Aus", // Deutsch | ||||||
|     "Off", // Slovenski |     "Off", // Slovenski | ||||||
|     "Off", // Italiano |     "Disattivo", // Italiano | ||||||
|     "Off", // Nederlands |     "Off", // Nederlands | ||||||
|     "Off", // Portugu<67>s |     "Off", // Portugu<67>s | ||||||
|     "Non", // Fran<61>ais |     "Non", // Fran<61>ais | ||||||
| @@ -760,7 +760,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "On", // English |   { "On", // English | ||||||
|     "Ein", // Deutsch |     "Ein", // Deutsch | ||||||
|     "On", // Slovenski |     "On", // Slovenski | ||||||
|     "On", // Italiano |     "Attivo", // Italiano | ||||||
|     "On", // Nederlands |     "On", // Nederlands | ||||||
|     "On", // Portugu<67>s |     "On", // Portugu<67>s | ||||||
|     "Oui", // Fran<61>ais |     "Oui", // Fran<61>ais | ||||||
| @@ -848,7 +848,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Stream Information", // English |   { "Stream Information", // English | ||||||
|     "Streaminformation", // Deutsch |     "Streaminformation", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Informazione flusso", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Information flux", // Fran<61>ais |     "Information flux", // Fran<61>ais | ||||||
| @@ -870,7 +870,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "MPEG Layer", // English |   { "MPEG Layer", // English | ||||||
|     "MPEG Layer", // Deutsch |     "MPEG Layer", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Formato MPEG", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "MPEG Layer", // Fran<61>ais |     "MPEG Layer", // Fran<61>ais | ||||||
| @@ -892,7 +892,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Video Stream", // English |   { "Video Stream", // English | ||||||
|     "Video Stream", // Deutsch |     "Video Stream", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Flusso video", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Flux vid<69>o", // Fran<61>ais |     "Flux vid<69>o", // Fran<61>ais | ||||||
| @@ -914,7 +914,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Bitrate", // English |   { "Bitrate", // English | ||||||
|     "Bitrate", // Deutsch |     "Bitrate", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Bitrate", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Bitrate", // Fran<61>ais |     "Bitrate", // Fran<61>ais | ||||||
| @@ -936,7 +936,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Frame Rate", // English |   { "Frame Rate", // English | ||||||
|     "Bildrate", // Deutsch |     "Bildrate", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Frame rate", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Rafra<EFBFBD>chissement", // Fran<61>ais |     "Rafra<EFBFBD>chissement", // Fran<61>ais | ||||||
| @@ -980,7 +980,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Aspect Ratio", // English |   { "Aspect Ratio", // English | ||||||
|     "Seitenverh<EFBFBD>ltnis", // Deutsch |     "Seitenverh<EFBFBD>ltnis", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Dimensione immagine", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Proportions d'image", // Fran<61>ais |     "Proportions d'image", // Fran<61>ais | ||||||
| @@ -1002,7 +1002,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "reserved", // English |   { "reserved", // English | ||||||
|     "belegt", // Deutsch |     "belegt", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "riservato", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "r<EFBFBD>serv<EFBFBD>", // Fran<61>ais |     "r<EFBFBD>serv<EFBFBD>", // Fran<61>ais | ||||||
| @@ -1024,7 +1024,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "free", // English |   { "free", // English | ||||||
|     "frei", // Deutsch |     "frei", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "libero", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "libre", // Fran<61>ais |     "libre", // Fran<61>ais | ||||||
| @@ -1046,7 +1046,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Video Format", // English |   { "Video Format", // English | ||||||
|     "Bildformat", // Deutsch |     "Bildformat", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Formato video", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Standard vid<69>o", // Fran<61>ais |     "Standard vid<69>o", // Fran<61>ais | ||||||
| @@ -1112,7 +1112,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "unknown", // English |   { "unknown", // English | ||||||
|     "unbekannt", // Deutsch |     "unbekannt", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "sconosciuto", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "inconnu", // Fran<61>ais |     "inconnu", // Fran<61>ais | ||||||
| @@ -1134,7 +1134,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Resolution", // English |   { "Resolution", // English | ||||||
|     "Aufl<EFBFBD>sung", // Deutsch |     "Aufl<EFBFBD>sung", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Risoluzione", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "R<EFBFBD>solution", // Fran<61>ais |     "R<EFBFBD>solution", // Fran<61>ais | ||||||
| @@ -1156,7 +1156,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Audio Stream", // English |   { "Audio Stream", // English | ||||||
|     "Audio Stream", // Deutsch |     "Audio Stream", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Flusso audio", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Flux audio", // Fran<61>ais |     "Flux audio", // Fran<61>ais | ||||||
| @@ -1178,7 +1178,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Sampling Frequency", // English |   { "Sampling Frequency", // English | ||||||
|     "Abtastrate", // Deutsch |     "Abtastrate", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Frequenza campionamento", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Fr<EFBFBD>quence d'<27>chantillonage", // Fran<61>ais |     "Fr<EFBFBD>quence d'<27>chantillonage", // Fran<61>ais | ||||||
| @@ -1376,7 +1376,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "not indicated", // English |   { "not indicated", // English | ||||||
|     "nicht angegeben", // Deutsch |     "nicht angegeben", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "non indicato", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "non indiqu<71>", // Fran<61>ais |     "non indiqu<71>", // Fran<61>ais | ||||||
| @@ -1420,7 +1420,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "AC-3 Stream", // English |   { "AC-3 Stream", // English | ||||||
|     "AC-3 Stream", // Deutsch |     "AC-3 Stream", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Flusso AC-3", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Flux AC-3", // Fran<61>ais |     "Flux AC-3", // Fran<61>ais | ||||||
| @@ -1442,7 +1442,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Frame Size", // English |   { "Frame Size", // English | ||||||
|     "Frame Gr<47><72>e", // Deutsch |     "Frame Gr<47><72>e", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Dimensione frame", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Taille de paquet", // Fran<61>ais |     "Taille de paquet", // Fran<61>ais | ||||||
| @@ -1464,7 +1464,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Bit Stream Mode", // English |   { "Bit Stream Mode", // English | ||||||
|     "Bitstream Modus", // Deutsch |     "Bitstream Modus", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Modalit<EFBFBD> bitstream", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Mode bitstream", // Fran<61>ais |     "Mode bitstream", // Fran<61>ais | ||||||
| @@ -1486,7 +1486,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Audio Coding Mode", // English |   { "Audio Coding Mode", // English | ||||||
|     "Audiokodierung", // Deutsch |     "Audiokodierung", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Modalit<EFBFBD> codifica audio", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Mode de codage audio", // Fran<61>ais |     "Mode de codage audio", // Fran<61>ais | ||||||
| @@ -1508,7 +1508,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Center Mix Level", // English |   { "Center Mix Level", // English | ||||||
|     "Center Mix Pegel", // Deutsch |     "Center Mix Pegel", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Livello sonoro centrale", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Niveau sonore milieu", // Fran<61>ais |     "Niveau sonore milieu", // Fran<61>ais | ||||||
| @@ -1530,7 +1530,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Surround Mix Level", // English |   { "Surround Mix Level", // English | ||||||
|     "Surround Mix Pegel", // Deutsch |     "Surround Mix Pegel", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Livello sonoro surround", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Niveau sonore surround", // Fran<61>ais |     "Niveau sonore surround", // Fran<61>ais | ||||||
| @@ -1552,7 +1552,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Dolby Surround Mode", // English |   { "Dolby Surround Mode", // English | ||||||
|     "Dolby Surround Modus", // Deutsch |     "Dolby Surround Modus", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Modalit<EFBFBD> Dolby Surround", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Mode Dolby Surround", // Fran<61>ais |     "Mode Dolby Surround", // Fran<61>ais | ||||||
| @@ -1574,7 +1574,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Low Frequency Effects", // English |   { "Low Frequency Effects", // English | ||||||
|     "Tieft<EFBFBD>ner Effekte", // Deutsch |     "Tieft<EFBFBD>ner Effekte", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Effetti bassa frequenza", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Effets de basses", // Fran<61>ais |     "Effets de basses", // Fran<61>ais | ||||||
| @@ -1596,7 +1596,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Dialogue Normalization", // English |   { "Dialogue Normalization", // English | ||||||
|     "Dialog Normalisierung", // Deutsch |     "Dialog Normalisierung", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Normalizzazione dialoghi", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Normalisation des dialogues", // Fran<61>ais |     "Normalisation des dialogues", // Fran<61>ais | ||||||
| @@ -1618,7 +1618,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Complete Main (CM)", // English |   { "Complete Main (CM)", // English | ||||||
|     "Complete Main (CM)", // Deutsch |     "Complete Main (CM)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Principale (CM)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Principal (CM)", // Fran<61>ais |     "Principal (CM)", // Fran<61>ais | ||||||
| @@ -1640,7 +1640,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Music and Effects (ME)", // English |   { "Music and Effects (ME)", // English | ||||||
|     "Musik und Effekte (ME)", // Deutsch |     "Musik und Effekte (ME)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Musica ed effetti (ME)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Musique et effets (ME)", // Fran<61>ais |     "Musique et effets (ME)", // Fran<61>ais | ||||||
| @@ -1662,7 +1662,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Visually Impaired (VI)", // English |   { "Visually Impaired (VI)", // English | ||||||
|     "Sehbehindert (VI)", // Deutsch |     "Sehbehindert (VI)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Immagine alterata (VI)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Malvoyants (VI)", // Fran<61>ais |     "Malvoyants (VI)", // Fran<61>ais | ||||||
| @@ -1684,7 +1684,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Hearing Impaired (HI)", // English |   { "Hearing Impaired (HI)", // English | ||||||
|     "H<EFBFBD>rbehindert (HI)", // Deutsch |     "H<EFBFBD>rbehindert (HI)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Suono deteriorato (HI)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Malentendants (HI)", // Fran<61>ais |     "Malentendants (HI)", // Fran<61>ais | ||||||
| @@ -1706,7 +1706,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Dialogue (D)", // English |   { "Dialogue (D)", // English | ||||||
|     "Dialog (D)", // Deutsch |     "Dialog (D)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Dialogo (D)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Dialogue (D)", // Fran<61>ais |     "Dialogue (D)", // Fran<61>ais | ||||||
| @@ -1728,7 +1728,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Commentary (C)", // English |   { "Commentary (C)", // English | ||||||
|     "Kommentar (C)", // Deutsch |     "Kommentar (C)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Commenti (C)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Commentaires (C)", // Fran<61>ais |     "Commentaires (C)", // Fran<61>ais | ||||||
| @@ -1750,7 +1750,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Emergency (E)", // English |   { "Emergency (E)", // English | ||||||
|     "Notfall (E)", // Deutsch |     "Notfall (E)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Emergenza (E)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Urgence (E)", // Fran<61>ais |     "Urgence (E)", // Fran<61>ais | ||||||
| @@ -1772,7 +1772,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Voice Over (VO)", // English |   { "Voice Over (VO)", // English | ||||||
|     "<EFBFBD>berlagerte Stimme (VO)", // Deutsch |     "<EFBFBD>berlagerte Stimme (VO)", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Voce off (VO)", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Voix off (VO)", // Fran<61>ais |     "Voix off (VO)", // Fran<61>ais | ||||||
| @@ -1794,7 +1794,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Karaoke", // English |   { "Karaoke", // English | ||||||
|     "Karaoke", // Deutsch |     "Karaoke", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Karaoke", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Karaoke", // Fran<61>ais |     "Karaoke", // Fran<61>ais | ||||||
| @@ -1816,7 +1816,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Ch1", // English "Channel 1" |   { "Ch1", // English "Channel 1" | ||||||
|     "Kan1", // Deutsch |     "Kan1", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Can. 1", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Can. 1", // Fran<61>ais |     "Can. 1", // Fran<61>ais | ||||||
| @@ -1838,7 +1838,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Ch2", // English "Channel 2" |   { "Ch2", // English "Channel 2" | ||||||
|     "Kan2", // Deutsch |     "Kan2", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Can. 2", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Can. 2", // Fran<61>ais |     "Can. 2", // Fran<61>ais | ||||||
| @@ -1860,7 +1860,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "C", // English "Center" |   { "C", // English "Center" | ||||||
|     "C", // Deutsch |     "C", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "C", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Centre", // Fran<61>ais |     "Centre", // Fran<61>ais | ||||||
| @@ -1882,7 +1882,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "L", // English "Left" |   { "L", // English "Left" | ||||||
|     "L", // Deutsch |     "L", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "S", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Gauche", // Fran<61>ais |     "Gauche", // Fran<61>ais | ||||||
| @@ -1904,7 +1904,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "R", // English "Right" |   { "R", // English "Right" | ||||||
|     "R", // Deutsch |     "R", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "D", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Droite", // Fran<61>ais |     "Droite", // Fran<61>ais | ||||||
| @@ -1926,7 +1926,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "S", // English "Surround" |   { "S", // English "Surround" | ||||||
|     "S", // Deutsch |     "S", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "S", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Surround", // Fran<61>ais |     "Surround", // Fran<61>ais | ||||||
| @@ -1948,7 +1948,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "SL", // English "Surround Left" |   { "SL", // English "Surround Left" | ||||||
|     "SL", // Deutsch |     "SL", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "SS", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Surround gauche", // Fran<61>ais |     "Surround gauche", // Fran<61>ais | ||||||
| @@ -1970,7 +1970,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "SR", // English "Surround Right" |   { "SR", // English "Surround Right" | ||||||
|     "SR", // Deutsch |     "SR", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "SD", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Surround droit", // Fran<61>ais |     "Surround droit", // Fran<61>ais | ||||||
| @@ -1992,7 +1992,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Show CA system", // English |   { "Show CA system", // English | ||||||
|     "CA System anzeigen", // Deutsch |     "CA System anzeigen", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Mostra sistema CA", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Syst<EFBFBD>me CA", // Fran<61>ais |     "Syst<EFBFBD>me CA", // Fran<61>ais | ||||||
| @@ -2014,7 +2014,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Fixed", // English |   { "Fixed", // English | ||||||
|     "Fest", // Deutsch |     "Fest", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Fisso", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Fixe", // Fran<61>ais |     "Fixe", // Fran<61>ais | ||||||
| @@ -2036,7 +2036,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Analog", // English |   { "Analog", // English | ||||||
|     "Analog", // Deutsch |     "Analog", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Analogico", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Analogique", // Fran<61>ais |     "Analogique", // Fran<61>ais | ||||||
| @@ -2058,7 +2058,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Free to Air", // English |   { "Free to Air", // English | ||||||
|     "Frei empfangbar", // Deutsch |     "Frei empfangbar", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "In chiaro", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Free To Air", // Fran<61>ais |     "Free To Air", // Fran<61>ais | ||||||
| @@ -2080,7 +2080,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "SECA/Mediaguard", // English |   { "SECA/Mediaguard", // English | ||||||
|     "SECA/Mediaguard", // Deutsch |     "SECA/Mediaguard", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "SECA/Mediaguard", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "SECA/Mediaguard", // Fran<61>ais |     "SECA/Mediaguard", // Fran<61>ais | ||||||
| @@ -2102,7 +2102,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Viaccess", // English |   { "Viaccess", // English | ||||||
|     "Viaccess", // Deutsch |     "Viaccess", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Viaccess", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Viaccess", // Fran<61>ais |     "Viaccess", // Fran<61>ais | ||||||
| @@ -2124,7 +2124,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Irdeto", // English |   { "Irdeto", // English | ||||||
|     "Irdeto", // Deutsch |     "Irdeto", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Irdeto", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Irdeto", // Fran<61>ais |     "Irdeto", // Fran<61>ais | ||||||
| @@ -2146,7 +2146,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "NDS/Videoguard", // English |   { "NDS/Videoguard", // English | ||||||
|     "NDS/Videoguard", // Deutsch |     "NDS/Videoguard", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "NDS/Videoguard", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "NDS/Videoguard", // Fran<61>ais |     "NDS/Videoguard", // Fran<61>ais | ||||||
| @@ -2168,7 +2168,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Conax", // English |   { "Conax", // English | ||||||
|     "Conax", // Deutsch |     "Conax", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Conax", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "Conax", // Fran<61>ais |     "Conax", // Fran<61>ais | ||||||
| @@ -2190,7 +2190,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "CryptoWorks", // English |   { "CryptoWorks", // English | ||||||
|     "CryptoWorks", // Deutsch |     "CryptoWorks", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "CryptoWorks", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "CryptoWorks", // Fran<61>ais |     "CryptoWorks", // Fran<61>ais | ||||||
| @@ -2212,7 +2212,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "PowerVu", // English |   { "PowerVu", // English | ||||||
|     "PowerVu", // Deutsch |     "PowerVu", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "PowerVu", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "PowerVu", // Fran<61>ais |     "PowerVu", // Fran<61>ais | ||||||
| @@ -2234,7 +2234,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "BetaCrypt", // English |   { "BetaCrypt", // English | ||||||
|     "BetaCrypt", // Deutsch |     "BetaCrypt", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "BetaCrypt", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "BetaCrypt", // Fran<61>ais |     "BetaCrypt", // Fran<61>ais | ||||||
| @@ -2256,7 +2256,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "NagraVision", // English |   { "NagraVision", // English | ||||||
|     "NagraVision", // Deutsch |     "NagraVision", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "NagraVision", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "NagraVision", // Fran<61>ais |     "NagraVision", // Fran<61>ais | ||||||
| @@ -2278,7 +2278,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "SkyCrypt", // English |   { "SkyCrypt", // English | ||||||
|     "SkyCrypt", // Deutsch |     "SkyCrypt", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "SkyCrypt", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "SkyCrypt", // Fran<61>ais |     "SkyCrypt", // Fran<61>ais | ||||||
| @@ -2300,7 +2300,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "Use SVDRP service", // English |   { "Use SVDRP service", // English | ||||||
|     "SVDRP Service verwenden", // Deutsch |     "SVDRP Service verwenden", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Utilizza servizio SVDRP", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "", // Fran<61>ais |     "", // Fran<61>ais | ||||||
| @@ -2322,7 +2322,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "SVDRP service IP", // English |   { "SVDRP service IP", // English | ||||||
|     "SVDRP Service IP", // Deutsch |     "SVDRP Service IP", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "IP servizio SVDRP", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "", // Fran<61>ais |     "", // Fran<61>ais | ||||||
| @@ -2344,7 +2344,7 @@ const tI18nPhrase Phrases[] = { | |||||||
|   { "SVDRP service port", // English |   { "SVDRP service port", // English | ||||||
|     "SVDRP Service Port", // Deutsch |     "SVDRP Service Port", // Deutsch | ||||||
|     "", // Slovenski |     "", // Slovenski | ||||||
|     "", // Italiano |     "Porta servizio SVDRP", // Italiano | ||||||
|     "", // Nederlands |     "", // Nederlands | ||||||
|     "", // Portugu<67>s |     "", // Portugu<67>s | ||||||
|     "", // Fran<61>ais |     "", // Fran<61>ais | ||||||
| @@ -2363,6 +2363,28 @@ const tI18nPhrase Phrases[] = { | |||||||
|     "", // Dansk |     "", // Dansk | ||||||
|     "", // <20>esky (Czech) |     "", // <20>esky (Czech) | ||||||
|   }, |   }, | ||||||
|  |   { "Femon not available while replaying", // English | ||||||
|  |     "", // Deutsch | ||||||
|  |     "", // Slovenski | ||||||
|  |     "Femon non disponibile durante la riproduzione", // Italiano | ||||||
|  |     "", // Nederlands | ||||||
|  |     "", // Portugu<67>s | ||||||
|  |     "", // Fran<61>ais | ||||||
|  |     "", // Norsk | ||||||
|  |     "Signaalimittari ei ole k<>ytett<74>viss<73> toiston aikana", // suomi | ||||||
|  |     "", // Polski | ||||||
|  |     "", // Espa<70>ol | ||||||
|  |     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||||
|  |     "", // Svenska | ||||||
|  |     "", // Romaneste | ||||||
|  |     "", // Magyar | ||||||
|  |     "", // Catal<61> | ||||||
|  |     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||||
|  |     "", // Hrvatski (Croatian) | ||||||
|  |     "", // Eesti | ||||||
|  |     "", // Dansk | ||||||
|  |     "", // <20>esky (Czech) | ||||||
|  |   }, | ||||||
|   { NULL } |   { NULL } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								femonosd.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								femonosd.c
									
									
									
									
									
								
							| @@ -44,7 +44,7 @@ | |||||||
| #define OSDHEIGHT                 femonConfig.osdheight   // in pixels | #define OSDHEIGHT                 femonConfig.osdheight   // in pixels | ||||||
| #define OSDWIDTH                  600                     // in pixels | #define OSDWIDTH                  600                     // in pixels | ||||||
| #define OSDROWHEIGHT              m_Font->Height()        // in pixels | #define OSDROWHEIGHT              m_Font->Height()        // in pixels | ||||||
| #define OSDINFOHEIGHT             (OSDROWHEIGHT * 11)     // in pixels (11 rows) | #define OSDINFOHEIGHT             (OSDROWHEIGHT * 12)     // in pixels (12 rows) | ||||||
| #define OSDSTATUSHEIGHT           (OSDROWHEIGHT * 6)      // in pixels (6 rows) | #define OSDSTATUSHEIGHT           (OSDROWHEIGHT * 6)      // in pixels (6 rows) | ||||||
| #define OSDSPACING                5 | #define OSDSPACING                5 | ||||||
| #define OSDCORNERING              10 | #define OSDCORNERING              10 | ||||||
| @@ -319,8 +319,8 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *getDpids(channel), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *getDpids(channel), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         offset += OSDROWHEIGHT; |         offset += OSDROWHEIGHT; | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Spid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), *getCAids(channel, femonConfig.showcasystem), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), *getSpids(channel), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Tpid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Tpid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         offset += OSDROWHEIGHT; |         offset += OSDROWHEIGHT; | ||||||
| @@ -334,6 +334,9 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Rid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Rid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Rid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Rid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         offset += OSDROWHEIGHT; |         offset += OSDROWHEIGHT; | ||||||
|  |         m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|  |         m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), *getCAids(channel, femonConfig.showcasystem), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|  |         offset += OSDROWHEIGHT; | ||||||
|         switch (m_FrontendInfo.type) { |         switch (m_FrontendInfo.type) { | ||||||
|           case FE_QPSK: |           case FE_QPSK: | ||||||
|                m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), *cString::sprintf("%s #%d - %s", tr("Satellite Card"), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |                m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), *cString::sprintf("%s #%d - %s", tr("Satellite Card"), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
| @@ -432,6 +435,7 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|         m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Resolution"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Resolution"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), m_Receiver ? *cString::sprintf("%d x %d", m_Receiver->VideoHorizontalSize(), m_Receiver->VideoVerticalSize()) : *cString::sprintf("---"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), m_Receiver ? *cString::sprintf("%d x %d", m_Receiver->VideoHorizontalSize(), m_Receiver->VideoVerticalSize()) : *cString::sprintf("---"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         offset += OSDROWHEIGHT; |         offset += OSDROWHEIGHT; | ||||||
|  |         offset += OSDROWHEIGHT; | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("#%d %s", IS_AUDIO_TRACK(track) ? channel->Apid(int(track - ttAudioFirst)) : channel->Apid(0), IS_AUDIO_TRACK(track) ? channel->Alang(int(track - ttAudioFirst)) : channel->Alang(0)), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |         m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("#%d %s", IS_AUDIO_TRACK(track) ? channel->Apid(int(track - ttAudioFirst)) : channel->Apid(0), IS_AUDIO_TRACK(track) ? channel->Alang(int(track - ttAudioFirst)) : channel->Alang(0)), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|         offset += OSDROWHEIGHT; |         offset += OSDROWHEIGHT; | ||||||
| @@ -451,13 +455,16 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|      else if (m_DisplayMode == eFemonModeAC3) { |      else if (m_DisplayMode == eFemonModeAC3) { | ||||||
|         m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), femonTheme[femonConfig.theme].clrBackground); |         m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), femonTheme[femonConfig.theme].clrBackground); | ||||||
|         m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+OSDROWHEIGHT-1), femonTheme[femonConfig.theme].clrTitleBackground); |         m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+OSDROWHEIGHT-1), femonTheme[femonConfig.theme].clrTitleBackground); | ||||||
|         m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), *cString::sprintf("%s - %s #%d %s", tr("Stream Information"), tr("AC-3 Stream"), IS_DOLBY_TRACK(track) ? channel->Dpid(int(track - ttDolbyFirst)) : channel->Dpid(0), IS_DOLBY_TRACK(track) ? channel->Dlang(int(track - ttDolbyFirst)) : channel->Dlang(0)), femonTheme[femonConfig.theme].clrTitleText, femonTheme[femonConfig.theme].clrTitleBackground, m_Font); |         m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Stream Information"), femonTheme[femonConfig.theme].clrTitleText, femonTheme[femonConfig.theme].clrTitleBackground, m_Font); | ||||||
|         if (IS_OSDCORNERING) { |         if (IS_OSDCORNERING) { | ||||||
|            m_Osd->DrawEllipse(0, OSDINFOWIN_Y(0), OSDCORNERING, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -2); |            m_Osd->DrawEllipse(0, OSDINFOWIN_Y(0), OSDCORNERING, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -2); | ||||||
|            m_Osd->DrawEllipse((OSDWIDTH-OSDCORNERING), OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -1); |            m_Osd->DrawEllipse((OSDWIDTH-OSDCORNERING), OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -1); | ||||||
|            } |            } | ||||||
|         offset += OSDROWHEIGHT; |         offset += OSDROWHEIGHT; | ||||||
|         if (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(track)) { |         if (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(track)) { | ||||||
|  |            m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("AC-3 Stream"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|  |            m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("#%d %s", channel->Dpid(int(track - ttDolbyFirst)), channel->Dlang(int(track - ttDolbyFirst))), femonTheme[femonConfig.theme].clrTitleText, femonTheme[femonConfig.theme].clrTitleBackground, m_Font); | ||||||
|  |            offset += OSDROWHEIGHT; | ||||||
|            m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |            m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|            m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("%s (%s)", *getBitrateKbits(m_Receiver->AC3StreamBitrate()), *getBitrateKbits(m_Receiver->AC3Bitrate())), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); |            m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("%s (%s)", *getBitrateKbits(m_Receiver->AC3StreamBitrate()), *getBitrateKbits(m_Receiver->AC3Bitrate())), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font); | ||||||
|            offset += OSDROWHEIGHT; |            offset += OSDROWHEIGHT; | ||||||
|   | |||||||
| @@ -64,6 +64,7 @@ cFemonReceiver::~cFemonReceiver(void) | |||||||
|   Dprintf("%s()\n", __PRETTY_FUNCTION__); |   Dprintf("%s()\n", __PRETTY_FUNCTION__); | ||||||
|   if (Running()) |   if (Running()) | ||||||
|      Cancel(3); |      Cancel(3); | ||||||
|  |   Detach(); | ||||||
| } | } | ||||||
|  |  | ||||||
| /* The following function originates from libdvbmpeg: */ | /* The following function originates from libdvbmpeg: */ | ||||||
|   | |||||||
| @@ -165,6 +165,15 @@ cString getDpids(const cChannel *channel) | |||||||
|   return dpids; |   return dpids; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | cString getSpids(const cChannel *channel) | ||||||
|  | { | ||||||
|  |   int value = 0; | ||||||
|  |   cString spids = cString::sprintf("%d", channel->Spid(value)); | ||||||
|  |   while (channel->Spid(++value) && (value < MAXSPIDS)) | ||||||
|  |     spids = cString::sprintf("%s, %d", *spids, channel->Spid(value)); | ||||||
|  |   return spids; | ||||||
|  | } | ||||||
|  |  | ||||||
| cString getCAids(const cChannel *channel, bool identify) | cString getCAids(const cChannel *channel, bool identify) | ||||||
| { | { | ||||||
|   cString caids; |   cString caids; | ||||||
|   | |||||||
| @@ -33,6 +33,7 @@ uint32_t getUNC(int cardIndex = 0); | |||||||
|  |  | ||||||
| cString getApids(const cChannel *channel); | cString getApids(const cChannel *channel); | ||||||
| cString getDpids(const cChannel *channel); | cString getDpids(const cChannel *channel); | ||||||
|  | cString getSpids(const cChannel *channel); | ||||||
| cString getCAids(const cChannel *channel, bool identify = false); | cString getCAids(const cChannel *channel, bool identify = false); | ||||||
| cString getCA(int value); | cString getCA(int value); | ||||||
| cString getCoderate(int value); | cString getCoderate(int value); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user