1
0
mirror of https://github.com/rofafor/vdr-plugin-femon.git synced 2023-10-10 11:36:53 +00:00

Compare commits

..

5 Commits

Author SHA1 Message Date
Rolf Ahrenberg
6f9961f499 Updated for vdr-1.3.18.
Added DEBUG mode (make DEBUG=1 plugins).
OSD height is now user configurable.
Added audio channel selection into Yellow key.
2005-01-15 04:20:00 +02:00
Rolf Ahrenberg
c454189adf Updated for vdr-1.3.17.
Fixed receiver related crash (Thanks to Marco Schluessler).
2004-11-28 04:20:00 +02:00
Rolf Ahrenberg
5339f71b33 Yet Another Minor Release.
Integrated the CA system names patch: "Setup / Show CA System".
2004-09-11 04:20:00 +03:00
Rolf Ahrenberg
8e53fa8521 Fixed OSDSTATUSWIN_XC define.
Added preliminary NTSC support (make NTSC_SYSTEM=1 plugins).
Fixed "Setup/OSD/Use Small Fonts" bug (Thanks to Winni for reporting this one).
Added patches directory: CA system names by Lauri Tischler.
2004-08-18 04:20:00 +03:00
Rolf Ahrenberg
9514ed5387 Added some new symbols and beautified the old ones.
Added audio track selection feature.
Added preliminary device switching feature (disabled at the moment).
2004-06-24 04:20:00 +03:00
30 changed files with 1366 additions and 262 deletions

41
HISTORY
View File

@@ -1,5 +1,6 @@
===================================
VDR Plugin 'femon' Revision History VDR Plugin 'femon' Revision History
----------------------------------- ===================================
2004-02-15: Version 0.0.1 2004-02-15: Version 0.0.1
@@ -58,7 +59,13 @@ VDR Plugin 'femon' Revision History
- Backported the "AC3 Stream Information" feature from version 0.1.3. - Backported the "AC3 Stream Information" feature from version 0.1.3.
------------------------- 2004-09-11: Version 0.0.7
- Backported changes and fixes from version 0.1.6.
===================================
VDR Plugin 'femon' Revision History
===================================
2004-05-18: Version 0.1.0 2004-05-18: Version 0.1.0
@@ -81,3 +88,33 @@ VDR Plugin 'femon' Revision History
2004-06-11: Version 0.1.3 2004-06-11: Version 0.1.3
- Added "AC-3 Stream Information" display mode (Thanks to Lothar Englisch). - Added "AC-3 Stream Information" display mode (Thanks to Lothar Englisch).
2004-06-24: Version 0.1.4
- Added some new symbols and beautified the old ones.
- Added audio track selection feature.
- Added preliminary device switching feature (disabled at the moment).
2004-08-18: Version 0.1.5
- Fixed OSDSTATUSWIN_XC define.
- Added preliminary NTSC support (make NTSC_SYSTEM=1 plugins).
- Fixed "Setup/OSD/Use Small Fonts" bug (Thanks to Winni for reporting this one).
- Added patches directory: CA system names by Lauri Tischler.
2004-09-11: Version 0.1.6
- Yet Another Minor Release.
- Integrated the CA system names patch: "Setup / Show CA System".
2004-11-28: Version 0.1.7
- Updated for vdr-1.3.17.
- Fixed receiver related crash (Thanks to Marco Schluessler).
2005-01-15: Version 0.7.7
- Updated for vdr-1.3.18.
- Added DEBUG mode (make DEBUG=1 plugins).
- OSD height is now user configurable.
- Added audio channel selection into Yellow key.

View File

@@ -11,12 +11,12 @@ 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).c | awk '{ print $$6 }' | sed -e 's/[";]//g') VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).h | awk '{ print $$6 }' | sed -e 's/[";]//g')
### The C++ compiler and options: ### The C++ compiler and options:
CXX ?= g++ CXX ?= g++
CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -fPIC
### The directory environment: ### The directory environment:
@@ -44,6 +44,10 @@ INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
ifdef NTSC_SYSTEM
DEFINES += -DNTSC_SYSTEM
endif
### The object files (add further files here): ### The object files (add further files here):
OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o

40
README
View File

@@ -18,7 +18,6 @@ DVB Frontend Status Monitor is a plugin that displays some signal information
parameters of the current tuned channel on OSD. You can zap through all your parameters of the current tuned channel on OSD. You can zap through all your
channels and the plugin should be monitoring always the right frontend. The channels and the plugin should be monitoring always the right frontend. The
transponder and stream information are also available in advanced display modes. transponder and stream information are also available in advanced display modes.
User can switch between different display modes by pressing 'OK' key.
The plugin is based on a neat console frontend status monitor application The plugin is based on a neat console frontend status monitor application
called 'femon' by Johannes Stezenbach (see DVB-apps/szap/femon.c for further called 'femon' by Johannes Stezenbach (see DVB-apps/szap/femon.c for further
@@ -31,8 +30,8 @@ Metzler Brothers.
Terminology: Terminology:
-------------------------------------------------------------- --------------------------------------------------------------
|## Channel Name ############################# DD 16:9 PAL ##| |## Channel Name ########################## [AR][VF][A/DD][D]|
|[=====Signal Strength in % =============|=================]| |[=====Signal Strength in % ==============|=================]|
|[=====Signal-to-Noise Ratio in % ========|=================]| |[=====Signal-to-Noise Ratio in % ========|=================]|
| STR: #0000 (0%) BER: #00000000 Video: 0 Mbit/s | | STR: #0000 (0%) BER: #00000000 Video: 0 Mbit/s |
| SNR: #0000 (0%) UNC: #00000000 Audio: 0 kbit/s | | SNR: #0000 (0%) UNC: #00000000 Audio: 0 kbit/s |
@@ -44,7 +43,7 @@ SNR - Signal-to-noise ratio
BER - Bit error rate BER - Bit error rate
UNC - Uncorrected blocks UNC - Uncorrected blocks
Video - Calculated video bitrate in Mbit/s Video - Calculated video bitrate in Mbit/s
Audio - Calculated audio / AC-3 bitrate in kbit/s (only first PID) Audio - Calculated audio / AC-3 bitrate in kbit/s
LOCK - Everything's working... LOCK - Everything's working...
SIGNAL - Found something above the noise level SIGNAL - Found something above the noise level
@@ -52,22 +51,45 @@ CARRIER - Found a DVB signal
VITERBI - FEC (forward error correction) is stable VITERBI - FEC (forward error correction) is stable
SYNC - Found sync bytes SYNC - Found sync bytes
AR - Aspect Ratio: 1:1/4:3/16:9/2.21:1 (optional)
VF - Video format: PAL/NTSC (optional)
A/DD - Audio (0..5) / AC-3 track (optional)
D - Device number: 0..3 (optional)
Controls:
ChanUp/ChanDn - Switch channel up/down
Up/Down - Switch channel up/down
0-9 - Select channel
Ok - Switch between display modes: basic, transponder, stream, AC-3
Green - Select next audio track
Yellow - Select audio channel: stereo, mono left, mono right
Back - Exit plugin
(Left/Right - Switch to next/previous device that provides the current channel)
Installation: Installation:
cd /put/your/path/here/VDR/PLUGINS/src cd /put/your/path/here/VDR/PLUGINS/src
tar -xzf /put/your/path/here/vdr-femon-X.Y.Z.tar.gz tar -xzf /put/your/path/here/vdr-femon-X.Y.Z.tgz
ln -s femon-X.Y.Z femon ln -s femon-X.Y.Z femon
cd /put/your/path/here/VDR cd /put/your/path/here/VDR
make make
make plugins make plugins
./vdr -Pfemon ./vdr -P femon
Notes: Notes:
- The plugin supports only those DVB cards with _one_ frontend (do any cards - The plugin supports only those DVB cards with _one_ frontend (do any cards
with multiple frontends even exist?), because I haven't yet figured howto do with multiple frontends even exist?), because I haven't yet figured howto do
it without patching the VDR core. it without patching the VDR core.
- Sometimes (read always) ttxtsubs plugin messes up the OSD - user should disable
ttxtsubs, but closing and reopening the femon plugin might help temporarily as
well. Btw., this same thing happens with OSDTeletext plugin too :)
- Disable the stream analyze to speed up heavy zapping sessions. - Disable the stream analyze to speed up heavy zapping sessions.
- The signal strength and signal-to-noise ratio values are comparable only
between the same brand/model frontends. Due to the lack of proper frontend
specifications those values cannot be calculated into any real units.
- If the OSD isn't visible, you've configured the OSD height too big or too
small. Please, try to adjust the variable on the setup page before writing
any bug reports.
- There's a shrinked default OSD height for NTSC users: make NTSC_SYSTEM=1
- The device switching feature is still non-functional.
"Femon - A real womon who lives according to her natural feminine inclinations."

10
femon.c
View File

@@ -12,7 +12,7 @@
#include "femonosd.h" #include "femonosd.h"
#include "femon.h" #include "femon.h"
#if VDRVERSNUM < 10307 #if VDRVERSNUM && VDRVERSNUM < 10318
#error "You don't exist! Go away!" #error "You don't exist! Go away!"
#endif #endif
@@ -71,6 +71,8 @@ bool cPluginFemon::SetupParse(const char *Name, const char *Value)
else if (!strcasecmp(Name, "SyslogOutput")) femonConfig.syslogoutput = atoi(Value); else if (!strcasecmp(Name, "SyslogOutput")) femonConfig.syslogoutput = atoi(Value);
else if (!strcasecmp(Name, "DisplayMode")) femonConfig.displaymode = atoi(Value); else if (!strcasecmp(Name, "DisplayMode")) femonConfig.displaymode = atoi(Value);
else if (!strcasecmp(Name, "Position")) femonConfig.position = atoi(Value); else if (!strcasecmp(Name, "Position")) femonConfig.position = atoi(Value);
else if (!strcasecmp(Name, "OSDHeight")) femonConfig.osdheight = atoi(Value);
else if (!strcasecmp(Name, "ShowCASystem")) femonConfig.showcasystem = atoi(Value);
else if (!strcasecmp(Name, "RedLimit")) femonConfig.redlimit = atoi(Value); else if (!strcasecmp(Name, "RedLimit")) femonConfig.redlimit = atoi(Value);
else if (!strcasecmp(Name, "GreenLimit")) femonConfig.greenlimit = atoi(Value); else if (!strcasecmp(Name, "GreenLimit")) femonConfig.greenlimit = atoi(Value);
else if (!strcasecmp(Name, "UpdateInterval")) femonConfig.updateinterval = atoi(Value); else if (!strcasecmp(Name, "UpdateInterval")) femonConfig.updateinterval = atoi(Value);
@@ -101,6 +103,8 @@ void cMenuFemonSetup::Setup(void)
Add(new cMenuEditBoolItem( tr("Use Syslog Output"), &femonConfig.syslogoutput, tr("no"), tr("yes"))); Add(new cMenuEditBoolItem( tr("Use Syslog Output"), &femonConfig.syslogoutput, tr("no"), tr("yes")));
Add(new cMenuEditStraItem( tr("Default Display Mode"), &femonConfig.displaymode, modeMaxNumber, dispmodes)); Add(new cMenuEditStraItem( tr("Default Display Mode"), &femonConfig.displaymode, modeMaxNumber, dispmodes));
Add(new cMenuEditBoolItem( tr("Position"), &femonConfig.position, tr("bottom"), tr("top"))); Add(new cMenuEditBoolItem( tr("Position"), &femonConfig.position, tr("bottom"), tr("top")));
Add(new cMenuEditIntItem( tr("Height"), &femonConfig.osdheight, 400, 500));
Add(new cMenuEditBoolItem( tr("Show CA System"), &femonConfig.showcasystem, tr("no"), tr("yes")));
Add(new cMenuEditIntItem( tr("Red Limit [%]"), &femonConfig.redlimit, 1, 50)); Add(new cMenuEditIntItem( tr("Red Limit [%]"), &femonConfig.redlimit, 1, 50));
Add(new cMenuEditIntItem( tr("Green Limit [%]"), &femonConfig.greenlimit, 51, 100)); Add(new cMenuEditIntItem( tr("Green Limit [%]"), &femonConfig.greenlimit, 51, 100));
Add(new cMenuEditIntItem( tr("OSD Update Interval [0.1s]"), &femonConfig.updateinterval, 1, 100)); Add(new cMenuEditIntItem( tr("OSD Update Interval [0.1s]"), &femonConfig.updateinterval, 1, 100));
@@ -116,8 +120,10 @@ void cMenuFemonSetup::Store(void)
{ {
SetupStore("HideMenu", femonConfig.hidemenu); SetupStore("HideMenu", femonConfig.hidemenu);
SetupStore("SyslogOutput", femonConfig.syslogoutput); SetupStore("SyslogOutput", femonConfig.syslogoutput);
SetupStore("Position", femonConfig.position);
SetupStore("DisplayMode", femonConfig.displaymode); SetupStore("DisplayMode", femonConfig.displaymode);
SetupStore("Position", femonConfig.position);
SetupStore("OSDHeight", femonConfig.osdheight);
SetupStore("ShowCASystem", femonConfig.showcasystem);
SetupStore("RedLimit", femonConfig.redlimit); SetupStore("RedLimit", femonConfig.redlimit);
SetupStore("GreenLimit", femonConfig.greenlimit); SetupStore("GreenLimit", femonConfig.greenlimit);
SetupStore("UpdateInterval", femonConfig.updateinterval); SetupStore("UpdateInterval", femonConfig.updateinterval);

View File

@@ -11,7 +11,7 @@
#include <vdr/plugin.h> #include <vdr/plugin.h>
static const char *VERSION = "0.1.3"; static const char *VERSION = "0.7.7";
static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)"; static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)";
static const char *MAINMENUENTRY = "Signal Information"; static const char *MAINMENUENTRY = "Signal Information";

View File

@@ -21,4 +21,10 @@ cFemonConfig::cFemonConfig(void)
analyzestream = 1; analyzestream = 1;
calcinterval = 20; calcinterval = 20;
syslogoutput = 0; syslogoutput = 0;
showcasystem = 0;
#ifdef NTSC_SYSTEM
osdheight = 420;
#else
osdheight = 480;
#endif
} }

View File

@@ -9,6 +9,12 @@
#ifndef __FEMONCFG_H #ifndef __FEMONCFG_H
#define __FEMONCFG_H #define __FEMONCFG_H
#ifdef DEBUG
#define debug(x) (x);
#else
#define debug(x) ;
#endif
enum dispModes { enum dispModes {
modeBasic, modeBasic,
modeTransponder, modeTransponder,
@@ -30,6 +36,8 @@ public:
int analyzestream; int analyzestream;
int calcinterval; int calcinterval;
int syslogoutput; int syslogoutput;
int showcasystem;
int osdheight;
}; };
extern cFemonConfig femonConfig; extern cFemonConfig femonConfig;

View File

@@ -27,6 +27,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Signal Information", // English { "Signal Information", // English
"Signalinformationen", // Deutsch "Signalinformationen", // Deutsch
@@ -46,6 +48,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Position", // English { "Position", // English
"Position", // Deutsch "Position", // Deutsch
@@ -65,6 +69,29 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
},
{ "Height", // English
"H<EFBFBD>he", // Deutsch
"", // Slovenski
"Altezza", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"Korkeus", // suomi
"", // Polski
"", // Espa<70>ol
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek)
"", // Svenska
"", // Romaneste
"", // Magyar
"", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Default Display Mode", // English { "Default Display Mode", // English
"Standard Anzeigemodus", // Deutsch "Standard Anzeigemodus", // Deutsch
@@ -84,6 +111,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "basic", // English { "basic", // English
"Standard", // Deutsch "Standard", // Deutsch
@@ -103,6 +132,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "transponder", // English { "transponder", // English
"Transponder", // Deutsch "Transponder", // Deutsch
@@ -122,6 +153,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "stream", // English { "stream", // English
"Stream", // Deutsch "Stream", // Deutsch
@@ -141,6 +174,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Hide Mainmenu Entry", // English { "Hide Mainmenu Entry", // English
"Hauptmen<EFBFBD>eintrag verstecken", // Deutsch "Hauptmen<EFBFBD>eintrag verstecken", // Deutsch
@@ -160,6 +195,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "OSD Update Interval [0.1s]", // English { "OSD Update Interval [0.1s]", // English
"OSD Updateintervall [0.1s]", // Deutsch "OSD Updateintervall [0.1s]", // Deutsch
@@ -179,6 +216,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (0,1 <20><><EFBFBD>)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (0,1 <20><><EFBFBD>)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Analyze Stream", // English { "Analyze Stream", // English
"Stream analysieren", // Deutsch "Stream analysieren", // Deutsch
@@ -198,6 +237,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Calculation Interval [0.1s]", // English { "Calculation Interval [0.1s]", // English
"Berechnungsintervall [0.1s]", // Deutsch "Berechnungsintervall [0.1s]", // Deutsch
@@ -217,6 +258,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (0,1 <20><><EFBFBD>)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (0,1 <20><><EFBFBD>)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Red Limit [%]", // English { "Red Limit [%]", // English
"Grenze Rot [%]", // Deutsch "Grenze Rot [%]", // Deutsch
@@ -236,6 +279,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> (%)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> (%)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Green Limit [%]", // English { "Green Limit [%]", // English
"Grenze Gr<47>n [%]", // Deutsch "Grenze Gr<47>n [%]", // Deutsch
@@ -255,6 +300,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> (%)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> (%)", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Transponder Information", // English { "Transponder Information", // English
"Transponderinformation", // Deutsch "Transponderinformation", // Deutsch
@@ -274,6 +321,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Satellite Card", // English { "Satellite Card", // English
"Satellitenkarte", // Deutsch "Satellitenkarte", // Deutsch
@@ -293,6 +342,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Cable Card", // English { "Cable Card", // English
"Kabelkarte", // Deutsch "Kabelkarte", // Deutsch
@@ -312,6 +363,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Terrestial Card", // English { "Terrestial Card", // English
"Terrestrische Karte", // Deutsch "Terrestrische Karte", // Deutsch
@@ -331,6 +384,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Use Syslog Output", // English { "Use Syslog Output", // English
"Benutze syslog Ausgabe", // Deutsch "Benutze syslog Ausgabe", // Deutsch
@@ -350,6 +405,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> syslog", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> syslog", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "LOCK", // English { "LOCK", // English
"LOCK", // Deutsch "LOCK", // Deutsch
@@ -369,6 +426,8 @@ const tI18nPhrase Phrases[] = {
"LOCK", // Catal<61> "LOCK", // Catal<61>
"<EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"LOCK", // Hrvatski (Croatian) "LOCK", // Hrvatski (Croatian)
"LOCK", // Eesti
"LOCK", // Dansk
}, },
{ "SIGNAL", // English { "SIGNAL", // English
"SIGNAL", // Deutsch "SIGNAL", // Deutsch
@@ -388,6 +447,8 @@ const tI18nPhrase Phrases[] = {
"SIGNAL", // Catal<61> "SIGNAL", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"SIGNAL", // Hrvatski (Croatian) "SIGNAL", // Hrvatski (Croatian)
"SIGNAL", // Eesti
"SIGNAL", // Dansk
}, },
{ "CARRIER", // English { "CARRIER", // English
"CARRIER", // Deutsch "CARRIER", // Deutsch
@@ -407,6 +468,8 @@ const tI18nPhrase Phrases[] = {
"CARRIER", // Catal<61> "CARRIER", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"CARRIER", // Hrvatski (Croatian) "CARRIER", // Hrvatski (Croatian)
"CARRIER", // Eesti
"CARRIER", // Dansk
}, },
{ "VITERBI", // English { "VITERBI", // English
"VITERBI", // Deutsch "VITERBI", // Deutsch
@@ -426,6 +489,8 @@ const tI18nPhrase Phrases[] = {
"VITERBI", // Catal<61> "VITERBI", // Catal<61>
"<EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"VITERBI", // Hrvatski (Croatian) "VITERBI", // Hrvatski (Croatian)
"VITERBI", // Eesti
"VITERBI", // Dansk
}, },
{ "SYNC", // English { "SYNC", // English
"SYNC", // Deutsch "SYNC", // Deutsch
@@ -445,6 +510,8 @@ const tI18nPhrase Phrases[] = {
"SYNC", // Catal<61> "SYNC", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"SYNC", // Hrvatski (Croatian) "SYNC", // Hrvatski (Croatian)
"SYNC", // Eesti
"SYNC", // Dansk
}, },
{ "Audio", // English { "Audio", // English
"Audio", // Deutsch "Audio", // Deutsch
@@ -464,6 +531,8 @@ const tI18nPhrase Phrases[] = {
"Audio", // Catal<61> "Audio", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Audio", // Hrvatski (Croatian) "Audio", // Hrvatski (Croatian)
"Audio", // Eesti
"Audio", // Dansk
}, },
{ "Video", // English { "Video", // English
"Video", // Deutsch "Video", // Deutsch
@@ -483,6 +552,8 @@ const tI18nPhrase Phrases[] = {
"Video", // Catal<61> "Video", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Video", // Hrvatski (Croatian) "Video", // Hrvatski (Croatian)
"Video", // Eesti
"Video", // Dansk
}, },
{ "Auto", // English { "Auto", // English
"Auto", // Deutsch "Auto", // Deutsch
@@ -502,6 +573,8 @@ const tI18nPhrase Phrases[] = {
"Auto", // Catal<61> "Auto", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Auto", // Hrvatski (Croatian) "Auto", // Hrvatski (Croatian)
"Auto", // Eesti
"Auto", // Dansk
}, },
{ "None", // English { "None", // English
"None", // Deutsch "None", // Deutsch
@@ -521,6 +594,8 @@ const tI18nPhrase Phrases[] = {
"None", // Catal<61> "None", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"None", // Hrvatski (Croatian) "None", // Hrvatski (Croatian)
"None", // Eesti
"None", // Dansk
}, },
{ "Off", // English { "Off", // English
"Off", // Deutsch "Off", // Deutsch
@@ -540,6 +615,8 @@ const tI18nPhrase Phrases[] = {
"Off", // Catal<61> "Off", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Off", // Hrvatski (Croatian) "Off", // Hrvatski (Croatian)
"Off", // Eesti
"Off", // Dansk
}, },
{ "On", // English { "On", // English
"On", // Deutsch "On", // Deutsch
@@ -559,6 +636,8 @@ const tI18nPhrase Phrases[] = {
"On", // Catal<61> "On", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"On", // Hrvatski (Croatian) "On", // Hrvatski (Croatian)
"On", // Eesti
"On", // Dansk
}, },
{ "MHz", // English { "MHz", // English
"MHz", // Deutsch "MHz", // Deutsch
@@ -578,6 +657,8 @@ const tI18nPhrase Phrases[] = {
"MHz", // Catal<61> "MHz", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"MHz", // Hrvatski (Croatian) "MHz", // Hrvatski (Croatian)
"MHz", // Eesti
"MHz", // Dansk
}, },
{ "Mbit/s", // English { "Mbit/s", // English
"Mbit/s", // Deutsch "Mbit/s", // Deutsch
@@ -597,6 +678,8 @@ const tI18nPhrase Phrases[] = {
"Mbit/s", // Catal<61> "Mbit/s", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Mbit/s", // Hrvatski (Croatian) "Mbit/s", // Hrvatski (Croatian)
"Mbit/s", // Eesti
"Mbit/s", // Dansk
}, },
{ "kbit/s", // English { "kbit/s", // English
"kbit/s", // Deutsch "kbit/s", // Deutsch
@@ -616,6 +699,8 @@ const tI18nPhrase Phrases[] = {
"kbit/s", // Catal<61> "kbit/s", // Catal<61>
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"kbit/s", // Hrvatski (Croatian) "kbit/s", // Hrvatski (Croatian)
"kbit/s", // Eesti
"kbit/s", // Dansk
}, },
{ "Stream Information", // English { "Stream Information", // English
"Streaminformation", // Deutsch "Streaminformation", // Deutsch
@@ -635,6 +720,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "MPEG Layer", // English { "MPEG Layer", // English
"MPEG Layer", // Deutsch "MPEG Layer", // Deutsch
@@ -654,6 +741,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Video Stream", // English { "Video Stream", // English
"Video Stream", // Deutsch "Video Stream", // Deutsch
@@ -673,6 +762,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Bitrate", // English { "Bitrate", // English
"Bitrate", // Deutsch "Bitrate", // Deutsch
@@ -692,6 +783,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Frame Rate", // English { "Frame Rate", // English
"Bildrate", // Deutsch "Bildrate", // Deutsch
@@ -711,6 +804,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Hz", // English { "Hz", // English
"Hz", // Deutsch "Hz", // Deutsch
@@ -730,6 +825,8 @@ const tI18nPhrase Phrases[] = {
"Hz", // Catal<61> "Hz", // Catal<61>
"<EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Hz", // Hrvatski (Croatian) "Hz", // Hrvatski (Croatian)
"Hz", // Eesti
"Hz", // Dansk
}, },
{ "Aspect Ratio", // English { "Aspect Ratio", // English
"Seitenverh<EFBFBD>ltnis", // Deutsch "Seitenverh<EFBFBD>ltnis", // Deutsch
@@ -749,6 +846,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "reserved", // English { "reserved", // English
"belegt", // Deutsch "belegt", // Deutsch
@@ -768,6 +867,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "free", // English { "free", // English
"frei", // Deutsch "frei", // Deutsch
@@ -787,6 +888,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Video Format", // English { "Video Format", // English
"Bildformat", // Deutsch "Bildformat", // Deutsch
@@ -806,6 +909,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "PAL", // English { "PAL", // English
"PAL", // Deutsch "PAL", // Deutsch
@@ -825,6 +930,8 @@ const tI18nPhrase Phrases[] = {
"PAL", // Catal<61> "PAL", // Catal<61>
"PAL", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "PAL", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"PAL", // Hrvatski (Croatian) "PAL", // Hrvatski (Croatian)
"PAL", // Eesti
"PAL", // Dansk
}, },
{ "NTSC", // English { "NTSC", // English
"NTSC", // Deutsch "NTSC", // Deutsch
@@ -844,6 +951,8 @@ const tI18nPhrase Phrases[] = {
"NTSC", // Catal<61> "NTSC", // Catal<61>
"NTSC", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "NTSC", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"NTSC", // Hrvatski (Croatian) "NTSC", // Hrvatski (Croatian)
"NTSC", // Eesti
"NTSC", // Dansk
}, },
{ "unknown", // English { "unknown", // English
"unbekannt", // Deutsch "unbekannt", // Deutsch
@@ -863,6 +972,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Resolution", // English { "Resolution", // English
"Aufl<EFBFBD>sung", // Deutsch "Aufl<EFBFBD>sung", // Deutsch
@@ -882,6 +993,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Audio Stream", // English { "Audio Stream", // English
"Audio Stream", // Deutsch "Audio Stream", // Deutsch
@@ -901,6 +1014,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Sampling Frequency", // English { "Sampling Frequency", // English
"Abtastrate", // Deutsch "Abtastrate", // Deutsch
@@ -920,6 +1035,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "kHz", // English { "kHz", // English
"kHz", // Deutsch "kHz", // Deutsch
@@ -939,6 +1056,50 @@ const tI18nPhrase Phrases[] = {
"kHz", // Catal<61> "kHz", // Catal<61>
"ڳ<EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "ڳ<EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"kHz", // Hrvatski (Croatian) "kHz", // Hrvatski (Croatian)
"kHz", // Eesti
"kHz", // Dansk
},
{ "Apid", // English
"Apid", // Deutsch
"Apid", // Slovenski
"Apid", // Italiano
"Apid", // Nederlands
"Apid", // Portugu<67>s
"Apid", // Fran<61>ais
"Apid", // Norsk
"<EFBFBD><EFBFBD>ni PID", // suomi
"Apid", // Polski
"Apid", // Espa<70>ol
"Apid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek)
"Apid", // Svenska
"Apid", // Romaneste
"Apid", // Magyar
"Apid", // Catal<61>
"Apid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Apid", // Hrvatski (Croatian)
"Apid", // Eesti
"Apid", // Dansk
},
{ "Dpid", // English
"Dpid", // Deutsch
"Dpid", // Slovenski
"Dpid", // Italiano
"Dpid", // Nederlands
"Dpid", // Portugu<67>s
"Dpid", // Fran<61>ais
"Dpid", // Norsk
"Dolby PID", // suomi
"Dpid", // Polski
"Dpid", // Espa<70>ol
"Dpid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek)
"Dpid", // Svenska
"Dpid", // Romaneste
"Dpid", // Magyar
"Dpid", // Catal<61>
"Dpid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Dpid", // Hrvatski (Croatian)
"Dpid", // Eesti
"Dpid", // Dansk
}, },
{ "Nid", // English { "Nid", // English
"Nid", // Deutsch "Nid", // Deutsch
@@ -958,6 +1119,8 @@ const tI18nPhrase Phrases[] = {
"Nid", // Catal<61> "Nid", // Catal<61>
"Nid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "Nid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Nid", // Hrvatski (Croatian) "Nid", // Hrvatski (Croatian)
"Nid", // Eesti
"Nid", // Dansk
}, },
{ "Tid", // English { "Tid", // English
"Tid", // Deutsch "Tid", // Deutsch
@@ -977,6 +1140,8 @@ const tI18nPhrase Phrases[] = {
"Tid", // Catal<61> "Tid", // Catal<61>
"Tid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "Tid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Tid", // Hrvatski (Croatian) "Tid", // Hrvatski (Croatian)
"Tid", // Eesti
"Tid", // Dansk
}, },
{ "Rid", // English { "Rid", // English
"Rid", // Deutsch "Rid", // Deutsch
@@ -996,6 +1161,8 @@ const tI18nPhrase Phrases[] = {
"Rid", // Catal<61> "Rid", // Catal<61>
"Rid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "Rid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Rid", // Hrvatski (Croatian) "Rid", // Hrvatski (Croatian)
"Rid", // Eesti
"Rid", // Dansk
}, },
{ "dB", // English { "dB", // English
"dB", // Deutsch "dB", // Deutsch
@@ -1015,6 +1182,8 @@ const tI18nPhrase Phrases[] = {
"dB", // Catal<61> "dB", // Catal<61>
"dB", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "dB", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"dB", // Hrvatski (Croatian) "dB", // Hrvatski (Croatian)
"dB", // Eesti
"dB", // Dansk
}, },
{ "not indicated", // English { "not indicated", // English
"", // Deutsch "", // Deutsch
@@ -1034,6 +1203,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "AC-3", // English { "AC-3", // English
"AC-3", // Deutsch "AC-3", // Deutsch
@@ -1053,6 +1224,8 @@ const tI18nPhrase Phrases[] = {
"AC-3", // Catal<61> "AC-3", // Catal<61>
"AC-3", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "AC-3", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"AC-3", // Hrvatski (Croatian) "AC-3", // Hrvatski (Croatian)
"AC-3", // Eesti
"AC-3", // Dansk
}, },
{ "AC-3 Stream", // English { "AC-3 Stream", // English
"AC-3 Stream", // Deutsch "AC-3 Stream", // Deutsch
@@ -1072,6 +1245,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Frame Size", // English { "Frame Size", // English
"Frame Gr<47><72>e", // Deutsch "Frame Gr<47><72>e", // Deutsch
@@ -1091,6 +1266,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Bit Stream Mode", // English { "Bit Stream Mode", // English
"Bitstream Modus", // Deutsch "Bitstream Modus", // Deutsch
@@ -1110,6 +1287,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Audio Coding Mode", // English { "Audio Coding Mode", // English
"Audio Coding Modus", // Deutsch "Audio Coding Modus", // Deutsch
@@ -1129,6 +1308,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Center Mix Level", // English { "Center Mix Level", // English
"Center Mix Pegel", // Deutsch "Center Mix Pegel", // Deutsch
@@ -1148,6 +1329,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Surround Mix Level", // English { "Surround Mix Level", // English
"Surround Mix Pegel", // Deutsch "Surround Mix Pegel", // Deutsch
@@ -1167,6 +1350,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Dolby Surround Mode", // English { "Dolby Surround Mode", // English
"Dolby Surround Modus", // Deutsch "Dolby Surround Modus", // Deutsch
@@ -1186,6 +1371,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Low Frequency Effects", // English { "Low Frequency Effects", // English
"Tieft<EFBFBD>ner Effekte", // Deutsch "Tieft<EFBFBD>ner Effekte", // Deutsch
@@ -1205,6 +1392,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Dialogue Normalization", // English { "Dialogue Normalization", // English
"Dialog Normalisierung", // Deutsch "Dialog Normalisierung", // Deutsch
@@ -1224,6 +1413,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Complete Main (CM)", // English { "Complete Main (CM)", // English
"Complete Main (CM)", // Deutsch "Complete Main (CM)", // Deutsch
@@ -1243,6 +1434,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Music and Effects (ME)", // English { "Music and Effects (ME)", // English
"Musik und Effekte (ME)", // Deutsch "Musik und Effekte (ME)", // Deutsch
@@ -1262,6 +1455,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Visually Impaired (VI)", // English { "Visually Impaired (VI)", // English
"Sehbehindert (VI)", // Deutsch "Sehbehindert (VI)", // Deutsch
@@ -1281,6 +1476,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Hearing Impaired (HI)", // English { "Hearing Impaired (HI)", // English
"H<EFBFBD>rbehindert (HI)", // Deutsch "H<EFBFBD>rbehindert (HI)", // Deutsch
@@ -1300,6 +1497,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Dialogue (D)", // English { "Dialogue (D)", // English
"Dialog (D)", // Deutsch "Dialog (D)", // Deutsch
@@ -1319,6 +1518,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Commentary (C)", // English { "Commentary (C)", // English
"Kommentar (C)", // Deutsch "Kommentar (C)", // Deutsch
@@ -1338,6 +1539,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Emergency (E)", // English { "Emergency (E)", // English
"Notfall (E)", // Deutsch "Notfall (E)", // Deutsch
@@ -1357,6 +1560,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Voice Over (VO)", // English { "Voice Over (VO)", // English
"<EFBFBD>berlagerte Stimme (VO)", // Deutsch "<EFBFBD>berlagerte Stimme (VO)", // Deutsch
@@ -1376,6 +1581,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Karaoke", // English { "Karaoke", // English
"Karaoke", // Deutsch "Karaoke", // Deutsch
@@ -1395,6 +1602,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Ch1", // English "Channel 1" { "Ch1", // English "Channel 1"
"Kan1", // Deutsch "Kan1", // Deutsch
@@ -1414,6 +1623,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "Ch2", // English "Channel 2" { "Ch2", // English "Channel 2"
"Kan2", // Deutsch "Kan2", // Deutsch
@@ -1433,6 +1644,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "C", // English "Center" { "C", // English "Center"
"C", // Deutsch "C", // Deutsch
@@ -1452,6 +1665,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "L", // English "Left" { "L", // English "Left"
"L", // Deutsch "L", // Deutsch
@@ -1471,6 +1686,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "R", // English "Right" { "R", // English "Right"
"R", // Deutsch "R", // Deutsch
@@ -1490,6 +1707,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "S", // English "Surround" { "S", // English "Surround"
"S", // Deutsch "S", // Deutsch
@@ -1509,6 +1728,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "SL", // English "Surround Left" { "SL", // English "Surround Left"
"SL", // Deutsch "SL", // Deutsch
@@ -1528,6 +1749,8 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
}, },
{ "SR", // English "Surround Right" { "SR", // English "Surround Right"
"SR", // Deutsch "SR", // Deutsch
@@ -1547,6 +1770,281 @@ const tI18nPhrase Phrases[] = {
"", // Catal<61> "", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) "", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
},
{ "Show CA System", // English
"CA System anzeigen", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"N<EFBFBD>yt<EFBFBD> salausj<73>rjestelm<6C>", // 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
},
{ "Fixed", // English
"Fest", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"kiinte<EFBFBD>", // 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
},
{ "Free to Air", // English
"Free to Air", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"salaamaton", // 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
},
{ "SECA/Mediaguard", // English
"SECA/Mediaguard", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"SECA/Mediaguard", // 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
},
{ "Viaccess", // English
"Viaccess", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"Viaccess", // 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
},
{ "Irdeto", // English
"Irdeto", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"Irdeto", // 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
},
{ "NDS/Videoguard", // English
"NDS/Videoguard", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"NDS/Videoguard", // 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
},
{ "Conax", // English
"Conax", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"Conax", // 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
},
{ "CryptoWorks", // English
"CryptoWorks", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"CryptoWorks", // 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
},
{ "PowerVu", // English
"PowerVu", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"PowerVu", // 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
},
{ "BetaCrypt", // English
"BetaCrypt", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"BetaCrypt", // 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
},
{ "NagraVision", // English
"NagraVision", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"NagraVision", // 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
},
{ "SkyCrypt", // English
"SkyCrypt", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"SkyCrypt", // 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
}, },
{ NULL } { NULL }
}; };

View File

@@ -12,6 +12,16 @@
#include "femonreceiver.h" #include "femonreceiver.h"
#include "femonosd.h" #include "femonosd.h"
#include "symbols/device.xpm"
#include "symbols/stereo.xpm"
#include "symbols/monoleft.xpm"
#include "symbols/monoright.xpm"
#include "symbols/zero.xpm"
#include "symbols/one.xpm"
#include "symbols/two.xpm"
#include "symbols/three.xpm"
#include "symbols/four.xpm"
#include "symbols/five.xpm"
#include "symbols/ar11.xpm" #include "symbols/ar11.xpm"
#include "symbols/ar169.xpm" #include "symbols/ar169.xpm"
#include "symbols/ar2211.xpm" #include "symbols/ar2211.xpm"
@@ -25,23 +35,31 @@
#define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d" #define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d"
#define CHANNELINPUT_TIMEOUT 1000 #define CHANNELINPUT_TIMEOUT 1000
#define SCREENWIDTH 720 // in pixels #define OSDHEIGHT femonConfig.osdheight // in pixels
#define SCREENHEIGHT 576 // in pixels #define OSDWIDTH 600 // in pixels
#define OSDWIDTH 600 // in pixels
#define OSDHEIGHT 480 // in pixels
#define OSDINFOHEIGHT (m_Font->Height() * 11) // in pixels (11 rows) #define OSDINFOHEIGHT (m_Font->Height() * 11) // in pixels (11 rows)
#define OSDSTATUSHEIGHT (m_Font->Height() * 6) // in pixels (6 rows) #define OSDSTATUSHEIGHT (m_Font->Height() * 6) // in pixels (6 rows)
#define OSDINFOWIN_Y(offset) (femonConfig.position ? (OSDHEIGHT - OSDINFOHEIGHT + offset) : offset) #define OSDINFOWIN_Y(offset) (femonConfig.position ? (OSDHEIGHT - OSDINFOHEIGHT + offset) : offset)
#define OSDINFOWIN_X(col) ((col == 4) ? 470 : (col == 3) ? 300 : (col==2) ? 180 : 15) #define OSDINFOWIN_X(col) ((col == 4) ? 455 : (col == 3) ? 305 : (col == 2) ? 155 : 15)
#define OSDSTATUSWIN_Y(offset) (femonConfig.position ? offset : (OSDHEIGHT - OSDSTATUSHEIGHT + offset)) #define OSDSTATUSWIN_Y(offset) (femonConfig.position ? offset : (OSDHEIGHT - OSDSTATUSHEIGHT + offset))
#define OSDSTATUSWIN_X(col) ((col == 7) ? 475 : (col == 6) ? 410 : (col == 5) ? 275 : (col == 4) ? 220 : (col == 3) ? 125 : (col==2) ? 70 : 15) #define OSDSTATUSWIN_X(col) ((col == 7) ? 475 : (col == 6) ? 410 : (col == 5) ? 275 : (col == 4) ? 220 : (col == 3) ? 125 : (col == 2) ? 70 : 15)
#define OSDSTATUSWIN_XC(col,txt) (((col - 1) * SCREENWIDTH / 6) + ((SCREENWIDTH / 6 - m_Font->Width(txt)) / 2)) #define OSDSTATUSWIN_XC(col,txt) (((col - 1) * OSDWIDTH / 5) + ((OSDWIDTH / 5 - m_Font->Width(txt)) / 2))
#define BARWIDTH(x) (OSDWIDTH * x / 100) #define BARWIDTH(x) (OSDWIDTH * x / 100)
#define SPACING 5 #define SPACING 5
#define clrBackground clrGray50 // this should be tied somehow into current theme #define clrBackground clrGray50 // this should be tied somehow into current theme
cBitmap cFemonOsd::bmDevice(device_xpm);
cBitmap cFemonOsd::bmStereo(stereo_xpm);
cBitmap cFemonOsd::bmMonoLeft(monoleft_xpm);
cBitmap cFemonOsd::bmMonoRight(monoright_xpm);
cBitmap cFemonOsd::bmZero(zero_xpm);
cBitmap cFemonOsd::bmOne(one_xpm);
cBitmap cFemonOsd::bmTwo(two_xpm);
cBitmap cFemonOsd::bmThree(three_xpm);
cBitmap cFemonOsd::bmFour(four_xpm);
cBitmap cFemonOsd::bmFive(five_xpm);
cBitmap cFemonOsd::bmAspectRatio_1_1(ar11_xpm); cBitmap cFemonOsd::bmAspectRatio_1_1(ar11_xpm);
cBitmap cFemonOsd::bmAspectRatio_16_9(ar169_xpm); cBitmap cFemonOsd::bmAspectRatio_16_9(ar169_xpm);
cBitmap cFemonOsd::bmAspectRatio_2_21_1(ar2211_xpm); cBitmap cFemonOsd::bmAspectRatio_2_21_1(ar2211_xpm);
@@ -55,26 +73,33 @@ cBitmap cFemonOsd::bmDD51(dolbydigital51_xpm);
cFemonOsd::cFemonOsd(void) cFemonOsd::cFemonOsd(void)
:cOsdObject(true), cThread("femon osd") :cOsdObject(true), cThread("femon osd")
{ {
//printf("cFemonOsd::cFemonOsd()\n"); debug(printf("cFemonOsd::cFemonOsd()\n"));
m_Osd = NULL; m_Osd = NULL;
m_Receiver = NULL; m_Receiver = NULL;
m_Frontend = -1; m_Frontend = -1;
m_Active = false; m_Active = false;
m_Number = 0; m_Number = 0;
m_OldNumber = 0; m_OldNumber = 0;
m_InputTime = 0;
m_Signal = 0; m_Signal = 0;
m_SNR = 0; m_SNR = 0;
m_BER = 0; m_BER = 0;
m_UNC = 0; m_UNC = 0;
m_DisplayMode = femonConfig.displaymode; m_DisplayMode = femonConfig.displaymode;
m_Font = cFont::GetFont(fontSml); m_InputTime.Set(0);
m_Mutex = new cMutex(); m_Mutex = new cMutex();
if (Setup.UseSmallFont == 0) {
// Dirty hack to force the small fonts...
Setup.UseSmallFont = 1;
m_Font = cFont::GetFont(fontSml);
Setup.UseSmallFont = 0;
}
else
m_Font = cFont::GetFont(fontSml);
} }
cFemonOsd::~cFemonOsd(void) cFemonOsd::~cFemonOsd(void)
{ {
//printf("cFemonOsd::~cFemonOsd()\n"); debug(printf("cFemonOsd::~cFemonOsd()\n"));
if (m_Active) { if (m_Active) {
m_Active = false; m_Active = false;
Cancel(3); Cancel(3);
@@ -88,22 +113,130 @@ cFemonOsd::~cFemonOsd(void)
void cFemonOsd::DrawStatusWindow(void) void cFemonOsd::DrawStatusWindow(void)
{ {
cMutexLock lock(m_Mutex); cMutexLock lock(m_Mutex);
//printf("cFemonOsd::DrawStatusWindow()\n"); debug(printf("cFemonOsd::DrawStatusWindow()\n"));
char buf[128]; char buf[128];
int snr = m_SNR / 655; int snr = m_SNR / 655;
int signal = m_Signal / 655; int signal = m_Signal / 655;
int offset = 0; int offset = 0;
int x = OSDWIDTH - SPACING; int x = OSDWIDTH;
int y = 0; int y = 0;
int value = 0;
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (m_Osd) { if (m_Osd) {
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(0), OSDWIDTH, OSDSTATUSWIN_Y(OSDSTATUSHEIGHT), clrBackground); m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(0), OSDWIDTH, OSDSTATUSWIN_Y(OSDSTATUSHEIGHT), clrBackground);
snprintf(buf, sizeof(buf), "%d%s %s", m_Number ? m_Number : channel->Number(), m_Number ? "-" : "", channel->Name()); snprintf(buf, sizeof(buf), "%d%s %s (%s)", m_Number ? m_Number : channel->Number(), m_Number ? "-" : "", channel->ShortName(true), channel->Provider());
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+m_Font->Height()-1), clrWhite); m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+m_Font->Height()-1), clrWhite);
m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrBlack, clrWhite, m_Font); m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrBlack, clrWhite, m_Font);
if (m_Receiver) { if (m_Receiver) {
int value = m_Receiver->VideoFormat(); value = cDevice::ActualDevice()->CardIndex();
if (value == 1) {
x -= bmOne.Width() + SPACING;
y = (m_Font->Height() - bmOne.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmOne, clrBlack, clrWhite);
}
else if (value == 2) {
x -= bmTwo.Width() + SPACING;
y = (m_Font->Height() - bmTwo.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmTwo, clrBlack, clrWhite);
}
else if (value == 3) {
x -= bmThree.Width() + SPACING;
y = (m_Font->Height() - bmThree.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmThree, clrBlack, clrWhite);
}
else {
x -= bmZero.Width() + SPACING;
y = (m_Font->Height() - bmZero.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmZero, clrBlack, clrWhite);
}
x -= bmDevice.Width();
y = (m_Font->Height() - bmDevice.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice, clrBlack, clrWhite);
if (IS_AUDIO_TRACK(cDevice::PrimaryDevice()->GetCurrentAudioTrack())) {
value = int(cDevice::PrimaryDevice()->GetCurrentAudioTrack() - ttAudioFirst);
if (value == 1) {
x -= bmOne.Width() + SPACING;
y = (m_Font->Height() - bmOne.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmOne, clrBlack, clrWhite);
}
else if (value == 2) {
x -= bmTwo.Width() + SPACING;
y = (m_Font->Height() - bmTwo.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmTwo, clrBlack, clrWhite);
}
else if (value == 3) {
x -= bmThree.Width() + SPACING;
y = (m_Font->Height() - bmThree.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmThree, clrBlack, clrWhite);
}
else if (value == 4) {
x -= bmFour.Width() + SPACING;
y = (m_Font->Height() - bmFour.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmFour, clrBlack, clrWhite);
}
else if (value == 5) {
x -= bmFive.Width() + SPACING;
y = (m_Font->Height() - bmFive.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmFive, clrBlack, clrWhite);
}
else {
x -= bmZero.Width() + SPACING;
y = (m_Font->Height() - bmZero.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmZero, clrBlack, clrWhite);
}
value = cDevice::PrimaryDevice()->GetAudioChannel();
if (value == 1) {
x -= bmMonoLeft.Width();
y = (m_Font->Height() - bmMonoLeft.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmMonoLeft, clrBlack, clrWhite);
}
else if (value == 2) {
x -= bmMonoRight.Width();
y = (m_Font->Height() - bmMonoRight.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmMonoRight, clrBlack, clrWhite);
}
else {
x -= bmStereo.Width();
y = (m_Font->Height() - bmStereo.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmStereo, clrBlack, clrWhite);
}
}
else if (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(cDevice::PrimaryDevice()->GetCurrentAudioTrack())) {
if (m_Receiver->AC3_5_1()) {
x -= bmDD51.Width() + SPACING;
y = (m_Font->Height() - bmDD51.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDD51, clrBlack, clrWhite);
}
else if (m_Receiver->AC3_2_0()) {
x -= bmDD20.Width() + SPACING;
y = (m_Font->Height() - bmDD20.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDD20, clrBlack, clrWhite);
}
else {
x -= bmDD.Width() + SPACING;
y = (m_Font->Height() - bmDD.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDD, clrBlack, clrWhite);
}
}
value = m_Receiver->VideoFormat();
if (value == VF_PAL) { if (value == VF_PAL) {
x -= bmPAL.Width() + SPACING; x -= bmPAL.Width() + SPACING;
y = (m_Font->Height() - bmPAL.Height()) / 2; y = (m_Font->Height() - bmPAL.Height()) / 2;
@@ -141,26 +274,6 @@ void cFemonOsd::DrawStatusWindow(void)
if (y < 0) y = 0; if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmAspectRatio_2_21_1, clrBlack, clrWhite); m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmAspectRatio_2_21_1, clrBlack, clrWhite);
} }
if (m_Receiver && m_Receiver->AC3Valid()) {
if (m_Receiver->AC3_5_1()) {
x -= bmDD51.Width() + SPACING;
y = (m_Font->Height() - bmDD51.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDD51, clrBlack, clrWhite);
}
else if (m_Receiver->AC3_2_0()) {
x -= bmDD20.Width() + SPACING;
y = (m_Font->Height() - bmDD20.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDD20, clrBlack, clrWhite);
}
else {
x -= bmDD.Width() + SPACING;
y = (m_Font->Height() - bmDD.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDD, clrBlack, clrWhite);
}
}
} }
offset += m_Font->Height(); offset += m_Font->Height();
if (signal > 0) { if (signal > 0) {
@@ -207,9 +320,9 @@ void cFemonOsd::DrawStatusWindow(void)
m_Osd->DrawText(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), "UNC:", clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), "UNC:", clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%08x", m_UNC); snprintf(buf, sizeof(buf), "%08x", m_UNC);
m_Osd->DrawText(OSDSTATUSWIN_X(5), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDSTATUSWIN_X(5), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%s:", (m_Receiver && m_Receiver->AC3Valid()) ? tr("AC-3") : tr("Audio")); snprintf(buf, sizeof(buf), "%s:", (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(cDevice::PrimaryDevice()->GetCurrentAudioTrack())) ? tr("AC-3") : tr("Audio"));
m_Osd->DrawText(OSDSTATUSWIN_X(6), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDSTATUSWIN_X(6), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
if (m_Receiver) snprintf(buf, sizeof(buf), "%.0f %s", m_Receiver->AC3Valid() ? m_Receiver->AC3Bitrate() : m_Receiver->AudioBitrate(), tr("kbit/s")); if (m_Receiver) snprintf(buf, sizeof(buf), "%.0f %s", (m_Receiver->AC3Valid() && IS_DOLBY_TRACK(cDevice::PrimaryDevice()->GetCurrentAudioTrack())) ? m_Receiver->AC3Bitrate() : m_Receiver->AudioBitrate(), tr("kbit/s"));
else snprintf(buf, sizeof(buf), "--- %s", tr("kbit/s")); else snprintf(buf, sizeof(buf), "--- %s", tr("kbit/s"));
m_Osd->DrawText(OSDSTATUSWIN_X(7), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDSTATUSWIN_X(7), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
@@ -225,7 +338,7 @@ void cFemonOsd::DrawStatusWindow(void)
void cFemonOsd::DrawInfoWindow(void) void cFemonOsd::DrawInfoWindow(void)
{ {
cMutexLock lock(m_Mutex); cMutexLock lock(m_Mutex);
//printf("cFemonOsd::DrawInfoWindow()\n"); debug(printf("cFemonOsd::DrawInfoWindow()\n"));
char buf[128]; char buf[128];
char buf2[20]; char buf2[20];
int offset = 0; int offset = 0;
@@ -246,19 +359,93 @@ void cFemonOsd::DrawInfoWindow(void)
snprintf(buf, sizeof(buf), "%d", channel->Ppid()); snprintf(buf, sizeof(buf), "%d", channel->Ppid());
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Apid1"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Apid"), clrWhite, clrBackground, m_Font);
value = channel->Apid2(); snprintf(buf, sizeof(buf), "%d", channel->Apid(0));
if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Apid1(), value); value = 1;
else snprintf(buf, sizeof(buf), "%d", channel->Apid1()); while (channel->Apid(value) && (value < MAXAPIDS)) {
snprintf(buf2, sizeof(buf2), ", %d", channel->Apid(value++));
strncat(buf, buf2, sizeof(buf));
}
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid1"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid"), clrWhite, clrBackground, m_Font);
value = channel->Dpid2(); snprintf(buf, sizeof(buf), "%d", channel->Dpid(0));
if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Dpid1(), value); value = 1;
else snprintf(buf, sizeof(buf), "%d", channel->Dpid1()); while (channel->Dpid(value) && (value < MAXAPIDS)) {
snprintf(buf2, sizeof(buf2), ", %d", channel->Dpid(value++));
strncat(buf, buf2, sizeof(buf));
}
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Ca()); value = channel->Ca();
if (femonConfig.showcasystem) {
/* http://www.dvb.org/index.php?id=174 */
switch (value) {
case 0x0000:
/* Reserved */
snprintf(buf, sizeof(buf), "%s", tr("Free to Air"));
break;
case 0x0001 ... 0x00FF:
/* Standardized systems */
snprintf(buf, sizeof(buf), "%s", tr("Fixed"));
break;
case 0x0100 ... 0x01FF:
/* Canal Plus */
snprintf(buf, sizeof(buf), "%s", tr("SECA/Mediaguard"));
break;
case 0x0500 ... 0x05FF:
/* France Telecom */
snprintf(buf, sizeof(buf), "%s", tr("Viaccess"));
break;
case 0x0600 ... 0x06FF:
/* Irdeto */
snprintf(buf, sizeof(buf), "%s", tr("Irdeto"));
break;
case 0x0900 ... 0x09FF:
/* News Datacom */
snprintf(buf, sizeof(buf), "%s", tr("NDS/Videoguard"));
break;
case 0x0B00 ... 0x0BFF:
/* Norwegian Telekom */
snprintf(buf, sizeof(buf), "%s", tr("Conax"));
break;
case 0x0D00 ... 0x0DFF:
/* Philips */
snprintf(buf, sizeof(buf), "%s", tr("CryptoWorks"));
break;
case 0x0E00 ... 0x0EFF:
/* Scientific Atlanta */
snprintf(buf, sizeof(buf), "%s", tr("PowerVu"));
break;
case 0x1200 ... 0x12FF:
/* BellVu Express */
snprintf(buf, sizeof(buf), "%s", tr("NagraVision"));
break;
case 0x1700 ... 0x17FF:
/* BetaTechnik */
snprintf(buf, sizeof(buf), "%s", tr("BetaCrypt"));
break;
case 0x1800 ... 0x18FF:
/* Kudelski SA */
snprintf(buf, sizeof(buf), "%s", tr("NagraVision"));
break;
case 0x4A60 ... 0x4A6F:
/* @Sky */
snprintf(buf, sizeof(buf), "%s", tr("SkyCrypt"));
break;
default:
snprintf(buf, sizeof(buf), "%X", value);
break;
}
}
else {
snprintf(buf, sizeof(buf), "%X", value);
value = 1;
while (channel->Ca(value) && (value < MAXCAIDS)) {
snprintf(buf2, sizeof(buf2), ", %X", channel->Ca(value++));
strncat(buf, buf2, sizeof(buf));
}
}
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Tpid()); snprintf(buf, sizeof(buf), "%d", channel->Tpid());
@@ -289,7 +476,7 @@ void cFemonOsd::DrawInfoWindow(void)
snprintf(buf, sizeof(buf), "%d %s", value, tr("MHz")); snprintf(buf, sizeof(buf), "%d %s", value, tr("MHz"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source())); snprintf(buf, sizeof(buf), "%s", *cSource::ToString(channel->Source()));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font);
@@ -330,7 +517,7 @@ void cFemonOsd::DrawInfoWindow(void)
snprintf(buf, sizeof(buf), "%d %s", value, tr("MHz")); snprintf(buf, sizeof(buf), "%d %s", value, tr("MHz"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source())); snprintf(buf, sizeof(buf), "%s", *cSource::ToString(channel->Source()));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font);
@@ -500,7 +687,8 @@ void cFemonOsd::DrawInfoWindow(void)
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "#%d", channel->Apid1()); value = int(cDevice::PrimaryDevice()->GetCurrentAudioTrack());
snprintf(buf, sizeof(buf), "#%d", IS_AUDIO_TRACK(value) ? channel->Apid(value - ttAudioFirst) : channel->Apid(0));
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font);
@@ -531,10 +719,11 @@ void cFemonOsd::DrawInfoWindow(void)
else if (m_DisplayMode == modeAC3) { else if (m_DisplayMode == modeAC3) {
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground); m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground);
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+m_Font->Height()-1), clrWhite); m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+m_Font->Height()-1), clrWhite);
snprintf(buf, sizeof(buf), "%s - %s #%d", tr("Stream Information"), tr("AC-3 Stream"), channel->Dpid1()); value = int(cDevice::PrimaryDevice()->GetCurrentAudioTrack());
snprintf(buf, sizeof(buf), "%s - %s #%d", tr("Stream Information"), tr("AC-3 Stream"), IS_DOLBY_TRACK(value) ? channel->Dpid(value - ttDolbyFirst) : 0);
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrBackground, clrWhite, m_Font); m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrBackground, clrWhite, m_Font);
offset += m_Font->Height(); offset += m_Font->Height();
if (m_Receiver && m_Receiver->AC3Valid()) { if (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(cDevice::PrimaryDevice()->GetCurrentAudioTrack())) {
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%.0f %s (%0.f %s)", m_Receiver->AC3StreamBitrate(), tr("kbit/s"), m_Receiver->AC3Bitrate(), tr("kbit/s")); snprintf(buf, sizeof(buf), "%.0f %s (%0.f %s)", m_Receiver->AC3StreamBitrate(), tr("kbit/s"), m_Receiver->AC3Bitrate(), tr("kbit/s"));
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
@@ -629,9 +818,11 @@ void cFemonOsd::DrawInfoWindow(void)
void cFemonOsd::Action(void) void cFemonOsd::Action(void)
{ {
//printf("cFemonOsd::Action()\n"); debug(printf("cFemonOsd::Action()\n"));
cTimeMs t;
m_Active = true; m_Active = true;
while (m_Active) { while (m_Active) {
t.Set(0);
if (m_Frontend != -1) { if (m_Frontend != -1) {
CHECK(ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus)); CHECK(ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus));
CHECK(ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &m_Signal)); CHECK(ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &m_Signal));
@@ -644,13 +835,15 @@ void cFemonOsd::Action(void)
isyslog("Card #%d (%s) STR: %04x SNR: %04x BER: %08x UNC: %08x |%c|%c|%c|%c|%c|", cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name, m_Signal, m_SNR, m_BER, m_UNC, (m_FrontendStatus & FE_HAS_LOCK) ? 'L' : ' ', (m_FrontendStatus & FE_HAS_SIGNAL) ? 'S' : ' ', (m_FrontendStatus & FE_HAS_CARRIER) ? 'C' : ' ', (m_FrontendStatus & FE_HAS_VITERBI) ? 'V' : ' ', (m_FrontendStatus & FE_HAS_SYNC) ? 'Z' : ' '); isyslog("Card #%d (%s) STR: %04x SNR: %04x BER: %08x UNC: %08x |%c|%c|%c|%c|%c|", cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name, m_Signal, m_SNR, m_BER, m_UNC, (m_FrontendStatus & FE_HAS_LOCK) ? 'L' : ' ', (m_FrontendStatus & FE_HAS_SIGNAL) ? 'S' : ' ', (m_FrontendStatus & FE_HAS_CARRIER) ? 'C' : ' ', (m_FrontendStatus & FE_HAS_VITERBI) ? 'V' : ' ', (m_FrontendStatus & FE_HAS_SYNC) ? 'Z' : ' ');
} }
} }
usleep(100000L * femonConfig.updateinterval); cCondWait::SleepMs(100 * femonConfig.updateinterval - t.Elapsed());
} }
} }
void cFemonOsd::Show(void) void cFemonOsd::Show(void)
{ {
//printf("cFemonOsd::Show()\n"); debug(printf("cFemonOsd::Show()\n"));
eTrackType track = ttNone;
int apid = 0, dpid = 0;
char *dev = NULL; char *dev = NULL;
asprintf(&dev, FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0); asprintf(&dev, FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0);
m_Frontend = open(dev, O_RDONLY | O_NONBLOCK); m_Frontend = open(dev, O_RDONLY | O_NONBLOCK);
@@ -683,8 +876,11 @@ void cFemonOsd::Show(void)
if (m_Receiver) if (m_Receiver)
delete m_Receiver; delete m_Receiver;
if (femonConfig.analyzestream) { if (femonConfig.analyzestream) {
track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
if (IS_AUDIO_TRACK(track)) apid = int(track - ttAudioFirst);
else if (IS_DOLBY_TRACK(track)) dpid = int(track - ttDolbyFirst);
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid1(), channel->Dpid1()); m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid(apid), channel->Dpid(dpid));
cDevice::ActualDevice()->AttachReceiver(m_Receiver); cDevice::ActualDevice()->AttachReceiver(m_Receiver);
} }
Start(); Start();
@@ -693,7 +889,9 @@ void cFemonOsd::Show(void)
void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber) void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber)
{ {
//printf("cFemonOsd::ChannelSwitch()\n"); debug(printf("cFemonOsd::ChannelSwitch()\n"));
eTrackType track = ttNone;
int apid = 0, dpid = 0;
char *dev = NULL; char *dev = NULL;
if (!device->IsPrimaryDevice() || !channelNumber || cDevice::PrimaryDevice()->CurrentChannel() != channelNumber) if (!device->IsPrimaryDevice() || !channelNumber || cDevice::PrimaryDevice()->CurrentChannel() != channelNumber)
return; return;
@@ -715,8 +913,28 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber)
if (m_Receiver) if (m_Receiver)
delete m_Receiver; delete m_Receiver;
if (femonConfig.analyzestream) { if (femonConfig.analyzestream) {
track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
if (IS_AUDIO_TRACK(track)) apid = int(track - ttAudioFirst);
else if (IS_DOLBY_TRACK(track)) dpid = int(track - ttDolbyFirst);
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid1(), channel->Dpid1()); m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid(apid), channel->Dpid(dpid));
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
void cFemonOsd::SetAudioTrack(int Index, const char * const *Tracks)
{
debug(printf("cFemonOsd::SetAudioTrack()\n"));
eTrackType track = ttNone;
int apid = 0, dpid = 0;
if (m_Receiver)
delete m_Receiver;
if (femonConfig.analyzestream) {
track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
if (IS_AUDIO_TRACK(track)) apid = int(track - ttAudioFirst);
else if (IS_DOLBY_TRACK(track)) dpid = int(track - ttDolbyFirst);
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid(apid), channel->Dpid(dpid));
cDevice::ActualDevice()->AttachReceiver(m_Receiver); cDevice::ActualDevice()->AttachReceiver(m_Receiver);
} }
} }
@@ -724,9 +942,8 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber)
eOSState cFemonOsd::ProcessKey(eKeys Key) eOSState cFemonOsd::ProcessKey(eKeys Key)
{ {
eOSState state = cOsdObject::ProcessKey(Key); eOSState state = cOsdObject::ProcessKey(Key);
if (state == osUnknown) { if (state == osUnknown) {
switch (Key & ~k_Repeat) { switch (Key) {
case k0: case k0:
if ((m_Number == 0) && (m_OldNumber != 0)) { if ((m_Number == 0) && (m_OldNumber != 0)) {
m_Number = m_OldNumber; m_Number = m_OldNumber;
@@ -741,7 +958,7 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
if (m_Number > 0) { if (m_Number > 0) {
DrawStatusWindow(); DrawStatusWindow();
cChannel *ch = Channels.GetByNumber(m_Number); cChannel *ch = Channels.GetByNumber(m_Number);
m_InputTime = time_ms(); m_InputTime.Set(0);
// Lets see if there can be any useful further input: // Lets see if there can be any useful further input:
int n = ch ? m_Number * 10 : 0; int n = ch ? m_Number * 10 : 0;
while (ch && (ch = Channels.Next(ch)) != NULL) { while (ch && (ch = Channels.Next(ch)) != NULL) {
@@ -765,6 +982,66 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
break; break;
case kBack: case kBack:
return osEnd; return osEnd;
case kGreen:
{
eTrackType types[ttMaxTrackTypes];
eTrackType CurrentAudioTrack = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
int numTracks = 0;
int oldTrack = 0;
int track = 0;
for (int i = ttAudioFirst; i <= ttDolbyLast; i++) {
const tTrackId *TrackId = cDevice::PrimaryDevice()->GetTrack(eTrackType(i));
if (TrackId && TrackId->id) {
types[numTracks] = eTrackType(i);
if (i == CurrentAudioTrack)
track = numTracks;
numTracks++;
}
}
oldTrack = track;
if (++track >= numTracks)
track = 0;
if (track != oldTrack) {
cDevice::PrimaryDevice()->SetCurrentAudioTrack(types[track]);
Setup.CurrentDolby = IS_DOLBY_TRACK(types[track]);
}
}
break;
case kYellow:
if (IS_AUDIO_TRACK(cDevice::PrimaryDevice()->GetCurrentAudioTrack())) {
int audioChannel = cDevice::PrimaryDevice()->GetAudioChannel();
int oldAudioChannel = audioChannel;
if (++audioChannel > 2)
audioChannel = 0;
if (audioChannel != oldAudioChannel) {
cDevice::PrimaryDevice()->SetAudioChannel(audioChannel);
}
}
break;
case kRight:
case kLeft:
{
int device = cDevice::ActualDevice()->DeviceNumber();
if (device >= 0) {
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
for (int i = 0; i < cDevice::NumDevices() - 1; i++) {
if (NORMALKEY(Key) == kBlue) {
if (++device >= cDevice::NumDevices()) device = 0;
}
else {
if (--device < 0) device = cDevice::NumDevices() - 1;
}
if (cDevice::GetDevice(device)->ProvidesChannel(channel)) {
//cStatus::MsgChannelSwitch(cDevice::GetDevice(device), 0);
//implement some tuning mechanism here
//cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apid(0), channel->Apid(1), channel->Dpid(0), channel->Dpid(1)));
//cStatus::MsgChannelSwitch(cDevice::GetDevice(device), channel->Number());
break;
}
}
}
}
break;
case kUp|k_Repeat: case kUp|k_Repeat:
case kUp: case kUp:
case kDown|k_Repeat: case kDown|k_Repeat:
@@ -774,21 +1051,21 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
m_Number = 0; m_Number = 0;
break; break;
case kNone: case kNone:
if (m_Number && (time_ms() - m_InputTime > CHANNELINPUT_TIMEOUT)) { if (m_Number && (m_InputTime.Elapsed() > CHANNELINPUT_TIMEOUT)) {
if (Channels.GetByNumber(m_Number)) { if (Channels.GetByNumber(m_Number)) {
m_OldNumber = cDevice::CurrentChannel(); m_OldNumber = cDevice::CurrentChannel();
Channels.SwitchTo(m_Number); Channels.SwitchTo(m_Number);
m_Number = 0; m_Number = 0;
} }
else { else {
m_InputTime = time_ms(); m_InputTime.Set(0);
m_Number = 0; m_Number = 0;
} }
} }
break; break;
case kOk: case kOk:
// toggle between display modes // toggle between display modes
if (++m_DisplayMode == modeAC3 && !Channels.GetByNumber(cDevice::CurrentChannel())->Dpid1()) m_DisplayMode++; if (++m_DisplayMode == modeAC3 && !Channels.GetByNumber(cDevice::CurrentChannel())->Dpid(0)) m_DisplayMode++;
if (m_DisplayMode >= modeMaxNumber) m_DisplayMode = 0; if (m_DisplayMode >= modeMaxNumber) m_DisplayMode = 0;
DrawInfoWindow(); DrawInfoWindow();
break; break;

View File

@@ -16,6 +16,8 @@
#include <vdr/thread.h> #include <vdr/thread.h>
#include <vdr/status.h> #include <vdr/status.h>
#include <vdr/channels.h> #include <vdr/channels.h>
#include <vdr/transfer.h>
#include <vdr/tools.h>
class cFemonOsd : public cOsdObject, public cThread, public cStatus { class cFemonOsd : public cOsdObject, public cThread, public cStatus {
private: private:
@@ -26,7 +28,6 @@ private:
struct dvb_frontend_info m_FrontendInfo; struct dvb_frontend_info m_FrontendInfo;
int m_Number; int m_Number;
int m_OldNumber; int m_OldNumber;
int m_InputTime;
uint16_t m_SNR; uint16_t m_SNR;
uint16_t m_Signal; uint16_t m_Signal;
uint32_t m_BER; uint32_t m_BER;
@@ -34,14 +35,18 @@ private:
fe_status_t m_FrontendStatus; fe_status_t m_FrontendStatus;
int m_DisplayMode; int m_DisplayMode;
const cFont *m_Font; const cFont *m_Font;
cTimeMs m_InputTime;
cMutex* m_Mutex; cMutex* m_Mutex;
static cBitmap bmDD, bmDD20, bmDD51, bmPAL, bmNTSC, bmAspectRatio_1_1, bmAspectRatio_16_9, bmAspectRatio_2_21_1, bmAspectRatio_4_3; static cBitmap bmStereo, bmMonoLeft, bmMonoRight, bmDD, bmDD20, bmDD51;
static cBitmap bmZero, bmDevice, bmPAL, bmNTSC, bmOne, bmTwo, bmThree, bmFour, bmFive;
static cBitmap bmAspectRatio_1_1, bmAspectRatio_16_9, bmAspectRatio_2_21_1, bmAspectRatio_4_3;
void DrawStatusWindow(void); void DrawStatusWindow(void);
void DrawInfoWindow(void); void DrawInfoWindow(void);
protected: protected:
virtual void Action(void); virtual void Action(void);
virtual void ChannelSwitch(const cDevice * device, int channelNumber); virtual void ChannelSwitch(const cDevice * device, int channelNumber);
virtual void SetAudioTrack(int Index, const char * const *Tracks);
public: public:
cFemonOsd(void); cFemonOsd(void);

View File

@@ -7,6 +7,7 @@
*/ */
#include <unistd.h> #include <unistd.h>
#include <vdr/tools.h>
#include "femoncfg.h" #include "femoncfg.h"
#include "femonreceiver.h" #include "femonreceiver.h"
@@ -19,7 +20,7 @@
cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid) cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid)
:cReceiver(Ca, -1, 3, Vpid, Apid, Dpid), cThread("femon receiver") :cReceiver(Ca, -1, 3, Vpid, Apid, Dpid), cThread("femon receiver")
{ {
//printf("cFemonReceiver::cFemonReceiver()\n"); debug(printf("cFemonReceiver::cFemonReceiver()\n"));
m_Active = false; m_Active = false;
m_VideoPid = Vpid; m_VideoPid = Vpid;
m_AudioPid = Apid; m_AudioPid = Apid;
@@ -57,7 +58,8 @@ cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid)
cFemonReceiver::~cFemonReceiver(void) cFemonReceiver::~cFemonReceiver(void)
{ {
//printf("cFemonReceiver::~cFemonReceiver()\n"); debug(printf("cFemonReceiver::~cFemonReceiver()\n"));
Detach();
if (m_Active) { if (m_Active) {
m_Active = false; m_Active = false;
Cancel(0); Cancel(0);
@@ -67,7 +69,7 @@ cFemonReceiver::~cFemonReceiver(void)
/* The following function originates from libdvbmpeg: */ /* The following function originates from libdvbmpeg: */
void cFemonReceiver::GetVideoInfo(uint8_t *mbuf, int count) void cFemonReceiver::GetVideoInfo(uint8_t *mbuf, int count)
{ {
//printf("cFemonReceiver::GetVideoInfo()\n"); debug(printf("cFemonReceiver::GetVideoInfo()\n"));
uint8_t *headr; uint8_t *headr;
int found = 0; int found = 0;
int c = 0; int c = 0;
@@ -160,7 +162,7 @@ static unsigned int samplerates[4] =
/* The following function originates from libdvbmpeg: */ /* The following function originates from libdvbmpeg: */
void cFemonReceiver::GetAudioInfo(uint8_t *mbuf, int count) void cFemonReceiver::GetAudioInfo(uint8_t *mbuf, int count)
{ {
//printf("cFemonReceiver::GetAudioInfo()\n"); debug(printf("cFemonReceiver::GetAudioInfo()\n"));
uint8_t *headr; uint8_t *headr;
int found = 0; int found = 0;
int c = 0; int c = 0;
@@ -252,13 +254,20 @@ void cFemonReceiver::GetAC3Info(uint8_t *mbuf, int count)
void cFemonReceiver::Activate(bool On) void cFemonReceiver::Activate(bool On)
{ {
//printf("cFemonReceiver::Activate()\n"); debug(printf("cFemonReceiver::Activate()\n"));
Start(); if (On) {
if (!m_Active)
Start();
}
else if (m_Active) {
m_Active = false;
Cancel(0);
}
} }
void cFemonReceiver::Receive(uchar *Data, int Length) void cFemonReceiver::Receive(uchar *Data, int Length)
{ {
//printf("cFemonReceiver::Receive()\n"); debug(printf("cFemonReceiver::Receive()\n"));
// TS packet length: TS_SIZE // TS packet length: TS_SIZE
if (Length == TS_SIZE) { if (Length == TS_SIZE) {
int pid = ((Data[1] & 0x1f) << 8) | (Data[2]); int pid = ((Data[1] & 0x1f) << 8) | (Data[2]);
@@ -301,9 +310,11 @@ void cFemonReceiver::Receive(uchar *Data, int Length)
void cFemonReceiver::Action(void) void cFemonReceiver::Action(void)
{ {
//printf("cFemonReceiver::Action()\n"); debug(printf("cFemonReceiver::Action()\n"));
cTimeMs t;
m_Active = true; m_Active = true;
while (m_Active) { while (m_Active) {
t.Set(0);
// TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit // TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit
m_VideoBitrate = (8.0 * 184.0 * m_VideoPacketCount) / (femonConfig.calcinterval * 100000.0); m_VideoBitrate = (8.0 * 184.0 * m_VideoPacketCount) / (femonConfig.calcinterval * 100000.0);
m_VideoPacketCount = 0; m_VideoPacketCount = 0;
@@ -311,6 +322,6 @@ void cFemonReceiver::Action(void)
m_AudioPacketCount = 0; m_AudioPacketCount = 0;
m_AC3Bitrate = (8.0 * 184.0 * m_AC3PacketCount) / (femonConfig.calcinterval * 100.0); m_AC3Bitrate = (8.0 * 184.0 * m_AC3PacketCount) / (femonConfig.calcinterval * 100.0);
m_AC3PacketCount = 0; m_AC3PacketCount = 0;
usleep(100000L * femonConfig.calcinterval); cCondWait::SleepMs(100 * femonConfig.calcinterval - t.Elapsed());
} }
} }

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * ar11_xpm[] = { static char * ar11_xpm[] = {
"21 18 2 1", "26 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
".....................", "++++++++++++++++++++++++++",
".....................", "+........................+",
"....++...........++..", "+......++..........++....+",
"...+++..........+++..", "+...+++++.......+++++....+",
"..++++....++...++++..", "+...+++++.......+++++....+",
"..++++...++++..++++..", "+......++...++.....++....+",
"....++...++++....++..", "+......++...++.....++....+",
"....++....++.....++..", "+......++..........++....+",
"....++...........++..", "+......++..........++....+",
"....++...........++..", "+......++..........++....+",
"....++....++.....++..", "+......++..........++....+",
"....++...++++....++..", "+......++..........++....+",
"....++...++++....++..", "+......++..........++....+",
"....++....++.....++..", "+......++..........++....+",
"....++...........++..", "+......++...++.....++....+",
"....++...........++..", "+......++...++.....++....+",
".....................", "+........................+",
"....................."}; "++++++++++++++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * ar169_xpm[] = { static char * ar169_xpm[] = {
"36 18 2 1", "38 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
"....................................", "++++++++++++++++++++++++++++++++++++++",
"....................................", "+....................................+",
"....++....+++++............+++++....", "+......++.....++++..........++++.....+",
"...+++...+++++++..........+++++++...", "+...+++++....+++++++.......++++++....+",
"..++++..+++...+++...++...+++...+++..", "+...+++++....++...++......++...+++...+",
"..++++..++.....++..++++..++.....++..", "+......++...++........++..++....++...+",
"....++..++.........++++..++.....++..", "+......++...++........++..++....++...+",
"....++..++..........++...+++...+++..", "+......++...++............++....++...+",
"....++..++.++++...........++++++++..", "+......++...++.+++.........+++++++...+",
"....++..++++++++...........+++++++..", "+......++...+++++++.........+++.++...+",
"....++..+++...+++...++..........++..", "+......++...++....++............++...+",
"....++..++.....++..++++.........++..", "+......++...++....++............++...+",
"....++..++.....++..++++..++.....++..", "+......++...++....++............++...+",
"....++..+++...+++...++...+++...+++..", "+......++...+++...++......++...++....+",
"....++...+++++++..........+++++++...", "+......++....++++++...++..+++++++....+",
"....++....+++++............+++++....", "+......++.....++++....++...+++++.....+",
"....................................", "+....................................+",
"...................................."}; "++++++++++++++++++++++++++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * ar2211_xpm[] = { static char * ar2211_xpm[] = {
"43 18 2 1", "52 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
"...........................................", "++++++++++++++++++++++++++++++++++++++++++++++++++++",
"...........................................", "+..................................................+",
"....++++........++++......++...........++..", "+.....++++..........++++........++...........++....+",
"...++++++......++++++....+++..........+++..", "+...+++++++.......+++++++....+++++........+++++....+",
"..+++..+++....+++..+++..++++....++...++++..", "+...++....++......++....++...+++++........+++++....+",
"..++....++....++....++..++++...++++..++++..", "+.........++............++......++...++......++....+",
"..++....++....++....++....++...++++....++..", "+.........++............++......++...++......++....+",
".......+++.........+++....++....++.....++..", "+........+++...........+++......++...........++....+",
"......+++.........+++.....++...........++..", "+.......+++...........+++.......++...........++....+",
".....+++.........+++......++...........++..", "+......+++...........+++........++...........++....+",
"....+++.........+++.......++....++.....++..", "+.....+++...........+++.........++...........++....+",
"...+++.........+++........++...++++....++..", "+....+++...........+++..........++...........++....+",
"..+++.........+++.........++...++++....++..", "+...+++...........+++...........++...........++....+",
"..++....++.++.++....++....++....++.....++..", "+...++............++............++...........++....+",
"..++++++++.++.++++++++....++...........++..", "+...++++++++..++..++++++++......++...++......++....+",
"..++++++++.++.++++++++....++...........++..", "+...++++++++..++..++++++++......++...++......++....+",
"...........................................", "+..................................................+",
"..........................................."}; "++++++++++++++++++++++++++++++++++++++++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * ar43_xpm[] = { static char * ar43_xpm[] = {
"32 18 2 1", "31 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
"................................", "+++++++++++++++++++++++++++++++",
"................................", "+.............................+",
"....++..++............++++++....", "+.........++.........+++++....+",
"....++..++...........++++++++...", "+........+++........+++++++...+",
"...+++..++.....++...+++....+++..", "+.......++++.......++....++...+",
"...++...++....++++..++......++..", "+......++.++...++..++....++...+",
"...++...++....++++..++......++..", "+.....++..++...++........++...+",
"..+++...++.....++..........+++..", "+.....++..++............++....+",
"..++....++..............+++++...", "+....++...++..........+++.....+",
"..++....++..............+++++...", "+...++....++..........++++....+",
"..++++++++++...++..........+++..", "+...+++++++++...........+++...+",
"..++++++++++..++++..++......++..", "+...+++++++++............++...+",
"........++....++++..++......++..", "+.........++.......++....++...+",
"........++.....++...+++....+++..", "+.........++.......++...+++...+",
"........++...........++++++++...", "+.........++...++...++++++....+",
"........++............++++++....", "+.........++...++....++++.....+",
"................................", "+.............................+",
"................................"}; "+++++++++++++++++++++++++++++++"};

23
symbols/device.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * device_xpm[] = {
"14 18 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++",
"+.............",
"+.......+..+..",
"+.......+..+..",
"+.......+..+..",
"+....+++++++++",
"+....+++++++++",
"+......+..+...",
"+......+..+...",
"+......+..+...",
"+......+..+...",
"+...+++++++++.",
"+...+++++++++.",
"+.....+..+....",
"+.....+..+....",
"+.....+..+....",
"+.............",
"++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * dolbydigital_xpm[] = { static char * dolbydigital_xpm[] = {
"27 18 2 1", "31 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
"...........................", "+++++++++++++++++++++++++++++++",
"...........................", "+.............................+",
"..+++++++++++.+++++++++++..", "+...+++++++++++.+++++++++++...+",
"..++.++++++++.++++++++.++..", "+...++.++++++++.++++++++.++...+",
"..++...++++++.++++++...++..", "+...++...++++++.++++++...++...+",
"..++.....++++.++++.....++..", "+...++.....++++.++++.....++...+",
"..++......+++.+++......++..", "+...++......+++.+++......++...+",
"..++.......++.++.......++..", "+...++.......++.++.......++...+",
"..++.......++.++.......++..", "+...++.......++.++.......++...+",
"..++.......++.++.......++..", "+...++.......++.++.......++...+",
"..++.......++.++.......++..", "+...++.......++.++.......++...+",
"..++......+++.+++......++..", "+...++......+++.+++......++...+",
"..++.....++++.++++.....++..", "+...++.....++++.++++.....++...+",
"..++...++++++.++++++...++..", "+...++...++++++.++++++...++...+",
"..++.++++++++.++++++++.++..", "+...++.++++++++.++++++++.++...+",
"..+++++++++++.+++++++++++..", "+...+++++++++++.+++++++++++...+",
"...........................", "+.............................+",
"..........................."}; "+++++++++++++++++++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * dolbydigital20_xpm[] = { static char * dolbydigital20_xpm[] = {
"49 18 2 1", "55 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
".................................................", "+++++++++++++++++++++++++++++++++++++++++++++++++++++++",
".................................................", "+.....................................................+",
"..+++++++++++.+++++++++++....++++.......++++++...", "+...+++++++++++.+++++++++++.....++++.........++++.....+",
"..++.++++++++.++++++++.++...++++++.....++++++++..", "+...++.++++++++.++++++++.++...+++++++.......++++++....+",
"..++...++++++.++++++...++..+++..+++....+++..+++..", "+...++...++++++.++++++...++...++....++......++..++....+",
"..++.....++++.++++.....++..++....++....++....++..", "+...++.....++++.++++.....++.........++.....++....++...+",
"..++......+++.+++......++..++....++....++....++..", "+...++......+++.+++......++.........++.....++....++...+",
"..++.......++.++.......++.......+++....++....++..", "+...++.......++.++.......++........+++.....++....++...+",
"..++.......++.++.......++......+++.....++....++..", "+...++.......++.++.......++.......+++......++....++...+",
"..++.......++.++.......++.....+++......++....++..", "+...++.......++.++.......++......+++.......++....++...+",
"..++.......++.++.......++....+++.......++....++..", "+...++.......++.++.......++.....+++........++....++...+",
"..++......+++.+++......++...+++........++....++..", "+...++......+++.+++......++....+++.........++....++...+",
"..++.....++++.++++.....++..+++.........++....++..", "+...++.....++++.++++.....++...+++..........++....++...+",
"..++...++++++.++++++...++..++....++.++.+++..+++..", "+...++...++++++.++++++...++...++............++..++....+",
"..++.++++++++.++++++++.++..++++++++.++.++++++++..", "+...++.++++++++.++++++++.++...++++++++..++..++++++....+",
"..+++++++++++.+++++++++++..++++++++.++..++++++...", "+...+++++++++++.+++++++++++...++++++++..++...++++.....+",
".................................................", "+.....................................................+",
"................................................."}; "+++++++++++++++++++++++++++++++++++++++++++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * dolbydigital51_xpm[] = { static char * dolbydigital51_xpm[] = {
"44 18 2 1", "51 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
"............................................", "+++++++++++++++++++++++++++++++++++++++++++++++++++",
"............................................", "+.................................................+",
"..+++++++++++.+++++++++++..++++++++.....++..", "+...+++++++++++.+++++++++++...+++++++........++...+",
"..++.++++++++.++++++++.++..++++++++....+++..", "+...++.++++++++.++++++++.++...+++++++.....+++++...+",
"..++...++++++.++++++...++..++.........++++..", "+...++...++++++.++++++...++...++..........+++++...+",
"..++.....++++.++++.....++..++.........++++..", "+...++.....++++.++++.....++...++.............++...+",
"..++......+++.+++......++..++...........++..", "+...++......+++.+++......++...++++++.........++...+",
"..++.......++.++.......++..++++++.......++..", "+...++.......++.++.......++...+++++++........++...+",
"..++.......++.++.......++..+++++++......++..", "+...++.......++.++.......++...++...+++.......++...+",
"..++.......++.++.......++.......+++.....++..", "+...++.......++.++.......++.........++.......++...+",
"..++.......++.++.......++........++.....++..", "+...++.......++.++.......++.........++.......++...+",
"..++......+++.+++......++..++....++.....++..", "+...++......+++.+++......++.........++.......++...+",
"..++.....++++.++++.....++..++....++.....++..", "+...++.....++++.++++.....++...++....++.......++...+",
"..++...++++++.++++++...++..+++..+++.++..++..", "+...++...++++++.++++++...++...++...+++.......++...+",
"..++.++++++++.++++++++.++...++++++..++..++..", "+...++.++++++++.++++++++.++...+++++++...++...++...+",
"..+++++++++++.+++++++++++....++++...++..++..", "+...+++++++++++.+++++++++++....+++++....++...++...+",
"............................................", "+.................................................+",
"............................................"}; "+++++++++++++++++++++++++++++++++++++++++++++++++++"};

23
symbols/five.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * five_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
"...+++++++....+",
"...+++++++....+",
"...++.........+",
"...++.........+",
"...++.........+",
"...++++++.....+",
"...+++++++....+",
"...++...+++...+",
".........++...+",
".........++...+",
"...++....++...+",
"...++...+++...+",
"...+++++++....+",
"....+++++.....+",
"..............+",
"+++++++++++++++"};

23
symbols/four.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * four_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".........++...+",
"........+++...+",
".......++++...+",
"......++.++...+",
".....++..++...+",
".....++..++...+",
"....++...++...+",
"...++....++...+",
"...+++++++++..+",
"...+++++++++..+",
".........++...+",
".........++...+",
".........++...+",
".........++...+",
"..............+",
"+++++++++++++++"};

23
symbols/monoleft.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * monoleft_xpm[] = {
"17 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++",
"+................",
"+...++...........",
"+...++++.........",
"+...++++++.......",
"+...++++++++.....",
"+...+++++++++++++",
"+...+++++++++++++",
"+...+++++++++..++",
"+...+++++++++..++",
"+...+++++++++++++",
"+...+++++++++++++",
"+...++++++++.....",
"+...++++++.......",
"+...++++.........",
"+...+++..........",
"+................",
"+++++++++++++++++"};

23
symbols/monoright.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * monoright_xpm[] = {
"17 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++",
"+................",
"+..............++",
"+............++++",
"+..........++++++",
"+........++++++++",
"+...+++++++++++++",
"+...+++++++++++++",
"+...++..+++++++++",
"+...++..+++++++++",
"+...+++++++++++++",
"+...+++++++++++++",
"+........++++++++",
"+..........++++++",
"+............++++",
"+.............+++",
"+................",
"+++++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * ntsc_xpm[] = { static char * ntsc_xpm[] = {
"38 18 2 1", "19 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
"......................................", "+++++++++++++++++++",
"......................................", "+.................+",
"..++....++.++++++++..+++++....+++++...", "+...++.......++...+",
"..++....++.++++++++.+++++++..+++++++..", "+...+++......++...+",
"..+++...++....++....++...++..++...++..", "+...++++.....++...+",
"..+++...++....++....++...++..++...++..", "+...++++.....++...+",
"..++++..++....++....++.......++.......", "+...++.++....++...+",
"..++++..++....++....++++.....++.......", "+...++..++...++...+",
"..++.++.++....++.....+++++...++.......", "+...++..++...++...+",
"..++.++.++....++.......++++..++.......", "+...++...++..++...+",
"..++..++++....++.........++..++.......", "+...++...++..++...+",
"..++..++++....++....++...++..++...++..", "+...++....++.++...+",
"..++...+++....++....++...++..++...++..", "+...++.....++++...+",
"..++...+++....++....++...++..++...++..", "+...++.....++++...+",
"..++....++....++....+++++++..+++++++..", "+...++......+++...+",
"..++....++....++.....+++++....+++++...", "+...++.......++...+",
"......................................", "+.................+",
"......................................"}; "+++++++++++++++++++"};

23
symbols/one.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * one_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".......++.....+",
"....+++++.....+",
"....+++++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
"..............+",
"+++++++++++++++"};

View File

@@ -1,23 +1,23 @@
/* XPM */ /* XPM */
static char * pal_xpm[] = { static char * pal_xpm[] = {
"30 18 2 1", "18 18 2 1",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",
"..............................", "++++++++++++++++++",
"..............................", "+................+",
"..+++++++....+++++...++.......", "+...++++++++.....+",
"..+++..+++..+++++++..++.......", "+...+++++++++....+",
"..++....++..++...++..++.......", "+...++.....+++...+",
"..++....++.+++...+++.++.......", "+...++......++...+",
"..++....++.++.....++.++.......", "+...++......++...+",
"..++....++.++.....++.++.......", "+...++.....+++...+",
"..++....++.++.....++.++.......", "+...+++++++++....+",
"..+++..+++.+++++++++.++.......", "+...++++++++.....+",
"..+++++++..+++++++++.++.......", "+...++...........+",
"..++.......++.....++.++.......", "+...++...........+",
"..++.......++.....++.++.......", "+...++...........+",
"..++.......++.....++.++.......", "+...++...........+",
"..++.......++.....++.+++++++..", "+...++...........+",
"..++.......++.....++.+++++++..", "+...++...........+",
"..............................", "+................+",
".............................."}; "++++++++++++++++++"};

23
symbols/stereo.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * stereo_xpm[] = {
"17 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++",
"+................",
"+..............++",
"+............++++",
"+..........+++.++",
"+........+++...++",
"+...+++++++....++",
"+...++++++.....++",
"+...++..++.....++",
"+...++..++.....++",
"+...++++++.....++",
"+...+++++++....++",
"+........+++...++",
"+..........+++.++",
"+............++++",
"+.............+++",
"+................",
"+++++++++++++++++"};

23
symbols/three.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * three_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".....+++++....+",
"....+++++++...+",
"...++....++...+",
"...++....++...+",
".........++...+",
"........++....+",
"......+++.....+",
"......++++....+",
"........+++...+",
".........++...+",
"...++....++...+",
"...++...+++...+",
"....++++++....+",
".....++++.....+",
"..............+",
"+++++++++++++++"};

23
symbols/two.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * two_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".....++++.....+",
"...+++++++....+",
"...++....++...+",
".........++...+",
".........++...+",
"........+++...+",
".......+++....+",
"......+++.....+",
".....+++......+",
"....+++.......+",
"...+++........+",
"...++.........+",
"...++++++++...+",
"...++++++++...+",
"..............+",
"+++++++++++++++"};

23
symbols/zero.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * zero_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".....++++.....+",
"....++++++....+",
"....++..++....+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"....++..++....+",
"....++++++....+",
".....++++.....+",
"..............+",
"+++++++++++++++"};