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

Updated for vdr-1.3.7 and removed compability with older versions.

This commit is contained in:
Rolf Ahrenberg 2004-05-18 04:20:00 +03:00
parent ba7896b59a
commit 8c7c110cf2
9 changed files with 222 additions and 288 deletions

View File

@ -45,3 +45,7 @@ VDR Plugin 'femon' Revision History
- Fixed minor bitrate calculation errors - Fixed minor bitrate calculation errors
- Added russian translation (Thanks to Vyacheslav Dikonov) - Added russian translation (Thanks to Vyacheslav Dikonov)
2004-05-18: Version 0.1.0
- Updated for vdr-1.3.7 and removed compability with older versions.

4
README
View File

@ -12,6 +12,7 @@ Requirements:
Ph.D. in Astro Physics and preferably a six-pack waiting in a fridge. Ph.D. in Astro Physics and preferably a six-pack waiting in a fridge.
Never trust a Klingon. "Qu'vaD lI' De'vam". Beam me up, Scotty! Never trust a Klingon. "Qu'vaD lI' De'vam". Beam me up, Scotty!
You're number six!
Description: Description:
@ -39,7 +40,6 @@ Shortcomings / Todo list / Notes:
- Sometimes (read always) ttxtsubs plugin messes up the OSD - user should disable - Sometimes (read always) ttxtsubs plugin messes up the OSD - user should disable
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 :)
- The plugin GUI is designed for _small fonts_, so stable vdr-1.2.6 users should
consider a small font patch (e.g. ElchiAIO4a) to maximize the visual effect :)
- The stream information is still missing. - The stream information is still missing.
- Disable bitrate calculation to speed up heavy zapping sessions. - Disable bitrate calculation to speed up heavy zapping sessions.
- If you're using VDR version 1.3.6 or older, you'll have to stick with femon-0.0.3c.

View File

@ -12,6 +12,10 @@
#include "femonosd.h" #include "femonosd.h"
#include "femon.h" #include "femon.h"
#if (VDRVERSNUM < 10307)
#error "You don't exist! Go away!"
#endif
cPluginFemon::cPluginFemon(void) cPluginFemon::cPluginFemon(void)
{ {
// Initialize any member variables here. // Initialize any member variables here.

View File

@ -11,7 +11,7 @@
#include <vdr/plugin.h> #include <vdr/plugin.h>
static const char *VERSION = "0.0.3c"; static const char *VERSION = "0.1.0";
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,9 +25,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "¼ÞÝØâÞà ÚÐçÕáâÒÐ áØÓÝÐÛÐ", // ÀãááÚØÙ (Russian)
"¼ÞÝØâÞà ÚÐçÕáâÒÐ áØÓÝÐÛÐ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Signal Information", // English { "Signal Information", // English
"Signalinformationen", // Deutsch "Signalinformationen", // Deutsch
@ -45,9 +44,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÁØÓÝÐÛ", // ÀãááÚØÙ (Russian)
"ÁØÓÝÐÛ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Position", // English { "Position", // English
"Position", // Deutsch "Position", // Deutsch
@ -65,9 +63,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÀÐ×ÜÕéÕÝØÕ ÞÚÝÐ", // ÀãááÚØÙ (Russian)
"ÀÐ×ÜÕéÕÝØÕ ÞÚÝÐ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Default Display Mode", // English { "Default Display Mode", // English
"Standard Anzeigemodus", // Deutsch "Standard Anzeigemodus", // Deutsch
@ -85,9 +82,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÀÕÖØÜ ßÞ ãÜÞÛçÐÝØî", // ÀãááÚØÙ (Russian)
"ÀÕÖØÜ ßÞ ãÜÞÛçÐÝØî" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "simple", // English { "simple", // English
"einfach", // Deutsch "einfach", // Deutsch
@ -105,9 +101,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ßàÞáâÞÙ", // ÀãááÚØÙ (Russian)
"ßàÞáâÞÙ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "advanced", // English { "advanced", // English
"fortgeschritten", // Deutsch "fortgeschritten", // Deutsch
@ -125,9 +120,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "àÐáèØàÕÝÝëÙ", // ÀãááÚØÙ (Russian)
"àÐáèØàÕÝÝëÙ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Hide Mainmenu Entry", // English { "Hide Mainmenu Entry", // English
"Hauptmenüeintrag verstecken", // Deutsch "Hauptmenüeintrag verstecken", // Deutsch
@ -145,9 +139,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÁÚàëâì ÚÞÜÐÝÔã Ò ÓÛÐÒÝÞÜ ÜÕÝî", // ÀãááÚØÙ (Russian)
"ÁÚàëâì ÚÞÜÐÝÔã Ò ÓÛÐÒÝÞÜ ÜÕÝî" // ÀãááÚØÙ (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
@ -165,9 +158,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÇÐáâÞâÐ ÞÑÝÞÒÛÕÝØï (0,1 áÕÚ)", // ÀãááÚØÙ (Russian)
"ÇÐáâÞâÐ ÞÑÝÞÒÛÕÝØï (0,1 áÕÚ)" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Bitrate Calculation", // English { "Bitrate Calculation", // English
"Bitratenberechnung", // Deutsch "Bitratenberechnung", // Deutsch
@ -177,7 +169,7 @@ const tI18nPhrase Phrases[] = {
"", // Português "", // Português
"", // Français "", // Français
"", // Norsk "", // Norsk
"Siirtonopeuden laskenta", // suomi "Bittinopeuden laskenta", // suomi
"", // Polski "", // Polski
"", // Español "", // Español
"", // ÅëëçíéêÜ (Greek) "", // ÅëëçíéêÜ (Greek)
@ -185,9 +177,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÀÐáçñâ áÚÞàÞáâØ ßÞâÞÚÐ ÔÐÝÝëå", // ÀãááÚØÙ (Russian)
"ÀÐáçñâ áÚÞàÞáâØ ßÞâÞÚÐ ÔÐÝÝëå" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Calculation Interval [0.1s]", // English { "Calculation Interval [0.1s]", // English
"Berechnungsintervall [0.1s]", // Deutsch "Berechnungsintervall [0.1s]", // Deutsch
@ -205,9 +196,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÇÐáâÞâÐ ßÕàÕáçñâÐ (0,1 áÕÚ)", // ÀãááÚØÙ (Russian)
"ÇÐáâÞâÐ ßÕàÕáçñâÐ (0,1 áÕÚ)" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Red Limit [%]", // English { "Red Limit [%]", // English
"Grenze Rot [%]", // Deutsch "Grenze Rot [%]", // Deutsch
@ -225,9 +215,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ºàÐáÝÐï ×ÞÝÐ áÛÐÑÞÓÞ áØÓÝÐÛÐ ÔÞ (%)", // ÀãááÚØÙ (Russian)
"ºàÐáÝÐï ×ÞÝÐ áÛÐÑÞÓÞ áØÓÝÐÛÐ ÔÞ (%)" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Green Limit [%]", // English { "Green Limit [%]", // English
"Grenze Grün [%]", // Deutsch "Grenze Grün [%]", // Deutsch
@ -245,9 +234,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "·ÕÛñÝÐï ×ÞÝÐ áØÛìÝÞÓÞ áØÓÝÐÛÐ Þâ (%)", // ÀãááÚØÙ (Russian)
"·ÕÛñÝÐï ×ÞÝÐ áØÛìÝÞÓÞ áØÓÝÐÛÐ Þâ (%)" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Transponder Information", // English { "Transponder Information", // English
"Transponderinformation", // Deutsch "Transponderinformation", // Deutsch
@ -265,9 +253,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "ÁÒÕÔÕÝØï Þ ÚÐÝÐÛÕ", // ÀãááÚØÙ (Russian)
"ÁÒÕÔÕÝØï Þ ÚÐÝÐÛÕ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Satellite Card", // English { "Satellite Card", // English
"Satellitenkarte", // Deutsch "Satellitenkarte", // Deutsch
@ -285,9 +272,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "¿ÛÐâÐ áßãâÝØÚÞÒÞÓÞ ßàØñÜÐ", // ÀãááÚØÙ (Russian)
"¿ÛÐâÐ áßãâÝØÚÞÒÞÓÞ ßàØñÜÐ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Cable Card", // English { "Cable Card", // English
"Kabelkarte", // Deutsch "Kabelkarte", // Deutsch
@ -305,9 +291,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "¿ÛÐâÐ ÚÐÑÕÛìÝÞÓÞ ßàØñÜÐ", // ÀãááÚØÙ (Russian)
"¿ÛÐâÐ ÚÐÑÕÛìÝÞÓÞ ßàØñÜÐ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Terrestial Card", // English { "Terrestial Card", // English
"Terrestrische Karte", // Deutsch "Terrestrische Karte", // Deutsch
@ -325,9 +310,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "¿ÛÐâÐ íäØàÝÞÓÞ ßàØñÜÐ", // ÀãááÚØÙ (Russian)
"¿ÛÐâÐ íäØàÝÞÓÞ ßàØñÜÐ" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "Use Syslog Output", // English { "Use Syslog Output", // English
"Benutze syslog Ausgabe", // Deutsch "Benutze syslog Ausgabe", // Deutsch
@ -345,9 +329,8 @@ const tI18nPhrase Phrases[] = {
"", // Romaneste "", // Romaneste
"", // Magyar "", // Magyar
"", // Català "", // Català
#if VDRVERSNUM >= 10300 "¸áßÞÛì×ÞÒÐâì áÛãÖÑã syslog", // ÀãááÚØÙ (Russian)
"¸áßÞÛì×ÞÒÐâì áÛãÖÑã syslog" // ÀãááÚØÙ (Russian) "", // Hrvatski (Croatian)
#endif
}, },
{ "LOCK", // English { "LOCK", // English
"LOCK", // Deutsch "LOCK", // Deutsch
@ -365,9 +348,8 @@ const tI18nPhrase Phrases[] = {
"LOCK", // Romaneste "LOCK", // Romaneste
"LOCK", // Magyar "LOCK", // Magyar
"LOCK", // Català "LOCK", // Català
#if VDRVERSNUM >= 10300 "·°Å²°Â", // ÀãááÚØÙ (Russian)
"·°Å²°Â" // ÀãááÚØÙ (Russian) "LOCK", // Hrvatski (Croatian)
#endif
}, },
{ "SIGNAL", // English { "SIGNAL", // English
"SIGNAL", // Deutsch "SIGNAL", // Deutsch
@ -385,9 +367,8 @@ const tI18nPhrase Phrases[] = {
"SIGNAL", // Romaneste "SIGNAL", // Romaneste
"SIGNAL", // Magyar "SIGNAL", // Magyar
"SIGNAL", // Català "SIGNAL", // Català
#if VDRVERSNUM >= 10300 "Á¸³½°»", // ÀãááÚØÙ (Russian)
"Á¸³½°»" // ÀãááÚØÙ (Russian) "SIGNAL", // Hrvatski (Croatian)
#endif
}, },
{ "CARRIER", // English { "CARRIER", // English
"CARRIER", // Deutsch "CARRIER", // Deutsch
@ -405,9 +386,8 @@ const tI18nPhrase Phrases[] = {
"CARRIER", // Romaneste "CARRIER", // Romaneste
"CARRIER", // Magyar "CARRIER", // Magyar
"CARRIER", // Català "CARRIER", // Català
#if VDRVERSNUM >= 10300 "½µÁÃÉ°Ï", // ÀãááÚØÙ (Russian)
"½µÁÃÉ°Ï" // ÀãááÚØÙ (Russian) "CARRIER", // Hrvatski (Croatian)
#endif
}, },
{ "VITERBI", // English { "VITERBI", // English
"VITERBI", // Deutsch "VITERBI", // Deutsch
@ -425,9 +405,8 @@ const tI18nPhrase Phrases[] = {
"VITERBI", // Romaneste "VITERBI", // Romaneste
"VITERBI", // Magyar "VITERBI", // Magyar
"VITERBI", // Català "VITERBI", // Català
#if VDRVERSNUM >= 10300 "²¸ÂµÀ±¸", // ÀãááÚØÙ (Russian)
"²¸ÂµÀ±¸" // ÀãááÚØÙ (Russian) "VITERBI", // Hrvatski (Croatian)
#endif
}, },
{ "SYNC", // English { "SYNC", // English
"SYNC", // Deutsch "SYNC", // Deutsch
@ -445,9 +424,8 @@ const tI18nPhrase Phrases[] = {
"SYNC", // Romaneste "SYNC", // Romaneste
"SYNC", // Magyar "SYNC", // Magyar
"SYNC", // Català "SYNC", // Català
#if VDRVERSNUM >= 10300 "Á¸½ÅÀ", // ÀãááÚØÙ (Russian)
"Á¸½ÅÀ" // ÀãááÚØÙ (Russian) "SYNC", // Hrvatski (Croatian)
#endif
}, },
{ "Audio", // English { "Audio", // English
"Audio", // Deutsch "Audio", // Deutsch
@ -465,9 +443,8 @@ const tI18nPhrase Phrases[] = {
"Audio", // Romaneste "Audio", // Romaneste
"Audio", // Magyar "Audio", // Magyar
"Audio", // Català "Audio", // Català
#if VDRVERSNUM >= 10300 "°ãÔØÞ", // ÀãááÚØÙ (Russian)
"°ãÔØÞ" // ÀãááÚØÙ (Russian) "Audio", // Hrvatski (Croatian)
#endif
}, },
{ "Video", // English { "Video", // English
"Video", // Deutsch "Video", // Deutsch
@ -485,9 +462,8 @@ const tI18nPhrase Phrases[] = {
"Video", // Romaneste "Video", // Romaneste
"Video", // Magyar "Video", // Magyar
"Video", // Català "Video", // Català
#if VDRVERSNUM >= 10300 "²ØÔÕÞ", // ÀãááÚØÙ (Russian)
"²ØÔÕÞ" // ÀãááÚØÙ (Russian) "Video", // Hrvatski (Croatian)
#endif
}, },
{ "Auto", // English { "Auto", // English
"Auto", // Deutsch "Auto", // Deutsch
@ -505,9 +481,8 @@ const tI18nPhrase Phrases[] = {
"Auto", // Romaneste "Auto", // Romaneste
"Auto", // Magyar "Auto", // Magyar
"Auto", // Català "Auto", // Català
#if VDRVERSNUM >= 10300 "ÐÒâÞ", // ÀãááÚØÙ (Russian)
"ÐÒâÞ" // ÀãááÚØÙ (Russian) "Auto", // Hrvatski (Croatian)
#endif
}, },
{ "None", // English { "None", // English
"None", // Deutsch "None", // Deutsch
@ -525,9 +500,8 @@ const tI18nPhrase Phrases[] = {
"None", // Romaneste "None", // Romaneste
"None", // Magyar "None", // Magyar
"None", // Català "None", // Català
#if VDRVERSNUM >= 10300 "ÝÕâ", // ÀãááÚØÙ (Russian)
"ÝÕâ" // ÀãááÚØÙ (Russian) "None", // Hrvatski (Croatian)
#endif
}, },
{ "Off", // English { "Off", // English
"Off", // Deutsch "Off", // Deutsch
@ -545,9 +519,8 @@ const tI18nPhrase Phrases[] = {
"Off", // Romaneste "Off", // Romaneste
"Off", // Magyar "Off", // Magyar
"Off", // Català "Off", // Català
#if VDRVERSNUM >= 10300 "ÒëÚÛ", // ÀãááÚØÙ (Russian)
"ÒëÚÛ" // ÀãááÚØÙ (Russian) "Off", // Hrvatski (Croatian)
#endif
}, },
{ "On", // English { "On", // English
"On", // Deutsch "On", // Deutsch
@ -565,9 +538,8 @@ const tI18nPhrase Phrases[] = {
"On", // Romaneste "On", // Romaneste
"On", // Magyar "On", // Magyar
"On", // Català "On", // Català
#if VDRVERSNUM >= 10300 "ÒÚÛ", // ÀãááÚØÙ (Russian)
"ÒÚÛ" // ÀãááÚØÙ (Russian) "On", // Hrvatski (Croatian)
#endif
}, },
{ "MHz", // English { "MHz", // English
"MHz", // Deutsch "MHz", // Deutsch
@ -585,9 +557,8 @@ const tI18nPhrase Phrases[] = {
"MHz", // Romaneste "MHz", // Romaneste
"MHz", // Magyar "MHz", // Magyar
"MHz", // Català "MHz", // Català
#if VDRVERSNUM >= 10300 "¼³æ", // ÀãááÚØÙ (Russian)
"¼³æ" // ÀãááÚØÙ (Russian) "MHz", // Hrvatski (Croatian)
#endif
}, },
{ "Mbit/s", // English { "Mbit/s", // English
"Mbit/s", // Deutsch "Mbit/s", // Deutsch
@ -605,9 +576,8 @@ const tI18nPhrase Phrases[] = {
"Mbit/s", // Romaneste "Mbit/s", // Romaneste
"Mbit/s", // Magyar "Mbit/s", // Magyar
"Mbit/s", // Català "Mbit/s", // Català
#if VDRVERSNUM >= 10300 "¼ÑØâ/á", // ÀãááÚØÙ (Russian)
"¼ÑØâ/á" // ÀãááÚØÙ (Russian) "Mbit/s", // Hrvatski (Croatian)
#endif
}, },
{ "kbit/s", // English { "kbit/s", // English
"kbit/s", // Deutsch "kbit/s", // Deutsch
@ -625,9 +595,8 @@ const tI18nPhrase Phrases[] = {
"kbit/s", // Romaneste "kbit/s", // Romaneste
"kbit/s", // Magyar "kbit/s", // Magyar
"kbit/s", // Català "kbit/s", // Català
#if VDRVERSNUM >= 10300 "ÚÑØâ/á", // ÀãááÚØÙ (Russian)
"ÚÑØâ/á" // ÀãááÚØÙ (Russian) "kbit/s", // Hrvatski (Croatian)
#endif
}, },
{ NULL } { NULL }
}; };

View File

@ -9,7 +9,6 @@
#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,48 +12,30 @@
#include "femonreceiver.h" #include "femonreceiver.h"
#include "femonosd.h" #include "femonosd.h"
#if (VDRVERSNUM < 10300) && !defined(ELCHIAIOVERSION)
#warning You should consider using the small fonts!
#endif
#define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d" #define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d"
#define CHANNELINPUT_TIMEOUT 1000 #define CHANNELINPUT_TIMEOUT 1000
#define SCREENWIDTH 720 #define SCREENWIDTH 720 // in pixels
#define SCREENHEIGHT 576 #define SCREENHEIGHT 576 // in pixels
#define OSDWIDTH 600 // in pixels
#define OSDHEIGHT 480 // in pixels
#define OSDINFOHEIGHT (m_Font->Height() * 11) // in pixels (11 rows)
#define OSDSTATUSHEIGHT (m_Font->Height() * 6) // in pixels (6 rows)
#define OSDWIDTH 46 #define OSDINFOWIN_Y(offset) (femonConfig.position ? (OSDHEIGHT - OSDINFOHEIGHT + offset) : offset)
#define OSDINFOHEIGHT 11 #define OSDINFOWIN_X(col) ((col == 4) ? 470 : (col == 3) ? 300 : (col==2) ? 180 : 15)
#define OSDGAPHEIGHT 1 #define OSDSTATUSWIN_Y(offset) (femonConfig.position ? offset : (OSDHEIGHT - OSDSTATUSHEIGHT + offset))
#define OSDSTATUSHEIGHT 6 #define OSDSTATUSWIN_X(col) ((col == 4) ? 410 : (col == 3) ? 220 : (col==2) ? 125 : 15)
#define OSDSTATUSWIN_X2(col) ((col == 5) ? 520 : (col == 4) ? 390 : (col==3) ? 250 : (col==2) ? 115 : 15)
#define BARWIDTH(x) (OSDWIDTH * x / 100)
#define OSDSTATUSCOL1 1 #define clrBackground clrGray50 // this should be tied somehow into current theme
#define OSDSTATUSCOL2 10
#define OSDSTATUSCOL3 17
#define OSDSTATUSCOL4 32
#define OSDSTATUSLOCK 1
#define OSDSTATUSSIGN 9
#define OSDSTATUSCARR 19
#define OSDSTATUSVITE 30
#define OSDSTATUSSYNC 40
#define OSDINFOLCOL1 1
#define OSDINFOLCOL2 14
#define OSDINFOLCOL3 23
#define OSDINFOLCOL4 36
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;
m_InfoWindow = -1;
m_StatusWindow = -1;
m_Receiver = NULL; m_Receiver = NULL;
m_Frontend = -1; m_Frontend = -1;
m_Active = false; m_Active = false;
@ -65,6 +47,7 @@ cFemonOsd::cFemonOsd(void)
m_BER = 0; m_BER = 0;
m_UNC = 0; m_UNC = 0;
m_DisplayMode = femonConfig.displaymode; m_DisplayMode = femonConfig.displaymode;
m_Font = cFont::GetFont(fontSml);
m_Mutex = new cMutex(); m_Mutex = new cMutex();
} }
@ -88,68 +71,62 @@ void cFemonOsd::DrawStatusWindow(void)
char buf[128]; char buf[128];
int snr = m_SNR / 655; int snr = m_SNR / 655;
int signal = m_Signal / 655; int signal = m_Signal / 655;
int lines = 0; int offset = 0;
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (m_Osd) { if (m_Osd) {
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION) m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(0), OSDWIDTH, OSDSTATUSWIN_Y(OSDSTATUSHEIGHT), clrBackground);
eDvbFont OldFont = m_Osd->SetFont(fontSml);
#endif
m_Osd->Clear(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->Fill(0, femonConfig.position ? 0 : (OSDINFOHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight(), OSDWIDTH * cOsd::CellWidth(), femonConfig.position ? cOsd::LineHeight() - 1 : (OSDINFOHEIGHT + OSDGAPHEIGHT + 1) * cOsd::LineHeight() - 1, clrWhite, m_StatusWindow); m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+m_Font->Height()-1), clrWhite);
m_Osd->Text(OSDSTATUSCOL1 * cOsd::CellWidth(), femonConfig.position ? 0 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrBlack, clrWhite, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrBlack, clrWhite, m_Font);
lines++; offset += m_Font->Height();
if (signal > 0) { if (signal > 0) {
signal = (OSDWIDTH * cOsd::CellWidth()) * signal / 100; signal = BARWIDTH(signal);
m_Osd->Fill(0, femonConfig.position ? lines * cOsd::LineHeight() + 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() + 3, min(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.redlimit / 100), signal), femonConfig.position ? (lines + 1) * cOsd::LineHeight() - 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines + 1) * cOsd::LineHeight() - 3, clrRed, m_StatusWindow); m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.redlimit), signal), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrRed);
if (signal > ((OSDWIDTH * cOsd::CellWidth()) * femonConfig.redlimit / 100)) { if (signal > BARWIDTH(femonConfig.redlimit)) {
m_Osd->Fill(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.redlimit / 100), femonConfig.position ? lines * cOsd::LineHeight() + 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() + 3, min(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.greenlimit / 100), signal), femonConfig.position ? (lines + 1) * cOsd::LineHeight() - 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines + 1) * cOsd::LineHeight() - 3, clrYellow, m_StatusWindow); m_Osd->DrawRectangle(BARWIDTH(femonConfig.redlimit), OSDSTATUSWIN_Y(offset+3), min((OSDWIDTH * femonConfig.greenlimit / 100), signal), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrYellow);
} }
if (signal > ((OSDWIDTH * cOsd::CellWidth()) * femonConfig.greenlimit / 100)) { if (signal > BARWIDTH(femonConfig.greenlimit)) {
m_Osd->Fill(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.greenlimit / 100), femonConfig.position ? lines * cOsd::LineHeight() + 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() + 3, signal, femonConfig.position ? (lines + 1) * cOsd::LineHeight() - 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines + 1) * cOsd::LineHeight() - 3, clrGreen, m_StatusWindow); m_Osd->DrawRectangle(BARWIDTH(femonConfig.greenlimit), OSDSTATUSWIN_Y(offset+3), signal, OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrGreen);
} }
} }
lines++; offset += m_Font->Height();
if (snr > 0) { if (snr > 0) {
snr = (OSDWIDTH * cOsd::CellWidth()) * snr / 100; snr = BARWIDTH(snr);
m_Osd->Fill(0, femonConfig.position ? lines * cOsd::LineHeight() + 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() + 3, min(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.redlimit / 100), snr), femonConfig.position ? (lines + 1) * cOsd::LineHeight() - 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines + 1) * cOsd::LineHeight() - 3, clrRed, m_StatusWindow); m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.redlimit), snr), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrRed);
if (snr > ((OSDWIDTH * cOsd::CellWidth()) * femonConfig.redlimit / 100)) { if (snr > BARWIDTH(femonConfig.redlimit)) {
m_Osd->Fill(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.redlimit / 100), femonConfig.position ? lines * cOsd::LineHeight() + 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() + 3, min(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.greenlimit / 100), snr), femonConfig.position ? (lines + 1) * cOsd::LineHeight() - 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines + 1) * cOsd::LineHeight() - 3, clrYellow, m_StatusWindow); m_Osd->DrawRectangle(BARWIDTH(femonConfig.redlimit), OSDSTATUSWIN_Y(offset+3), min(BARWIDTH(femonConfig.greenlimit), snr), OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrYellow);
} }
if (snr > ((OSDWIDTH * cOsd::CellWidth()) * femonConfig.greenlimit / 100)) { if (snr > BARWIDTH(femonConfig.greenlimit)) {
m_Osd->Fill(((OSDWIDTH * cOsd::CellWidth()) * femonConfig.greenlimit / 100), femonConfig.position ? lines * cOsd::LineHeight() + 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() + 3, snr, femonConfig.position ? (lines + 1) * cOsd::LineHeight() - 3 : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines + 1) * cOsd::LineHeight() - 3, clrGreen, m_StatusWindow); m_Osd->DrawRectangle(BARWIDTH(femonConfig.greenlimit), OSDSTATUSWIN_Y(offset+3), snr, OSDSTATUSWIN_Y(offset+m_Font->Height()-3), clrGreen);
} }
} }
lines++; offset += m_Font->Height();
snprintf(buf, sizeof(buf), "STR: %04x", m_Signal); snprintf(buf, sizeof(buf), "STR: %04x", m_Signal);
m_Osd->Text(OSDSTATUSCOL1 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "(%2d%%)", m_Signal / 655); snprintf(buf, sizeof(buf), "(%2d%%)", m_Signal / 655);
m_Osd->Text(OSDSTATUSCOL2 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite /*signal < femonConfig.redlimit ? clrRed : signal < femonConfig.greenlimit ? clrYellow : clrGreen*/, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(2), OSDSTATUSWIN_Y(offset), buf, clrWhite /*signal < femonConfig.redlimit ? clrRed : signal < femonConfig.greenlimit ? clrYellow : clrGreen*/, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "BER: %08x", m_BER); snprintf(buf, sizeof(buf), "BER: %08x", m_BER);
m_Osd->Text(OSDSTATUSCOL3 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(3), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
if (m_Receiver) snprintf(buf, sizeof(buf), "%s: %.2f %s", tr("Video"), m_Receiver->VideoBitrate(), tr("Mbit/s")); if (m_Receiver) snprintf(buf, sizeof(buf), "%s: %.2f %s", tr("Video"), m_Receiver->VideoBitrate(), tr("Mbit/s"));
else snprintf(buf, sizeof(buf), "%s: --- %s", tr("Video"), tr("Mbit/s")); else snprintf(buf, sizeof(buf), "%s: --- %s", tr("Video"), tr("Mbit/s"));
m_Osd->Text(OSDSTATUSCOL4 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
lines++; offset += m_Font->Height();
snprintf(buf, sizeof(buf), "SNR: %04x", m_SNR); snprintf(buf, sizeof(buf), "SNR: %04x", m_SNR);
m_Osd->Text(OSDSTATUSCOL1 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "(%2d%%)", m_SNR / 655); snprintf(buf, sizeof(buf), "(%2d%%)", m_SNR / 655);
m_Osd->Text(OSDSTATUSCOL2 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite /*snr < femonConfig.redlimit ? clrRed : snr < femonConfig.greenlimit ? clrYellow : clrGreen*/, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(2), OSDSTATUSWIN_Y(offset), buf, clrWhite /*snr < femonConfig.redlimit ? clrRed : snr < femonConfig.greenlimit ? clrYellow : clrGreen*/, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "UNC: %08x", m_UNC); snprintf(buf, sizeof(buf), "UNC: %08x", m_UNC);
m_Osd->Text(OSDSTATUSCOL3 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(3), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
if (m_Receiver) snprintf(buf, sizeof(buf), "%s: %.0f %s", tr("Audio"), m_Receiver->AudioBitrate(), tr("kbit/s")); if (m_Receiver) snprintf(buf, sizeof(buf), "%s: %.0f %s", tr("Audio"), m_Receiver->AudioBitrate(), tr("kbit/s"));
else snprintf(buf, sizeof(buf), "%s: --- %s", tr("Audio"), tr("kbit/s")); else snprintf(buf, sizeof(buf), "%s: --- %s", tr("Audio"), tr("kbit/s"));
m_Osd->Text(OSDSTATUSCOL4 * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), buf, clrWhite, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X(4), OSDSTATUSWIN_Y(offset), buf, clrWhite, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDSTATUSLOCK * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), tr("LOCK"), (m_FrontendStatus & FE_HAS_LOCK) ? clrYellow : clrBlack, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X2(1), OSDSTATUSWIN_Y(offset), tr("LOCK"), (m_FrontendStatus & FE_HAS_LOCK) ? clrYellow : clrBlack, clrBackground, m_Font);
m_Osd->Text(OSDSTATUSSIGN * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), tr("SIGNAL"), (m_FrontendStatus & FE_HAS_SIGNAL) ? clrYellow : clrBlack, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X2(2), OSDSTATUSWIN_Y(offset), tr("SIGNAL"), (m_FrontendStatus & FE_HAS_SIGNAL) ? clrYellow : clrBlack, clrBackground, m_Font);
m_Osd->Text(OSDSTATUSCARR * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), tr("CARRIER"),(m_FrontendStatus & FE_HAS_CARRIER)? clrYellow : clrBlack, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X2(3), OSDSTATUSWIN_Y(offset), tr("CARRIER"),(m_FrontendStatus & FE_HAS_CARRIER)? clrYellow : clrBlack, clrBackground, m_Font);
m_Osd->Text(OSDSTATUSVITE * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), tr("VITERBI"),(m_FrontendStatus & FE_HAS_VITERBI)? clrYellow : clrBlack, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X2(4), OSDSTATUSWIN_Y(offset), tr("VITERBI"),(m_FrontendStatus & FE_HAS_VITERBI)? clrYellow : clrBlack, clrBackground, m_Font);
m_Osd->Text(OSDSTATUSSYNC * cOsd::CellWidth(), femonConfig.position ? lines * cOsd::LineHeight() : (OSDINFOHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight(), tr("SYNC"), (m_FrontendStatus & FE_HAS_SYNC) ? clrYellow : clrBlack, clrBackground, m_StatusWindow); m_Osd->DrawText(OSDSTATUSWIN_X2(5), OSDSTATUSWIN_Y(offset), tr("SYNC"), (m_FrontendStatus & FE_HAS_SYNC) ? clrYellow : clrBlack, clrBackground, m_Font);
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
m_Osd->SetFont(OldFont);
#endif
m_Osd->Flush(); m_Osd->Flush();
} }
} }
@ -160,88 +137,83 @@ void cFemonOsd::DrawInfoWindow(void)
//printf("cFemonOsd::DrawInfoWindow()\n"); //printf("cFemonOsd::DrawInfoWindow()\n");
char buf[128]; char buf[128];
char buf2[20]; char buf2[20];
int lines = 0; int offset = 0;
int value = 0; int value = 0;
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (m_Osd) { if (m_Osd) {
if (m_DisplayMode) { if (m_DisplayMode) {
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION) m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground);
eDvbFont OldFont = m_Osd->SetFont(fontSml); m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+m_Font->Height()-1), clrWhite);
#endif m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Transponder Information"), clrBackground, clrWhite, m_Font);
m_Osd->Clear(m_InfoWindow); offset += m_Font->Height();
m_Osd->Fill(0, femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), OSDWIDTH * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines + 1) * cOsd::LineHeight() - 1 : (lines + 1) * cOsd::LineHeight() - 1, clrWhite, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Vpid"), clrWhite, clrBackground, m_Font);
m_Osd->Text( OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines, tr("Transponder Information"), clrBackground, clrWhite, m_InfoWindow);
lines++;
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Vpid"), clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Vpid()); snprintf(buf, sizeof(buf), "%d", channel->Vpid());
m_Osd->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Ppid"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Ppid"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Ppid()); snprintf(buf, sizeof(buf), "%d", channel->Ppid());
m_Osd->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Apid1"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Apid1"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Dpid1"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid1"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("CA"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Ca()); snprintf(buf, sizeof(buf), "%d", channel->Ca());
m_Osd->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Tpid"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Tpid()); snprintf(buf, sizeof(buf), "%d", channel->Tpid());
m_Osd->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Sid"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Sid"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Sid()); snprintf(buf, sizeof(buf), "%d", channel->Sid());
m_Osd->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
#if (VDRVERSNUM >= 10300) m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), "Nid", clrWhite, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), "Nid", clrWhite, clrBackground, m_InfoWindow);
snprintf(buf, sizeof(buf), "%d", channel->Nid()); snprintf(buf, sizeof(buf), "%d", channel->Nid());
m_Osd->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), "Tid" /*tr("Tid")*/, clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), "Tid" /*tr("Tid")*/, clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Tid()); snprintf(buf, sizeof(buf), "%d", channel->Tid());
m_Osd->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), "Rid" /*tr("Rid")*/, clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), "Rid" /*tr("Rid")*/, clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Rid()); snprintf(buf, sizeof(buf), "%d", channel->Rid());
m_Osd->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
#endif offset += m_Font->Height();
lines++;
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->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Frequency"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Source"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source())); snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source()));
m_Osd->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Srate"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Srate()); snprintf(buf, sizeof(buf), "%d", channel->Srate());
m_Osd->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Polarization"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Polarization"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%c", toupper(channel->Polarization())); snprintf(buf, sizeof(buf), "%c", toupper(channel->Polarization()));
m_Osd->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Inversion"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("CoderateH"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_Font);
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");
@ -253,26 +225,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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
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->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Frequency"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Source"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source())); snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source()));
m_Osd->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Srate"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font);
snprintf(buf, sizeof(buf), "%d", channel->Srate()); snprintf(buf, sizeof(buf), "%d", channel->Srate());
m_Osd->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Modulation"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Modulation"), clrWhite, clrBackground, m_Font);
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");
@ -281,15 +253,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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Inversion"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("CoderateH"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_Font);
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");
@ -301,33 +273,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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
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->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Frequency"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Frequency"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Transmission"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Transmission"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text( OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Bandwidth"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bandwidth"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Modulation"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Modulation"), clrWhite, clrBackground, m_Font);
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");
@ -336,15 +308,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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Inversion"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Inversion"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("CoderateH"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("CoderateH"), clrWhite, clrBackground, m_Font);
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");
@ -368,32 +340,29 @@ 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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
lines++; offset += m_Font->Height();
m_Osd->Text(OSDINFOLCOL1 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Hierarchy"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Hierarchy"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL2 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->Text(OSDINFOLCOL3 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), tr("Guard"), clrWhite, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Guard"), clrWhite, clrBackground, m_Font);
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->Text(OSDINFOLCOL4 * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT + lines) * cOsd::LineHeight() : lines * cOsd::LineHeight(), buf, clrYellow, clrBackground, m_InfoWindow); m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
break; break;
} }
#if (VDRVERSNUM >= 10300) || defined(ELCHIAIOVERSION)
m_Osd->SetFont(OldFont);
#endif
} }
else { else {
m_Osd->Fill(0, femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight() : 0, OSDWIDTH * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDINFOHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight() : OSDINFOHEIGHT * cOsd::LineHeight(), clrTransparent, m_InfoWindow); m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrTransparent);
} }
m_Osd->Flush(); m_Osd->Flush();
} }
@ -402,9 +371,6 @@ 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) {
@ -421,9 +387,6 @@ 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)
@ -444,12 +407,19 @@ void cFemonOsd::Show(void)
close(m_Frontend); close(m_Frontend);
return; return;
} }
m_Osd = cOsd::OpenRaw((SCREENWIDTH - OSDWIDTH * cOsd::CellWidth()) / 2, (SCREENHEIGHT - (OSDSTATUSHEIGHT + OSDINFOHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight()) / 2); m_Osd = cOsdProvider::NewOsd(((Setup.OSDWidth - OSDWIDTH) / 2) + Setup.OSDLeft, ((Setup.OSDHeight - OSDHEIGHT) / 2) + Setup.OSDTop);
if (m_Osd) { if (m_Osd) {
m_StatusWindow = m_Osd->Create(0, femonConfig.position ? 0 : (OSDINFOHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight(), OSDWIDTH * cOsd::CellWidth(), OSDSTATUSHEIGHT * cOsd::LineHeight(), 4); tArea Areas[] = { { 0, 0, OSDWIDTH, OSDHEIGHT, 4 } };
m_InfoWindow = m_Osd->Create(0, femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight() : 0, OSDWIDTH * cOsd::CellWidth(), OSDINFOHEIGHT * cOsd::LineHeight(), 2); if (m_Osd->CanHandleAreas(Areas, sizeof(Areas) / sizeof(tArea)) == oeOk) {
m_Osd->Clear(); m_Osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
m_Osd->Fill(0, femonConfig.position ? (OSDSTATUSHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight() : 0, OSDWIDTH * cOsd::CellWidth(), femonConfig.position ? (OSDSTATUSHEIGHT + OSDINFOHEIGHT + OSDGAPHEIGHT) * cOsd::LineHeight() : OSDINFOHEIGHT * cOsd::LineHeight(), clrTransparent, m_InfoWindow); }
else {
tArea Areas[] = { { 0, OSDSTATUSWIN_Y(0), (OSDWIDTH-1), OSDSTATUSWIN_Y(OSDSTATUSHEIGHT-1), 4 },
{ 0, OSDINFOWIN_Y(0), (OSDWIDTH-1), OSDINFOWIN_Y(OSDINFOHEIGHT-1), 2 }
};
m_Osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
}
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;

View File

@ -16,14 +16,11 @@
#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/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;
cOsdBase *m_Osd; cOsd *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;
@ -36,6 +33,7 @@ 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;
cMutex* m_Mutex; cMutex* m_Mutex;
void DrawStatusWindow(void); void DrawStatusWindow(void);
void DrawInfoWindow(void); void DrawInfoWindow(void);

View File

@ -11,11 +11,7 @@
#include "femonreceiver.h" #include "femonreceiver.h"
cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid) cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid)
#if VDRVERSNUM >= 10300
:cReceiver(Ca, -1, 2, Vpid, Apid), cThread("femon receiver") :cReceiver(Ca, -1, 2, Vpid, Apid), cThread("femon receiver")
#else
:cReceiver(Ca, -1, 2, Vpid, Apid)
#endif
{ {
//printf("cFemonReceiver::cFemonReceiver()\n"); //printf("cFemonReceiver::cFemonReceiver()\n");
m_Active = false; m_Active = false;
@ -60,9 +56,6 @@ 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
@ -72,7 +65,4 @@ void cFemonReceiver::Action(void)
m_AudioPacketCount = 0; m_AudioPacketCount = 0;
usleep(100000L * femonConfig.calcinterval); usleep(100000L * femonConfig.calcinterval);
} }
#if (VDRVERSNUM < 10300)
isyslog("femon receiver: thread stopped (pid = %d)", getpid());
#endif
} }