mirror of
				https://github.com/rofafor/vdr-plugin-femon.git
				synced 2023-10-10 11:36:53 +00:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 2e5dad9ec5 | ||
|  | 136c9fb73c | ||
|  | 9ca1fcb378 | ||
|  | 1cfbd0b730 | ||
|  | 152e87d443 | ||
|  | 08223cf6c4 | ||
|  | 84572d2187 | ||
|  | 78554b53b6 | ||
|  | 11554a8d7e | ||
|  | 0d06635520 | ||
|  | eedab47c35 | ||
|  | cba5171a09 | ||
|  | 91d6cb4074 | 
							
								
								
									
										26
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -475,3 +475,29 @@ 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. | ||||
|  | ||||
| 2014-03-08: Version 2.0.3 | ||||
|  | ||||
| - Added support for SAT>IP devices. | ||||
|  | ||||
| 2014-03-15: Version 2.0.4 | ||||
|  | ||||
| - Refactored the SAT>IP support. | ||||
|  | ||||
|  | ||||
| =================================== | ||||
| VDR Plugin 'femon' Revision History | ||||
| =================================== | ||||
|  | ||||
| 2014-03-16: Version 2.1.0 | ||||
|  | ||||
| - Updated for vdr-2.1.6. | ||||
|   | ||||
							
								
								
									
										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) | ||||
|   | ||||
							
								
								
									
										14
									
								
								femon.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								femon.c
									
									
									
									
									
								
							| @@ -14,15 +14,15 @@ | ||||
| #include "femonservice.h" | ||||
| #include "femontools.h" | ||||
|  | ||||
| #if defined(APIVERSNUM) && APIVERSNUM < 20000 | ||||
| #error "VDR-2.0.0 API version or greater is required!" | ||||
| #if defined(APIVERSNUM) && APIVERSNUM < 20106 | ||||
| #error "VDR-2.1.6 API version or greater is required!" | ||||
| #endif | ||||
|  | ||||
| #ifndef GITVERSION | ||||
| #define GITVERSION "" | ||||
| #endif | ||||
|  | ||||
| static const char VERSION[]       = "2.0.0" GITVERSION; | ||||
| static const char VERSION[]       = "2.1.0" 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.
										
									
								
							
							
								
								
									
										128
									
								
								femonosd.c
									
									
									
									
									
								
							
							
						
						
									
										128
									
								
								femonosd.c
									
									
									
									
									
								
							| @@ -24,7 +24,7 @@ | ||||
| #define OSDWIDTH                  m_OsdWidth              // in pixels | ||||
| #define OSDHEIGHT                 m_OsdHeight             // in pixels | ||||
| #define OSDROWHEIGHT              m_Font->Height()        // in pixels | ||||
| #define OSDINFOHEIGHT             (OSDROWHEIGHT * 13)     // in pixels (13 rows) | ||||
| #define OSDINFOHEIGHT             (OSDROWHEIGHT * 14)     // in pixels (14 rows) | ||||
| #define OSDSTATUSHEIGHT           (OSDROWHEIGHT * 6)      // in pixels (6 rows) | ||||
| #define OSDSYMBOL(id)             femonSymbols.Get(id) | ||||
| #define OSDSPACING                femonSymbols.GetSpacing() | ||||
| @@ -436,6 +436,8 @@ void cFemonOsd::DrawInfoWindow(void) | ||||
|                    OSDDRAWINFOLEFT( trVDR("System"),       *getSatelliteSystem(dtp.System())); | ||||
|                    if (dtp.System()) { | ||||
|                       OSDDRAWINFORIGHT(trVDR("RollOff"),   *getRollOff(dtp.RollOff())); | ||||
|                       offset += OSDROWHEIGHT; | ||||
|                       OSDDRAWINFOLEFT( trVDR("Pilot"),     *getPilot(dtp.Pilot())); | ||||
|                       } | ||||
|                    } | ||||
|                    break; | ||||
| @@ -474,6 +476,9 @@ void cFemonOsd::DrawInfoWindow(void) | ||||
|                    OSDDRAWINFOLEFT( trVDR("System"),       *getTerrestrialSystem(dtp.System())); | ||||
|                    if (dtp.System()) { | ||||
|                       OSDDRAWINFORIGHT(trVDR("StreamId"),  *cString::sprintf("%d", dtp.StreamId())); | ||||
|                       offset += OSDROWHEIGHT; | ||||
|                       OSDDRAWINFOLEFT( trVDR("T2SystemId"),*cString::sprintf("%d", dtp.T2SystemId())); | ||||
|                       OSDDRAWINFORIGHT(trVDR("SISO/MISO"), *cString::sprintf("%d", dtp.SisoMiso())); | ||||
|                       } | ||||
|                    } | ||||
|                    break; | ||||
| @@ -490,7 +495,6 @@ void cFemonOsd::DrawInfoWindow(void) | ||||
|                          OSDDRAWINFOLEFT(tr("Protocol"),   *data.protocol); | ||||
|                          offset += OSDROWHEIGHT; | ||||
|                          OSDDRAWINFOLEFT(tr("Bitrate"),    *data.bitrate); | ||||
|                          offset += OSDROWHEIGHT; | ||||
|                          } | ||||
|                       } | ||||
|                    } | ||||
| @@ -626,6 +630,23 @@ void cFemonOsd::Action(void) | ||||
|               m_BERValid = (ioctl(m_Frontend, FE_READ_BER, &m_BER) >= 0); | ||||
|               m_UNCValid = (ioctl(m_Frontend, FE_READ_UNCORRECTED_BLOCKS, &m_UNC) >= 0); | ||||
|               } | ||||
|            else if (strstr(*cDevice::ActualDevice()->DeviceType(), SATIP_DEVICE)) { | ||||
|               m_Quality = cDevice::ActualDevice()->SignalQuality(); | ||||
|               m_QualityValid = (m_Quality >= 0); | ||||
|               m_Strength = cDevice::ActualDevice()->SignalStrength(); | ||||
|               m_StrengthValid = (m_Strength >= 0); | ||||
|               m_FrontendName = cDevice::ActualDevice()->DeviceName(); | ||||
|               m_FrontendStatus = (fe_status_t)(cDevice::ActualDevice()->HasLock() ? (FE_HAS_LOCK | FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC) : 0); | ||||
|               m_FrontendStatusValid = m_StrengthValid; | ||||
|               m_Signal = uint16_t(m_Strength * 0xFFFF / 100); | ||||
|               m_SignalValid = m_StrengthValid; | ||||
|               m_SNR = uint16_t(m_Quality * 0xFFFF / 100); | ||||
|               m_SNRValid = m_QualityValid; | ||||
|               m_BER = 0; | ||||
|               m_BERValid = false; | ||||
|               m_UNC = 0; | ||||
|               m_UNCValid = false; | ||||
|               } | ||||
|            else if (m_SvdrpConnection.handle >= 0) { | ||||
|               cmd.handle = m_SvdrpConnection.handle; | ||||
|               m_SvdrpPlugin->Service("SvdrpCommand-v1.0", &cmd); | ||||
| @@ -716,6 +737,9 @@ void cFemonOsd::Show(void) | ||||
|            return; | ||||
|            } | ||||
|         } | ||||
|      else if (strstr(*cDevice::ActualDevice()->DeviceType(), SATIP_DEVICE)) { | ||||
|         // nop | ||||
|         } | ||||
|      else if (femonConfig.usesvdrp) { | ||||
|         if (!SvdrpConnect() || !SvdrpTune()) | ||||
|            return; | ||||
| @@ -790,6 +814,9 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber, bool li | ||||
|            return; | ||||
|            } | ||||
|         } | ||||
|      else if (strstr(*cDevice::ActualDevice()->DeviceType(), SATIP_DEVICE)) { | ||||
|         // nop | ||||
|         } | ||||
|      else if (femonConfig.usesvdrp) { | ||||
|         if (!SvdrpConnect() || !SvdrpTune()) | ||||
|            return; | ||||
| @@ -836,26 +863,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; | ||||
|   | ||||
| @@ -9,6 +9,7 @@ | ||||
| #define __STDC_FORMAT_MACROS | ||||
| #endif | ||||
|  | ||||
| #include <ctype.h> | ||||
| #include <stdint.h> | ||||
| #include <stdlib.h> | ||||
| #include <unistd.h> | ||||
| @@ -377,6 +378,11 @@ cString getRollOff(int value) | ||||
|   return cString::sprintf("%s", getUserString(value, RollOffValues)); | ||||
| } | ||||
|  | ||||
| cString getPilot(int value) | ||||
| { | ||||
|   return cString::sprintf("%s", getUserString(value, PilotValues)); | ||||
| } | ||||
|  | ||||
| cString getResolution(int width, int height, int scan) | ||||
| { | ||||
|   if ((width > 0) && (height > 0)) { | ||||
|   | ||||
| @@ -26,6 +26,8 @@ | ||||
|  | ||||
| #define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d" | ||||
|  | ||||
| #define SATIP_DEVICE "SAT>IP" | ||||
|  | ||||
| cDvbDevice *getDvbDevice(cDevice* device); | ||||
|  | ||||
| cString getFrontendInfo(cDvbDevice *device); | ||||
| @@ -57,6 +59,7 @@ cString getModulation(int value); | ||||
| cString getTerrestrialSystem(int value); | ||||
| cString getSatelliteSystem(int value); | ||||
| cString getRollOff(int value); | ||||
| cString getPilot(int value); | ||||
| cString getResolution(int width, int height, int scan); | ||||
| cString getAspectRatio(int value); | ||||
| cString getVideoFormat(int value); | ||||
|   | ||||
| @@ -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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+0200\n" | ||||
| "Last-Translator: Bernard Jaulin <bernard.jaulin@gmail.com>\n" | ||||
| "Language-Team: French <vdr@linuxtv.org>\n" | ||||
| "Language: fr\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. | ||||
| # 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.1.0\n" | ||||
| "Report-Msgid-Bugs-To: <see README>\n" | ||||
| "POT-Creation-Date: 2013-04-01 04:01+0200\n" | ||||
| "PO-Revision-Date: 2010-10-10 10:10+0200\n" | ||||
| "POT-Creation-Date: 2014-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+0200\n" | ||||
| "Last-Translator: F<>ley Istv<74>n <ifuley at tigercomp dot ro>\n" | ||||
| "Language-Team: Hungarian <ifuley at tigercomp dot ro>\n" | ||||
| "Language: hu\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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+0200\n" | ||||
| "Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n" | ||||
| "Language-Team: Slovak <vdr@linuxtv.org>\n" | ||||
| "Language: sk\n" | ||||
| @@ -387,4 +387,3 @@ msgstr "Mbit/s" | ||||
|  | ||||
| msgid "kbit/s" | ||||
| msgstr "kbit/s" | ||||
|  | ||||
|   | ||||
							
								
								
									
										28
									
								
								po/uk_UA.po
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								po/uk_UA.po
									
									
									
									
									
								
							| @@ -4,18 +4,17 @@ | ||||
| # Yarema aka Knedlyk <yupadmin@gmail.com>, 2010. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: vdr-femon 2.0.0\n" | ||||
| "Project-Id-Version: vdr-femon 2.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+0200\n" | ||||
| "Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n" | ||||
| "Language-Team: Ukrainian <translation@linux.org.ua>\n" | ||||
| "Language: uk\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" | ||||
| "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\n" | ||||
| "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\n" | ||||
|  | ||||
| msgid "DVB Signal Information Monitor (OSD)" | ||||
| msgstr "Монітор інформації про DVB сигнал" | ||||
| @@ -113,12 +112,8 @@ msgstr "Визначення границі зеленої поділки, як | ||||
| msgid "OSD update interval [0.1s]" | ||||
| msgstr "Інтервал оновлення повідомлень [0.1с]" | ||||
|  | ||||
| msgid "" | ||||
| "Define an interval for OSD updates. The smaller interval generates higher " | ||||
| "CPU load." | ||||
| msgstr "" | ||||
| "Визначення інтервалу оновлення повідомлень. Малий інтервал спричинює більше " | ||||
| "завантаження процесора." | ||||
| msgid "Define an interval for OSD updates. The smaller interval generates higher CPU load." | ||||
| msgstr "Визначення інтервалу оновлення повідомлень. Малий інтервал спричинює більше завантаження процесора." | ||||
|  | ||||
| msgid "Analyze stream" | ||||
| msgstr "Аналіз потоку" | ||||
| @@ -129,19 +124,14 @@ msgstr "Визначення, чи проводити аналіз DVB пото | ||||
| msgid "Calculation interval [0.1s]" | ||||
| msgstr "Інтервал обчислення [0.1с]" | ||||
|  | ||||
| msgid "" | ||||
| "Define an interval for calculation. The bigger interval generates more " | ||||
| "stable values." | ||||
| msgstr "" | ||||
| "Визначення інтервалу обчислення. Більший інтервал дає стабільніші значення." | ||||
| msgid "Define an interval for calculation. The bigger interval generates more stable values." | ||||
| msgstr "Визначення інтервалу обчислення. Більший інтервал дає стабільніші значення." | ||||
|  | ||||
| msgid "Use SVDRP service" | ||||
| msgstr "Використати SVDRP сервіс" | ||||
|  | ||||
| msgid "Define whether the SVDRP service is used in client/server setups." | ||||
| msgstr "" | ||||
| "Визначення чи буде використовуватися SVDRP сервіс в налаштуваннях клієнта/" | ||||
| "сервера" | ||||
| msgstr "Визначення чи буде використовуватися SVDRP сервіс в налаштуваннях клієнта/сервера" | ||||
|  | ||||
| msgid "SVDRP service port" | ||||
| msgstr "Порт SVDRP сервісу" | ||||
|   | ||||
| @@ -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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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.1.0\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-03-16 03:16+0200\n" | ||||
| "PO-Revision-Date: 2014-03-16 03:16+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