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

Compare commits

..

3 Commits

Author SHA1 Message Date
Rolf Ahrenberg
93ccc78469 Updated Italian translation (Thanks to Diego Pierotto).
Fixed a crash if no channel available (Thanks to Winfried Köhler)
2008-06-20 04:20:00 +03:00
Rolf Ahrenberg
2e6cd471ba Updated for vdr-1.6.0.
Updated Italian translation (Thanks to Diego Pierotto).
Added ST:TNG theme (Thanks to Fabian Förg).
2008-03-27 04:20:00 +02:00
Rolf Ahrenberg
09acce8a0b Replaced asprintf with cString.
Updated French translation (Thanks to Michaël Nival).
Fixed service call with null data.
Added setup option to use a single 8 bpp OSD area.
2008-02-18 04:20:00 +02:00
13 changed files with 306 additions and 177 deletions

30
HISTORY
View File

@@ -45,7 +45,7 @@ VDR Plugin 'femon' Revision History
2004-04-04: Version 0.0.3c
- Fixed minor bitrate calculation errors.
- Added russian translation (Thanks to Vyacheslav Dikonov).
- Added Russian translation (Thanks to Vyacheslav Dikonov).
2004-05-31: Version 0.0.4
@@ -150,7 +150,7 @@ VDR Plugin 'femon' Revision History
2005-04-02: Version 0.8.8
- Cleaned up finnish translations (Thanks to Ville Skytt<74>).
- Cleaned up Finnish translations (Thanks to Ville Skytt<74>).
2005-04-04: Version 0.8.9
@@ -187,7 +187,7 @@ VDR Plugin 'femon' Revision History
2005-11-13: Version 0.9.5
- Updated for vdr-1.3.36.
- Added french translation (Thanks to Nicolas Huillard).
- Added French translation (Thanks to Nicolas Huillard).
- Enabled bitrate commands via SVDRP.
- Added new SVDRP commands.
- Modified femon service without incrementing version number.
@@ -227,7 +227,7 @@ VDR Plugin 'femon' Revision History
- Updated for vdr-1.4.0.
- Modified APIVERSION code in Makefile.
- Updated german translation (Thanks to Andreas Brachold).
- Updated German translation (Thanks to Andreas Brachold).
2006-06-06: Version 1.0.1
@@ -259,7 +259,7 @@ VDR Plugin 'femon' Revision History
2008-01-20: Version 1.1.5
- Updated Italian translation (Thanks to Gringo).
- Updated Italian translation (Thanks to Diego Pierotto).
- Added '-Wno-parentheses' to the compiler options.
2007-08-14: Version 1.2.0
@@ -277,6 +277,24 @@ VDR Plugin 'femon' Revision History
2008-01-20: Version 1.2.3
- Updated Italian translation (Thanks to Gringo).
- Updated Italian translation (Thanks to Diego Pierotto).
- Added '-Wno-parentheses' to the compiler options.
- Mapped 'kInfo' as help key in setup menu.
2008-02-18: Version 1.2.4
- Replaced asprintf with cString.
- Updated French translation (Thanks to Micha<68>l Nival).
- Fixed service call with null data.
- Added setup option to use a single 8 bpp OSD area.
2008-03-27: Version 1.6.0
- Updated for vdr-1.6.0.
- Updated Italian translation (Thanks to Diego Pierotto).
- Added ST:TNG theme (Thanks to Fabian F<>rg).
2008-06-20: Version 1.6.1
- Updated Italian translation (Thanks to Diego Pierotto).
- Fixed a crash if no channel available (Thanks to Winfried K<>hler)

44
femon.c
View File

@@ -15,11 +15,11 @@
#include "femonservice.h"
#include "femontools.h"
#if defined(APIVERSNUM) && APIVERSNUM < 10508
#error "VDR-1.5.8 API version or greater is required!"
#if defined(APIVERSNUM) && APIVERSNUM < 10600
#error "VDR-1.6.0 API version or greater is required!"
#endif
static const char VERSION[] = "1.2.3";
static const char VERSION[] = "1.6.1";
static const char DESCRIPTION[] = trNOOP("DVB Signal Information Monitor (OSD)");
static const char MAINMENUENTRY[] = trNOOP("Signal Information");
@@ -98,8 +98,8 @@ cOsdObject *cPluginFemon::MainMenuAction(void)
{
// Perform the action when selected from the main VDR menu.
Dprintf("%s()\n", __PRETTY_FUNCTION__);
if (cReplayControl::NowReplaying())
Skins.Message(mtInfo, tr("Femon not available while replaying"));
if (cReplayControl::NowReplaying() || (Channels.Count() <= 0))
Skins.Message(mtInfo, tr("Femon not available"));
else
return cFemonOsd::Instance(true);
return NULL;
@@ -109,6 +109,7 @@ bool cPluginFemon::SetupParse(const char *Name, const char *Value)
{
// Parse your own setup parameters and store their values.
if (!strcasecmp(Name, "HideMenu")) femonConfig.hidemenu = atoi(Value);
else if (!strcasecmp(Name, "UseSingleArea")) femonConfig.usesinglearea = atoi(Value);
else if (!strcasecmp(Name, "DisplayMode")) femonConfig.displaymode = atoi(Value);
else if (!strcasecmp(Name, "Position")) femonConfig.position = atoi(Value);
else if (!strcasecmp(Name, "OSDHeight")) femonConfig.osdheight = atoi(Value);
@@ -133,18 +134,20 @@ bool cPluginFemon::SetupParse(const char *Name, const char *Value)
bool cPluginFemon::Service(const char *Id, void *Data)
{
if ((strcmp(Id,"FemonService-v1.0") == 0) && Data) {
FemonService_v1_0 *data = (FemonService_v1_0*)Data;
int ndx = cDevice::ActualDevice()->CardIndex();
data->fe_name = getFrontendName(ndx);
data->fe_status = getFrontendStatus(ndx);
data->fe_snr = getSNR(ndx);
data->fe_signal = getSignal(ndx);
data->fe_ber = getBER(ndx);
data->fe_unc = getUNC(ndx);
data->video_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetVideoBitrate() : 0.0;
data->audio_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetAudioBitrate() : 0.0;
data->dolby_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetDolbyBitrate() : 0.0;
if (strcmp(Id,"FemonService-v1.0") == 0) {
if (Data) {
FemonService_v1_0 *data = (FemonService_v1_0*)Data;
int ndx = cDevice::ActualDevice()->CardIndex();
data->fe_name = getFrontendName(ndx);
data->fe_status = getFrontendStatus(ndx);
data->fe_snr = getSNR(ndx);
data->fe_signal = getSignal(ndx);
data->fe_ber = getBER(ndx);
data->fe_unc = getUNC(ndx);
data->video_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetVideoBitrate() : 0.0;
data->audio_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetAudioBitrate() : 0.0;
data->dolby_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetDolbyBitrate() : 0.0;
}
return true;
}
@@ -287,6 +290,7 @@ cMenuFemonSetup::cMenuFemonSetup(void)
themes[eFemonThemeClassic] = tr("Classic");
themes[eFemonThemeElchi] = tr("Elchi");
themes[eFemonThemeSTTNG] = tr("ST:TNG");
themes[eFemonThemeDeepBlue] = tr("DeepBlue");
themes[eFemonThemeMoronimo] = tr("Moronimo");
themes[eFemonThemeEnigma] = tr("Enigma");
@@ -306,7 +310,10 @@ void cMenuFemonSetup::Setup(void)
help.Clear();
Add(new cMenuEditBoolItem(tr("Hide main menu entry"), &data.hidemenu));
help.Append(tr("Define whether the main manu entry is hidden."));
help.Append(tr("Define whether the main menu entry is hidden."));
Add(new cMenuEditBoolItem(tr("Use single area (8bpp)"), &data.usesinglearea));
help.Append(tr("Define whether a single 8bpp OSD area is preferred.\n\nRequired by Truetype fonts and anti-aliasing."));
Add(new cMenuEditStraItem(tr("Default display mode"), &data.displaymode, eFemonModeMaxNumber, dispmodes));
help.Append(tr("Define the default display mode at startup."));
@@ -366,6 +373,7 @@ void cMenuFemonSetup::Store(void)
Dprintf("%s()\n", __PRETTY_FUNCTION__);
femonConfig = data;
SetupStore("HideMenu", femonConfig.hidemenu);
SetupStore("UseSingleArea", femonConfig.usesinglearea);
SetupStore("DisplayMode", femonConfig.displaymode);
SetupStore("Skin", femonConfig.skin);
SetupStore("Theme", femonConfig.theme);

View File

@@ -14,6 +14,7 @@ cFemonConfig femonConfig;
cFemonConfig::cFemonConfig(void)
{
hidemenu = 0;
usesinglearea = 0;
displaymode = 0;
skin = 0;
theme = 0;
@@ -61,6 +62,18 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] =
0xFFFFEE00, // clrYellow
0xFF33CC33, // clrGreen
},
{
// eFemonThemeSTTNG
4, // bpp
0x7F000000, // clrBackground
0xFFFCC024, // clrTitleBackground
0xFF000000, // clrTitleText
0xFF00FCFC, // clrActiveText
0xFFFCC024, // clrInactiveText
0xFFFC1414, // clrRed
0xFFFCC024, // clrYellow
0xFF24FC24, // clrGreen
},
{
// eFemonThemeDeepBlue
4, // bpp

View File

@@ -25,6 +25,7 @@ struct cFemonConfig
public:
cFemonConfig(void);
int hidemenu;
int usesinglearea;
int displaymode;
int skin;
int theme;
@@ -55,6 +56,7 @@ enum eFemonThemes
{
eFemonThemeClassic,
eFemonThemeElchi,
eFemonThemeSTTNG,
eFemonThemeDeepBlue,
eFemonThemeMoronimo,
eFemonThemeEnigma,

View File

@@ -155,7 +155,7 @@ void cFemonOsd::DrawStatusWindow(void)
eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (m_Osd) {
if (m_Osd && channel) {
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(0), OSDWIDTH, OSDSTATUSWIN_Y(OSDSTATUSHEIGHT), femonTheme[femonConfig.theme].clrBackground);
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+OSDROWHEIGHT-1), femonTheme[femonConfig.theme].clrTitleBackground);
m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), *cString::sprintf("%d%s %s", m_Number ? m_Number : channel->Number(), m_Number ? "-" : "", channel->ShortName(true)), femonTheme[femonConfig.theme].clrTitleText, femonTheme[femonConfig.theme].clrTitleBackground, m_Font);
@@ -298,7 +298,7 @@ void cFemonOsd::DrawInfoWindow(void)
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
if (m_Osd) {
if (m_Osd && channel) {
if (m_DisplayMode == eFemonModeTransponder) {
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), femonTheme[femonConfig.theme].clrBackground);
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+OSDROWHEIGHT-1), femonTheme[femonConfig.theme].clrTitleBackground);
@@ -566,11 +566,9 @@ void cFemonOsd::Show(void)
Dprintf("%s()\n", __PRETTY_FUNCTION__);
int apid[2] = {0, 0};
int dpid[2] = {0, 0};
char *dev = NULL;
eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
asprintf(&dev, FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0);
cString dev = cString::sprintf(FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0);
m_Frontend = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (m_Frontend >= 0) {
if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) {
esyslog("ERROR: cFemonOsd::Show() cannot read frontend info.");
@@ -590,8 +588,9 @@ void cFemonOsd::Show(void)
m_Osd = cOsdProvider::NewOsd(((cOsd::OsdWidth() - OSDWIDTH) / 2) + cOsd::OsdLeft() + femonConfig.osdoffset, ((cOsd::OsdHeight() - OSDHEIGHT) / 2) + cOsd::OsdTop());
if (m_Osd) {
tArea Areas1[] = { { 0, 0, OSDWIDTH, OSDHEIGHT, femonTheme[femonConfig.theme].bpp } };
if (m_Osd->CanHandleAreas(Areas1, sizeof(Areas1) / sizeof(tArea)) == oeOk) {
// try to use single 8bpp area
tArea Areas1[] = { { 0, 0, OSDWIDTH, OSDHEIGHT, 8 } };
if (femonConfig.usesinglearea && m_Osd->CanHandleAreas(Areas1, sizeof(Areas1) / sizeof(tArea)) == oeOk) {
m_Osd->SetAreas(Areas1, sizeof(Areas1) / sizeof(tArea));
}
else {
@@ -606,10 +605,12 @@ void cFemonOsd::Show(void)
delete m_Receiver;
if (femonConfig.analyzestream) {
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
if (channel) {
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
Start();
}
@@ -620,14 +621,12 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber)
Dprintf("%s(%d,%d)\n", __PRETTY_FUNCTION__, device->DeviceNumber(), channelNumber);
int apid[2] = {0, 0};
int dpid[2] = {0, 0};
char *dev = NULL;
eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
if (!device->IsPrimaryDevice() || !channelNumber || cDevice::PrimaryDevice()->CurrentChannel() != channelNumber)
return;
close(m_Frontend);
asprintf(&dev, FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0);
cString dev = cString::sprintf(FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0);
m_Frontend = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (m_Frontend >= 0) {
if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) {
esyslog("ERROR: cFemonOsd::ChannelSwitch() cannot read frontend info.");
@@ -649,10 +648,12 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber)
delete m_Receiver;
if (femonConfig.analyzestream) {
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
if (channel) {
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
}
@@ -666,10 +667,12 @@ void cFemonOsd::SetAudioTrack(int Index, const char * const *Tracks)
delete m_Receiver;
if (femonConfig.analyzestream) {
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
if (channel) {
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
}
@@ -680,25 +683,27 @@ bool cFemonOsd::DeviceSwitch(int direction)
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, 0)) {
Dprintf("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device);
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0);
cControl::Shutdown();
cDevice::GetDevice(device)->SwitchChannel(channel, true);
if (cDevice::GetDevice(device) == cDevice::PrimaryDevice())
cDevice::GetDevice(device)->ForceTransferMode();
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->GetChannelID(), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
return (true);
if (channel) {
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, 0)) {
Dprintf("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device);
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0);
cControl::Shutdown();
cDevice::GetDevice(device)->SwitchChannel(channel, true);
if (cDevice::GetDevice(device) == cDevice::PrimaryDevice())
cDevice::GetDevice(device)->ForceTransferMode();
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->GetChannelID(), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
return (true);
}
}
}
}
@@ -894,10 +899,13 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
}
break;
case kOk:
{
// toggle between display modes
if (++m_DisplayMode == eFemonModeAC3 && !Channels.GetByNumber(cDevice::CurrentChannel())->Dpid(0)) m_DisplayMode++;
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (++m_DisplayMode == eFemonModeAC3 && channel && !channel->Dpid(0)) m_DisplayMode++;
if (m_DisplayMode >= eFemonModeMaxNumber) m_DisplayMode = 0;
DrawInfoWindow();
}
break;
default:
break;

View File

@@ -23,12 +23,10 @@ cString getFrontendInfo(int cardIndex)
uint16_t snr = 0;
uint32_t ber = 0;
uint32_t unc = 0;
char *dev = NULL;
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0);
asprintf(&dev, FRONTEND_DEVICE, cardIndex, 0);
int fe = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (fe < 0)
return NULL;
CHECK(ioctl(fe, FE_GET_INFO, &value));
@@ -53,11 +51,9 @@ cString getFrontendInfo(int cardIndex)
cString getFrontendName(int cardIndex)
{
struct dvb_frontend_info value;
char *dev = NULL;
cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0);
asprintf(&dev, FRONTEND_DEVICE, cardIndex, 0);
int fe = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (fe < 0)
return NULL;
CHECK(ioctl(fe, FE_GET_INFO, &value));
@@ -69,11 +65,9 @@ cString getFrontendName(int cardIndex)
cString getFrontendStatus(int cardIndex)
{
fe_status_t value;
char *dev = NULL;
cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0);
asprintf(&dev, FRONTEND_DEVICE, cardIndex, 0);
int fe = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (fe < 0)
return NULL;
CHECK(ioctl(fe, FE_READ_STATUS, &value));
@@ -85,11 +79,9 @@ cString getFrontendStatus(int cardIndex)
uint16_t getSignal(int cardIndex)
{
uint16_t value = 0;
char *dev = NULL;
cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0);
asprintf(&dev, FRONTEND_DEVICE, cardIndex, 0);
int fe = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (fe < 0)
return (value);
CHECK(ioctl(fe, FE_READ_SIGNAL_STRENGTH, &value));
@@ -101,11 +93,9 @@ uint16_t getSignal(int cardIndex)
uint16_t getSNR(int cardIndex)
{
uint16_t value = 0;
char *dev = NULL;
cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0);
asprintf(&dev, FRONTEND_DEVICE, cardIndex, 0);
int fe = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (fe < 0)
return (value);
CHECK(ioctl(fe, FE_READ_SNR, &value));
@@ -117,11 +107,9 @@ uint16_t getSNR(int cardIndex)
uint32_t getBER(int cardIndex)
{
uint32_t value = 0;
char *dev = NULL;
cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0);
asprintf(&dev, FRONTEND_DEVICE, cardIndex, 0);
int fe = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (fe < 0)
return (value);
CHECK(ioctl(fe, FE_READ_BER, &value));
@@ -133,11 +121,9 @@ uint32_t getBER(int cardIndex)
uint32_t getUNC(int cardIndex)
{
uint32_t value = 0;
char *dev = NULL;
cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0);
asprintf(&dev, FRONTEND_DEVICE, cardIndex, 0);
int fe = open(dev, O_RDONLY | O_NONBLOCK);
free(dev);
if (fe < 0)
return (value);
CHECK(ioctl(fe, FE_READ_UNCORRECTED_BLOCKS, &value));

View File

@@ -7,9 +7,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: femon 1.2.3\n"
"Project-Id-Version: femon 1.6.0\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2008-01-20 01:23+0200\n"
"POT-Creation-Date: 2008-03-23 14:53+0100\n"
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
"Last-Translator: Christian Wieninger\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -23,8 +23,8 @@ msgstr "DVB Signal Informationsanzeige (OSD)"
msgid "Signal Information"
msgstr "Signalinformationen"
msgid "Femon not available while replaying"
msgstr "Femon w<EFBFBD>hrend Wiedergabe nicht verf<72>gbar"
msgid "Femon not available"
msgstr "Femon nicht verf<72>gbar"
msgid "basic"
msgstr "Standard"
@@ -44,6 +44,9 @@ msgstr "Klassischer"
msgid "Elchi"
msgstr "Elchi"
msgid "ST:TNG"
msgstr "ST:TNG"
msgid "DeepBlue"
msgstr "DeepBlue"
@@ -65,7 +68,16 @@ msgstr "SilverGreen"
msgid "Hide main menu entry"
msgstr "Hauptmen<65>eintrag verstecken"
msgid "Define whether the main manu entry is hidden."
msgid "Define whether the main menu entry is hidden."
msgstr ""
msgid "Use single area (8bpp)"
msgstr "Ein Bildbereich benutzen (8bpp)"
msgid ""
"Define whether a single 8bpp OSD area is preferred.\n"
"\n"
"Required by Truetype fonts and anti-aliasing."
msgstr ""
msgid "Default display mode"

View File

@@ -5,9 +5,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: femon 1.2.3\n"
"Project-Id-Version: femon 1.6.0\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2008-01-20 01:23+0200\n"
"POT-Creation-Date: 2008-03-23 14:42+0100\n"
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
"Last-Translator: Luis Palacios\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -21,7 +21,7 @@ msgstr "Monitorizaci
msgid "Signal Information"
msgstr "Monitorizaci<63>n de la se<73>al DVB"
msgid "Femon not available while replaying"
msgid "Femon not available"
msgstr ""
msgid "basic"
@@ -42,6 +42,9 @@ msgstr "Cl
msgid "Elchi"
msgstr "Elchi"
msgid "ST:TNG"
msgstr "ST:TNG"
msgid "DeepBlue"
msgstr "DeepBlue"
@@ -63,7 +66,16 @@ msgstr "SilverGreen"
msgid "Hide main menu entry"
msgstr "Ocultar en el men<65> principal"
msgid "Define whether the main manu entry is hidden."
msgid "Define whether the main menu entry is hidden."
msgstr ""
msgid "Use single area (8bpp)"
msgstr ""
msgid ""
"Define whether a single 8bpp OSD area is preferred.\n"
"\n"
"Required by Truetype fonts and anti-aliasing."
msgstr ""
msgid "Default display mode"

View File

@@ -5,9 +5,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: femon 1.2.3\n"
"Project-Id-Version: femon 1.6.0\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2008-01-20 01:23+0200\n"
"POT-Creation-Date: 2008-03-23 14:42+0100\n"
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
"Last-Translator: Arthur Konovalov\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -21,7 +21,7 @@ msgstr "DVB Signaalmonitor (OSD)"
msgid "Signal Information"
msgstr "Signaaliinfo"
msgid "Femon not available while replaying"
msgid "Femon not available"
msgstr ""
msgid "basic"
@@ -42,6 +42,9 @@ msgstr "Klassikaline"
msgid "Elchi"
msgstr "Elchi"
msgid "ST:TNG"
msgstr "ST:TNG"
msgid "DeepBlue"
msgstr "DeepBlue"
@@ -63,7 +66,16 @@ msgstr "SilverGreen"
msgid "Hide main menu entry"
msgstr "Peida valik peamen<65><6E>s"
msgid "Define whether the main manu entry is hidden."
msgid "Define whether the main menu entry is hidden."
msgstr ""
msgid "Use single area (8bpp)"
msgstr ""
msgid ""
"Define whether a single 8bpp OSD area is preferred.\n"
"\n"
"Required by Truetype fonts and anti-aliasing."
msgstr ""
msgid "Default display mode"

View File

@@ -5,9 +5,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: femon 1.2.3\n"
"Project-Id-Version: femon 1.6.0\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2008-01-20 00:50+0200\n"
"POT-Creation-Date: 2008-03-23 14:42+0100\n"
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
"Last-Translator: Rolf Ahrenberg\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -21,8 +21,8 @@ msgstr "Signaalimittari (OSD)"
msgid "Signal Information"
msgstr "Signaalimittari"
msgid "Femon not available while replaying"
msgstr "Signaalimittari ei ole k<>ytett<74>viss<73> toiston aikana"
msgid "Femon not available"
msgstr "Signaalimittari ei ole k<>ytett<74>viss<73>"
msgid "basic"
msgstr "perus"
@@ -42,6 +42,9 @@ msgstr "Klassinen"
msgid "Elchi"
msgstr "Elchi"
msgid "ST:TNG"
msgstr "ST:TNG"
msgid "DeepBlue"
msgstr "DeepBlue"
@@ -63,9 +66,21 @@ msgstr "SilverGreen"
msgid "Hide main menu entry"
msgstr "Piilota valinta p<><70>valikosta"
msgid "Define whether the main manu entry is hidden."
msgid "Define whether the main menu entry is hidden."
msgstr "M<><4D>rittele, n<>ytet<65><74>nk<6E> laajennoksen valinta p<><70>valikossa."
msgid "Use single area (8bpp)"
msgstr "K<>yt<79> yksitt<74>ist<73> kuva-aluetta (8bpp)"
msgid ""
"Define whether a single 8bpp OSD area is preferred.\n"
"\n"
"Required by Truetype fonts and anti-aliasing."
msgstr ""
"M<><4D>rittele, yritet<65><74>nk<6E> k<>ytt<74><74> yksitt<74>ist<73> 8bpp kuva-aluetta.\n"
"\n"
"Truetype-kirjasimet ja reunan pehmennys vaativat t<>m<EFBFBD>n asetuksen."
msgid "Default display mode"
msgstr "Oletusn<73>ytt<74>tila"

View File

@@ -5,12 +5,12 @@
#
msgid ""
msgstr ""
"Project-Id-Version: femon 1.2.3\n"
"Project-Id-Version: femon 1.6.0\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2008-01-20 01:23+0200\n"
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
"Last-Translator: Nicolas Huillard\n"
"Language-Team: <vdr@linuxtv.org>\n"
"POT-Creation-Date: 2008-03-23 14:42+0100\n"
"PO-Revision-Date: 2008-01-26 09:59+0100\n"
"Last-Translator: NIVAL Micha<68>l <mnival@club-internet.fr>\n"
"Language-Team: <vdr@linuxtv.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -21,8 +21,8 @@ msgstr "Affiche les informations du signal DVB"
msgid "Signal Information"
msgstr "Signal DVB"
msgid "Femon not available while replaying"
msgstr ""
msgid "Femon not available"
msgstr "Femon n'est pas disponible"
msgid "basic"
msgstr "basique"
@@ -42,6 +42,9 @@ msgstr "Classique"
msgid "Elchi"
msgstr "Elchi"
msgid "ST:TNG"
msgstr "ST:TNG"
msgid "DeepBlue"
msgstr "DeepBlue"
@@ -63,89 +66,101 @@ msgstr "SilverGreen"
msgid "Hide main menu entry"
msgstr "Masquer dans le menu principal"
msgid "Define whether the main manu entry is hidden."
msgid "Define whether the main menu entry is hidden."
msgstr "D<>finit si l'entr<74>e doit <20>tre masqu<71>e dans le menu principal."
msgid "Use single area (8bpp)"
msgstr "Utiliser zone unique (8bpp)"
msgid ""
"Define whether a single 8bpp OSD area is preferred.\n"
"\n"
"Required by Truetype fonts and anti-aliasing."
msgstr ""
"D<>finit si une seule zone OSD de 8bpp est pr<70>f<EFBFBD>r<EFBFBD>e.\n"
"\n"
"Requis par les polices Truetype et l'anti-aliasing."
msgid "Default display mode"
msgstr "Affichage par d<>faut"
msgid "Define the default display mode at startup."
msgstr ""
msgstr "D<EFBFBD>finit l'affichage par d<>faut au d<>marrage."
msgid "Define the used OSD skin."
msgstr ""
msgstr "D<EFBFBD>finit le skin OSD <20> utiliser."
msgid "Define the used OSD theme."
msgstr ""
msgstr "D<EFBFBD>finit le th<74>me OSD <20> utiliser."
msgid "Position"
msgstr "Position"
msgid "Define the position of OSD."
msgstr ""
msgstr "D<EFBFBD>finit la position de l'OSD."
msgid "Define the height of OSD."
msgstr ""
msgstr "D<EFBFBD>finit l'hauteur de l'OSD."
msgid "Horizontal offset"
msgstr "D<>placement horizontal"
msgid "Define the horizontal offset of OSD."
msgstr ""
msgstr "D<EFBFBD>finit le d<>placement horizontal de l'OSD."
msgid "Show CA system"
msgstr "Syst<EFBFBD>me CA"
msgstr "Afficher syst<EFBFBD>me CA"
msgid "Define whether the CA system is shown as text."
msgstr ""
msgstr "D<EFBFBD>finit si le syst<73>me CA doit <20>tre affich<63>."
msgid "Red limit [%]"
msgstr "Limite du rouge (%)"
msgid "Define a limit for red bar, which is used to indicate a bad signal."
msgstr ""
msgstr "D<EFBFBD>finit la limite de la barre rouge, qui est utilis<69> pour indiquer un mauvais signal."
msgid "Green limit [%]"
msgstr "Limite du vert (%)"
msgid "Define a limit for green bar, which is used to indicate a good signal."
msgstr ""
msgstr "D<EFBFBD>finit la limite de la barre rouge, qui est utilis<69> pour indiquer un bon signal."
msgid "OSD update interval [0.1s]"
msgstr "Intervalle de mise <20> jour (0,1s)"
msgid "Define an interval for OSD updates. The smaller interval generates higher CPU load."
msgstr ""
msgstr "D<EFBFBD>finit l'intervalle de mise <20> jour de l'OSD. Un petit intervalle g<>n<EFBFBD>re une charge CPU plus importante."
msgid "Analyze stream"
msgstr "Analyser le flux"
msgid "Define whether the DVB stream is analyzed and bitrates calculated."
msgstr ""
msgstr "D<EFBFBD>finit si le flux DVB est analys<79> et le bitrates calcul<75>."
msgid "Calculation interval [0.1s]"
msgstr "Intervalle de calcul (0,1s)"
msgid "Define an interval for calculation. The bigger interval generates more stable values."
msgstr ""
msgstr "D<EFBFBD>finit l'intervalle de cacul. Un plus grand intervalle g<>n<EFBFBD>re une valeur plus stable."
msgid "Use SVDRP service"
msgstr ""
msgstr "Utiliser le service SVDRP"
msgid "Define whether the SVDRP service is used in client/server setups."
msgstr ""
msgstr "D<EFBFBD>finit si le service SVDRP est utilis<69> en configuration client/serveur."
msgid "SVDRP service port"
msgstr ""
msgstr "Port du service SVDRP"
msgid "Define the port number of SVDRP service."
msgstr ""
msgstr "D<EFBFBD>finit le port d'<27>coute du service SVDRP."
msgid "SVDRP service IP"
msgstr ""
msgstr "IP du service SVDRP"
msgid "Define the IP address of SVDRP service."
msgstr ""
msgstr "D<EFBFBD>finit l'adresse IP du service SVDRP."
msgid "Help"
msgstr "Aide"

View File

@@ -2,28 +2,28 @@
# Copyright (C) 2007 Rolf Ahrenberg
# This file is distributed under the same license as the VDR package.
# Sean Carlos
# Gringo <vdr-italian@tiscali.it>
# Diego Pierotto <vdr-italian@tiscali.it>
#
msgid ""
msgstr ""
"Project-Id-Version: femon 1.2.3\n"
"Project-Id-Version: femon 1.6.0\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2008-01-20 01:23+0200\n"
"PO-Revision-Date: 2007-12-26 19:38+0100\n"
"Last-Translator: Gringo <vdr-italian@tiscali.it>\n"
"Language-Team: <vdr@linuxtv.org>\n"
"POT-Creation-Date: 2008-02-16 01:01+0200\n"
"PO-Revision-Date: 2008-04-17 00:18+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: <vdr@linuxtv.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "DVB Signal Information Monitor (OSD)"
msgstr "Visualizza informazioni segnale DVB"
msgstr "Mostra info segnale DVB (OSD)"
msgid "Signal Information"
msgstr "Informazioni segnale"
msgstr "Info segnale"
msgid "Femon not available while replaying"
msgstr "Femon non disponibile durante la riproduzione"
msgid "Femon not available"
msgstr "Femon non disponibile"
msgid "basic"
msgstr "base"
@@ -43,6 +43,9 @@ msgstr "Classico"
msgid "Elchi"
msgstr "Elchi"
msgid "ST:TNG"
msgstr "ST:TNG"
msgid "DeepBlue"
msgstr "DeepBlue"
@@ -64,89 +67,101 @@ msgstr "SilverGreen"
msgid "Hide main menu entry"
msgstr "Nascondi voce menu principale"
msgid "Define whether the main manu entry is hidden."
msgid "Define whether the main menu entry is hidden."
msgstr "Definisci se la voce del menu principale <20> nascosta."
msgid "Use single area (8bpp)"
msgstr "Utilizza area singola (8bpp)"
msgid ""
"Define whether a single 8bpp OSD area is preferred.\n"
"\n"
"Required by Truetype fonts and anti-aliasing."
msgstr ""
"Definisci se <20> preferita un'area OSD singola a 8bpp.\n"
"\n"
"Richiesto dai caratteri Truetype e anti-aliasing."
msgid "Default display mode"
msgstr "Modalit<69> visualizz. standard"
msgstr "Modalit<69> visualizz. predefinita"
msgid "Define the default display mode at startup."
msgstr ""
msgstr "Definisci la modalit<69> di visualizz. predefinita all'avvio."
msgid "Define the used OSD skin."
msgstr ""
msgstr "Definisci lo stile interfaccia OSD utilizzato."
msgid "Define the used OSD theme."
msgstr ""
msgstr "Definisci il tema OSD utilizzato."
msgid "Position"
msgstr "Posizione"
msgid "Define the position of OSD."
msgstr ""
msgstr "Definisci la posizione dell'OSD."
msgid "Define the height of OSD."
msgstr ""
msgstr "Definisci l'altezza dell'OSD."
msgid "Horizontal offset"
msgstr "Limite orizzontale"
msgid "Define the horizontal offset of OSD."
msgstr ""
msgstr "Definisci il limite orizzontale dell'OSD."
msgid "Show CA system"
msgstr "Mostra sistema CA"
msgid "Define whether the CA system is shown as text."
msgstr ""
msgstr "Definisci se il sistema CA viene mostrato come testo."
msgid "Red limit [%]"
msgstr "Limite rosso [%]"
msgid "Define a limit for red bar, which is used to indicate a bad signal."
msgstr ""
msgstr "Definisci un limite per la barra rossa, usata per indicare un cattivo segnale."
msgid "Green limit [%]"
msgstr "Limite verde [%]"
msgid "Define a limit for green bar, which is used to indicate a good signal."
msgstr ""
msgstr "Definisci un limite per la barra verde, usata per indicare un buon segnale."
msgid "OSD update interval [0.1s]"
msgstr "Intervallo aggiornamento OSD [0.1s]"
msgstr "Intervallo agg. OSD [0.1s]"
msgid "Define an interval for OSD updates. The smaller interval generates higher CPU load."
msgstr ""
msgstr "Definisci un intervallo per gli agg. OSD. Pi<50> piccolo <20> l'intervallo maggiore sar<61> l'uso di CPU."
msgid "Analyze stream"
msgstr "Analizza flusso"
msgid "Define whether the DVB stream is analyzed and bitrates calculated."
msgstr ""
msgstr "Definisci se il flusso DVB <20> analizzato e i bitrate calcolati."
msgid "Calculation interval [0.1s]"
msgstr "Intervallo calcolo [0.1s]"
msgstr "Intervallo di calcolo [0.1s]"
msgid "Define an interval for calculation. The bigger interval generates more stable values."
msgstr ""
msgstr "Definisci un intervallo di calcolo. L'intervallo pi<70> grande genera valori pi<70> stabili."
msgid "Use SVDRP service"
msgstr "Utilizza servizio SVDRP"
msgid "Define whether the SVDRP service is used in client/server setups."
msgstr ""
msgstr "Definisci se il servizio SVDRP viene usato nelle opzioni client/server."
msgid "SVDRP service port"
msgstr "Porta servizio SVDRP"
msgid "Define the port number of SVDRP service."
msgstr ""
msgstr "Definisci il numero di porta del servizio SVDRP."
msgid "SVDRP service IP"
msgstr "IP servizio SVDRP"
msgid "Define the IP address of SVDRP service."
msgstr ""
msgstr "Definisci l'indirizzo IP del servizio SVDRP."
msgid "Help"
msgstr "Aiuto"
@@ -161,10 +176,10 @@ msgid "Transponder Information"
msgstr "Informazioni transponder"
msgid "Apid"
msgstr "Apid"
msgstr "PID Audio"
msgid "Dpid"
msgstr "Dpid"
msgstr "PID AC3"
msgid "Spid"
msgstr "Spid"
@@ -179,7 +194,7 @@ msgid "Rid"
msgstr "Rid"
msgid "Satellite Card"
msgstr "Scheda satellitare"
msgstr "Scheda satellite"
msgid "Cable Card"
msgstr "Scheda via cavo"
@@ -191,7 +206,7 @@ msgid "Coderate"
msgstr "Coderate"
msgid "Stream Information"
msgstr "Informazione flusso"
msgstr "Informazioni flusso"
msgid "Video Stream"
msgstr "Flusso video"
@@ -200,7 +215,7 @@ msgid "Bitrate"
msgstr "Bitrate"
msgid "Aspect Ratio"
msgstr "Dimensione immagine"
msgstr "Formato immagine"
msgid "Frame Rate"
msgstr "Frame rate"
@@ -296,10 +311,10 @@ msgid "SkyCrypt"
msgstr "SkyCrypt"
msgid "none"
msgstr "Nessuno"
msgstr "nessuna"
msgid "auto"
msgstr "Auto"
msgstr "auto"
msgid "MHz"
msgstr "MHz"
@@ -317,19 +332,19 @@ msgid "NTSC"
msgstr "NTSC"
msgid "Complete Main (CM)"
msgstr "Principale (CM)"
msgstr "Principale (P)"
msgid "Music and Effects (ME)"
msgstr "Musica ed effetti (ME)"
msgid "Visually Impaired (VI)"
msgstr "Immagine alterata (VI)"
msgstr "Non vedenti (NV)"
msgid "Hearing Impaired (HI)"
msgstr "Suono deteriorato (HI)"
msgstr "Non udenti (NU)"
msgid "Dialogue (D)"
msgstr "Dialogo (D)"
msgstr "Dialogui (D)"
msgid "Commentary (C)"
msgstr "Commenti (C)"
@@ -338,7 +353,7 @@ msgid "Emergency (E)"
msgstr "Emergenza (E)"
msgid "Voice Over (VO)"
msgstr "Voce off (VO)"
msgstr "Voce su (VS)"
msgid "Karaoke"
msgstr "Karaoke"
@@ -381,3 +396,4 @@ msgstr "Mbit/s"
msgid "kbit/s"
msgstr "kbit/s"

View File

@@ -5,9 +5,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: femon 1.2.3\n"
"Project-Id-Version: femon 1.6.0\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2008-01-20 01:23+0200\n"
"POT-Creation-Date: 2008-03-23 14:42+0100\n"
"PO-Revision-Date: 2007-08-12 23:22+0300\n"
"Last-Translator: Vyacheslav Dikonov\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -21,7 +21,7 @@ msgstr "
msgid "Signal Information"
msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
msgid "Femon not available while replaying"
msgid "Femon not available"
msgstr ""
msgid "basic"
@@ -42,6 +42,9 @@ msgstr ""
msgid "Elchi"
msgstr "Elchi"
msgid "ST:TNG"
msgstr "ST:TNG"
msgid "DeepBlue"
msgstr "DeepBlue"
@@ -63,7 +66,16 @@ msgstr "SilverGreen"
msgid "Hide main menu entry"
msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
msgid "Define whether the main manu entry is hidden."
msgid "Define whether the main menu entry is hidden."
msgstr ""
msgid "Use single area (8bpp)"
msgstr ""
msgid ""
"Define whether a single 8bpp OSD area is preferred.\n"
"\n"
"Required by Truetype fonts and anti-aliasing."
msgstr ""
msgid "Default display mode"