mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 13:36:53 +02:00
Updated for vdr-1.3.36.
Added french translation (Thanks to Nicolas Huillard). Enabled bitrate commands via SVDRP. Added new SVDRP commands. Modified femon service without incrementing version number. Added "Duotone" theme for 2bpp on screen displays. Fixed crash bug in femonreceiver. Fixed setup page bug (Thanks to Thomas Günther for reporting this one).
This commit is contained in:
parent
e2fb9e994a
commit
7da8cb2110
11
HISTORY
11
HISTORY
@ -183,3 +183,14 @@ VDR Plugin 'femon' Revision History
|
|||||||
- Added Enigma theme (Thanks to Rolf Hoverath).
|
- Added Enigma theme (Thanks to Rolf Hoverath).
|
||||||
- Added EgalsTry theme (Thanks to Uwe Hanke).
|
- Added EgalsTry theme (Thanks to Uwe Hanke).
|
||||||
- Added option to disable rounded corners.
|
- Added option to disable rounded corners.
|
||||||
|
|
||||||
|
2005-11-13: Version 0.9.5
|
||||||
|
|
||||||
|
- Updated for vdr-1.3.36.
|
||||||
|
- Added french translation (Thanks to Nicolas Huillard).
|
||||||
|
- Enabled bitrate commands via SVDRP.
|
||||||
|
- Added new SVDRP commands.
|
||||||
|
- Modified femon service without incrementing version number.
|
||||||
|
- Added "Duotone" theme for 2bpp on screen displays.
|
||||||
|
- Fixed crash bug in femonreceiver.
|
||||||
|
- Fixed setup page bug (Thanks to Thomas Günther for reporting this one).
|
||||||
|
6
Makefile
6
Makefile
@ -16,11 +16,7 @@ VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).h | awk '{ pri
|
|||||||
### The C++ compiler and options:
|
### The C++ compiler and options:
|
||||||
|
|
||||||
CXX ?= g++
|
CXX ?= g++
|
||||||
ifdef FEMON_DEBUG
|
CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual
|
||||||
CXXFLAGS ?= -g -Wall -Woverloaded-virtual -fPIC
|
|
||||||
else
|
|
||||||
CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual -fPIC
|
|
||||||
endif
|
|
||||||
|
|
||||||
### The directory environment:
|
### The directory environment:
|
||||||
|
|
||||||
|
5
README
5
README
@ -77,9 +77,8 @@ make plugins
|
|||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
- The plugin supports only those DVB cards with _one_ frontend (do any cards
|
- The plugin supports only those DVB cards with _one_ frontend, because I
|
||||||
with multiple frontends even exist?), because I haven't yet figured howto do
|
haven't yet figured howto do it without patching the VDR core.
|
||||||
it without patching the VDR core.
|
|
||||||
|
|
||||||
- Disable the stream analyze to speed up heavy zapping sessions.
|
- Disable the stream analyze to speed up heavy zapping sessions.
|
||||||
|
|
||||||
|
116
femon.c
116
femon.c
@ -6,6 +6,7 @@
|
|||||||
* $Id$
|
* $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <vdr/remote.h>
|
||||||
#include "femoncfg.h"
|
#include "femoncfg.h"
|
||||||
#include "femoni18n.h"
|
#include "femoni18n.h"
|
||||||
#include "femonreceiver.h"
|
#include "femonreceiver.h"
|
||||||
@ -14,20 +15,22 @@
|
|||||||
#include "femontools.h"
|
#include "femontools.h"
|
||||||
#include "femon.h"
|
#include "femon.h"
|
||||||
|
|
||||||
#if defined(VDRVERSNUM) && VDRVERSNUM < 10334
|
#if defined(VDRVERSNUM) && VDRVERSNUM < 10336
|
||||||
#error "You don't exist! Go away! Upgrade yourself!"
|
#error "You don't exist! Go away! Upgrade yourself!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cPluginFemon::cPluginFemon(void)
|
cPluginFemon::cPluginFemon()
|
||||||
{
|
{
|
||||||
// Initialize any member variables here.
|
// Initialize any member variables here.
|
||||||
// DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
|
// DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
|
||||||
// VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
|
// VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
}
|
}
|
||||||
|
|
||||||
cPluginFemon::~cPluginFemon()
|
cPluginFemon::~cPluginFemon()
|
||||||
{
|
{
|
||||||
// Clean up after yourself!
|
// Clean up after yourself!
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *cPluginFemon::CommandLineHelp(void)
|
const char *cPluginFemon::CommandLineHelp(void)
|
||||||
@ -68,7 +71,8 @@ void cPluginFemon::Housekeeping(void)
|
|||||||
cOsdObject *cPluginFemon::MainMenuAction(void)
|
cOsdObject *cPluginFemon::MainMenuAction(void)
|
||||||
{
|
{
|
||||||
// Perform the action when selected from the main VDR menu.
|
// Perform the action when selected from the main VDR menu.
|
||||||
return new cFemonOsd();
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
return cFemonOsd::Instance(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cPluginFemon::SetupParse(const char *Name, const char *Value)
|
bool cPluginFemon::SetupParse(const char *Name, const char *Value)
|
||||||
@ -106,8 +110,9 @@ bool cPluginFemon::Service(const char *Id, void *Data)
|
|||||||
data->fe_signal = getSignal(ndx);
|
data->fe_signal = getSignal(ndx);
|
||||||
data->fe_ber = getBER(ndx);
|
data->fe_ber = getBER(ndx);
|
||||||
data->fe_unc = getUNC(ndx);
|
data->fe_unc = getUNC(ndx);
|
||||||
data->video_bitrate = getVideoBitrate();
|
data->video_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetVideoBitrate() : 0.0;
|
||||||
data->audio_bitrate = getAudioBitrate();
|
data->audio_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetAudioBitrate() : 0.0;
|
||||||
|
data->dolby_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetDolbyBitrate() : 0.0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,6 +122,14 @@ bool cPluginFemon::Service(const char *Id, void *Data)
|
|||||||
const char **cPluginFemon::SVDRPHelpPages(void)
|
const char **cPluginFemon::SVDRPHelpPages(void)
|
||||||
{
|
{
|
||||||
static const char *HelpPages[] = {
|
static const char *HelpPages[] = {
|
||||||
|
"OPEN\n"
|
||||||
|
" Open femon plugin.",
|
||||||
|
"QUIT\n"
|
||||||
|
" Close femon plugin.",
|
||||||
|
"NEXT\n"
|
||||||
|
" Switch to next possible device.",
|
||||||
|
"PREV\n"
|
||||||
|
" Switch to previous possible device.",
|
||||||
"NAME\n"
|
"NAME\n"
|
||||||
" Print the current frontend name.",
|
" Print the current frontend name.",
|
||||||
"STAT\n"
|
"STAT\n"
|
||||||
@ -130,9 +143,11 @@ const char **cPluginFemon::SVDRPHelpPages(void)
|
|||||||
"UNCB\n"
|
"UNCB\n"
|
||||||
" Print the current uncorrcted blocks rate.",
|
" Print the current uncorrcted blocks rate.",
|
||||||
"VIBR\n"
|
"VIBR\n"
|
||||||
" Print the current video bitrate [Mbit/s].",
|
" Print the actual device and current video bitrate [Mbit/s].",
|
||||||
"AUBR\n"
|
"AUBR\n"
|
||||||
" Print the current audio bitrate [kbit/s].",
|
" Print the actual device and current audio bitrate [kbit/s].",
|
||||||
|
"DDBR\n"
|
||||||
|
" Print the actual device and current dolby bitrate [kbit/s].",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
return HelpPages;
|
return HelpPages;
|
||||||
@ -140,35 +155,72 @@ const char **cPluginFemon::SVDRPHelpPages(void)
|
|||||||
|
|
||||||
cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
|
cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
|
||||||
{
|
{
|
||||||
if (strcasecmp(Command, "NAME") == 0) {
|
if (strcasecmp(Command, "OPEN") == 0) {
|
||||||
|
if (!cFemonOsd::Instance())
|
||||||
|
cRemote::CallPlugin("femon");
|
||||||
|
return cString("Opening femon plugin");
|
||||||
|
}
|
||||||
|
else if (strcasecmp(Command, "QUIT") == 0) {
|
||||||
|
if (cFemonOsd::Instance())
|
||||||
|
cRemote::Put(kBack);
|
||||||
|
return cString("Closing femon plugin");
|
||||||
|
}
|
||||||
|
else if (strcasecmp(Command, "NEXT") == 0) {
|
||||||
|
if (cFemonOsd::Instance())
|
||||||
|
return cString::sprintf("Switching to next device: %s", cFemonOsd::Instance()->DeviceSwitch(1) ? "ok" : "failed");
|
||||||
|
else
|
||||||
|
return cString("Cannot switch device");
|
||||||
|
}
|
||||||
|
else if (strcasecmp(Command, "PREV") == 0) {
|
||||||
|
if (cFemonOsd::Instance())
|
||||||
|
return cString::sprintf("Switching to previous device: %s", cFemonOsd::Instance()->DeviceSwitch(-1) ? "ok" : "failed");
|
||||||
|
else
|
||||||
|
return cString("Cannot switch device");
|
||||||
|
}
|
||||||
|
else if (strcasecmp(Command, "NAME") == 0) {
|
||||||
return getFrontendName(cDevice::ActualDevice()->CardIndex());
|
return getFrontendName(cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
else if (strcasecmp(Command, "STAT") == 0) {
|
else if (strcasecmp(Command, "STAT") == 0) {
|
||||||
return getFrontendStatus(cDevice::ActualDevice()->CardIndex());
|
return getFrontendStatus(cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
else if (strcasecmp(Command, "SGNL") == 0) {
|
else if (strcasecmp(Command, "SGNL") == 0) {
|
||||||
return cString::sprintf("%04X", getSignal(cDevice::ActualDevice()->CardIndex()));
|
int value = getSignal(cDevice::ActualDevice()->CardIndex());
|
||||||
|
return cString::sprintf("%04X (%02d%%) on device #%d", value, value / 655, cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
else if (strcasecmp(Command, "SNRA") == 0) {
|
else if (strcasecmp(Command, "SNRA") == 0) {
|
||||||
return cString::sprintf("%04X", getSNR(cDevice::ActualDevice()->CardIndex()));
|
int value = getSNR(cDevice::ActualDevice()->CardIndex());
|
||||||
|
return cString::sprintf("%04X (%02d%%) on device #%d", value, value / 655, cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
else if (strcasecmp(Command, "BERA") == 0) {
|
else if (strcasecmp(Command, "BERA") == 0) {
|
||||||
return cString::sprintf("%08X", getBER(cDevice::ActualDevice()->CardIndex()));
|
return cString::sprintf("%08X on device #%d", getBER(cDevice::ActualDevice()->CardIndex()), cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
else if (strcasecmp(Command, "UNCB") == 0) {
|
else if (strcasecmp(Command, "UNCB") == 0) {
|
||||||
return cString::sprintf("%08X", getUNC(cDevice::ActualDevice()->CardIndex()));
|
return cString::sprintf("%08X on device #%d", getUNC(cDevice::ActualDevice()->CardIndex()), cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
else if (strcasecmp(Command, "VIBR") == 0) {
|
else if (strcasecmp(Command, "VIBR") == 0) {
|
||||||
return cString::sprintf("%.2f", getVideoBitrate());
|
if (cFemonOsd::Instance())
|
||||||
|
return cString::sprintf("%.2f Mbit/s on device #%d", cFemonOsd::Instance()->GetVideoBitrate(), cDevice::ActualDevice()->CardIndex());
|
||||||
|
else
|
||||||
|
return cString::sprintf("--- Mbit/s on device #%d", cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
else if (strcasecmp(Command, "AUBR") == 0) {
|
else if (strcasecmp(Command, "AUBR") == 0) {
|
||||||
return cString::sprintf("%.0f", getAudioBitrate());
|
if (cFemonOsd::Instance())
|
||||||
|
return cString::sprintf("%.0f kbit/s on device #%d", cFemonOsd::Instance()->GetAudioBitrate(), cDevice::ActualDevice()->CardIndex());
|
||||||
|
else
|
||||||
|
return cString::sprintf("--- kbit/s on device #%d", cDevice::ActualDevice()->CardIndex());
|
||||||
|
}
|
||||||
|
else if (strcasecmp(Command, "DDBR") == 0) {
|
||||||
|
if (cFemonOsd::Instance())
|
||||||
|
return cString::sprintf("%.0f kbit/s on device #%d", cFemonOsd::Instance()->GetDolbyBitrate(), cDevice::ActualDevice()->CardIndex());
|
||||||
|
else
|
||||||
|
return cString::sprintf("--- kbit/s on device #%d", cDevice::ActualDevice()->CardIndex());
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cMenuFemonSetup::cMenuFemonSetup(void)
|
cMenuFemonSetup::cMenuFemonSetup(void)
|
||||||
{
|
{
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
dispmodes[eFemonModeBasic] = tr("basic");
|
dispmodes[eFemonModeBasic] = tr("basic");
|
||||||
dispmodes[eFemonModeTransponder] = tr("transponder");
|
dispmodes[eFemonModeTransponder] = tr("transponder");
|
||||||
dispmodes[eFemonModeStream] = tr("stream");
|
dispmodes[eFemonModeStream] = tr("stream");
|
||||||
@ -183,7 +235,9 @@ cMenuFemonSetup::cMenuFemonSetup(void)
|
|||||||
themes[eFemonThemeMoronimo] = tr("Moronimo");
|
themes[eFemonThemeMoronimo] = tr("Moronimo");
|
||||||
themes[eFemonThemeEnigma] = tr("Enigma");
|
themes[eFemonThemeEnigma] = tr("Enigma");
|
||||||
themes[eFemonThemeEgalsTry] = tr("EgalsTry");
|
themes[eFemonThemeEgalsTry] = tr("EgalsTry");
|
||||||
|
themes[eFemonThemeDuotone] = tr("Duotone");
|
||||||
|
|
||||||
|
data = femonConfig;
|
||||||
Setup();
|
Setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,21 +246,21 @@ void cMenuFemonSetup::Setup(void)
|
|||||||
int current = Current();
|
int current = Current();
|
||||||
|
|
||||||
Clear();
|
Clear();
|
||||||
Add(new cMenuEditBoolItem( tr("Hide main menu entry"), &femonConfig.hidemenu, tr("no"), tr("yes")));
|
Add(new cMenuEditBoolItem( tr("Hide main menu entry"), &data.hidemenu, tr("no"), tr("yes")));
|
||||||
Add(new cMenuEditBoolItem( tr("Use syslog output"), &femonConfig.syslogoutput, tr("no"), tr("yes")));
|
Add(new cMenuEditBoolItem( tr("Use syslog output"), &data.syslogoutput, tr("no"), tr("yes")));
|
||||||
Add(new cMenuEditStraItem( tr("Default display mode"), &femonConfig.displaymode, eFemonModeMaxNumber, dispmodes));
|
Add(new cMenuEditStraItem( tr("Default display mode"), &data.displaymode, eFemonModeMaxNumber, dispmodes));
|
||||||
Add(new cMenuEditStraItem( tr("Skin"), &femonConfig.skin, eFemonSkinMaxNumber, skins));
|
Add(new cMenuEditStraItem( tr("Skin"), &data.skin, eFemonSkinMaxNumber, skins));
|
||||||
Add(new cMenuEditStraItem( tr("Theme"), &femonConfig.theme, eFemonThemeMaxNumber,themes));
|
Add(new cMenuEditStraItem( tr("Theme"), &data.theme, eFemonThemeMaxNumber,themes));
|
||||||
Add(new cMenuEditBoolItem( tr("Position"), &femonConfig.position, tr("bottom"), tr("top")));
|
Add(new cMenuEditBoolItem( tr("Position"), &data.position, tr("bottom"), tr("top")));
|
||||||
Add(new cMenuEditIntItem( tr("Height"), &femonConfig.osdheight, 400, 500));
|
Add(new cMenuEditIntItem( tr("Height"), &data.osdheight, 400, 500));
|
||||||
Add(new cMenuEditIntItem( tr("Horizontal offset"), &femonConfig.osdoffset, -50, 50));
|
Add(new cMenuEditIntItem( tr("Horizontal offset"), &data.osdoffset, -50, 50));
|
||||||
Add(new cMenuEditBoolItem( tr("Show CA system"), &femonConfig.showcasystem, tr("no"), tr("yes")));
|
Add(new cMenuEditBoolItem( tr("Show CA system"), &data.showcasystem, tr("no"), tr("yes")));
|
||||||
Add(new cMenuEditIntItem( tr("Red limit [%]"), &femonConfig.redlimit, 1, 50));
|
Add(new cMenuEditIntItem( tr("Red limit [%]"), &data.redlimit, 1, 50));
|
||||||
Add(new cMenuEditIntItem( tr("Green limit [%]"), &femonConfig.greenlimit, 51, 100));
|
Add(new cMenuEditIntItem( tr("Green limit [%]"), &data.greenlimit, 51, 100));
|
||||||
Add(new cMenuEditIntItem( tr("OSD update interval [0.1s]"), &femonConfig.updateinterval, 1, 100));
|
Add(new cMenuEditIntItem( tr("OSD update interval [0.1s]"), &data.updateinterval, 1, 100));
|
||||||
Add(new cMenuEditBoolItem( tr("Analyze stream"), &femonConfig.analyzestream, tr("no"), tr("yes")));
|
Add(new cMenuEditBoolItem( tr("Analyze stream"), &data.analyzestream, tr("no"), tr("yes")));
|
||||||
if (femonConfig.analyzestream)
|
if (femonConfig.analyzestream)
|
||||||
Add(new cMenuEditIntItem(tr("Calculation interval [0.1s]"), &femonConfig.calcinterval, 1, 100));
|
Add(new cMenuEditIntItem(tr("Calculation interval [0.1s]"), &data.calcinterval, 1, 100));
|
||||||
|
|
||||||
SetCurrent(Get(current));
|
SetCurrent(Get(current));
|
||||||
Display();
|
Display();
|
||||||
@ -214,6 +268,8 @@ void cMenuFemonSetup::Setup(void)
|
|||||||
|
|
||||||
void cMenuFemonSetup::Store(void)
|
void cMenuFemonSetup::Store(void)
|
||||||
{
|
{
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
femonConfig = data;
|
||||||
SetupStore("HideMenu", femonConfig.hidemenu);
|
SetupStore("HideMenu", femonConfig.hidemenu);
|
||||||
SetupStore("SyslogOutput", femonConfig.syslogoutput);
|
SetupStore("SyslogOutput", femonConfig.syslogoutput);
|
||||||
SetupStore("DisplayMode", femonConfig.displaymode);
|
SetupStore("DisplayMode", femonConfig.displaymode);
|
||||||
@ -232,11 +288,11 @@ void cMenuFemonSetup::Store(void)
|
|||||||
|
|
||||||
eOSState cMenuFemonSetup::ProcessKey(eKeys Key)
|
eOSState cMenuFemonSetup::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
int oldAnalyzestream = femonConfig.analyzestream;
|
int oldAnalyzestream = data.analyzestream;
|
||||||
|
|
||||||
eOSState state = cMenuSetupPage::ProcessKey(Key);
|
eOSState state = cMenuSetupPage::ProcessKey(Key);
|
||||||
|
|
||||||
if (Key != kNone && (femonConfig.analyzestream != oldAnalyzestream)) {
|
if (Key != kNone && (data.analyzestream != oldAnalyzestream)) {
|
||||||
Setup();
|
Setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
femon.h
5
femon.h
@ -11,13 +11,11 @@
|
|||||||
|
|
||||||
#include <vdr/plugin.h>
|
#include <vdr/plugin.h>
|
||||||
|
|
||||||
static const char *VERSION = "0.9.4";
|
static const char *VERSION = "0.9.5";
|
||||||
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";
|
||||||
|
|
||||||
class cPluginFemon : public cPlugin {
|
class cPluginFemon : public cPlugin {
|
||||||
private:
|
|
||||||
// Add any member variables or functions you may need here.
|
|
||||||
public:
|
public:
|
||||||
cPluginFemon(void);
|
cPluginFemon(void);
|
||||||
virtual ~cPluginFemon();
|
virtual ~cPluginFemon();
|
||||||
@ -43,6 +41,7 @@ class cMenuFemonSetup : public cMenuSetupPage {
|
|||||||
const char *dispmodes[eFemonModeMaxNumber];
|
const char *dispmodes[eFemonModeMaxNumber];
|
||||||
const char *skins[eFemonSkinMaxNumber];
|
const char *skins[eFemonSkinMaxNumber];
|
||||||
const char *themes[eFemonThemeMaxNumber];
|
const char *themes[eFemonThemeMaxNumber];
|
||||||
|
cFemonConfig data;
|
||||||
virtual void Setup(void);
|
virtual void Setup(void);
|
||||||
protected:
|
protected:
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
|
17
femoncfg.c
17
femoncfg.c
@ -36,6 +36,7 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
|
|||||||
{
|
{
|
||||||
{
|
{
|
||||||
// eFemonThemeClassic
|
// eFemonThemeClassic
|
||||||
|
4, // bpp
|
||||||
0x7F000000, // clrBackground
|
0x7F000000, // clrBackground
|
||||||
0xFFFCFCFC, // clrTitleBackground
|
0xFFFCFCFC, // clrTitleBackground
|
||||||
0xFF000000, // clrTitleText
|
0xFF000000, // clrTitleText
|
||||||
@ -47,6 +48,7 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// eFemonThemeElchi
|
// eFemonThemeElchi
|
||||||
|
4, // bpp
|
||||||
0xC8000066, // clrBackground
|
0xC8000066, // clrBackground
|
||||||
0xC833AAEE, // clrTitleBackground
|
0xC833AAEE, // clrTitleBackground
|
||||||
0xFF000000, // clrTitleText
|
0xFF000000, // clrTitleText
|
||||||
@ -58,6 +60,7 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// eFemonThemeDeepBlue
|
// eFemonThemeDeepBlue
|
||||||
|
4, // bpp
|
||||||
0xC80C0C0C, // clrBackground
|
0xC80C0C0C, // clrBackground
|
||||||
0xC832557A, // clrTitleBackground
|
0xC832557A, // clrTitleBackground
|
||||||
0xFF000000, // clrTitleText
|
0xFF000000, // clrTitleText
|
||||||
@ -69,6 +72,7 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// eFemonThemeMoronimo
|
// eFemonThemeMoronimo
|
||||||
|
4, // bpp
|
||||||
0xDF294A6B, // clrBackground
|
0xDF294A6B, // clrBackground
|
||||||
0xDF3E5578, // clrTitleBackground
|
0xDF3E5578, // clrTitleBackground
|
||||||
0xFF9BBAD7, // clrTitleText
|
0xFF9BBAD7, // clrTitleText
|
||||||
@ -80,6 +84,7 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// eFemonThemeEnigma
|
// eFemonThemeEnigma
|
||||||
|
4, // bpp
|
||||||
0xB8DEE5FA, // clrBackground
|
0xB8DEE5FA, // clrBackground
|
||||||
0xB84158BC, // clrTitleBackground
|
0xB84158BC, // clrTitleBackground
|
||||||
0xFFFFFFFF, // clrTitleText
|
0xFFFFFFFF, // clrTitleText
|
||||||
@ -100,4 +105,16 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
|
|||||||
0xFFFCC024, // clrYellow
|
0xFFFCC024, // clrYellow
|
||||||
0xFF20980B, // clrGreen
|
0xFF20980B, // clrGreen
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// eFemonThemeDuotone
|
||||||
|
2, // bpp
|
||||||
|
0x7F000000, // clrBackground
|
||||||
|
0xFFFCFCFC, // clrTitleBackground
|
||||||
|
0x7F000000, // clrTitleText
|
||||||
|
0xFFFCFCFC, // clrActiveText
|
||||||
|
0xFFFCFCFC, // clrInactiveText
|
||||||
|
0xFFFC1414, // clrRed
|
||||||
|
0xFFFCFCFC, // clrYellow
|
||||||
|
0xFFFCFCFC, // clrGreen
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
@ -55,11 +55,13 @@ enum eFemonThemes
|
|||||||
eFemonThemeMoronimo,
|
eFemonThemeMoronimo,
|
||||||
eFemonThemeEnigma,
|
eFemonThemeEnigma,
|
||||||
eFemonThemeEgalsTry,
|
eFemonThemeEgalsTry,
|
||||||
|
eFemonThemeDuotone,
|
||||||
eFemonThemeMaxNumber
|
eFemonThemeMaxNumber
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cFemonTheme
|
struct cFemonTheme
|
||||||
{
|
{
|
||||||
|
int bpp;
|
||||||
int clrBackground;
|
int clrBackground;
|
||||||
int clrTitleBackground;
|
int clrTitleBackground;
|
||||||
int clrTitleText;
|
int clrTitleText;
|
||||||
|
@ -16,7 +16,7 @@ VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ pri
|
|||||||
### The C++ compiler and options:
|
### The C++ compiler and options:
|
||||||
|
|
||||||
CXX ?= g++
|
CXX ?= g++
|
||||||
CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual -fPIC
|
CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual
|
||||||
|
|
||||||
### The directory environment:
|
### The directory environment:
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ cOsdObject *cPluginFemonClient::MainMenuAction(void)
|
|||||||
printf("UNC : %08X\n", femon.fe_unc);
|
printf("UNC : %08X\n", femon.fe_unc);
|
||||||
printf("Video : %.2f Mbit/s\n", femon.video_bitrate);
|
printf("Video : %.2f Mbit/s\n", femon.video_bitrate);
|
||||||
printf("Audio : %.0f kbit/s\n", femon.audio_bitrate);
|
printf("Audio : %.0f kbit/s\n", femon.audio_bitrate);
|
||||||
|
printf("Dolby : %.0f kbit/s\n", femon.dolby_bitrate);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
printf("\n--- No support for FemonService-v1.0 found ---\n");
|
printf("\n--- No support for FemonService-v1.0 found ---\n");
|
||||||
|
183
femoni18n.c
183
femoni18n.c
@ -15,7 +15,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Visualizza le informazioni sul segnale DVB", // Italiano
|
"Visualizza le informazioni sul segnale DVB", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Affiche les informations du signal DVB", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Signaalimittari (OSD)", // suomi
|
"Signaalimittari (OSD)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -36,7 +36,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Informazioni sul segnale", // Italiano
|
"Informazioni sul segnale", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Signal DVB", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Signaalimittari", // suomi
|
"Signaalimittari", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -57,7 +57,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Posizione", // Italiano
|
"Posizione", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Position", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Sijainti", // suomi
|
"Sijainti", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -78,7 +78,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Altezza", // Italiano
|
"Altezza", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Hauteur", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Korkeus", // suomi
|
"Korkeus", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -99,7 +99,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Déplacement horizontal", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Vaakakeskitys", // suomi
|
"Vaakakeskitys", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -120,7 +120,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Modo di visualizzazione standard", // Italiano
|
"Modo di visualizzazione standard", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Affichage par défaut", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Oletusnäyttötila", // suomi
|
"Oletusnäyttötila", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -141,7 +141,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"basique", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"perus", // suomi
|
"perus", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -162,7 +162,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"transpondeur", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"transponderi", // suomi
|
"transponderi", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -183,7 +183,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"flux", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"lähete", // suomi
|
"lähete", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -204,7 +204,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Skin", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Ulkoasu", // suomi
|
"Ulkoasu", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -225,7 +225,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Thème", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Teema", // suomi
|
"Teema", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -246,7 +246,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Classique", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Klassinen", // suomi
|
"Klassinen", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -366,13 +366,34 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"EgalsTry", // Eesti
|
"EgalsTry", // Eesti
|
||||||
"EgalsTry", // Dansk
|
"EgalsTry", // Dansk
|
||||||
},
|
},
|
||||||
|
{ "Duotone", // English
|
||||||
|
"Duotone", // Deutsch
|
||||||
|
"Duotone", // Slovenski
|
||||||
|
"Duotone", // Italiano
|
||||||
|
"Duotone", // Nederlands
|
||||||
|
"Duotone", // Português
|
||||||
|
"Duotone", // Français
|
||||||
|
"Duotone", // Norsk
|
||||||
|
"Duotone", // suomi
|
||||||
|
"Duotone", // Polski
|
||||||
|
"Duotone", // Español
|
||||||
|
"Duotone", // ÅëëçíéêÜ (Greek)
|
||||||
|
"Duotone", // Svenska
|
||||||
|
"Duotone", // Romaneste
|
||||||
|
"Duotone", // Magyar
|
||||||
|
"Duotone", // Català
|
||||||
|
"Duotone", // ÀãááÚØÙ (Russian)
|
||||||
|
"Duotone", // Hrvatski (Croatian)
|
||||||
|
"Duotone", // Eesti
|
||||||
|
"Duotone", // Dansk
|
||||||
|
},
|
||||||
{ "Hide main menu entry", // English
|
{ "Hide main menu entry", // English
|
||||||
"Hauptmenüeintrag verstecken", // Deutsch
|
"Hauptmenüeintrag verstecken", // Deutsch
|
||||||
"", // Slovenski
|
"", // Slovenski
|
||||||
"Nascondi voce menů", // Italiano
|
"Nascondi voce menů", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Masquer dans le menu principal", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Piilota valinta päävalikosta", // suomi
|
"Piilota valinta päävalikosta", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -393,7 +414,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Intervallo di aggiornamento [0.1s]", // Italiano
|
"Intervallo di aggiornamento [0.1s]", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Intervalle de mise à jour (0,1s)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Näytön päivitysväli [0.1s]", // suomi
|
"Näytön päivitysväli [0.1s]", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -414,7 +435,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Analyser le flux", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Lähetteen analysointi", // suomi
|
"Lähetteen analysointi", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -435,7 +456,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Intervallo di calcolo [0.1s]", // Italiano
|
"Intervallo di calcolo [0.1s]", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Intervalle de calcul (0,1s)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Laskennan päivitysväli [0.1s]", // suomi
|
"Laskennan päivitysväli [0.1s]", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -456,7 +477,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Limite rosso [%]", // Italiano
|
"Limite rosso [%]", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Limite du rouge (%)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Punaisen taso [%]", // suomi
|
"Punaisen taso [%]", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -477,7 +498,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Limite verde [%]", // Italiano
|
"Limite verde [%]", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Limite du vert (%)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Vihreän taso [%]", // suomi
|
"Vihreän taso [%]", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -498,7 +519,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Informazioni transponder", // Italiano
|
"Informazioni transponder", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Information transpondeur", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Transponderin tiedot", // suomi
|
"Transponderin tiedot", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -519,7 +540,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Scheda satellitare", // Italiano
|
"Scheda satellitare", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Carte Satellite", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Satelliittikortti", // suomi
|
"Satelliittikortti", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -540,7 +561,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Scheda via cavo", // Italiano
|
"Scheda via cavo", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Carte Câble", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kaapelikortti", // suomi
|
"Kaapelikortti", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -561,7 +582,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Scheda terrestre", // Italiano
|
"Scheda terrestre", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Carte TNT", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Terrestiaalikortti", // suomi
|
"Terrestiaalikortti", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -582,7 +603,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Registra su syslog", // Italiano
|
"Registra su syslog", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Enregistrer les infos dans syslog", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kirjaa systeemilokiin", // suomi
|
"Kirjaa systeemilokiin", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -624,7 +645,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Video", // Italiano
|
"Video", // Italiano
|
||||||
"Video", // Nederlands
|
"Video", // Nederlands
|
||||||
"Video", // Portuguęs
|
"Video", // Portuguęs
|
||||||
"Video", // Français
|
"Vidéo", // Français
|
||||||
"Video", // Norsk
|
"Video", // Norsk
|
||||||
"Kuva", // suomi
|
"Kuva", // suomi
|
||||||
"Video", // Polski
|
"Video", // Polski
|
||||||
@ -666,7 +687,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"None", // Italiano
|
"None", // Italiano
|
||||||
"None", // Nederlands
|
"None", // Nederlands
|
||||||
"None", // Portuguęs
|
"None", // Portuguęs
|
||||||
"None", // Français
|
"Aucun", // Français
|
||||||
"None", // Norsk
|
"None", // Norsk
|
||||||
"ei", // suomi
|
"ei", // suomi
|
||||||
"None", // Polski
|
"None", // Polski
|
||||||
@ -687,7 +708,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Off", // Italiano
|
"Off", // Italiano
|
||||||
"Off", // Nederlands
|
"Off", // Nederlands
|
||||||
"Off", // Portuguęs
|
"Off", // Portuguęs
|
||||||
"Off", // Français
|
"Non", // Français
|
||||||
"Off", // Norsk
|
"Off", // Norsk
|
||||||
"poissa", // suomi
|
"poissa", // suomi
|
||||||
"Off", // Polski
|
"Off", // Polski
|
||||||
@ -708,7 +729,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"On", // Italiano
|
"On", // Italiano
|
||||||
"On", // Nederlands
|
"On", // Nederlands
|
||||||
"On", // Portuguęs
|
"On", // Portuguęs
|
||||||
"On", // Français
|
"Oui", // Français
|
||||||
"On", // Norsk
|
"On", // Norsk
|
||||||
"päällä", // suomi
|
"päällä", // suomi
|
||||||
"On", // Polski
|
"On", // Polski
|
||||||
@ -792,7 +813,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Information flux", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Lähetteen tiedot", // suomi
|
"Lähetteen tiedot", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -813,7 +834,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"MPEG Layer", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"MPEG-taso", // suomi
|
"MPEG-taso", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -834,7 +855,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Flux vidéo", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kuvaraita", // suomi
|
"Kuvaraita", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -855,7 +876,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Bitrate", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Bittinopeus", // suomi
|
"Bittinopeus", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -876,7 +897,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Rafraîchissement", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Ruudunpäivitysnopeus", // suomi
|
"Ruudunpäivitysnopeus", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -918,7 +939,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Proportions d'image", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kuvasuhde", // suomi
|
"Kuvasuhde", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -939,7 +960,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"réservé", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"varattu", // suomi
|
"varattu", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -960,7 +981,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"libre", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"vapaa", // suomi
|
"vapaa", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -981,7 +1002,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Standard vidéo", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kuvaformaatti", // suomi
|
"Kuvaformaatti", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1044,7 +1065,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"inconnu", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"tuntematon", // suomi
|
"tuntematon", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1065,7 +1086,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Résolution", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Resoluutio", // suomi
|
"Resoluutio", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1086,7 +1107,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Flux audio", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Ääniraita", // suomi
|
"Ääniraita", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1107,7 +1128,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Fréquence d'échantillonage", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Näytteenottotaajuus", // suomi
|
"Näytteenottotaajuus", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1296,7 +1317,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"non indiqué", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"ei ilmaistu", // suomi
|
"ei ilmaistu", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1338,7 +1359,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Flux AC-3", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"AC-3-ääniraita", // suomi
|
"AC-3-ääniraita", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1359,7 +1380,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Taille de paquet", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kehyksen koko", // suomi
|
"Kehyksen koko", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1380,7 +1401,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Mode bitstream", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Lähetteen tyyppi", // suomi
|
"Lähetteen tyyppi", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1401,7 +1422,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Mode de codage audio", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Äänikoodaus", // suomi
|
"Äänikoodaus", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1422,7 +1443,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Niveau sonore milieu", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Keskikanavan taso", // suomi
|
"Keskikanavan taso", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1443,7 +1464,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Niveau sonore surround", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Tehostekanavien taso", // suomi
|
"Tehostekanavien taso", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1464,7 +1485,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Mode Dolby Surround", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Dolby Surround -tehoste", // suomi
|
"Dolby Surround -tehoste", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1485,7 +1506,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Effets de basses", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"LFE-kanava", // suomi
|
"LFE-kanava", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1506,7 +1527,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Normalisation des dialogues", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Dialogin normalisointi", // suomi
|
"Dialogin normalisointi", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1527,7 +1548,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Principal (CM)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Pääasiallinen (CM)", // suomi
|
"Pääasiallinen (CM)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1548,7 +1569,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Musique et effets (ME)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Musiikki ja tehosteet (ME)", // suomi
|
"Musiikki ja tehosteet (ME)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1569,7 +1590,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Malvoyants (VI)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Näkörajoitteinen (VI)", // suomi
|
"Näkörajoitteinen (VI)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1590,7 +1611,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Malentendants (HI)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kuulorajoitteinen (HI)", // suomi
|
"Kuulorajoitteinen (HI)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1611,7 +1632,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Dialogue (D)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Vuoropuhelu (D)", // suomi
|
"Vuoropuhelu (D)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1632,7 +1653,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Commentaires (C)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Kommentointi (C)", // suomi
|
"Kommentointi (C)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1653,7 +1674,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Urgence (E)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Hätätiedote (E)", // suomi
|
"Hätätiedote (E)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1674,7 +1695,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Voix off (VO)", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Päälle puhuttu (VO)", // suomi
|
"Päälle puhuttu (VO)", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1695,7 +1716,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Karaoke", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Karaoke", // suomi
|
"Karaoke", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1716,7 +1737,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Can. 1", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"kan. 1", // suomi
|
"kan. 1", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1737,7 +1758,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Can. 2", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"kan. 2", // suomi
|
"kan. 2", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1758,7 +1779,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Centre", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"K", // suomi
|
"K", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1779,7 +1800,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Gauche", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"V", // suomi
|
"V", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1800,7 +1821,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Droite", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"O", // suomi
|
"O", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1821,7 +1842,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Surround", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"T", // suomi
|
"T", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1842,7 +1863,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Surround gauche", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"TV", // suomi
|
"TV", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1863,7 +1884,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Surround droit", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"TO", // suomi
|
"TO", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1884,7 +1905,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Système CA", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Näytä salausjärjestelmä", // suomi
|
"Näytä salausjärjestelmä", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1905,7 +1926,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Fixe", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"kiinteä", // suomi
|
"kiinteä", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1926,7 +1947,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Analogique", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"analoginen", // suomi
|
"analoginen", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1947,7 +1968,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Free To Air", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"salaamaton", // suomi
|
"salaamaton", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1968,7 +1989,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"SECA/Mediaguard", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"SECA/Mediaguard", // suomi
|
"SECA/Mediaguard", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -1989,7 +2010,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Viaccess", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Viaccess", // suomi
|
"Viaccess", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2010,7 +2031,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Irdeto", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Irdeto", // suomi
|
"Irdeto", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2031,7 +2052,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"NDS/Videoguard", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"NDS/Videoguard", // suomi
|
"NDS/Videoguard", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2052,7 +2073,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"Conax", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"Conax", // suomi
|
"Conax", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2073,7 +2094,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"CryptoWorks", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"CryptoWorks", // suomi
|
"CryptoWorks", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2094,7 +2115,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"PowerVu", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"PowerVu", // suomi
|
"PowerVu", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2115,7 +2136,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"BetaCrypt", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"BetaCrypt", // suomi
|
"BetaCrypt", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2136,7 +2157,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"NagraVision", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"NagraVision", // suomi
|
"NagraVision", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
@ -2157,7 +2178,7 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"", // Italiano
|
"", // Italiano
|
||||||
"", // Nederlands
|
"", // Nederlands
|
||||||
"", // Portuguęs
|
"", // Portuguęs
|
||||||
"", // Français
|
"SkyCrypt", // Français
|
||||||
"", // Norsk
|
"", // Norsk
|
||||||
"SkyCrypt", // suomi
|
"SkyCrypt", // suomi
|
||||||
"", // Polski
|
"", // Polski
|
||||||
|
115
femonosd.c
115
femonosd.c
@ -81,7 +81,19 @@ cBitmap cFemonOsd::bmCarrier(carrier_xpm);
|
|||||||
cBitmap cFemonOsd::bmViterbi(viterbi_xpm);
|
cBitmap cFemonOsd::bmViterbi(viterbi_xpm);
|
||||||
cBitmap cFemonOsd::bmSync(sync_xpm);
|
cBitmap cFemonOsd::bmSync(sync_xpm);
|
||||||
|
|
||||||
cFemonOsd::cFemonOsd(void)
|
cFemonOsd *cFemonOsd::pInstance = NULL;
|
||||||
|
|
||||||
|
cFemonOsd *cFemonOsd::Instance(bool create)
|
||||||
|
{
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
if (pInstance == NULL && create)
|
||||||
|
{
|
||||||
|
pInstance = new cFemonOsd();
|
||||||
|
}
|
||||||
|
return (pInstance);
|
||||||
|
}
|
||||||
|
|
||||||
|
cFemonOsd::cFemonOsd()
|
||||||
:cOsdObject(true), cThread("femon osd")
|
:cOsdObject(true), cThread("femon osd")
|
||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
@ -110,13 +122,13 @@ cFemonOsd::cFemonOsd(void)
|
|||||||
cFemonOsd::~cFemonOsd(void)
|
cFemonOsd::~cFemonOsd(void)
|
||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
if (Running()) {
|
if (Running())
|
||||||
Cancel(3);
|
Cancel(3);
|
||||||
}
|
|
||||||
if (m_Receiver)
|
if (m_Receiver)
|
||||||
delete m_Receiver;
|
delete m_Receiver;
|
||||||
if (m_Osd)
|
if (m_Osd)
|
||||||
delete m_Osd;
|
delete m_Osd;
|
||||||
|
pInstance = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cFemonOsd::DrawStatusWindow(void)
|
void cFemonOsd::DrawStatusWindow(void)
|
||||||
@ -903,13 +915,13 @@ void cFemonOsd::Show(void)
|
|||||||
}
|
}
|
||||||
m_Osd = cOsdProvider::NewOsd(((Setup.OSDWidth - OSDWIDTH) / 2) + Setup.OSDLeft + femonConfig.osdoffset, ((Setup.OSDHeight - OSDHEIGHT) / 2) + Setup.OSDTop);
|
m_Osd = cOsdProvider::NewOsd(((Setup.OSDWidth - OSDWIDTH) / 2) + Setup.OSDLeft + femonConfig.osdoffset, ((Setup.OSDHeight - OSDHEIGHT) / 2) + Setup.OSDTop);
|
||||||
if (m_Osd) {
|
if (m_Osd) {
|
||||||
tArea Areas1[] = { { 0, 0, OSDWIDTH, OSDHEIGHT, 4 } };
|
tArea Areas1[] = { { 0, 0, OSDWIDTH, OSDHEIGHT, femonTheme[femonConfig.theme].bpp } };
|
||||||
if (m_Osd->CanHandleAreas(Areas1, sizeof(Areas1) / sizeof(tArea)) == oeOk) {
|
if (m_Osd->CanHandleAreas(Areas1, sizeof(Areas1) / sizeof(tArea)) == oeOk) {
|
||||||
m_Osd->SetAreas(Areas1, sizeof(Areas1) / sizeof(tArea));
|
m_Osd->SetAreas(Areas1, sizeof(Areas1) / sizeof(tArea));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tArea Areas2[] = { { 0, OSDSTATUSWIN_Y(0), (OSDWIDTH-1), OSDSTATUSWIN_Y(OSDSTATUSHEIGHT-1), 4 },
|
tArea Areas2[] = { { 0, OSDSTATUSWIN_Y(0), (OSDWIDTH-1), OSDSTATUSWIN_Y(OSDSTATUSHEIGHT-1), femonTheme[femonConfig.theme].bpp },
|
||||||
{ 0, OSDINFOWIN_Y(0), (OSDWIDTH-1), OSDINFOWIN_Y(OSDROWHEIGHT-1), 4 },
|
{ 0, OSDINFOWIN_Y(0), (OSDWIDTH-1), OSDINFOWIN_Y(OSDROWHEIGHT-1), femonTheme[femonConfig.theme].bpp },
|
||||||
{ 0, OSDINFOWIN_Y(OSDROWHEIGHT), (OSDWIDTH-1), OSDINFOWIN_Y(OSDINFOHEIGHT-1), 2 } };
|
{ 0, OSDINFOWIN_Y(OSDROWHEIGHT), (OSDWIDTH-1), OSDINFOWIN_Y(OSDINFOHEIGHT-1), 2 } };
|
||||||
m_Osd->SetAreas(Areas2, sizeof(Areas2) / sizeof(tArea));
|
m_Osd->SetAreas(Areas2, sizeof(Areas2) / sizeof(tArea));
|
||||||
}
|
}
|
||||||
@ -980,6 +992,69 @@ void cFemonOsd::SetAudioTrack(int Index, const char * const *Tracks)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cFemonOsd::DeviceSwitch(int direction)
|
||||||
|
{
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
int device = cDevice::ActualDevice()->DeviceNumber();
|
||||||
|
direction = sgn(direction);
|
||||||
|
if (device >= 0) {
|
||||||
|
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||||
|
for (int i = 0; i < cDevice::NumDevices() - 1; i++) {
|
||||||
|
if (direction) {
|
||||||
|
if (++device >= cDevice::NumDevices()) device = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (--device < 0) device = cDevice::NumDevices() - 1;
|
||||||
|
}
|
||||||
|
if (cDevice::GetDevice(device)->ProvidesChannel(channel)) {
|
||||||
|
Dprintf("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device);
|
||||||
|
// here should be added some checks, if the device is really available (i.e. not recording)
|
||||||
|
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0);
|
||||||
|
cControl::Shutdown();
|
||||||
|
cDevice::GetDevice(device)->SwitchChannel(channel, true);
|
||||||
|
// does this work with primary devices ?
|
||||||
|
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
|
||||||
|
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
|
||||||
|
return (true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
double cFemonOsd::GetVideoBitrate(void)
|
||||||
|
{
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
double value = 0.0;
|
||||||
|
|
||||||
|
if (m_Receiver)
|
||||||
|
value = m_Receiver->VideoBitrate();
|
||||||
|
|
||||||
|
return (value);
|
||||||
|
}
|
||||||
|
|
||||||
|
double cFemonOsd::GetAudioBitrate(void)
|
||||||
|
{
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
double value = 0.0;
|
||||||
|
|
||||||
|
if (m_Receiver)
|
||||||
|
value = m_Receiver->AudioBitrate();
|
||||||
|
|
||||||
|
return (value);
|
||||||
|
}
|
||||||
|
|
||||||
|
double cFemonOsd::GetDolbyBitrate(void)
|
||||||
|
{
|
||||||
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
double value = 0.0;
|
||||||
|
|
||||||
|
if (m_Receiver)
|
||||||
|
value = m_Receiver->AC3Bitrate();
|
||||||
|
|
||||||
|
return (value);
|
||||||
|
}
|
||||||
|
|
||||||
eOSState cFemonOsd::ProcessKey(eKeys Key)
|
eOSState cFemonOsd::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
eOSState state = cOsdObject::ProcessKey(Key);
|
eOSState state = cOsdObject::ProcessKey(Key);
|
||||||
@ -1060,32 +1135,10 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kRight:
|
case kRight:
|
||||||
|
DeviceSwitch(1);
|
||||||
|
break;
|
||||||
case kLeft:
|
case kLeft:
|
||||||
{
|
DeviceSwitch(-1);
|
||||||
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)) {
|
|
||||||
Dprintf("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, Key, device);
|
|
||||||
// here should be added some checks, if the device is really available (i.e. not recording)
|
|
||||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0);
|
|
||||||
cControl::Shutdown();
|
|
||||||
cDevice::GetDevice(device)->SwitchChannel(channel, true);
|
|
||||||
// does this work with primary devices ?
|
|
||||||
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
|
|
||||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case kUp|k_Repeat:
|
case kUp|k_Repeat:
|
||||||
case kUp:
|
case kUp:
|
||||||
|
11
femonosd.h
11
femonosd.h
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
class cFemonOsd : public cOsdObject, public cThread, public cStatus {
|
class cFemonOsd : public cOsdObject, public cThread, public cStatus {
|
||||||
private:
|
private:
|
||||||
|
static cFemonOsd *pInstance;
|
||||||
cOsd *m_Osd;
|
cOsd *m_Osd;
|
||||||
cFemonReceiver *m_Receiver;
|
cFemonReceiver *m_Receiver;
|
||||||
int m_Frontend;
|
int m_Frontend;
|
||||||
@ -44,16 +45,24 @@ private:
|
|||||||
void DrawInfoWindow(void);
|
void DrawInfoWindow(void);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
cFemonOsd();
|
||||||
|
cFemonOsd(const cFemonOsd&);
|
||||||
|
cFemonOsd& operator= (const cFemonOsd&);
|
||||||
virtual void Action(void);
|
virtual void Action(void);
|
||||||
virtual void ChannelSwitch(const cDevice * device, int channelNumber);
|
virtual void ChannelSwitch(const cDevice * device, int channelNumber);
|
||||||
virtual void SetAudioTrack(int Index, const char * const *Tracks);
|
virtual void SetAudioTrack(int Index, const char * const *Tracks);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
cFemonOsd(void);
|
static cFemonOsd *Instance(bool create = false);
|
||||||
~cFemonOsd();
|
~cFemonOsd();
|
||||||
|
|
||||||
virtual void Show(void);
|
virtual void Show(void);
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
|
|
||||||
|
bool DeviceSwitch(int direction);
|
||||||
|
double GetVideoBitrate(void);
|
||||||
|
double GetAudioBitrate(void);
|
||||||
|
double GetDolbyBitrate(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__FEMONOSD_H
|
#endif //__FEMONOSD_H
|
||||||
|
@ -58,9 +58,8 @@ cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[])
|
|||||||
cFemonReceiver::~cFemonReceiver(void)
|
cFemonReceiver::~cFemonReceiver(void)
|
||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
Detach();
|
|
||||||
if (Running())
|
if (Running())
|
||||||
Cancel();
|
Cancel(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The following function originates from libdvbmpeg: */
|
/* The following function originates from libdvbmpeg: */
|
||||||
|
@ -20,6 +20,7 @@ struct FemonService_v1_0 {
|
|||||||
uint32_t fe_unc;
|
uint32_t fe_unc;
|
||||||
double video_bitrate;
|
double video_bitrate;
|
||||||
double audio_bitrate;
|
double audio_bitrate;
|
||||||
|
double dolby_bitrate;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__FEMONSERVICE_H
|
#endif //__FEMONSERVICE_H
|
||||||
|
21
femontools.c
21
femontools.c
@ -25,7 +25,7 @@ cString getFrontendName(int cardIndex)
|
|||||||
ioctl(fe, FE_GET_INFO, &value);
|
ioctl(fe, FE_GET_INFO, &value);
|
||||||
close(fe);
|
close(fe);
|
||||||
|
|
||||||
return (cString::sprintf("#%d %s", cardIndex, value.name));
|
return (cString::sprintf("%s on device #%d", value.name, cardIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
cString getFrontendStatus(int cardIndex)
|
cString getFrontendStatus(int cardIndex)
|
||||||
@ -41,7 +41,7 @@ cString getFrontendStatus(int cardIndex)
|
|||||||
CHECK(ioctl(fe, FE_READ_STATUS, &value));
|
CHECK(ioctl(fe, FE_READ_STATUS, &value));
|
||||||
close(fe);
|
close(fe);
|
||||||
|
|
||||||
return (cString::sprintf("%s:%s:%s:%s:%s", (value & FE_HAS_LOCK) ? "LOCKED" : "-", (value & FE_HAS_SIGNAL) ? "SIGNAL" : "-", (value & FE_HAS_CARRIER) ? "CARRIER" : "-", (value & FE_HAS_VITERBI) ? "VITERBI" : "-", (value & FE_HAS_SYNC) ? "SYNC" : "-"));
|
return (cString::sprintf("Status %s:%s:%s:%s:%s on device #%d", (value & FE_HAS_LOCK) ? "LOCKED" : "-", (value & FE_HAS_SIGNAL) ? "SIGNAL" : "-", (value & FE_HAS_CARRIER) ? "CARRIER" : "-", (value & FE_HAS_VITERBI) ? "VITERBI" : "-", (value & FE_HAS_SYNC) ? "SYNC" : "-", cardIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t getSignal(int cardIndex)
|
uint16_t getSignal(int cardIndex)
|
||||||
@ -108,20 +108,3 @@ uint32_t getUNC(int cardIndex)
|
|||||||
return (value);
|
return (value);
|
||||||
}
|
}
|
||||||
|
|
||||||
double getVideoBitrate(void)
|
|
||||||
{
|
|
||||||
double value = 0.0;
|
|
||||||
|
|
||||||
// Not yet implemented.
|
|
||||||
|
|
||||||
return (value);
|
|
||||||
}
|
|
||||||
|
|
||||||
double getAudioBitrate(void)
|
|
||||||
{
|
|
||||||
double value = 0.0;
|
|
||||||
|
|
||||||
// Not yet implemented.
|
|
||||||
|
|
||||||
return (value);
|
|
||||||
}
|
|
||||||
|
@ -26,7 +26,5 @@ uint16_t getSNR(int cardIndex = 0);
|
|||||||
uint16_t getSignal(int cardIndex = 0);
|
uint16_t getSignal(int cardIndex = 0);
|
||||||
uint32_t getBER(int cardIndex = 0);
|
uint32_t getBER(int cardIndex = 0);
|
||||||
uint32_t getUNC(int cardIndex = 0);
|
uint32_t getUNC(int cardIndex = 0);
|
||||||
double getVideoBitrate(void);
|
|
||||||
double getAudioBitrate(void);
|
|
||||||
|
|
||||||
#endif // __FEMONTOOLS_H
|
#endif // __FEMONTOOLS_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user