Compare commits

...

2 Commits

Author SHA1 Message Date
Rolf Ahrenberg 5819441c03 Updated Italian translation (Thanks to Diego Pierotto).
Added '-Wno-parentheses' to the compiler options.
2008-01-20 04:20:00 +02:00
Rolf Ahrenberg b0b0fe4f02 Backported from 1.2.2. 2007-10-14 04:20:00 +03:00
10 changed files with 191 additions and 153 deletions

18
COPYING
View File

@ -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.

28
HISTORY
View File

@ -252,3 +252,31 @@ VDR Plugin 'femon' Revision History
2007-05-15: Version 1.1.3 2007-05-15: Version 1.1.3
- Fixed a race condition in cFemonReceiver (Thanks to Reinhard Nissl). - 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.

View File

@ -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
View File

@ -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:

42
femon.c
View File

@ -14,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.
@ -234,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
View File

@ -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.3";
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

View File

@ -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ês "", // Português
"Affiche les informations du signal DVB", // Français "Affiche les informations du signal DVB", // Franç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ês "", // Português
"Signal DVB", // Français "Signal DVB", // Franç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ês "", // Português
"Déplacement horizontal", // Français "Déplacement horizontal", // Franç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à visualizz. standard", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Affichage par défaut", // Français "Affichage par défaut", // Français
@ -144,7 +144,7 @@ const tI18nPhrase Phrases[] = {
{ "basic", // English { "basic", // English
"Standard", // Deutsch "Standard", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "base", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"basique", // Français "basique", // Français
@ -166,7 +166,7 @@ const tI18nPhrase Phrases[] = {
{ "transponder", // English { "transponder", // English
"Transponder", // Deutsch "Transponder", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "transponder", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"transpondeur", // Français "transpondeur", // Français
@ -188,7 +188,7 @@ const tI18nPhrase Phrases[] = {
{ "stream", // English { "stream", // English
"Stream", // Deutsch "Stream", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "flusso", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"flux", // Français "flux", // Français
@ -210,7 +210,7 @@ const tI18nPhrase Phrases[] = {
{ "Skin", // English { "Skin", // English
"Oberfläche", // Deutsch "Oberfläche", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Interfaccia", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Skin", // Français "Skin", // Français
@ -232,7 +232,7 @@ const tI18nPhrase Phrases[] = {
{ "Theme", // English { "Theme", // English
"Thema", // Deutsch "Thema", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Tema", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Thème", // Français "Thème", // Français
@ -254,7 +254,7 @@ const tI18nPhrase Phrases[] = {
{ "Classic", // English { "Classic", // English
"Klassischer", // Deutsch "Klassischer", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Classico", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Classique", // Français "Classique", // Français
@ -430,7 +430,7 @@ const tI18nPhrase Phrases[] = {
{ "Hide main menu entry", // English { "Hide main menu entry", // English
"Hauptmenüeintrag verstecken", // Deutsch "Hauptmenüeintrag verstecken", // Deutsch
"", // Slovenski "", // Slovenski
"Nascondi voce menù", // Italiano "Nascondi voce menu principale", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Masquer dans le menu principal", // Français "Masquer dans le menu principal", // Franç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ês "", // Português
"Intervalle de mise à jour (0,1s)", // Français "Intervalle de mise à jour (0,1s)", // Franç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ês "", // Português
"Analyser le flux", // Français "Analyser le flux", // Franç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ês "", // Português
"Intervalle de calcul (0,1s)", // Français "Intervalle de calcul (0,1s)", // Français
@ -540,7 +540,7 @@ const tI18nPhrase Phrases[] = {
{ "Green limit [%]", // English { "Green limit [%]", // English
"Grenze Grün [%]", // Deutsch "Grenze Grün [%]", // Deutsch
"", // Slovenski "", // Slovenski
"Limite de verde [%]", // Italiano "Limite verde [%]", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Limite du vert (%)", // Français "Limite du vert (%)", // Franç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ês "None", // Português
"Aucun", // Français "Aucun", // Franç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ês "Off", // Português
"Non", // Français "Non", // Franç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ês "On", // Português
"Oui", // Français "Oui", // Franç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ês "", // Português
"Information flux", // Français "Information flux", // Franç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ês "", // Português
"MPEG Layer", // Français "MPEG Layer", // Franç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ês "", // Português
"Flux vidéo", // Français "Flux vidéo", // Français
@ -914,7 +914,7 @@ const tI18nPhrase Phrases[] = {
{ "Bitrate", // English { "Bitrate", // English
"Bitrate", // Deutsch "Bitrate", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Bitrate", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Bitrate", // Français "Bitrate", // Franç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ês "", // Português
"Rafraîchissement", // Français "Rafraîchissement", // Français
@ -980,7 +980,7 @@ const tI18nPhrase Phrases[] = {
{ "Aspect Ratio", // English { "Aspect Ratio", // English
"Seitenverhältnis", // Deutsch "Seitenverhältnis", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Dimensione immagine", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Proportions d'image", // Français "Proportions d'image", // Français
@ -1002,7 +1002,7 @@ const tI18nPhrase Phrases[] = {
{ "reserved", // English { "reserved", // English
"belegt", // Deutsch "belegt", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "riservato", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"réservé", // Français "réservé", // Français
@ -1024,7 +1024,7 @@ const tI18nPhrase Phrases[] = {
{ "free", // English { "free", // English
"frei", // Deutsch "frei", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "libero", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"libre", // Français "libre", // Franç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ês "", // Português
"Standard vidéo", // Français "Standard vidéo", // Français
@ -1112,7 +1112,7 @@ const tI18nPhrase Phrases[] = {
{ "unknown", // English { "unknown", // English
"unbekannt", // Deutsch "unbekannt", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "sconosciuto", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"inconnu", // Français "inconnu", // Français
@ -1134,7 +1134,7 @@ const tI18nPhrase Phrases[] = {
{ "Resolution", // English { "Resolution", // English
"Auflösung", // Deutsch "Auflösung", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Risoluzione", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Résolution", // Français "Résolution", // Franç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ês "", // Português
"Flux audio", // Français "Flux audio", // Franç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ês "", // Português
"Fréquence d'échantillonage", // Français "Fréquence d'échantillonage", // Franç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ês "", // Português
"non indiqué", // Français "non indiqué", // Franç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ês "", // Português
"Flux AC-3", // Français "Flux AC-3", // Français
@ -1442,7 +1442,7 @@ const tI18nPhrase Phrases[] = {
{ "Frame Size", // English { "Frame Size", // English
"Frame Größe", // Deutsch "Frame Größe", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Dimensione frame", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Taille de paquet", // Français "Taille de paquet", // Franç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à bitstream", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Mode bitstream", // Français "Mode bitstream", // Français
@ -1486,7 +1486,7 @@ const tI18nPhrase Phrases[] = {
{ "Audio Coding Mode", // English { "Audio Coding Mode", // English
"Audiokodierung", // Deutsch "Audiokodierung", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Modalità codifica audio", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Mode de codage audio", // Français "Mode de codage audio", // Franç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ês "", // Português
"Niveau sonore milieu", // Français "Niveau sonore milieu", // Franç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ês "", // Português
"Niveau sonore surround", // Français "Niveau sonore surround", // Franç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à Dolby Surround", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Mode Dolby Surround", // Français "Mode Dolby Surround", // Français
@ -1574,7 +1574,7 @@ const tI18nPhrase Phrases[] = {
{ "Low Frequency Effects", // English { "Low Frequency Effects", // English
"Tieftöner Effekte", // Deutsch "Tieftöner Effekte", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Effetti bassa frequenza", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Effets de basses", // Français "Effets de basses", // Franç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ês "", // Português
"Normalisation des dialogues", // Français "Normalisation des dialogues", // Franç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ês "", // Português
"Principal (CM)", // Français "Principal (CM)", // Franç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ês "", // Português
"Musique et effets (ME)", // Français "Musique et effets (ME)", // Franç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ês "", // Português
"Malvoyants (VI)", // Français "Malvoyants (VI)", // Français
@ -1684,7 +1684,7 @@ const tI18nPhrase Phrases[] = {
{ "Hearing Impaired (HI)", // English { "Hearing Impaired (HI)", // English
"Hörbehindert (HI)", // Deutsch "Hörbehindert (HI)", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Suono deteriorato (HI)", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Malentendants (HI)", // Français "Malentendants (HI)", // Franç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ês "", // Português
"Dialogue (D)", // Français "Dialogue (D)", // Franç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ês "", // Português
"Commentaires (C)", // Français "Commentaires (C)", // Franç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ês "", // Português
"Urgence (E)", // Français "Urgence (E)", // Français
@ -1772,7 +1772,7 @@ const tI18nPhrase Phrases[] = {
{ "Voice Over (VO)", // English { "Voice Over (VO)", // English
"Überlagerte Stimme (VO)", // Deutsch "Überlagerte Stimme (VO)", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Voce off (VO)", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Voix off (VO)", // Français "Voix off (VO)", // Français
@ -1794,7 +1794,7 @@ const tI18nPhrase Phrases[] = {
{ "Karaoke", // English { "Karaoke", // English
"Karaoke", // Deutsch "Karaoke", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Karaoke", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Karaoke", // Français "Karaoke", // Franç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ês "", // Português
"Can. 1", // Français "Can. 1", // Franç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ês "", // Português
"Can. 2", // Français "Can. 2", // Franç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ês "", // Português
"Centre", // Français "Centre", // Franç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ês "", // Português
"Gauche", // Français "Gauche", // Franç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ês "", // Português
"Droite", // Français "Droite", // Franç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ês "", // Português
"Surround", // Français "Surround", // Franç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ês "", // Português
"Surround gauche", // Français "Surround gauche", // Franç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ês "", // Português
"Surround droit", // Français "Surround droit", // Franç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ês "", // Português
"Système CA", // Français "Système CA", // Français
@ -2014,7 +2014,7 @@ const tI18nPhrase Phrases[] = {
{ "Fixed", // English { "Fixed", // English
"Fest", // Deutsch "Fest", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Fisso", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Fixe", // Français "Fixe", // Français
@ -2036,7 +2036,7 @@ const tI18nPhrase Phrases[] = {
{ "Analog", // English { "Analog", // English
"Analog", // Deutsch "Analog", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Analogico", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Analogique", // Français "Analogique", // Franç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ês "", // Português
"Free To Air", // Français "Free To Air", // Franç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ês "", // Português
"SECA/Mediaguard", // Français "SECA/Mediaguard", // Français
@ -2102,7 +2102,7 @@ const tI18nPhrase Phrases[] = {
{ "Viaccess", // English { "Viaccess", // English
"Viaccess", // Deutsch "Viaccess", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Viaccess", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Viaccess", // Français "Viaccess", // Français
@ -2124,7 +2124,7 @@ const tI18nPhrase Phrases[] = {
{ "Irdeto", // English { "Irdeto", // English
"Irdeto", // Deutsch "Irdeto", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Irdeto", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Irdeto", // Français "Irdeto", // Franç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ês "", // Português
"NDS/Videoguard", // Français "NDS/Videoguard", // Français
@ -2168,7 +2168,7 @@ const tI18nPhrase Phrases[] = {
{ "Conax", // English { "Conax", // English
"Conax", // Deutsch "Conax", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Conax", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"Conax", // Français "Conax", // Français
@ -2190,7 +2190,7 @@ const tI18nPhrase Phrases[] = {
{ "CryptoWorks", // English { "CryptoWorks", // English
"CryptoWorks", // Deutsch "CryptoWorks", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "CryptoWorks", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"CryptoWorks", // Français "CryptoWorks", // Français
@ -2212,7 +2212,7 @@ const tI18nPhrase Phrases[] = {
{ "PowerVu", // English { "PowerVu", // English
"PowerVu", // Deutsch "PowerVu", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "PowerVu", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"PowerVu", // Français "PowerVu", // Français
@ -2234,7 +2234,7 @@ const tI18nPhrase Phrases[] = {
{ "BetaCrypt", // English { "BetaCrypt", // English
"BetaCrypt", // Deutsch "BetaCrypt", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "BetaCrypt", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"BetaCrypt", // Français "BetaCrypt", // Français
@ -2256,7 +2256,7 @@ const tI18nPhrase Phrases[] = {
{ "NagraVision", // English { "NagraVision", // English
"NagraVision", // Deutsch "NagraVision", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "NagraVision", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"NagraVision", // Français "NagraVision", // Français
@ -2278,7 +2278,7 @@ const tI18nPhrase Phrases[] = {
{ "SkyCrypt", // English { "SkyCrypt", // English
"SkyCrypt", // Deutsch "SkyCrypt", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "SkyCrypt", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"SkyCrypt", // Français "SkyCrypt", // Franç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ês "", // Português
"", // Français "", // Franç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ês "", // Português
"", // Français "", // Franç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ês "", // Português
"", // Français "", // Français
@ -2366,7 +2366,7 @@ const tI18nPhrase Phrases[] = {
{ "Femon not available while replaying", // English { "Femon not available while replaying", // English
"", // Deutsch "", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "Femon non disponibile durante la riproduzione", // Italiano
"", // Nederlands "", // Nederlands
"", // Português "", // Português
"", // Français "", // Français

View File

@ -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;

View File

@ -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;

View File

@ -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);