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

Compare commits

..

3 Commits

Author SHA1 Message Date
Rolf Ahrenberg
ca717b0425 Backported the "AC3 Stream Information" feature from version 0.1.3. 2004-06-11 04:20:00 +03:00
Rolf Ahrenberg
9ce3009e39 Backported changes and fixes from version 0.1.2. 2004-06-06 04:20:00 +03:00
Rolf Ahrenberg
b08205607c Backported "stream information" feature (from version 0.1.1). 2004-05-31 04:20:00 +03:00
26 changed files with 432 additions and 935 deletions

13
HISTORY
View File

@@ -81,16 +81,3 @@ 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.

View File

@@ -11,7 +11,7 @@ PLUGIN = femon
### The version number of this plugin (taken from the main source file): ### The version number of this plugin (taken from the main source file):
VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).h | awk '{ print $$6 }' | sed -e 's/[";]//g') VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g')
### The C++ compiler and options: ### The C++ compiler and options:
@@ -44,10 +44,6 @@ 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

34
README
View File

@@ -18,6 +18,7 @@ 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
@@ -30,8 +31,8 @@ Metzler Brothers.
Terminology: Terminology:
-------------------------------------------------------------- --------------------------------------------------------------
|## Channel Name ######################### [DD][AR][VF][A][D]| |## Channel Name ############################# DD 16:9 PAL ##|
|[=====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 |
@@ -43,7 +44,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 Audio - Calculated audio / AC-3 bitrate in kbit/s (only first PID)
LOCK - Everything's working... LOCK - Everything's working...
SIGNAL - Found something above the noise level SIGNAL - Found something above the noise level
@@ -51,31 +52,15 @@ 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
DD - AC-3 stream (optional)
AR - Aspect Ratio: 1:1/4:3/16:9/2.21:1 (optional)
VF - Video format: PAL/NTSC (optional)
A - Audio track: 1..2 (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
Right/Left - Switch to next/previous device that provides the current channel
Green - Select language (APID)
Back - Exit plugin
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.tgz tar -xzf /put/your/path/here/vdr-femon-X.Y.Z.tar.gz
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 -P femon ./vdr -Pfemon
Notes: Notes:
@@ -86,10 +71,3 @@ Notes:
ttxtsubs, but closing and reopening the femon plugin might help temporarily as ttxtsubs, but closing and reopening the femon plugin might help temporarily as
well. Btw., this same thing happens with OSDTeletext plugin too :) 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 a lack of proper frontend
specifications those values cannot be calculated into any real unit.
- Shrinked OSD is available 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."

View File

@@ -12,7 +12,7 @@
#include "femonosd.h" #include "femonosd.h"
#include "femon.h" #include "femon.h"
#if VDRVERSNUM && VDRVERSNUM < 10307 #if VDRVERSNUM >= 10307
#error "You don't exist! Go away!" #error "You don't exist! Go away!"
#endif #endif

View File

@@ -11,7 +11,7 @@
#include <vdr/plugin.h> #include <vdr/plugin.h>
static const char *VERSION = "0.1.5"; static const char *VERSION = "0.0.6";
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

@@ -25,8 +25,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Signal Information", // English { "Signal Information", // English
"Signalinformationen", // Deutsch "Signalinformationen", // Deutsch
@@ -44,8 +45,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Position", // English { "Position", // English
"Position", // Deutsch "Position", // Deutsch
@@ -63,8 +65,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Default Display Mode", // English { "Default Display Mode", // English
"Standard Anzeigemodus", // Deutsch "Standard Anzeigemodus", // Deutsch
@@ -82,8 +85,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "basic", // English { "basic", // English
"Standard", // Deutsch "Standard", // Deutsch
@@ -101,8 +105,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "transponder", // English { "transponder", // English
"Transponder", // Deutsch "Transponder", // Deutsch
@@ -120,8 +125,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "stream", // English { "stream", // English
"Stream", // Deutsch "Stream", // Deutsch
@@ -139,8 +145,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Hide Mainmenu Entry", // English { "Hide Mainmenu Entry", // English
"Hauptmen<EFBFBD>eintrag verstecken", // Deutsch "Hauptmen<EFBFBD>eintrag verstecken", // Deutsch
@@ -158,8 +165,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "OSD Update Interval [0.1s]", // English { "OSD Update Interval [0.1s]", // English
"OSD Updateintervall [0.1s]", // Deutsch "OSD Updateintervall [0.1s]", // Deutsch
@@ -177,8 +185,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Analyze Stream", // English { "Analyze Stream", // English
"Stream analysieren", // Deutsch "Stream analysieren", // Deutsch
@@ -196,8 +205,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Calculation Interval [0.1s]", // English { "Calculation Interval [0.1s]", // English
"Berechnungsintervall [0.1s]", // Deutsch "Berechnungsintervall [0.1s]", // Deutsch
@@ -215,8 +225,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Red Limit [%]", // English { "Red Limit [%]", // English
"Grenze Rot [%]", // Deutsch "Grenze Rot [%]", // Deutsch
@@ -234,8 +245,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Green Limit [%]", // English { "Green Limit [%]", // English
"Grenze Gr<47>n [%]", // Deutsch "Grenze Gr<47>n [%]", // Deutsch
@@ -253,8 +265,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Transponder Information", // English { "Transponder Information", // English
"Transponderinformation", // Deutsch "Transponderinformation", // Deutsch
@@ -272,8 +285,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Satellite Card", // English { "Satellite Card", // English
"Satellitenkarte", // Deutsch "Satellitenkarte", // Deutsch
@@ -291,8 +305,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Cable Card", // English { "Cable Card", // English
"Kabelkarte", // Deutsch "Kabelkarte", // Deutsch
@@ -310,8 +325,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Terrestial Card", // English { "Terrestial Card", // English
"Terrestrische Karte", // Deutsch "Terrestrische Karte", // Deutsch
@@ -329,8 +345,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Use Syslog Output", // English { "Use Syslog Output", // English
"Benutze syslog Ausgabe", // Deutsch "Benutze syslog Ausgabe", // Deutsch
@@ -348,8 +365,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "LOCK", // English { "LOCK", // English
"LOCK", // Deutsch "LOCK", // Deutsch
@@ -367,8 +385,9 @@ const tI18nPhrase Phrases[] = {
"LOCK", // Romaneste "LOCK", // Romaneste
"LOCK", // Magyar "LOCK", // Magyar
"LOCK", // Catal<61> "LOCK", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "SIGNAL", // English { "SIGNAL", // English
"SIGNAL", // Deutsch "SIGNAL", // Deutsch
@@ -386,8 +405,9 @@ const tI18nPhrase Phrases[] = {
"SIGNAL", // Romaneste "SIGNAL", // Romaneste
"SIGNAL", // Magyar "SIGNAL", // Magyar
"SIGNAL", // Catal<61> "SIGNAL", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "CARRIER", // English { "CARRIER", // English
"CARRIER", // Deutsch "CARRIER", // Deutsch
@@ -405,8 +425,9 @@ const tI18nPhrase Phrases[] = {
"CARRIER", // Romaneste "CARRIER", // Romaneste
"CARRIER", // Magyar "CARRIER", // Magyar
"CARRIER", // Catal<61> "CARRIER", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "VITERBI", // English { "VITERBI", // English
"VITERBI", // Deutsch "VITERBI", // Deutsch
@@ -424,8 +445,9 @@ const tI18nPhrase Phrases[] = {
"VITERBI", // Romaneste "VITERBI", // Romaneste
"VITERBI", // Magyar "VITERBI", // Magyar
"VITERBI", // Catal<61> "VITERBI", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "SYNC", // English { "SYNC", // English
"SYNC", // Deutsch "SYNC", // Deutsch
@@ -443,8 +465,9 @@ const tI18nPhrase Phrases[] = {
"SYNC", // Romaneste "SYNC", // Romaneste
"SYNC", // Magyar "SYNC", // Magyar
"SYNC", // Catal<61> "SYNC", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Audio", // English { "Audio", // English
"Audio", // Deutsch "Audio", // Deutsch
@@ -462,8 +485,9 @@ const tI18nPhrase Phrases[] = {
"Audio", // Romaneste "Audio", // Romaneste
"Audio", // Magyar "Audio", // Magyar
"Audio", // Catal<61> "Audio", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Video", // English { "Video", // English
"Video", // Deutsch "Video", // Deutsch
@@ -481,8 +505,9 @@ const tI18nPhrase Phrases[] = {
"Video", // Romaneste "Video", // Romaneste
"Video", // Magyar "Video", // Magyar
"Video", // Catal<61> "Video", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Auto", // English { "Auto", // English
"Auto", // Deutsch "Auto", // Deutsch
@@ -500,8 +525,9 @@ const tI18nPhrase Phrases[] = {
"Auto", // Romaneste "Auto", // Romaneste
"Auto", // Magyar "Auto", // Magyar
"Auto", // Catal<61> "Auto", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "None", // English { "None", // English
"None", // Deutsch "None", // Deutsch
@@ -519,8 +545,9 @@ const tI18nPhrase Phrases[] = {
"None", // Romaneste "None", // Romaneste
"None", // Magyar "None", // Magyar
"None", // Catal<61> "None", // Catal<61>
#if VDRVERSNUM >= 10302
"<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"None", // Hrvatski (Croatian) #endif
}, },
{ "Off", // English { "Off", // English
"Off", // Deutsch "Off", // Deutsch
@@ -538,8 +565,9 @@ const tI18nPhrase Phrases[] = {
"Off", // Romaneste "Off", // Romaneste
"Off", // Magyar "Off", // Magyar
"Off", // Catal<61> "Off", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "On", // English { "On", // English
"On", // Deutsch "On", // Deutsch
@@ -557,8 +585,9 @@ const tI18nPhrase Phrases[] = {
"On", // Romaneste "On", // Romaneste
"On", // Magyar "On", // Magyar
"On", // Catal<61> "On", // Catal<61>
#if VDRVERSNUM >= 10302
"<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"On", // Hrvatski (Croatian) #endif
}, },
{ "MHz", // English { "MHz", // English
"MHz", // Deutsch "MHz", // Deutsch
@@ -576,8 +605,9 @@ const tI18nPhrase Phrases[] = {
"MHz", // Romaneste "MHz", // Romaneste
"MHz", // Magyar "MHz", // Magyar
"MHz", // Catal<61> "MHz", // Catal<61>
#if VDRVERSNUM >= 10302
"<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"MHz", // Hrvatski (Croatian) #endif
}, },
{ "Mbit/s", // English { "Mbit/s", // English
"Mbit/s", // Deutsch "Mbit/s", // Deutsch
@@ -595,8 +625,9 @@ const tI18nPhrase Phrases[] = {
"Mbit/s", // Romaneste "Mbit/s", // Romaneste
"Mbit/s", // Magyar "Mbit/s", // Magyar
"Mbit/s", // Catal<61> "Mbit/s", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "kbit/s", // English { "kbit/s", // English
"kbit/s", // Deutsch "kbit/s", // Deutsch
@@ -614,8 +645,9 @@ const tI18nPhrase Phrases[] = {
"kbit/s", // Romaneste "kbit/s", // Romaneste
"kbit/s", // Magyar "kbit/s", // Magyar
"kbit/s", // Catal<61> "kbit/s", // Catal<61>
#if VDRVERSNUM >= 10302
"<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) #endif
}, },
{ "Stream Information", // English { "Stream Information", // English
"Streaminformation", // Deutsch "Streaminformation", // Deutsch
@@ -633,8 +665,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "MPEG Layer", // English { "MPEG Layer", // English
"MPEG Layer", // Deutsch "MPEG Layer", // Deutsch
@@ -652,8 +685,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Video Stream", // English { "Video Stream", // English
"Video Stream", // Deutsch "Video Stream", // Deutsch
@@ -671,8 +705,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Bitrate", // English { "Bitrate", // English
"Bitrate", // Deutsch "Bitrate", // Deutsch
@@ -690,8 +725,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Frame Rate", // English { "Frame Rate", // English
"Bildrate", // Deutsch "Bildrate", // Deutsch
@@ -709,8 +745,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Hz", // English { "Hz", // English
"Hz", // Deutsch "Hz", // Deutsch
@@ -728,8 +765,9 @@ const tI18nPhrase Phrases[] = {
"Hz", // Romaneste "Hz", // Romaneste
"Hz", // Magyar "Hz", // Magyar
"Hz", // Catal<61> "Hz", // Catal<61>
#if VDRVERSNUM >= 10302
"<EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "<EFBFBD><EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Hz", // Hrvatski (Croatian) #endif
}, },
{ "Aspect Ratio", // English { "Aspect Ratio", // English
"Seitenverh<EFBFBD>ltnis", // Deutsch "Seitenverh<EFBFBD>ltnis", // Deutsch
@@ -747,8 +785,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "reserved", // English { "reserved", // English
"belegt", // Deutsch "belegt", // Deutsch
@@ -766,8 +805,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "free", // English { "free", // English
"frei", // Deutsch "frei", // Deutsch
@@ -785,8 +825,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Video Format", // English { "Video Format", // English
"Bildformat", // Deutsch "Bildformat", // Deutsch
@@ -804,8 +845,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "PAL", // English { "PAL", // English
"PAL", // Deutsch "PAL", // Deutsch
@@ -823,8 +865,9 @@ const tI18nPhrase Phrases[] = {
"PAL", // Romaneste "PAL", // Romaneste
"PAL", // Magyar "PAL", // Magyar
"PAL", // Catal<61> "PAL", // Catal<61>
#if VDRVERSNUM >= 10302
"PAL", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "PAL", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"PAL", // Hrvatski (Croatian) #endif
}, },
{ "NTSC", // English { "NTSC", // English
"NTSC", // Deutsch "NTSC", // Deutsch
@@ -842,8 +885,9 @@ const tI18nPhrase Phrases[] = {
"NTSC", // Romaneste "NTSC", // Romaneste
"NTSC", // Magyar "NTSC", // Magyar
"NTSC", // Catal<61> "NTSC", // Catal<61>
#if VDRVERSNUM >= 10302
"NTSC", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "NTSC", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"NTSC", // Hrvatski (Croatian) #endif
}, },
{ "unknown", // English { "unknown", // English
"unbekannt", // Deutsch "unbekannt", // Deutsch
@@ -861,8 +905,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Resolution", // English { "Resolution", // English
"Aufl<EFBFBD>sung", // Deutsch "Aufl<EFBFBD>sung", // Deutsch
@@ -880,8 +925,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Audio Stream", // English { "Audio Stream", // English
"Audio Stream", // Deutsch "Audio Stream", // Deutsch
@@ -899,8 +945,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Sampling Frequency", // English { "Sampling Frequency", // English
"Abtastrate", // Deutsch "Abtastrate", // Deutsch
@@ -918,8 +965,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "kHz", // English { "kHz", // English
"kHz", // Deutsch "kHz", // Deutsch
@@ -937,8 +985,9 @@ const tI18nPhrase Phrases[] = {
"kHz", // Romaneste "kHz", // Romaneste
"kHz", // Magyar "kHz", // Magyar
"kHz", // Catal<61> "kHz", // Catal<61>
#if VDRVERSNUM >= 10302
"ڳ<EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "ڳ<EFBFBD>", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"kHz", // Hrvatski (Croatian) #endif
}, },
{ "Nid", // English { "Nid", // English
"Nid", // Deutsch "Nid", // Deutsch
@@ -956,8 +1005,9 @@ const tI18nPhrase Phrases[] = {
"Nid", // Romaneste "Nid", // Romaneste
"Nid", // Magyar "Nid", // Magyar
"Nid", // Catal<61> "Nid", // Catal<61>
#if VDRVERSNUM >= 10302
"Nid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "Nid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Nid", // Hrvatski (Croatian) #endif
}, },
{ "Tid", // English { "Tid", // English
"Tid", // Deutsch "Tid", // Deutsch
@@ -975,8 +1025,9 @@ const tI18nPhrase Phrases[] = {
"Tid", // Romaneste "Tid", // Romaneste
"Tid", // Magyar "Tid", // Magyar
"Tid", // Catal<61> "Tid", // Catal<61>
#if VDRVERSNUM >= 10302
"Tid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "Tid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Tid", // Hrvatski (Croatian) #endif
}, },
{ "Rid", // English { "Rid", // English
"Rid", // Deutsch "Rid", // Deutsch
@@ -994,8 +1045,9 @@ const tI18nPhrase Phrases[] = {
"Rid", // Romaneste "Rid", // Romaneste
"Rid", // Magyar "Rid", // Magyar
"Rid", // Catal<61> "Rid", // Catal<61>
#if VDRVERSNUM >= 10302
"Rid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "Rid", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"Rid", // Hrvatski (Croatian) #endif
}, },
{ "dB", // English { "dB", // English
"dB", // Deutsch "dB", // Deutsch
@@ -1013,11 +1065,12 @@ const tI18nPhrase Phrases[] = {
"dB", // Romaneste "dB", // Romaneste
"dB", // Magyar "dB", // Magyar
"dB", // Catal<61> "dB", // Catal<61>
#if VDRVERSNUM >= 10302
"dB", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "dB", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"dB", // Hrvatski (Croatian) #endif
}, },
{ "not indicated", // English { "not indicated", // English
"", // Deutsch "nicht angezeigt", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "", // Italiano
"", // Nederlands "", // Nederlands
@@ -1032,8 +1085,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "AC-3", // English { "AC-3", // English
"AC-3", // Deutsch "AC-3", // Deutsch
@@ -1051,8 +1105,9 @@ const tI18nPhrase Phrases[] = {
"AC-3", // Romaneste "AC-3", // Romaneste
"AC-3", // Magyar "AC-3", // Magyar
"AC-3", // Catal<61> "AC-3", // Catal<61>
#if VDRVERSNUM >= 10302
"AC-3", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "AC-3", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"AC-3", // Hrvatski (Croatian) #endif
}, },
{ "AC-3 Stream", // English { "AC-3 Stream", // English
"AC-3 Stream", // Deutsch "AC-3 Stream", // Deutsch
@@ -1070,8 +1125,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Frame Size", // English { "Frame Size", // English
"Frame Gr<47><72>e", // Deutsch "Frame Gr<47><72>e", // Deutsch
@@ -1089,8 +1145,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Bit Stream Mode", // English { "Bit Stream Mode", // English
"Bitstream Modus", // Deutsch "Bitstream Modus", // Deutsch
@@ -1108,8 +1165,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Audio Coding Mode", // English { "Audio Coding Mode", // English
"Audio Coding Modus", // Deutsch "Audio Coding Modus", // Deutsch
@@ -1127,8 +1185,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Center Mix Level", // English { "Center Mix Level", // English
"Center Mix Pegel", // Deutsch "Center Mix Pegel", // Deutsch
@@ -1146,8 +1205,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Surround Mix Level", // English { "Surround Mix Level", // English
"Surround Mix Pegel", // Deutsch "Surround Mix Pegel", // Deutsch
@@ -1165,8 +1225,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Dolby Surround Mode", // English { "Dolby Surround Mode", // English
"Dolby Surround Modus", // Deutsch "Dolby Surround Modus", // Deutsch
@@ -1184,11 +1245,12 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Low Frequency Effects", // English { "Low Frequency Effects", // English
"Tieft<EFBFBD>ner Effekte", // Deutsch "Tieft<EFBFBD>ner Effekt", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "", // Italiano
"", // Nederlands "", // Nederlands
@@ -1203,11 +1265,12 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Dialogue Normalization", // English { "Dialogue Normalization", // English
"Dialog Normalisierung", // Deutsch "Dialog Normalisation", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "", // Italiano
"", // Nederlands "", // Nederlands
@@ -1222,8 +1285,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Complete Main (CM)", // English { "Complete Main (CM)", // English
"Complete Main (CM)", // Deutsch "Complete Main (CM)", // Deutsch
@@ -1241,8 +1305,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Music and Effects (ME)", // English { "Music and Effects (ME)", // English
"Musik und Effekte (ME)", // Deutsch "Musik und Effekte (ME)", // Deutsch
@@ -1260,8 +1325,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Visually Impaired (VI)", // English { "Visually Impaired (VI)", // English
"Sehbehindert (VI)", // Deutsch "Sehbehindert (VI)", // Deutsch
@@ -1279,8 +1345,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Hearing Impaired (HI)", // English { "Hearing Impaired (HI)", // English
"H<EFBFBD>rbehindert (HI)", // Deutsch "H<EFBFBD>rbehindert (HI)", // Deutsch
@@ -1298,8 +1365,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Dialogue (D)", // English { "Dialogue (D)", // English
"Dialog (D)", // Deutsch "Dialog (D)", // Deutsch
@@ -1317,8 +1385,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Commentary (C)", // English { "Commentary (C)", // English
"Kommentar (C)", // Deutsch "Kommentar (C)", // Deutsch
@@ -1336,8 +1405,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Emergency (E)", // English { "Emergency (E)", // English
"Notfall (E)", // Deutsch "Notfall (E)", // Deutsch
@@ -1355,8 +1425,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Voice Over (VO)", // English { "Voice Over (VO)", // English
"<EFBFBD>berlagerte Stimme (VO)", // Deutsch "<EFBFBD>berlagerte Stimme (VO)", // Deutsch
@@ -1374,8 +1445,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Karaoke", // English { "Karaoke", // English
"Karaoke", // Deutsch "Karaoke", // Deutsch
@@ -1393,11 +1465,12 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Ch1", // English "Channel 1" { "Ch1", // English "Channel 1"
"Kan1", // Deutsch "Kanal1", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "", // Italiano
"", // Nederlands "", // Nederlands
@@ -1412,11 +1485,12 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "Ch2", // English "Channel 2" { "Ch2", // English "Channel 2"
"Kan2", // Deutsch "Kanal2", // Deutsch
"", // Slovenski "", // Slovenski
"", // Italiano "", // Italiano
"", // Nederlands "", // Nederlands
@@ -1431,8 +1505,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "C", // English "Center" { "C", // English "Center"
"C", // Deutsch "C", // Deutsch
@@ -1450,8 +1525,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "L", // English "Left" { "L", // English "Left"
"L", // Deutsch "L", // Deutsch
@@ -1469,8 +1545,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "R", // English "Right" { "R", // English "Right"
"R", // Deutsch "R", // Deutsch
@@ -1488,8 +1565,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "S", // English "Surround" { "S", // English "Surround"
"S", // Deutsch "S", // Deutsch
@@ -1507,8 +1585,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "SL", // English "Surround Left" { "SL", // English "Surround Left"
"SL", // Deutsch "SL", // Deutsch
@@ -1526,8 +1605,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ "SR", // English "Surround Right" { "SR", // English "Surround Right"
"SR", // Deutsch "SR", // Deutsch
@@ -1545,8 +1625,9 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Catal<61> "", // Catal<61>
#if VDRVERSNUM >= 10302
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian) #endif
}, },
{ NULL } { NULL }
}; };

View File

@@ -9,6 +9,7 @@
#ifndef __FEMONI18N_H #ifndef __FEMONI18N_H
#define __FEMONI18N_H #define __FEMONI18N_H
#include <vdr/config.h> // for VDRVERSNUM
#include <vdr/i18n.h> #include <vdr/i18n.h>
extern const tI18nPhrase Phrases[]; extern const tI18nPhrase Phrases[];

View File

@@ -12,62 +12,34 @@
#include "femonreceiver.h" #include "femonreceiver.h"
#include "femonosd.h" #include "femonosd.h"
#include "symbols/dev0.xpm" #if (VDRVERSNUM < 10300) && !defined(ELCHIAIOVERSION)
#include "symbols/dev1.xpm" #warning You should consider using the small fonts!
#include "symbols/dev2.xpm" #endif
#include "symbols/dev3.xpm"
#include "symbols/apid1.xpm"
#include "symbols/apid2.xpm"
#include "symbols/ar11.xpm"
#include "symbols/ar169.xpm"
#include "symbols/ar2211.xpm"
#include "symbols/ar43.xpm"
#include "symbols/ntsc.xpm"
#include "symbols/pal.xpm"
#include "symbols/dolbydigital.xpm"
#include "symbols/dolbydigital20.xpm"
#include "symbols/dolbydigital51.xpm"
#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
#ifdef NTSC_SYSTEM #define SCREENWIDTH 720 // in pixels
#define OSDHEIGHT 420 // in pixels #define SCREENHEIGHT 576 // in pixels
#else
#define OSDHEIGHT 480 // in pixels
#endif
#define OSDWIDTH 600 // in pixels #define OSDWIDTH 600 // in pixels
#define OSDINFOHEIGHT (m_Font->Height() * 11) // in pixels (11 rows) #define OSDHEIGHT 480 // in pixels
#define OSDSTATUSHEIGHT (m_Font->Height() * 6) // in pixels (6 rows) #define OSDINFOHEIGHT ((cOsd::LineHeight() - 2) * 11) // in pixels (11 rows)
#define OSDSTATUSHEIGHT ((cOsd::LineHeight() - 2) * 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) ? 470 : (col == 3) ? 300 : (col==2) ? 180 : 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) * OSDWIDTH / 5) + ((OSDWIDTH / 5 - m_Font->Width(txt)) / 2)) #define OSDSTATUSWIN_XC(col,txt) (((col - 1) * SCREENWIDTH / 6) + ((SCREENWIDTH / 6 - cOsd::WidthInCells(txt) * cOsd::CellWidth()) / 2))
#define BARWIDTH(x) (OSDWIDTH * x / 100) #define BARWIDTH(x) (OSDWIDTH * x / 100)
#define SPACING 5 #define DELTA 2
#define clrBackground clrGray50 // this should be tied somehow into current theme
cBitmap cFemonOsd::bmDevice0(dev0_xpm);
cBitmap cFemonOsd::bmDevice1(dev1_xpm);
cBitmap cFemonOsd::bmDevice2(dev2_xpm);
cBitmap cFemonOsd::bmDevice3(dev3_xpm);
cBitmap cFemonOsd::bmApid1(apid1_xpm);
cBitmap cFemonOsd::bmApid2(apid2_xpm);
cBitmap cFemonOsd::bmAspectRatio_1_1(ar11_xpm);
cBitmap cFemonOsd::bmAspectRatio_16_9(ar169_xpm);
cBitmap cFemonOsd::bmAspectRatio_2_21_1(ar2211_xpm);
cBitmap cFemonOsd::bmAspectRatio_4_3(ar43_xpm);
cBitmap cFemonOsd::bmPAL(pal_xpm);
cBitmap cFemonOsd::bmNTSC(ntsc_xpm);
cBitmap cFemonOsd::bmDD(dolbydigital_xpm);
cBitmap cFemonOsd::bmDD20(dolbydigital20_xpm);
cBitmap cFemonOsd::bmDD51(dolbydigital51_xpm);
cFemonOsd::cFemonOsd(void) cFemonOsd::cFemonOsd(void)
#if VDRVERSNUM >= 10300
:cOsdObject(true), cThread("femon osd") :cOsdObject(true), cThread("femon osd")
#else
:cOsdObject(true)
#endif
{ {
//printf("cFemonOsd::cFemonOsd()\n"); //printf("cFemonOsd::cFemonOsd()\n");
m_Osd = NULL; m_Osd = NULL;
@@ -82,15 +54,12 @@ cFemonOsd::cFemonOsd(void)
m_BER = 0; m_BER = 0;
m_UNC = 0; m_UNC = 0;
m_DisplayMode = femonConfig.displaymode; m_DisplayMode = femonConfig.displaymode;
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
m_Font = fontSml;
#else
m_Font = fontOsd;
#endif
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)
@@ -114,172 +83,75 @@ void cFemonOsd::DrawStatusWindow(void)
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;
int y = 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); #if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
eDvbFont OldFont = m_Osd->SetFont(m_Font);
#endif
m_Osd->Fill(0, OSDSTATUSWIN_Y(0), OSDWIDTH, OSDSTATUSWIN_Y(OSDSTATUSHEIGHT), clrBackground, m_StatusWindow);
snprintf(buf, sizeof(buf), "%d%s %s", m_Number ? m_Number : channel->Number(), m_Number ? "-" : "", channel->Name()); snprintf(buf, sizeof(buf), "%d%s %s", m_Number ? m_Number : channel->Number(), m_Number ? "-" : "", channel->Name());
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+m_Font->Height()-1), clrWhite); m_Osd->Fill(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+cOsd::LineHeight()-1), clrWhite, m_StatusWindow);
m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrBlack, clrWhite, m_Font); m_Osd->Text(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrBlack, clrWhite, m_StatusWindow);
if (m_Receiver) { offset += cOsd::LineHeight();
int value = cDevice::ActualDevice()->CardIndex();
if (value == 0) {
x -= bmDevice0.Width() + SPACING;
y = (m_Font->Height() - bmDevice0.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice0, clrBlack, clrWhite);
}
else if (value == 1) {
x -= bmDevice1.Width() + SPACING;
y = (m_Font->Height() - bmDevice1.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice1, clrBlack, clrWhite);
}
else if (value == 2) {
x -= bmDevice2.Width() + SPACING;
y = (m_Font->Height() - bmDevice2.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice2, clrBlack, clrWhite);
}
else if (value == 3) {
x -= bmDevice3.Width() + SPACING;
y = (m_Font->Height() - bmDevice3.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice3, clrBlack, clrWhite);
}
value = -1;
const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&value);
if (AudioTracks) {
if (value == 0) {
x -= bmApid1.Width() + SPACING;
y = (m_Font->Height() - bmApid1.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmApid1, clrBlack, clrWhite);
}
else if (value == 1) {
x -= bmApid2.Width() + SPACING;
y = (m_Font->Height() - bmApid2.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmApid2, clrBlack, clrWhite);
}
}
value = m_Receiver->VideoFormat();
if (value == VF_PAL) {
x -= bmPAL.Width() + SPACING;
y = (m_Font->Height() - bmPAL.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmPAL, clrBlack, clrWhite);
}
else if (value == VF_NTSC) {
x -= bmNTSC.Width() + SPACING;
y = (m_Font->Height() - bmNTSC.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmNTSC, clrBlack, clrWhite);
}
value = m_Receiver->VideoAspectRatio();
if (value == AR_1_1) {
x -= bmAspectRatio_1_1.Width() + SPACING;
y = (m_Font->Height() - bmAspectRatio_1_1.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmAspectRatio_1_1, clrBlack, clrWhite);
}
else if (value == AR_4_3) {
x -= bmAspectRatio_4_3.Width() + SPACING;
y = (m_Font->Height() - bmAspectRatio_4_3.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmAspectRatio_4_3, clrBlack, clrWhite);
}
else if (value == AR_16_9) {
x -= bmAspectRatio_16_9.Width() + SPACING;
y = (m_Font->Height() - bmAspectRatio_16_9.Height()) / 2;
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmAspectRatio_16_9, clrBlack, clrWhite);
}
else if (value == AR_2_21_1) {
x -= bmAspectRatio_2_21_1.Width() + SPACING;
y = (m_Font->Height() - bmAspectRatio_2_21_1.Height()) / 2;
if (y < 0) y = 0;
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();
if (signal > 0) { if (signal > 0) {
signal = BARWIDTH(signal); signal = BARWIDTH(signal);
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.redlimit), signal), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrRed); m_Osd->Fill(0, OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.redlimit), signal), OSDSTATUSWIN_Y(offset+cOsd::LineHeight()-3), clrRed, m_StatusWindow);
if (signal > BARWIDTH(femonConfig.redlimit)) { if (signal > BARWIDTH(femonConfig.redlimit)) {
m_Osd->DrawRectangle(BARWIDTH(femonConfig.redlimit), OSDSTATUSWIN_Y(offset+3), min((OSDWIDTH * femonConfig.greenlimit / 100), signal), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrYellow); m_Osd->Fill(BARWIDTH(femonConfig.redlimit), OSDSTATUSWIN_Y(offset+3), min((OSDWIDTH * femonConfig.greenlimit / 100), signal), OSDSTATUSWIN_Y(offset+cOsd::LineHeight()-3), clrYellow, m_StatusWindow);
} }
if (signal > BARWIDTH(femonConfig.greenlimit)) { if (signal > BARWIDTH(femonConfig.greenlimit)) {
m_Osd->DrawRectangle(BARWIDTH(femonConfig.greenlimit), OSDSTATUSWIN_Y(offset+3), signal, OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrGreen); m_Osd->Fill(BARWIDTH(femonConfig.greenlimit), OSDSTATUSWIN_Y(offset+3), signal, OSDSTATUSWIN_Y(offset+cOsd::LineHeight()-3), clrGreen, m_StatusWindow);
} }
} }
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
if (snr > 0) { if (snr > 0) {
snr = BARWIDTH(snr); snr = BARWIDTH(snr);
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.redlimit), snr), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrRed); m_Osd->Fill(0, OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.redlimit), snr), OSDSTATUSWIN_Y(offset+cOsd::LineHeight()-3), clrRed, m_StatusWindow);
if (snr > BARWIDTH(femonConfig.redlimit)) { if (snr > BARWIDTH(femonConfig.redlimit)) {
m_Osd->DrawRectangle(BARWIDTH(femonConfig.redlimit), OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.greenlimit), snr), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrYellow); m_Osd->Fill(BARWIDTH(femonConfig.redlimit), OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.greenlimit), snr), OSDSTATUSWIN_Y(offset+cOsd::LineHeight()-3), clrYellow, m_StatusWindow);
} }
if (snr > BARWIDTH(femonConfig.greenlimit)) { if (snr > BARWIDTH(femonConfig.greenlimit)) {
m_Osd->DrawRectangle(BARWIDTH(femonConfig.greenlimit), OSDSTATUSWIN_Y(offset+3), snr, OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrGreen); m_Osd->Fill(BARWIDTH(femonConfig.greenlimit), OSDSTATUSWIN_Y(offset+3), snr, OSDSTATUSWIN_Y(offset+cOsd::LineHeight()-3), clrGreen, m_StatusWindow);
} }
} }
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), "STR:", clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), "STR:", clrWhite, clrBackground, m_StatusWindow);
snprintf(buf, sizeof(buf), "%04x", m_Signal); snprintf(buf, sizeof(buf), "%04x", m_Signal);
m_Osd->DrawText(OSDSTATUSWIN_X(2), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(2), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
snprintf(buf, sizeof(buf), "(%2d%%)", m_Signal / 655); snprintf(buf, sizeof(buf), "(%2d%%)", m_Signal / 655);
m_Osd->DrawText(OSDSTATUSWIN_X(3), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(3), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
m_Osd->DrawText(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), "BER:", clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), "BER:", clrWhite, clrBackground, m_StatusWindow);
snprintf(buf, sizeof(buf), "%08x", m_BER); snprintf(buf, sizeof(buf), "%08x", m_BER);
m_Osd->DrawText(OSDSTATUSWIN_X(5), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(5), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
snprintf(buf, sizeof(buf), "%s:", tr("Video")); snprintf(buf, sizeof(buf), "%s:", tr("Video"));
m_Osd->DrawText(OSDSTATUSWIN_X(6), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(6), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
if (m_Receiver) snprintf(buf, sizeof(buf), "%.2f %s", m_Receiver->VideoBitrate(), tr("Mbit/s")); if (m_Receiver) snprintf(buf, sizeof(buf), "%.2f %s", m_Receiver->VideoBitrate(), tr("Mbit/s"));
else snprintf(buf, sizeof(buf), "--- %s", tr("Mbit/s")); else snprintf(buf, sizeof(buf), "--- %s", tr("Mbit/s"));
m_Osd->DrawText(OSDSTATUSWIN_X(7), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(7), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), "SNR:", clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), "SNR:", clrWhite, clrBackground, m_StatusWindow);
snprintf(buf, sizeof(buf), "%04x", m_SNR); snprintf(buf, sizeof(buf), "%04x", m_SNR);
m_Osd->DrawText(OSDSTATUSWIN_X(2), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(2), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
snprintf(buf, sizeof(buf), "(%2d%%)", m_SNR / 655); snprintf(buf, sizeof(buf), "(%2d%%)", m_SNR / 655);
m_Osd->DrawText(OSDSTATUSWIN_X(3), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(3), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
m_Osd->DrawText(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), "UNC:", clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), "UNC:", clrWhite, clrBackground, m_StatusWindow);
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->Text(OSDSTATUSWIN_X(5), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
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()) ? tr("AC-3") : tr("Audio"));
m_Osd->DrawText(OSDSTATUSWIN_X(6), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_X(6), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
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() ? 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->Text(OSDSTATUSWIN_X(7), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_StatusWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDSTATUSWIN_XC(1,tr("LOCK")), OSDSTATUSWIN_Y(offset), tr("LOCK"), (m_FrontendStatus & FE_HAS_LOCK) ? clrYellow : clrBlack, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_XC(1,tr("LOCK")), OSDSTATUSWIN_Y(offset), tr("LOCK"), (m_FrontendStatus & FE_HAS_LOCK) ? clrYellow : clrBlack, clrBackground, m_StatusWindow);
m_Osd->DrawText(OSDSTATUSWIN_XC(2,tr("SIGNAL")), OSDSTATUSWIN_Y(offset), tr("SIGNAL"), (m_FrontendStatus & FE_HAS_SIGNAL) ? clrYellow : clrBlack, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_XC(2,tr("SIGNAL")), OSDSTATUSWIN_Y(offset), tr("SIGNAL"), (m_FrontendStatus & FE_HAS_SIGNAL) ? clrYellow : clrBlack, clrBackground, m_StatusWindow);
m_Osd->DrawText(OSDSTATUSWIN_XC(3,tr("CARRIER")), OSDSTATUSWIN_Y(offset), tr("CARRIER"),(m_FrontendStatus & FE_HAS_CARRIER)? clrYellow : clrBlack, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_XC(3,tr("CARRIER")), OSDSTATUSWIN_Y(offset), tr("CARRIER"),(m_FrontendStatus & FE_HAS_CARRIER)? clrYellow : clrBlack, clrBackground, m_StatusWindow);
m_Osd->DrawText(OSDSTATUSWIN_XC(4,tr("VITERBI")), OSDSTATUSWIN_Y(offset), tr("VITERBI"),(m_FrontendStatus & FE_HAS_VITERBI)? clrYellow : clrBlack, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_XC(4,tr("VITERBI")), OSDSTATUSWIN_Y(offset), tr("VITERBI"),(m_FrontendStatus & FE_HAS_VITERBI)? clrYellow : clrBlack, clrBackground, m_StatusWindow);
m_Osd->DrawText(OSDSTATUSWIN_XC(5,tr("SYNC")), OSDSTATUSWIN_Y(offset), tr("SYNC"), (m_FrontendStatus & FE_HAS_SYNC) ? clrYellow : clrBlack, clrBackground, m_Font); m_Osd->Text(OSDSTATUSWIN_XC(5,tr("SYNC")), OSDSTATUSWIN_Y(offset), tr("SYNC"), (m_FrontendStatus & FE_HAS_SYNC) ? clrYellow : clrBlack, clrBackground, m_StatusWindow);
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
m_Osd->SetFont(OldFont);
#endif
m_Osd->Flush(); m_Osd->Flush();
} }
} }
@@ -296,78 +168,83 @@ void cFemonOsd::DrawInfoWindow(void)
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (m_Osd) { if (m_Osd) {
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
eDvbFont OldFont = m_Osd->SetFont(m_Font);
#endif
if (m_DisplayMode == modeTransponder) { if (m_DisplayMode == modeTransponder) {
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground); m_Osd->Fill(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground, m_InfoWindow);
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+m_Font->Height()-1), clrWhite); m_Osd->Fill(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+cOsd::LineHeight()-1), clrWhite, m_InfoWindow);
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Transponder Information"), clrBackground, clrWhite, m_Font); m_Osd->Text( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Transponder Information"), clrBackground, clrWhite, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Vpid"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Vpid"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Vpid()); snprintf(buf, sizeof(buf), "%d", channel->Vpid());
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Ppid"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Ppid"), clrWhite, clrBackground, m_InfoWindow);
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->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Apid1"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Apid1"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Apid2(); value = channel->Apid2();
if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Apid1(), value); if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Apid1(), value);
else snprintf(buf, sizeof(buf), "%d", channel->Apid1()); else snprintf(buf, sizeof(buf), "%d", channel->Apid1());
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid1"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid1"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Dpid2(); value = channel->Dpid2();
if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Dpid1(), value); if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Dpid1(), value);
else snprintf(buf, sizeof(buf), "%d", channel->Dpid1()); else snprintf(buf, sizeof(buf), "%d", channel->Dpid1());
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%X", channel->Ca()); snprintf(buf, sizeof(buf), "%d", channel->Ca());
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Tpid()); snprintf(buf, sizeof(buf), "%d", channel->Tpid());
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Sid"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Sid"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Sid()); snprintf(buf, sizeof(buf), "%d", channel->Sid());
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Nid"), clrWhite, clrBackground, m_Font); #if (VDRVERSNUM >= 10300)
m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Nid"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Nid()); snprintf(buf, sizeof(buf), "%d", channel->Nid());
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Tid"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Tid"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Tid()); snprintf(buf, sizeof(buf), "%d", channel->Tid());
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Rid"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Rid"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Rid()); snprintf(buf, sizeof(buf), "%d", channel->Rid());
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); #endif
offset += cOsd::LineHeight() - DELTA;
switch (m_FrontendInfo.type) { switch (m_FrontendInfo.type) {
case FE_QPSK: case FE_QPSK:
snprintf(buf, sizeof(buf), "%s #%d - %s", tr("Satellite Card"), cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name); snprintf(buf, sizeof(buf), "%s #%d - %s", tr("Satellite Card"), cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name);
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Frequency(); value = channel->Frequency();
while (value > 20000) value /= 1000; while (value > 20000) value /= 1000;
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->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_InfoWindow);
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->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Srate()); snprintf(buf, sizeof(buf), "%d", channel->Srate());
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Polarization"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Polarization"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%c", toupper(channel->Polarization())); snprintf(buf, sizeof(buf), "%c", toupper(channel->Polarization()));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Inversion(); value = channel->Inversion();
if (value == INVERSION_OFF) snprintf(buf, sizeof(buf), tr("Off")); if (value == INVERSION_OFF) snprintf(buf, sizeof(buf), tr("Off"));
else if (value == INVERSION_ON) snprintf(buf, sizeof(buf), tr("On")); else if (value == INVERSION_ON) snprintf(buf, sizeof(buf), tr("On"));
else /*INVERSION_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*INVERSION_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_InfoWindow);
value = channel->CoderateH(); value = channel->CoderateH();
if (value == FEC_NONE) snprintf(buf, sizeof(buf), tr("None")); if (value == FEC_NONE) snprintf(buf, sizeof(buf), tr("None"));
else if (value == FEC_1_2) snprintf(buf, sizeof(buf), "1/2"); else if (value == FEC_1_2) snprintf(buf, sizeof(buf), "1/2");
@@ -379,26 +256,26 @@ void cFemonOsd::DrawInfoWindow(void)
else if (value == FEC_7_8) snprintf(buf, sizeof(buf), "7/8"); else if (value == FEC_7_8) snprintf(buf, sizeof(buf), "7/8");
else if (value == FEC_8_9) snprintf(buf, sizeof(buf), "8/9"); else if (value == FEC_8_9) snprintf(buf, sizeof(buf), "8/9");
else /*FEC_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*FEC_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
break; break;
case FE_QAM: case FE_QAM:
snprintf(buf, sizeof(buf), "%s #%d - %s", tr("Cable Card"), cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name); snprintf(buf, sizeof(buf), "%s #%d - %s", tr("Cable Card"), cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name);
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Frequency(); value = channel->Frequency();
while (value > 20000) value /= 1000; while (value > 20000) value /= 1000;
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->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_InfoWindow);
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->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Srate()); snprintf(buf, sizeof(buf), "%d", channel->Srate());
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Modulation"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Modulation"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Modulation(); value = channel->Modulation();
if (value == QPSK) snprintf(buf, sizeof(buf), "QPSK"); if (value == QPSK) snprintf(buf, sizeof(buf), "QPSK");
else if (value == QAM_16) snprintf(buf, sizeof(buf), "QAM 16"); else if (value == QAM_16) snprintf(buf, sizeof(buf), "QAM 16");
@@ -407,15 +284,15 @@ void cFemonOsd::DrawInfoWindow(void)
else if (value == QAM_128) snprintf(buf, sizeof(buf), "QAM 128"); else if (value == QAM_128) snprintf(buf, sizeof(buf), "QAM 128");
else if (value == QAM_256) snprintf(buf, sizeof(buf), "QAM 256"); else if (value == QAM_256) snprintf(buf, sizeof(buf), "QAM 256");
else /*QAM_AUTO*/ snprintf(buf, sizeof(buf), "QAM %s", tr("Auto")); else /*QAM_AUTO*/ snprintf(buf, sizeof(buf), "QAM %s", tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Inversion(); value = channel->Inversion();
if (value == INVERSION_OFF) snprintf(buf, sizeof(buf), tr("Off")); if (value == INVERSION_OFF) snprintf(buf, sizeof(buf), tr("Off"));
else if (value == INVERSION_ON) snprintf(buf, sizeof(buf), tr("On")); else if (value == INVERSION_ON) snprintf(buf, sizeof(buf), tr("On"));
else /*INVERSION_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*INVERSION_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_InfoWindow);
value = channel->CoderateH(); value = channel->CoderateH();
if (value == FEC_NONE) snprintf(buf, sizeof(buf), tr("None")); if (value == FEC_NONE) snprintf(buf, sizeof(buf), tr("None"));
else if (value == FEC_1_2) snprintf(buf, sizeof(buf), "1/2"); else if (value == FEC_1_2) snprintf(buf, sizeof(buf), "1/2");
@@ -427,33 +304,33 @@ void cFemonOsd::DrawInfoWindow(void)
else if (value == FEC_7_8) snprintf(buf, sizeof(buf), "7/8"); else if (value == FEC_7_8) snprintf(buf, sizeof(buf), "7/8");
else if (value == FEC_8_9) snprintf(buf, sizeof(buf), "8/9"); else if (value == FEC_8_9) snprintf(buf, sizeof(buf), "8/9");
else /*FEC_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*FEC_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
break; break;
default: default:
snprintf(buf, sizeof(buf), "%s #%d - %s", tr("Terrestial Card"), cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name); snprintf(buf, sizeof(buf), "%s #%d - %s", tr("Terrestial Card"), cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name);
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Frequency(); value = channel->Frequency();
while (value > 20000) value /= 1000; while (value > 20000) value /= 1000;
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->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Transmission"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Transmission"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Transmission(); value = channel->Transmission();
if (value == TRANSMISSION_MODE_2K) snprintf(buf, sizeof(buf), "2K"); if (value == TRANSMISSION_MODE_2K) snprintf(buf, sizeof(buf), "2K");
else if (value == TRANSMISSION_MODE_8K) snprintf(buf, sizeof(buf), "8K"); else if (value == TRANSMISSION_MODE_8K) snprintf(buf, sizeof(buf), "8K");
else /*TRANSMISSION_MODE_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*TRANSMISSION_MODE_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bandwidth"), clrWhite, clrBackground, m_Font); m_Osd->Text( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bandwidth"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Bandwidth(); value = channel->Bandwidth();
if (value == BANDWIDTH_8_MHZ) snprintf(buf, sizeof(buf), "8 %s", tr("MHz")); if (value == BANDWIDTH_8_MHZ) snprintf(buf, sizeof(buf), "8 %s", tr("MHz"));
else if (value == BANDWIDTH_7_MHZ) snprintf(buf, sizeof(buf), "7 %s", tr("MHz")); else if (value == BANDWIDTH_7_MHZ) snprintf(buf, sizeof(buf), "7 %s", tr("MHz"));
else if (value == BANDWIDTH_6_MHZ) snprintf(buf, sizeof(buf), "6 %s", tr("MHz")); else if (value == BANDWIDTH_6_MHZ) snprintf(buf, sizeof(buf), "6 %s", tr("MHz"));
else /*BANDWIDTH_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*BANDWIDTH_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Modulation"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Modulation"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Modulation(); value = channel->Modulation();
if (value == QPSK) snprintf(buf, sizeof(buf), "QPSK"); if (value == QPSK) snprintf(buf, sizeof(buf), "QPSK");
else if (value == QAM_16) snprintf(buf, sizeof(buf), "QAM 16"); else if (value == QAM_16) snprintf(buf, sizeof(buf), "QAM 16");
@@ -462,15 +339,15 @@ void cFemonOsd::DrawInfoWindow(void)
else if (value == QAM_128) snprintf(buf, sizeof(buf), "QAM 128"); else if (value == QAM_128) snprintf(buf, sizeof(buf), "QAM 128");
else if (value == QAM_256) snprintf(buf, sizeof(buf), "QAM 256"); else if (value == QAM_256) snprintf(buf, sizeof(buf), "QAM 256");
else /*QAM_AUTO*/ snprintf(buf, sizeof(buf), "QAM %s", tr("Auto")); else /*QAM_AUTO*/ snprintf(buf, sizeof(buf), "QAM %s", tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Inversion(); value = channel->Inversion();
if (value == INVERSION_OFF) snprintf(buf, sizeof(buf), tr("Off")); if (value == INVERSION_OFF) snprintf(buf, sizeof(buf), tr("Off"));
else if (value == INVERSION_ON) snprintf(buf, sizeof(buf), tr("On")); else if (value == INVERSION_ON) snprintf(buf, sizeof(buf), tr("On"));
else /*INVERSION_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*INVERSION_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_InfoWindow);
value = channel->CoderateH(); value = channel->CoderateH();
if (value == FEC_NONE) snprintf(buf, sizeof(buf), tr("None")); if (value == FEC_NONE) snprintf(buf, sizeof(buf), tr("None"));
else if (value == FEC_1_2) snprintf(buf, sizeof(buf), "1/2"); else if (value == FEC_1_2) snprintf(buf, sizeof(buf), "1/2");
@@ -494,42 +371,42 @@ void cFemonOsd::DrawInfoWindow(void)
else if (value == FEC_8_9) snprintf(buf2, sizeof(buf2), " - 8/9"); else if (value == FEC_8_9) snprintf(buf2, sizeof(buf2), " - 8/9");
else /*FEC_AUTO*/ snprintf(buf2, sizeof(buf2), " - %s", tr("Auto")); else /*FEC_AUTO*/ snprintf(buf2, sizeof(buf2), " - %s", tr("Auto"));
strncat(buf, buf2, sizeof(buf)); strncat(buf, buf2, sizeof(buf));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Hierarchy"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Hierarchy"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Hierarchy(); value = channel->Hierarchy();
if (value == HIERARCHY_NONE) snprintf(buf, sizeof(buf), tr("None")); if (value == HIERARCHY_NONE) snprintf(buf, sizeof(buf), tr("None"));
else if (value == HIERARCHY_1) snprintf(buf, sizeof(buf), "1"); else if (value == HIERARCHY_1) snprintf(buf, sizeof(buf), "1");
else if (value == HIERARCHY_2) snprintf(buf, sizeof(buf), "2"); else if (value == HIERARCHY_2) snprintf(buf, sizeof(buf), "2");
else if (value == HIERARCHY_4) snprintf(buf, sizeof(buf), "4"); else if (value == HIERARCHY_4) snprintf(buf, sizeof(buf), "4");
else /*HIERARCHY_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*HIERARCHY_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Guard"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Guard"), clrWhite, clrBackground, m_InfoWindow);
value = channel->Guard(); value = channel->Guard();
if (value == GUARD_INTERVAL_1_32) snprintf(buf, sizeof(buf), "1/32"); if (value == GUARD_INTERVAL_1_32) snprintf(buf, sizeof(buf), "1/32");
else if (value == GUARD_INTERVAL_1_16) snprintf(buf, sizeof(buf), "1/16"); else if (value == GUARD_INTERVAL_1_16) snprintf(buf, sizeof(buf), "1/16");
else if (value == GUARD_INTERVAL_1_8) snprintf(buf, sizeof(buf), "1/8"); else if (value == GUARD_INTERVAL_1_8) snprintf(buf, sizeof(buf), "1/8");
else if (value == GUARD_INTERVAL_1_4) snprintf(buf, sizeof(buf), "1/4"); else if (value == GUARD_INTERVAL_1_4) snprintf(buf, sizeof(buf), "1/4");
else /*GUARD_INTERVAL_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto")); else /*GUARD_INTERVAL_AUTO*/ snprintf(buf, sizeof(buf), tr("Auto"));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
break; break;
} }
} }
else if (m_DisplayMode == modeStream) { else if (m_DisplayMode == modeStream) {
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground); m_Osd->Fill(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground, m_InfoWindow);
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+m_Font->Height()-1), clrWhite); m_Osd->Fill(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+cOsd::LineHeight()-1), clrWhite, m_InfoWindow);
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Stream Information"), clrBackground, clrWhite, m_Font); m_Osd->Text( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Stream Information"), clrBackground, clrWhite, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Video Stream"), clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Video Stream"), clrYellow, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "#%d", channel->Vpid()); snprintf(buf, sizeof(buf), "#%d", channel->Vpid());
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver) snprintf(buf, sizeof(buf), "%.2f %s (%.2f %s)", m_Receiver->VideoStreamBitrate(), tr("Mbit/s"), m_Receiver->VideoBitrate(), tr("Mbit/s")); if (m_Receiver) snprintf(buf, sizeof(buf), "%.2f %s (%.2f %s)", m_Receiver->VideoStreamBitrate(), tr("Mbit/s"), m_Receiver->VideoBitrate(), tr("Mbit/s"));
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Aspect Ratio"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Aspect Ratio"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver) { if (m_Receiver) {
value = m_Receiver->VideoAspectRatio(); value = m_Receiver->VideoAspectRatio();
if (value == AR_1_1) snprintf(buf, sizeof(buf), "1:1"); if (value == AR_1_1) snprintf(buf, sizeof(buf), "1:1");
@@ -539,14 +416,14 @@ void cFemonOsd::DrawInfoWindow(void)
else snprintf(buf, sizeof(buf), "%s", tr("reserved")); else snprintf(buf, sizeof(buf), "%s", tr("reserved"));
} }
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frame Rate"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frame Rate"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver) snprintf(buf, sizeof(buf), "%.2f %s", m_Receiver->VideoFrameRate(), tr("Hz")); if (m_Receiver) snprintf(buf, sizeof(buf), "%.2f %s", m_Receiver->VideoFrameRate(), tr("Hz"));
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Video Format"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Video Format"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver) { if (m_Receiver) {
value = m_Receiver->VideoFormat(); value = m_Receiver->VideoFormat();
if (value == VF_PAL) snprintf(buf, sizeof(buf), "%s", tr("PAL")); if (value == VF_PAL) snprintf(buf, sizeof(buf), "%s", tr("PAL"));
@@ -554,20 +431,18 @@ void cFemonOsd::DrawInfoWindow(void)
else snprintf(buf, sizeof(buf), "%s", tr("unknown")); else snprintf(buf, sizeof(buf), "%s", tr("unknown"));
} }
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Resolution"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Resolution"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver) snprintf(buf, sizeof(buf), "%d x %d", m_Receiver->VideoHorizontalSize(), m_Receiver->VideoVerticalSize()); if (m_Receiver) snprintf(buf, sizeof(buf), "%d x %d", m_Receiver->VideoHorizontalSize(), m_Receiver->VideoVerticalSize());
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_InfoWindow);
value = -1; snprintf(buf, sizeof(buf), "#%d", channel->Apid1());
cDevice::PrimaryDevice()->GetAudioTracks(&value); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "#%d", (value > 0 ? channel->Apid2() : channel->Apid1())); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_InfoWindow);
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font);
if (m_Receiver) { if (m_Receiver) {
dvalue = m_Receiver->AudioStreamBitrate(); dvalue = m_Receiver->AudioStreamBitrate();
if (dvalue == (double)FR_RESERVED) snprintf(buf, sizeof(buf), "%s (%.0f %s)", tr("reserved"), m_Receiver->AudioBitrate(), tr("kbit/s")); if (dvalue == (double)FR_RESERVED) snprintf(buf, sizeof(buf), "%s (%.0f %s)", tr("reserved"), m_Receiver->AudioBitrate(), tr("kbit/s"));
@@ -575,43 +450,43 @@ void cFemonOsd::DrawInfoWindow(void)
else snprintf(buf, sizeof(buf), "%.0f %s (%.0f %s)", dvalue, tr("kbit/s"), m_Receiver->AudioBitrate(), tr("kbit/s")); else snprintf(buf, sizeof(buf), "%.0f %s (%.0f %s)", dvalue, tr("kbit/s"), m_Receiver->AudioBitrate(), tr("kbit/s"));
} }
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("MPEG Layer"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("MPEG Layer"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver) snprintf(buf, sizeof(buf), "%d", m_Receiver->AudioMPEGLayer()); if (m_Receiver) snprintf(buf, sizeof(buf), "%d", m_Receiver->AudioMPEGLayer());
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Sampling Frequency"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Sampling Frequency"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver) { if (m_Receiver) {
value = m_Receiver->AudioSamplingFreq(); value = m_Receiver->AudioSamplingFreq();
if (value == FR_RESERVED) snprintf(buf, sizeof(buf), "%s", tr("reserved")); if (value == FR_RESERVED) snprintf(buf, sizeof(buf), "%s", tr("reserved"));
else snprintf(buf, sizeof(buf), "%.1f %s", (value / 1000.0), tr("kHz")); else snprintf(buf, sizeof(buf), "%.1f %s", (value / 1000.0), tr("kHz"));
} }
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
} }
else if (m_DisplayMode == modeAC3) { else if (m_DisplayMode == modeAC3) {
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground); m_Osd->Fill(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground, m_InfoWindow);
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+m_Font->Height()-1), clrWhite); m_Osd->Fill(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+cOsd::LineHeight()-1), clrWhite, m_InfoWindow);
snprintf(buf, sizeof(buf), "%s - %s #%d", tr("Stream Information"), tr("AC-3 Stream"), channel->Dpid1()); snprintf(buf, sizeof(buf), "%s - %s #%d", tr("Stream Information"), tr("AC-3 Stream"), channel->Dpid1());
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrBackground, clrWhite, m_Font); m_Osd->Text( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrBackground, clrWhite, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight();
if (m_Receiver && m_Receiver->AC3Valid()) { if (m_Receiver && m_Receiver->AC3Valid()) {
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_InfoWindow);
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->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Sampling Frequency"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Sampling Frequency"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%.1f %s", m_Receiver->AC3SamplingFreq() / 1000., tr("kHz")); snprintf(buf, sizeof(buf), "%.1f %s", m_Receiver->AC3SamplingFreq() / 1000., tr("kHz"));
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frame Size"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frame Size"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", m_Receiver->AC3FrameSize()); snprintf(buf, sizeof(buf), "%d", m_Receiver->AC3FrameSize());
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bit Stream Mode"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bit Stream Mode"), clrWhite, clrBackground, m_InfoWindow);
switch (m_Receiver->AC3BitStreamMode()) { switch (m_Receiver->AC3BitStreamMode()) {
case 0: snprintf(buf, sizeof(buf), tr("Complete Main (CM)")); break; case 0: snprintf(buf, sizeof(buf), tr("Complete Main (CM)")); break;
case 1: snprintf(buf, sizeof(buf), tr("Music and Effects (ME)")); break; case 1: snprintf(buf, sizeof(buf), tr("Music and Effects (ME)")); break;
@@ -623,9 +498,9 @@ void cFemonOsd::DrawInfoWindow(void)
case 7: (m_Receiver->AC3AudioCodingMode() == 1) ? snprintf(buf, sizeof(buf), tr("Voice Over (VO)")) : snprintf(buf, sizeof(buf), tr("Karaoke")); break; case 7: (m_Receiver->AC3AudioCodingMode() == 1) ? snprintf(buf, sizeof(buf), tr("Voice Over (VO)")) : snprintf(buf, sizeof(buf), tr("Karaoke")); break;
default: snprintf(buf, sizeof(buf), "---"); default: snprintf(buf, sizeof(buf), "---");
} }
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Coding Mode"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Coding Mode"), clrWhite, clrBackground, m_InfoWindow);
if (m_Receiver->AC3BitStreamMode() != 7) { if (m_Receiver->AC3BitStreamMode() != 7) {
switch (m_Receiver->AC3AudioCodingMode()) { switch (m_Receiver->AC3AudioCodingMode()) {
case 0: snprintf(buf, sizeof(buf), "1+1 - %s, %s", tr("Ch1"), tr("Ch2")); break; case 0: snprintf(buf, sizeof(buf), "1+1 - %s, %s", tr("Ch1"), tr("Ch2")); break;
@@ -640,9 +515,9 @@ void cFemonOsd::DrawInfoWindow(void)
} }
} }
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Center Mix Level"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Center Mix Level"), clrWhite, clrBackground, m_InfoWindow);
switch (m_Receiver->AC3CenterMixLevel()) { switch (m_Receiver->AC3CenterMixLevel()) {
case CML_MINUS_3dB: snprintf(buf, sizeof(buf), "-3.0 %s", tr("dB")); break; case CML_MINUS_3dB: snprintf(buf, sizeof(buf), "-3.0 %s", tr("dB")); break;
case CML_MINUS_4_5dB: snprintf(buf, sizeof(buf), "-4.5 %s", tr("dB")); break; case CML_MINUS_4_5dB: snprintf(buf, sizeof(buf), "-4.5 %s", tr("dB")); break;
@@ -650,9 +525,9 @@ void cFemonOsd::DrawInfoWindow(void)
case CML_RESERVED: snprintf(buf, sizeof(buf), "%s", tr("reserved")); break; case CML_RESERVED: snprintf(buf, sizeof(buf), "%s", tr("reserved")); break;
default: snprintf(buf, sizeof(buf), "---"); default: snprintf(buf, sizeof(buf), "---");
} }
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Surround Mix Level"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Surround Mix Level"), clrWhite, clrBackground, m_InfoWindow);
switch (m_Receiver->AC3SurroundMixLevel()) { switch (m_Receiver->AC3SurroundMixLevel()) {
case SML_MINUS_3dB: snprintf(buf, sizeof(buf), "-3 %s", tr("dB")); break; case SML_MINUS_3dB: snprintf(buf, sizeof(buf), "-3 %s", tr("dB")); break;
case SML_MINUS_6dB: snprintf(buf, sizeof(buf), "-6 %s", tr("dB")); break; case SML_MINUS_6dB: snprintf(buf, sizeof(buf), "-6 %s", tr("dB")); break;
@@ -660,33 +535,36 @@ void cFemonOsd::DrawInfoWindow(void)
case SML_RESERVED: snprintf(buf, sizeof(buf), "%s", tr("reserved")); break; case SML_RESERVED: snprintf(buf, sizeof(buf), "%s", tr("reserved")); break;
default: snprintf(buf, sizeof(buf), "---"); default: snprintf(buf, sizeof(buf), "---");
} }
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Dolby Surround Mode"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Dolby Surround Mode"), clrWhite, clrBackground, m_InfoWindow);
switch (m_Receiver->AC3DolbySurroundMode()) { switch (m_Receiver->AC3DolbySurroundMode()) {
case DSM_NOT_INDICATED: snprintf(buf, sizeof(buf), "%s", tr("not indicated")); break; case DSM_NOT_INDICATED: snprintf(buf, sizeof(buf), "%s", tr("not indicated")); break;
case DSM_NOT_DOLBYSURROUND: snprintf(buf, sizeof(buf), "%s", tr("no")); break; case DSM_NOT_DOLBYSURROUND: snprintf(buf, sizeof(buf), "%s", tr("Off")); break;
case DSM_DOLBYSURROUND: snprintf(buf, sizeof(buf), "%s", tr("yes")); break; case DSM_DOLBYSURROUND: snprintf(buf, sizeof(buf), "%s", tr("On")); break;
case DSM_RESERVED: snprintf(buf, sizeof(buf), "%s", tr("reserved")); break; case DSM_RESERVED: snprintf(buf, sizeof(buf), "%s", tr("reserved")); break;
default: snprintf(buf, sizeof(buf), "---"); default: snprintf(buf, sizeof(buf), "---");
} }
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Low Frequency Effects"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Low Frequency Effects"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%s", m_Receiver->AC3LfeOn() ? tr("On") : tr("Off")); snprintf(buf, sizeof(buf), "%s", m_Receiver->AC3LfeOn() ? tr("On") : tr("Off"));
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Dialogue Normalization"), clrWhite, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Dialogue Normalization"), clrWhite, clrBackground, m_InfoWindow);
value = m_Receiver->AC3DialogLevel(); value = m_Receiver->AC3DialogLevel();
if (value > 0) snprintf(buf, sizeof(buf), "-%d %s", value, tr("dB")); if (value > 0) snprintf(buf, sizeof(buf), "-%d %s", value, tr("dB"));
else snprintf(buf, sizeof(buf), "---"); else snprintf(buf, sizeof(buf), "---");
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font); m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow);
offset += m_Font->Height(); offset += cOsd::LineHeight() - DELTA;
} }
} }
else /* modeBasic */ { else /* modeBasic */ {
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrTransparent); m_Osd->Fill(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrTransparent, m_InfoWindow);
} }
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
m_Osd->SetFont(OldFont);
#endif
m_Osd->Flush(); m_Osd->Flush();
} }
} }
@@ -694,6 +572,9 @@ void cFemonOsd::DrawInfoWindow(void)
void cFemonOsd::Action(void) void cFemonOsd::Action(void)
{ {
//printf("cFemonOsd::Action()\n"); //printf("cFemonOsd::Action()\n");
#if (VDRVERSNUM < 10300)
isyslog("femon plugin: thread started (pid = %d)", getpid());
#endif
m_Active = true; m_Active = true;
while (m_Active) { while (m_Active) {
if (m_Frontend != -1) { if (m_Frontend != -1) {
@@ -710,6 +591,9 @@ void cFemonOsd::Action(void)
} }
usleep(100000L * femonConfig.updateinterval); usleep(100000L * femonConfig.updateinterval);
} }
#if (VDRVERSNUM < 10300)
isyslog("femon plugin: thread stopped (pid = %d)", getpid());
#endif
} }
void cFemonOsd::Show(void) void cFemonOsd::Show(void)
@@ -730,19 +614,18 @@ void cFemonOsd::Show(void)
m_Frontend = -1; m_Frontend = -1;
return; return;
} }
m_Osd = cOsdProvider::NewOsd(((Setup.OSDWidth - OSDWIDTH) / 2) + Setup.OSDLeft, ((Setup.OSDHeight - OSDHEIGHT) / 2) + Setup.OSDTop); m_Osd = cOsd::OpenRaw((SCREENWIDTH - OSDWIDTH) / 2, (SCREENHEIGHT - OSDHEIGHT) / 2);
if (m_Osd) { if (m_Osd) {
tArea Areas[] = { { 0, 0, OSDWIDTH, OSDHEIGHT, 4 } }; #if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
if (m_Osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) { eDvbFont OldFont = m_Osd->SetFont(m_Font);
m_Osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); #endif
} m_StatusWindow = m_Osd->Create(0, OSDSTATUSWIN_Y(0), OSDWIDTH, OSDSTATUSHEIGHT, 4);
else { m_InfoWindow = m_Osd->Create(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOHEIGHT, 2);
tArea Areas[] = { { 0, OSDSTATUSWIN_Y(0), (OSDWIDTH-1), OSDSTATUSWIN_Y(OSDSTATUSHEIGHT-1), 4 }, m_Osd->Clear();
{ 0, OSDINFOWIN_Y(0), (OSDWIDTH-1), OSDINFOWIN_Y(OSDINFOHEIGHT-1), 2 } m_Osd->Fill(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrTransparent, m_InfoWindow);
}; #if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
m_Osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea)); m_Osd->SetFont(OldFont);
} #endif
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrTransparent);
m_Osd->Flush(); m_Osd->Flush();
if (m_Receiver) if (m_Receiver)
delete m_Receiver; delete m_Receiver;
@@ -788,8 +671,9 @@ 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) { switch (Key & ~k_Repeat) {
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;
@@ -828,49 +712,6 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
break; break;
case kBack: case kBack:
return osEnd; return osEnd;
case kGreen:
{
int CurrentAudioTrack = -1;
const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&CurrentAudioTrack);
if (AudioTracks) {
const char **at = &AudioTracks[CurrentAudioTrack];
if (!*++at)
at = AudioTracks;
cDevice::PrimaryDevice()->SetAudioTrack(at - AudioTracks);
if (femonConfig.analyzestream) {
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (m_Receiver)
delete m_Receiver;
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), (at - AudioTracks) ? channel->Apid2() : channel->Apid1(), channel->Dpid1());
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
}
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) == kRight) {
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->Apid1(), channel->Apid2(), channel->Dpid1(), channel->Dpid2()));
//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:

View File

@@ -16,12 +16,14 @@
#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/font.h>
class cFemonOsd : public cOsdObject, public cThread, public cStatus { class cFemonOsd : public cOsdObject, public cThread, public cStatus {
private: private:
bool m_Active; bool m_Active;
cOsd *m_Osd; cOsdBase *m_Osd;
tWindowHandle m_InfoWindow;
tWindowHandle m_StatusWindow;
cFemonReceiver *m_Receiver; cFemonReceiver *m_Receiver;
int m_Frontend; int m_Frontend;
struct dvb_frontend_info m_FrontendInfo; struct dvb_frontend_info m_FrontendInfo;
@@ -34,10 +36,8 @@ private:
uint32_t m_UNC; uint32_t m_UNC;
fe_status_t m_FrontendStatus; fe_status_t m_FrontendStatus;
int m_DisplayMode; int m_DisplayMode;
const cFont *m_Font; eDvbFont m_Font;
cMutex* m_Mutex; cMutex* m_Mutex;
static cBitmap bmDevice0, bmDevice1, bmDevice2, bmDevice3, bmApid1, bmApid2, bmDD, bmDD20, bmDD51;
static cBitmap bmPAL, bmNTSC, 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);

View File

@@ -17,7 +17,11 @@
#define PTS_DTS_FLAGS 0xC0 #define PTS_DTS_FLAGS 0xC0
cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid) cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid)
#if VDRVERSNUM >= 10300
:cReceiver(Ca, -1, 3, Vpid, Apid, Dpid), cThread("femon receiver") :cReceiver(Ca, -1, 3, Vpid, Apid, Dpid), cThread("femon receiver")
#else
:cReceiver(Ca, -1, 3, Vpid, Apid, Dpid)
#endif
{ {
//printf("cFemonReceiver::cFemonReceiver()\n"); //printf("cFemonReceiver::cFemonReceiver()\n");
m_Active = false; m_Active = false;
@@ -302,6 +306,9 @@ void cFemonReceiver::Receive(uchar *Data, int Length)
void cFemonReceiver::Action(void) void cFemonReceiver::Action(void)
{ {
//printf("cFemonReceiver::Action()\n"); //printf("cFemonReceiver::Action()\n");
#if (VDRVERSNUM < 10300)
isyslog("femon receiver: thread started (pid = %d)", getpid());
#endif
m_Active = true; m_Active = true;
while (m_Active) { while (m_Active) {
// TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit // TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit
@@ -313,4 +320,7 @@ void cFemonReceiver::Action(void)
m_AC3PacketCount = 0; m_AC3PacketCount = 0;
usleep(100000L * femonConfig.calcinterval); usleep(100000L * femonConfig.calcinterval);
} }
#if (VDRVERSNUM < 10300)
isyslog("femon receiver: thread stopped (pid = %d)", getpid());
#endif
} }

View File

@@ -1,52 +0,0 @@
--- femonosd.c.orig 2004-08-19 19:42:32.000000000 +0300
+++ femonosd.c 2004-08-19 20:02:31.000000000 +0300
@@ -320,7 +320,48 @@
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_Font);
- snprintf(buf, sizeof(buf), "%X", channel->Ca());
+ value = channel->Ca();
+ switch (value >> 8) {
+ case 0x0:
+ if (value)
+ snprintf(buf, sizeof(buf), "%s", "Fixed");
+ else
+ snprintf(buf, sizeof(buf), "%s", "Free to Air");
+ break;
+ case 0x1:
+ snprintf(buf, sizeof(buf), "%s", "SECA/Mediaguard");
+ break;
+ case 0x5:
+ snprintf(buf, sizeof(buf), "%s", "Viaccess");
+ break;
+ case 0x6:
+ snprintf(buf, sizeof(buf), "%s", "Irdeto");
+ break;
+ case 0x9:
+ snprintf(buf, sizeof(buf), "%s", "NDS/Videoguard");
+ break;
+ case 0xB:
+ snprintf(buf, sizeof(buf), "%s", "Conax");
+ break;
+ case 0xD:
+ snprintf(buf, sizeof(buf), "%s", "CryptoWorks");
+ break;
+ case 0xE:
+ snprintf(buf, sizeof(buf), "%s", "PowerVu");
+ break;
+ case 0x17:
+ snprintf(buf, sizeof(buf), "%s", "BetaCrypt");
+ break;
+ case 0x18:
+ snprintf(buf, sizeof(buf), "%s", "NagraVision");
+ break;
+ case 0x4A:
+ snprintf(buf, sizeof(buf), "%s", "SkyCrypt");
+ break;
+ default:
+ snprintf(buf, sizeof(buf), "%X", value);
+ break;
+ }
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);
snprintf(buf, sizeof(buf), "%d", channel->Tpid());

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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