mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 11:36:53 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cfbd0b730 | ||
|
|
152e87d443 | ||
|
|
08223cf6c4 | ||
|
|
84572d2187 | ||
|
|
78554b53b6 | ||
|
|
11554a8d7e | ||
|
|
0d06635520 | ||
|
|
eedab47c35 | ||
|
|
cba5171a09 | ||
|
|
91d6cb4074 |
9
HISTORY
9
HISTORY
@@ -475,3 +475,12 @@ VDR Plugin 'femon' Revision History
|
||||
|
||||
- Updated for vdr-2.0.0.
|
||||
- Added Slovak translation (Thanks to Milan Hrala).
|
||||
|
||||
2014-01-10: Version 2.0.1
|
||||
|
||||
- Fixed a crash in SVDRP (Thanks for Lothar Englisch for reporting).
|
||||
- Fixed a memory leak and issues reported by scan-build tool.
|
||||
|
||||
2014-01-18: Version 2.0.2
|
||||
|
||||
- Added initial support for CAMs.
|
||||
|
||||
2
Makefile
2
Makefile
@@ -24,7 +24,7 @@ GITTAG = $(shell git describe --always 2>/dev/null)
|
||||
### The directory environment:
|
||||
|
||||
# Use package data if installed...otherwise assume we're under the VDR source directory:
|
||||
PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
|
||||
PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr))
|
||||
LIBDIR = $(call PKGCFG,libdir)
|
||||
LOCDIR = $(call PKGCFG,locdir)
|
||||
PLGCFG = $(call PKGCFG,plgcfg)
|
||||
|
||||
10
femon.c
10
femon.c
@@ -22,7 +22,7 @@
|
||||
#define GITVERSION ""
|
||||
#endif
|
||||
|
||||
static const char VERSION[] = "2.0.0" GITVERSION;
|
||||
static const char VERSION[] = "2.0.2" GITVERSION;
|
||||
static const char DESCRIPTION[] = trNOOP("DVB Signal Information Monitor (OSD)");
|
||||
static const char MAINMENUENTRY[] = trNOOP("Signal Information");
|
||||
|
||||
@@ -204,11 +204,11 @@ cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int
|
||||
if (dev2)
|
||||
dev = dev2;
|
||||
}
|
||||
if (cReplayControl::NowReplaying() || !dev) {
|
||||
ReplyCode = 550; // Requested action not taken
|
||||
return cString("Cannot open femon plugin while replaying");
|
||||
}
|
||||
if (strcasecmp(Command, "OPEN") == 0) {
|
||||
if (cReplayControl::NowReplaying()) {
|
||||
ReplyCode = 550; // Requested action not taken
|
||||
return cString("Cannot open femon plugin while replaying");
|
||||
}
|
||||
if (!cFemonOsd::Instance())
|
||||
cRemote::CallPlugin(Name());
|
||||
return cString("Opening femon plugin");
|
||||
|
||||
Binary file not shown.
BIN
femonclient/vdr-femonclient-0.0.6.tgz
Normal file
BIN
femonclient/vdr-femonclient-0.0.6.tgz
Normal file
Binary file not shown.
98
femonosd.c
98
femonosd.c
@@ -490,7 +490,6 @@ void cFemonOsd::DrawInfoWindow(void)
|
||||
OSDDRAWINFOLEFT(tr("Protocol"), *data.protocol);
|
||||
offset += OSDROWHEIGHT;
|
||||
OSDDRAWINFOLEFT(tr("Bitrate"), *data.bitrate);
|
||||
offset += OSDROWHEIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -836,26 +835,83 @@ bool cFemonOsd::DeviceSwitch(int direction)
|
||||
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||
if (channel) {
|
||||
for (int i = 0; i < cDevice::NumDevices() - 1; i++) {
|
||||
if (direction >= 0) {
|
||||
if (++device >= cDevice::NumDevices())
|
||||
device = 0;
|
||||
}
|
||||
else {
|
||||
if (--device < 0)
|
||||
device = cDevice::NumDevices() - 1;
|
||||
}
|
||||
if (cDevice::GetDevice(device)->ProvidesChannel(channel, 0)) {
|
||||
debug("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device);
|
||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0, true);
|
||||
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));
|
||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number(), true);
|
||||
return (true);
|
||||
}
|
||||
}
|
||||
if (direction >= 0) {
|
||||
if (++device >= cDevice::NumDevices())
|
||||
device = 0;
|
||||
}
|
||||
else {
|
||||
if (--device < 0)
|
||||
device = cDevice::NumDevices() - 1;
|
||||
}
|
||||
// Collect the current priorities of all CAM slots that can decrypt the channel:
|
||||
int NumCamSlots = CamSlots.Count();
|
||||
int SlotPriority[NumCamSlots];
|
||||
int NumUsableSlots = 0;
|
||||
bool NeedsDetachAllReceivers = false;
|
||||
bool InternalCamNeeded = false;
|
||||
bool ValidDevice = false;
|
||||
cCamSlot *s = NULL;
|
||||
cDevice *d = cDevice::GetDevice(device);
|
||||
if (channel->Ca() >= CA_ENCRYPTED_MIN) {
|
||||
for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) {
|
||||
SlotPriority[CamSlot->Index()] = MAXPRIORITY + 1; // assumes it can't be used
|
||||
if (CamSlot->ModuleStatus() == msReady) {
|
||||
if (CamSlot->ProvidesCa(channel->Caids())) {
|
||||
if (!ChannelCamRelations.CamChecked(channel->GetChannelID(), CamSlot->SlotNumber())) {
|
||||
SlotPriority[CamSlot->Index()] = CamSlot->Priority();
|
||||
NumUsableSlots++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!NumUsableSlots)
|
||||
InternalCamNeeded = true; // no CAM is able to decrypt this channel
|
||||
}
|
||||
for (int j = 0; j < NumCamSlots || !NumUsableSlots; ++j) {
|
||||
if (NumUsableSlots && SlotPriority[j] > MAXPRIORITY)
|
||||
continue; // there is no CAM available in this slot
|
||||
bool HasInternalCam = d->HasInternalCam();
|
||||
if (InternalCamNeeded && !HasInternalCam)
|
||||
continue; // no CAM is able to decrypt this channel and the device uses vdr handled CAMs
|
||||
if (NumUsableSlots && !HasInternalCam && !CamSlots.Get(j)->Assign(d, true))
|
||||
continue; // CAM slot can't be used with this device
|
||||
if (d->ProvidesChannel(channel, 0, &NeedsDetachAllReceivers)) { // this device is basically able to do the job
|
||||
debug("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device);
|
||||
if (NumUsableSlots && !HasInternalCam && d->CamSlot() && d->CamSlot() != CamSlots.Get(j))
|
||||
NeedsDetachAllReceivers = true; // using a different CAM slot requires detaching receivers
|
||||
if (NumUsableSlots && !HasInternalCam)
|
||||
s = CamSlots.Get(j);
|
||||
ValidDevice = true;
|
||||
break;
|
||||
}
|
||||
if (!NumUsableSlots)
|
||||
break; // no CAM necessary, so just one loop over the devices
|
||||
}
|
||||
// Do the actual switch if valid device found
|
||||
if (d && ValidDevice) {
|
||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0, true);
|
||||
cControl::Shutdown();
|
||||
if (NeedsDetachAllReceivers)
|
||||
d->DetachAllReceivers();
|
||||
if (s) {
|
||||
if (s->Device() != d) {
|
||||
if (s->Device())
|
||||
s->Device()->DetachAllReceivers();
|
||||
if (d->CamSlot())
|
||||
d->CamSlot()->Assign(NULL);
|
||||
s->Assign(d);
|
||||
}
|
||||
}
|
||||
else if (d->CamSlot() && !d->CamSlot()->IsDecrypting())
|
||||
d->CamSlot()->Assign(NULL);
|
||||
d->SwitchChannel(channel, true);
|
||||
if (d == cDevice::PrimaryDevice())
|
||||
d->ForceTransferMode();
|
||||
cControl::Launch(new cTransferControl(d, channel));
|
||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number(), true);
|
||||
return (true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return (false);
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include "symbols/format480i.xpm"
|
||||
#include "symbols/format480p.xpm"
|
||||
|
||||
static cBitmap bmOnePixel(1, 1, 1);
|
||||
static cBitmap bmStereo(stereo_xpm);
|
||||
static cBitmap bmMonoLeft(monoleft_xpm);
|
||||
static cBitmap bmMonoRight(monoright_xpm);
|
||||
@@ -134,49 +135,50 @@ bool cFemonSymbolCache::Populate(void)
|
||||
Flush();
|
||||
|
||||
// pushing order must follow the enumeration - keep original proportions except for frontend status ones
|
||||
cacheM.Append(bmStereo.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_STEREO
|
||||
cacheM.Append(bmMonoLeft.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MONO_LEFT
|
||||
cacheM.Append(bmMonoRight.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MONO_RIGHT
|
||||
cacheM.Append(bmDolbyDigital.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD
|
||||
cacheM.Append(bmDolbyDigital20.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD20
|
||||
cacheM.Append(bmDolbyDigital51.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD51
|
||||
cacheM.Append(bmMpeg2.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MPEG2
|
||||
cacheM.Append(bmH264.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_H264
|
||||
cacheM.Append(bmPal.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_PAL
|
||||
cacheM.Append(bmNtsc.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_NTSC
|
||||
cacheM.Append(bmEncrypted.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ENCRYPTED
|
||||
cacheM.Append(bmSvdrp.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SVDRP
|
||||
cacheM.Append(bmLock.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_LOCK
|
||||
cacheM.Append(bmSignal.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_SIGNAL
|
||||
cacheM.Append(bmCarrier.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_CARRIER
|
||||
cacheM.Append(bmViterbi.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_VITERBI
|
||||
cacheM.Append(bmSync.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_SYNC
|
||||
cacheM.Append(bmAspectRatio11.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_1_1
|
||||
cacheM.Append(bmAspectRatio169.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_16_9
|
||||
cacheM.Append(bmOnePixel.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ONEPIXEL
|
||||
cacheM.Append(bmStereo.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_STEREO
|
||||
cacheM.Append(bmMonoLeft.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MONO_LEFT
|
||||
cacheM.Append(bmMonoRight.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MONO_RIGHT
|
||||
cacheM.Append(bmDolbyDigital.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD
|
||||
cacheM.Append(bmDolbyDigital20.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD20
|
||||
cacheM.Append(bmDolbyDigital51.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DD51
|
||||
cacheM.Append(bmMpeg2.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_MPEG2
|
||||
cacheM.Append(bmH264.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_H264
|
||||
cacheM.Append(bmPal.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_PAL
|
||||
cacheM.Append(bmNtsc.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_NTSC
|
||||
cacheM.Append(bmEncrypted.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ENCRYPTED
|
||||
cacheM.Append(bmSvdrp.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SVDRP
|
||||
cacheM.Append(bmLock.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_LOCK
|
||||
cacheM.Append(bmSignal.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_SIGNAL
|
||||
cacheM.Append(bmCarrier.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_CARRIER
|
||||
cacheM.Append(bmViterbi.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_VITERBI
|
||||
cacheM.Append(bmSync.Scaled(xFactorM, yFactorM, antiAliasM)); // SYMBOL_SYNC
|
||||
cacheM.Append(bmAspectRatio11.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_1_1
|
||||
cacheM.Append(bmAspectRatio169.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_16_9
|
||||
cacheM.Append(bmAspectRatio2211.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_2_21_1
|
||||
cacheM.Append(bmAspectRatio43.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_4_3
|
||||
cacheM.Append(bmDevice.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DEVICE
|
||||
cacheM.Append(bmZero.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ZERO
|
||||
cacheM.Append(bmOne.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ONE
|
||||
cacheM.Append(bmTwo.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_TWO
|
||||
cacheM.Append(bmThree.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_THREE
|
||||
cacheM.Append(bmFour.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FOUR
|
||||
cacheM.Append(bmFive.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FIVE
|
||||
cacheM.Append(bmSix.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SIX
|
||||
cacheM.Append(bmSeven.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SEVEN
|
||||
cacheM.Append(bmEight.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_EIGHT
|
||||
cacheM.Append(bmFormat1080.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_1080
|
||||
cacheM.Append(bmFormat1080i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_1080i
|
||||
cacheM.Append(bmFormat1080p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_1080p
|
||||
cacheM.Append(bmFormat720.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_720
|
||||
cacheM.Append(bmFormat720i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_720i
|
||||
cacheM.Append(bmFormat720p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_720p
|
||||
cacheM.Append(bmFormat576.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_576
|
||||
cacheM.Append(bmFormat576i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_576i
|
||||
cacheM.Append(bmFormat576p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_576p
|
||||
cacheM.Append(bmFormat480.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_480
|
||||
cacheM.Append(bmFormat480i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_480i
|
||||
cacheM.Append(bmFormat480p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_480p
|
||||
cacheM.Append(bmAspectRatio43.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_AR_4_3
|
||||
cacheM.Append(bmDevice.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_DEVICE
|
||||
cacheM.Append(bmZero.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ZERO
|
||||
cacheM.Append(bmOne.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_ONE
|
||||
cacheM.Append(bmTwo.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_TWO
|
||||
cacheM.Append(bmThree.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_THREE
|
||||
cacheM.Append(bmFour.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FOUR
|
||||
cacheM.Append(bmFive.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FIVE
|
||||
cacheM.Append(bmSix.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SIX
|
||||
cacheM.Append(bmSeven.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_SEVEN
|
||||
cacheM.Append(bmEight.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_EIGHT
|
||||
cacheM.Append(bmFormat1080.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_1080
|
||||
cacheM.Append(bmFormat1080i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_1080i
|
||||
cacheM.Append(bmFormat1080p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_1080p
|
||||
cacheM.Append(bmFormat720.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_720
|
||||
cacheM.Append(bmFormat720i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_720i
|
||||
cacheM.Append(bmFormat720p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_720p
|
||||
cacheM.Append(bmFormat576.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_576
|
||||
cacheM.Append(bmFormat576i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_576i
|
||||
cacheM.Append(bmFormat576p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_576p
|
||||
cacheM.Append(bmFormat480.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_480
|
||||
cacheM.Append(bmFormat480i.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_480i
|
||||
cacheM.Append(bmFormat480p.Scaled(yFactorM, yFactorM, antiAliasM)); // SYMBOL_FORMAT_480p
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -197,7 +199,7 @@ bool cFemonSymbolCache::Flush(void)
|
||||
|
||||
cBitmap& cFemonSymbolCache::Get(eSymbols symbolP)
|
||||
{
|
||||
cBitmap *bitmapM = NULL;
|
||||
cBitmap *bitmapM = cacheM[SYMBOL_ONEPIXEL];
|
||||
|
||||
if (symbolP < cacheM.Size())
|
||||
bitmapM = cacheM[symbolP];
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <vdr/osd.h>
|
||||
|
||||
enum eSymbols {
|
||||
SYMBOL_ONEPIXEL,
|
||||
SYMBOL_STEREO,
|
||||
SYMBOL_MONO_LEFT,
|
||||
SYMBOL_MONO_RIGHT,
|
||||
@@ -77,8 +78,8 @@ public:
|
||||
~cFemonSymbolCache();
|
||||
void Refresh();
|
||||
cBitmap& Get(eSymbols symbolP);
|
||||
int GetSpacing() { return int(yFactorM * DEFAULT_SPACING); }
|
||||
int GetRounding() { return int(yFactorM * DEFAULT_ROUNDING); }
|
||||
int GetSpacing() { return int(yFactorM * cFemonSymbolCache::DEFAULT_SPACING); }
|
||||
int GetRounding() { return int(yFactorM * cFemonSymbolCache::DEFAULT_ROUNDING); }
|
||||
};
|
||||
|
||||
extern cFemonSymbolCache femonSymbols;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Peter Marquardt
|
||||
# Andreas Brachold
|
||||
@@ -7,10 +7,10 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Christian Wieninger\n"
|
||||
"Language-Team: German <vdr@linuxtv.org>\n"
|
||||
"Language: de\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Luis Palacios
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Luis Palacios\n"
|
||||
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
||||
"Language: es\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Arthur Konovalov
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Arthur Konovalov\n"
|
||||
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
||||
"Language: et\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Rolf Ahrenberg
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Rolf Ahrenberg\n"
|
||||
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
||||
"Language: fi\n"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Nicolas Huillard
|
||||
# Michaël Nival <mnival@club-internet.fr>, 2010
|
||||
@@ -7,10 +7,10 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Bernard Jaulin <bernard.jaulin@gmail.com>\n"
|
||||
"Language-Team: French <vdr@linuxtv.org>\n"
|
||||
"Language: fr\n"
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# F<>ley Istv<74>n <ifuley at tigercomp dot ro>, 2011
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2010-10-10 10:10+0200\n"
|
||||
"Last-Translator: F<>ley Istv<74>n <ifuley at tigercomp dot ro>\n"
|
||||
"Language-Team: Hungarian <ifuley at tigercomp dot ro>\n"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Sean Carlos
|
||||
# Diego Pierotto <vdr-italian@tiscali.it>
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
||||
"Language: it\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Valdemaras Pipiras
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
||||
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
||||
"Language: lt\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Vyacheslav Dikonov
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Vyacheslav Dikonov\n"
|
||||
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
||||
"Language: ru\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Milan Hrala
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
||||
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
||||
"Language: sk\n"
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
# Yarema aka Knedlyk <yupadmin@gmail.com>, 2010.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
|
||||
"Language: uk\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Nan Feng VDR <nfgx@21cn.com>, 2009.2
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: NanFeng <nfgx@21cn.com>\n"
|
||||
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
||||
"Language: zh_CN\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007-2013 Rolf Ahrenberg
|
||||
# Copyright (C) 2007-2014 Rolf Ahrenberg
|
||||
# This file is distributed under the same license as the femon package.
|
||||
# Nan Feng VDR <nfgx@21cn.com>, 2009.2
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: vdr-femon 2.0.0\n"
|
||||
"Project-Id-Version: vdr-femon 2.0.2\n"
|
||||
"Report-Msgid-Bugs-To: <see README>\n"
|
||||
"POT-Creation-Date: 2013-04-01 04:01+0200\n"
|
||||
"PO-Revision-Date: 2013-04-01 04:01+0200\n"
|
||||
"POT-Creation-Date: 2014-01-08 01:18+0200\n"
|
||||
"PO-Revision-Date: 2014-01-08 01:18+0200\n"
|
||||
"Last-Translator: NanFeng <nfgx@21cn.com>\n"
|
||||
"Language-Team: Chinese (traditional) <vdr@linuxtv.org>\n"
|
||||
"Language: zh_TW\n"
|
||||
|
||||
Reference in New Issue
Block a user