mirror of
				https://github.com/rofafor/vdr-plugin-femon.git
				synced 2023-10-10 11:36:53 +00:00 
			
		
		
		
	Compare commits
	
		
			41 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | c5267f5390 | ||
|  | 30d7eea514 | ||
|  | 09d17772d2 | ||
|  | ee43f5936f | ||
|  | 10b8463283 | ||
|  | 046c94d39c | ||
|  | c3506e2279 | ||
|  | d0b6944292 | ||
|  | 932f727e91 | ||
|  | e8fa85929a | ||
|  | 70cda8a640 | ||
|  | 655b5a1865 | ||
|  | 2f6b971c92 | ||
|  | 379de93bee | ||
|  | 5b5f704ea8 | ||
|  | 2d849b4fb8 | ||
|  | 0e6457ab42 | ||
|  | 0f8cc6c9ce | ||
|  | f1d9b112a4 | ||
|  | 4431cf57d9 | ||
|  | 18840de217 | ||
|  | 315a3365ba | ||
|  | 8e1e025b0f | ||
|  | 543accdd06 | ||
|  | 66eca7f8b5 | ||
|  | 905b7c0870 | ||
|  | 597425a271 | ||
|  | 86210928b8 | ||
|  | c98fe8ca87 | ||
|  | 5598f7cc43 | ||
|  | 62f1f5f776 | ||
|  | 8ba74bf5c4 | ||
|  | 38fbb2d47d | ||
|  | 09cf40f215 | ||
|  | d809e98052 | ||
|  | 5e16064c33 | ||
|  | cf8920ddd6 | ||
|  | 1e3b10faa7 | ||
|  | b7a41c8d78 | ||
|  | 635f99fda6 | ||
|  | 0f45bd7f51 | 
							
								
								
									
										43
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -421,3 +421,46 @@ VDR Plugin 'femon' Revision History | |||||||
|   and quality used to provide information for the OSD. |   and quality used to provide information for the OSD. | ||||||
| - Added cppcheck target into Makefile. | - Added cppcheck target into Makefile. | ||||||
| - Refactored bitstream code. | - Refactored bitstream code. | ||||||
|  |  | ||||||
|  | 2012-01-15: Version 1.7.12 | ||||||
|  |  | ||||||
|  | - Updated for vdr-1.7.23. | ||||||
|  | - Updated SVDRP interface. | ||||||
|  | - Added Hungarian translation (Thanks to Fuley Istvan). | ||||||
|  |  | ||||||
|  | 2012-02-05: Version 1.7.13 | ||||||
|  |  | ||||||
|  | - Added initial support for PVRINPUT devices (Thanks to Winfried Köhler). | ||||||
|  | - Added initial support for IPTV devices. | ||||||
|  |  | ||||||
|  | 2012-03-10: Version 1.7.14 | ||||||
|  |  | ||||||
|  | - Updated for vdr-1.7.26. | ||||||
|  |  | ||||||
|  | 2012-03-12: Version 1.7.15 | ||||||
|  |  | ||||||
|  | - Cleaned up compilation warnings. | ||||||
|  | - Fixed channel switching. | ||||||
|  |  | ||||||
|  | 2012-03-25: Version 1.7.16 | ||||||
|  |  | ||||||
|  | - Updated for vdr-1.7.27. | ||||||
|  | - Cleaned up compilation warnings again. | ||||||
|  |  | ||||||
|  | 2012-04-02: Version 1.7.17 | ||||||
|  |  | ||||||
|  | - Added the dynamite compatibility patch (Thanks to Lars Hanisch). | ||||||
|  | - Silenced error log messages when accessing pseudo devices. | ||||||
|  | - Added a new theme: PearlHD (Thanks to Taipan @ VDRPortal). | ||||||
|  | - Added the transponder info window support for IPTV devices. | ||||||
|  |  | ||||||
|  | 2013-02-10: Version 1.7.18 | ||||||
|  |  | ||||||
|  | - Updated for vdr-1.7.37. | ||||||
|  | - Modified how the receiver is detached. | ||||||
|  | - Added Ukrainian translation (Thanks to Yarema aka Knedlyk). | ||||||
|  |  | ||||||
|  | 2013-03-10: Version 1.7.19 | ||||||
|  |  | ||||||
|  | - Updated for vdr-1.7.40. | ||||||
|  | - Updated French translation (Thanks to Bernard Jaulin). | ||||||
|   | |||||||
							
								
								
									
										95
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										95
									
								
								Makefile
									
									
									
									
									
								
							| @@ -2,121 +2,134 @@ | |||||||
| # Makefile for Frontend Status Monitor plugin | # Makefile for Frontend Status Monitor plugin | ||||||
| # | # | ||||||
|  |  | ||||||
| # Debugging on/off  | # Debugging on/off | ||||||
|  |  | ||||||
| #FEMON_DEBUG = 1 | #FEMON_DEBUG = 1 | ||||||
|  |  | ||||||
| # Strip debug symbols?  Set eg. to /bin/true if not | # Strip debug symbols?  Set eg. to /bin/true if not | ||||||
|  |  | ||||||
| STRIP = strip | STRIP = strip | ||||||
|  |  | ||||||
| # The official name of this plugin. | # The official name of this plugin. | ||||||
| # This name will be used in the '-P...' option of VDR to load the plugin. | # This name will be used in the '-P...' option of VDR to load the plugin. | ||||||
| # By default the main source file also carries this name. | # By default the main source file also carries this name. | ||||||
| # IMPORTANT: the presence of this macro is important for the Make.config |  | ||||||
| # file. So it must be defined, even if it is not used here! |  | ||||||
| # |  | ||||||
| PLUGIN = femon | PLUGIN = femon | ||||||
|  |  | ||||||
| ### The version number of this plugin (taken from the main source file): | ### The version number of this plugin (taken from the main source file): | ||||||
|  |  | ||||||
| VERSION = $(shell grep 'static const char VERSION\[\] *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g') | VERSION = $(shell grep 'static const char VERSION\[\] *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g') | ||||||
|  | GITTAG  = $(shell git describe --always 2>/dev/null) | ||||||
| ### The C++ compiler and options: |  | ||||||
|  |  | ||||||
| CXX      ?= g++ |  | ||||||
| CXXFLAGS ?= -fPIC -g -O3 -Wall -Wextra -Wswitch-default -Wfloat-equal -Wundef -Wpointer-arith -Wconversion -Wcast-align -Wredundant-decls -Wno-unused-parameter -Woverloaded-virtual -Wno-parentheses |  | ||||||
| LDFLAGS  ?= -Wl,--as-needed |  | ||||||
|  |  | ||||||
| ### The directory environment: | ### The directory environment: | ||||||
|  |  | ||||||
| VDRDIR = ../../.. | # Use package data if installed...otherwise assume we're under the VDR source directory: | ||||||
| LIBDIR = ../../lib | PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc)) | ||||||
| TMPDIR = /tmp | LIBDIR = $(call PKGCFG,libdir) | ||||||
|  | LOCDIR = $(call PKGCFG,locdir) | ||||||
|  | PLGCFG = $(call PKGCFG,plgcfg) | ||||||
|  | # | ||||||
|  | TMPDIR ?= /tmp | ||||||
|  |  | ||||||
| ### Make sure that necessary options are included: | ### The compiler options: | ||||||
|  |  | ||||||
| -include $(VDRDIR)/Make.global | export CFLAGS   = $(call PKGCFG,cflags) | ||||||
|  | export CXXFLAGS = $(call PKGCFG,cxxflags) | ||||||
|  |  | ||||||
|  | ### The version number of VDR's plugin API: | ||||||
|  |  | ||||||
|  | APIVERSION = $(call PKGCFG,apiversion) | ||||||
|  |  | ||||||
| ### Allow user defined options to overwrite defaults: | ### Allow user defined options to overwrite defaults: | ||||||
|  |  | ||||||
| -include $(VDRDIR)/Make.config | -include $(PLGCFG) | ||||||
|  |  | ||||||
| ### The version number of VDR's plugin API (taken from VDR's "config.h"): |  | ||||||
|  |  | ||||||
| APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h) |  | ||||||
|  |  | ||||||
| ### The name of the distribution archive: | ### The name of the distribution archive: | ||||||
|  |  | ||||||
| ARCHIVE = $(PLUGIN)-$(VERSION) | ARCHIVE = $(PLUGIN)-$(VERSION) | ||||||
| PACKAGE = vdr-$(ARCHIVE) | PACKAGE = vdr-$(ARCHIVE) | ||||||
|  |  | ||||||
|  | ### The name of the shared object file: | ||||||
|  |  | ||||||
|  | SOFILE = libvdr-$(PLUGIN).so | ||||||
|  |  | ||||||
| ### Includes and Defines (add further entries here): | ### Includes and Defines (add further entries here): | ||||||
|  |  | ||||||
| INCLUDES += -I$(VDRDIR)/include | INCLUDES += | ||||||
|  |  | ||||||
| DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' | DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' | ||||||
|  |  | ||||||
| ifdef FEMON_DEBUG | ifdef FEMON_DEBUG | ||||||
| DEFINES += -DDEBUG | DEFINES += -DDEBUG | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifneq ($(strip $(GITTAG)),) | ||||||
|  | DEFINES += -DGITVERSION='"-GIT-$(GITTAG)"' | ||||||
|  | endif | ||||||
|  |  | ||||||
| .PHONY: all all-redirect | .PHONY: all all-redirect | ||||||
| all-redirect: all | all-redirect: all | ||||||
|  |  | ||||||
| ### The object files (add further files here): | ### The object files (add further files here): | ||||||
|  |  | ||||||
| OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femontools.o femonmpeg.o femonac3.o femonaac.o femonlatm.o femonh264.o femonsymbol.o | OBJS = $(PLUGIN).o femonosd.o femonreceiver.o femoncfg.o femontools.o femonmpeg.o femonac3.o femonaac.o femonlatm.o femonh264.o femonsymbol.o | ||||||
|  |  | ||||||
| ### The main target: | ### The main target: | ||||||
|  |  | ||||||
| all: libvdr-$(PLUGIN).so i18n | all: $(SOFILE) i18n | ||||||
|  |  | ||||||
| ### Implicit rules: | ### Implicit rules: | ||||||
|  |  | ||||||
| %.o: %.c Makefile | %.o: %.c | ||||||
| 	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $< | 	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $< | ||||||
|  |  | ||||||
| ### Dependencies: | ### Dependencies: | ||||||
|  |  | ||||||
| MAKEDEP = $(CXX) -MM -MG | MAKEDEP = $(CXX) -MM -MG | ||||||
| DEPFILE = .dependencies | DEPFILE = .dependencies | ||||||
| $(DEPFILE): Makefile | $(DEPFILE): Makefile | ||||||
| 	@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ | 	@$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ | ||||||
|  |  | ||||||
| -include $(DEPFILE) | -include $(DEPFILE) | ||||||
|  |  | ||||||
| ### Internationalization (I18N): | ### Internationalization (I18N): | ||||||
|  |  | ||||||
| PODIR     = po | PODIR     = po | ||||||
| LOCALEDIR = $(VDRDIR)/locale |  | ||||||
| I18Npo    = $(wildcard $(PODIR)/*.po) | I18Npo    = $(wildcard $(PODIR)/*.po) | ||||||
| I18Nmsgs  = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) | I18Nmo    = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) | ||||||
|  | I18Nmsgs  = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) | ||||||
| I18Npot   = $(PODIR)/$(PLUGIN).pot | I18Npot   = $(PODIR)/$(PLUGIN).pot | ||||||
|  |  | ||||||
| %.mo: %.po | %.mo: %.po | ||||||
| 	msgfmt -c -o $@ $< | 	msgfmt -c -o $@ $< | ||||||
|  |  | ||||||
| $(I18Npot): $(wildcard *.c) | $(I18Npot): $(wildcard *.c) | ||||||
| 	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name='vdr-$(PLUGIN)' --package-version='$(VERSION)' --msgid-bugs-address='<see README>' -o $@ `ls $^` | 	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^` | ||||||
|  |  | ||||||
| %.po: $(I18Npot) | %.po: $(I18Npot) | ||||||
| 	msgmerge -U --no-wrap --no-location --backup=none -q $@ $< | 	msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $< | ||||||
| 	@touch $@ | 	@touch $@ | ||||||
|  |  | ||||||
| $(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo | $(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo | ||||||
| 	@mkdir -p $(dir $@) | 	install -D -m644 $< $@ | ||||||
| 	cp $< $@ |  | ||||||
|  |  | ||||||
| .PHONY: i18n | .PHONY: i18n | ||||||
| i18n: $(I18Nmsgs) $(I18Npot) | i18n: $(I18Nmo) $(I18Npot) | ||||||
|  |  | ||||||
|  | install-i18n: $(I18Nmsgs) | ||||||
|  |  | ||||||
| ### Targets: | ### Targets: | ||||||
|  |  | ||||||
| libvdr-$(PLUGIN).so: $(OBJS) | $(SOFILE): $(OBJS) | ||||||
| 	$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@ | 	$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@ | ||||||
| ifndef FEMON_DEBUG | ifndef FEMON_DEBUG | ||||||
| 	@$(STRIP) $@ | 	@$(STRIP) $@ | ||||||
| endif | endif | ||||||
| 	@cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION) |  | ||||||
|  | install-lib: $(SOFILE) | ||||||
|  | 	install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION) | ||||||
|  |  | ||||||
|  | install: install-lib install-i18n | ||||||
|  |  | ||||||
| dist: $(I18Npo) clean | dist: $(I18Npo) clean | ||||||
| 	@-rm -rf $(TMPDIR)/$(ARCHIVE) | 	@-rm -rf $(TMPDIR)/$(ARCHIVE) | ||||||
| @@ -127,7 +140,9 @@ dist: $(I18Npo) clean | |||||||
| 	@echo Distribution package created as $(PACKAGE).tgz | 	@echo Distribution package created as $(PACKAGE).tgz | ||||||
|  |  | ||||||
| clean: | clean: | ||||||
| 	@-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ $(PODIR)/*.mo $(PODIR)/*.pot | 	@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot | ||||||
|  | 	@-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ | ||||||
|  |  | ||||||
| cppcheck: $(OBJS) | .PHONY: cppcheck | ||||||
| 	@cppcheck --enable=information,style,unusedFunction -v -f $(OBJS:%.o=%.c) | cppcheck: | ||||||
|  | 	@cppcheck --language=c++ --enable=all -v -f $(OBJS:%.o=%.c) | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								README
									
									
									
									
									
								
							| @@ -97,9 +97,6 @@ the local device number. | |||||||
|  |  | ||||||
| Notes: | Notes: | ||||||
|  |  | ||||||
| - The plugin supports only those DVB cards with _one_ frontend, because I |  | ||||||
|   haven't yet figured howto do it without patching the VDR core. |  | ||||||
|  |  | ||||||
| - Disable the stream analyze to speed up heavy zapping sessions. | - Disable the stream analyze to speed up heavy zapping sessions. | ||||||
|  |  | ||||||
| - The signal strength and signal-to-noise ratio values are comparable only | - The signal strength and signal-to-noise ratio values are comparable only | ||||||
|   | |||||||
							
								
								
									
										97
									
								
								femon.c
									
									
									
									
									
								
							
							
						
						
									
										97
									
								
								femon.c
									
									
									
									
									
								
							| @@ -14,11 +14,15 @@ | |||||||
| #include "femonservice.h" | #include "femonservice.h" | ||||||
| #include "femontools.h" | #include "femontools.h" | ||||||
|  |  | ||||||
| #if defined(APIVERSNUM) && APIVERSNUM < 10722 | #if defined(APIVERSNUM) && APIVERSNUM < 10740 | ||||||
| #error "VDR-1.7.22 API version or greater is required!" | #error "VDR-1.7.40 API version or greater is required!" | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| static const char VERSION[]       = "1.7.11"; | #ifndef GITVERSION | ||||||
|  | #define GITVERSION "" | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | static const char VERSION[]       = "1.7.19" GITVERSION; | ||||||
| static const char DESCRIPTION[]   = trNOOP("DVB Signal Information Monitor (OSD)"); | static const char DESCRIPTION[]   = trNOOP("DVB Signal Information Monitor (OSD)"); | ||||||
| static const char MAINMENUENTRY[] = trNOOP("Signal Information"); | static const char MAINMENUENTRY[] = trNOOP("Signal Information"); | ||||||
|  |  | ||||||
| @@ -132,16 +136,16 @@ bool cPluginFemon::Service(const char *Id, void *Data) | |||||||
| { | { | ||||||
|   if (strcmp(Id,"FemonService-v1.0") == 0) { |   if (strcmp(Id,"FemonService-v1.0") == 0) { | ||||||
|      if (Data) { |      if (Data) { | ||||||
|         FemonService_v1_0 *data = (FemonService_v1_0*)Data; |         FemonService_v1_0 *data = reinterpret_cast<FemonService_v1_0*>(Data); | ||||||
|         if (!cDevice::ActualDevice()) |         if (!cDevice::ActualDevice()) | ||||||
|            return false; |            return false; | ||||||
|         int ndx = cDevice::ActualDevice()->CardIndex(); |         cDvbDevice *dev = getDvbDevice(cDevice::ActualDevice()); | ||||||
|         data->fe_name = getFrontendName(ndx); |         data->fe_name = getFrontendName(dev); | ||||||
|         data->fe_status = getFrontendStatus(ndx); |         data->fe_status = getFrontendStatus(dev); | ||||||
|         data->fe_snr = getSNR(ndx); |         data->fe_snr = getSNR(dev); | ||||||
|         data->fe_signal = getSignal(ndx); |         data->fe_signal = getSignal(dev); | ||||||
|         data->fe_ber = getBER(ndx); |         data->fe_ber = getBER(dev); | ||||||
|         data->fe_unc = getUNC(ndx); |         data->fe_unc = getUNC(dev); | ||||||
|         data->video_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetVideoBitrate() : 0.0; |         data->video_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetVideoBitrate() : 0.0; | ||||||
|         data->audio_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetAudioBitrate() : 0.0; |         data->audio_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetAudioBitrate() : 0.0; | ||||||
|         data->dolby_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetDolbyBitrate() : 0.0; |         data->dolby_bitrate = cFemonOsd::Instance() ? cFemonOsd::Instance()->GetDolbyBitrate() : 0.0; | ||||||
| @@ -163,30 +167,30 @@ const char **cPluginFemon::SVDRPHelpPages(void) | |||||||
|     "    Switch to next possible device.", |     "    Switch to next possible device.", | ||||||
|     "PREV\n" |     "PREV\n" | ||||||
|     "    Switch to previous possible device.", |     "    Switch to previous possible device.", | ||||||
|     "INFO\n" |     "INFO <card index>\n" | ||||||
|     "    Print the current frontend information.", |     "    Print the frontend information.", | ||||||
|     "NAME\n" |     "NAME <card index>\n" | ||||||
|     "    Print the current frontend name.", |     "    Print the frontend name.", | ||||||
|     "STAT\n" |     "STAT <card index>\n" | ||||||
|     "    Print the current frontend status.", |     "    Print the frontend status.", | ||||||
|     "STRG\n" |     "STRG <card index>\n" | ||||||
|     "    Print the current signal strength.", |     "    Print the signal strength.", | ||||||
|     "QUAL\n" |     "QUAL <card index>\n" | ||||||
|     "    Print the current signal quality.", |     "    Print the signal quality.", | ||||||
|     "SGNL\n" |     "SGNL <card index>\n" | ||||||
|     "    Print the current signal strength from driver.", |     "    Print the signal strength from driver.", | ||||||
|     "SNRA\n" |     "SNRA <card index>\n" | ||||||
|     "    Print the current signal-to-noise ratio from driver.", |     "    Print the signal-to-noise ratio from driver.", | ||||||
|     "BERA\n" |     "BERA <card index>\n" | ||||||
|     "    Print the current bit error rate.", |     "    Print the bit error rate.", | ||||||
|     "UNCB\n" |     "UNCB <card index>\n" | ||||||
|     "    Print the current uncorrected blocks rate.", |     "    Print the uncorrected blocks rate.", | ||||||
|     "VIBR\n" |     "VIBR\n" | ||||||
|     "    Print the actual device and current video bitrate [Mbit/s].", |     "    Print the current video bitrate [Mbit/s].", | ||||||
|     "AUBR\n" |     "AUBR\n" | ||||||
|     "    Print the actual device and current audio bitrate [kbit/s].", |     "    Print the current audio bitrate [kbit/s].", | ||||||
|     "DDBR\n" |     "DDBR\n" | ||||||
|     "    Print the actual device and current dolby bitrate [kbit/s].", |     "    Print the current dolby bitrate [kbit/s].", | ||||||
|     NULL |     NULL | ||||||
|     }; |     }; | ||||||
|   return HelpPages; |   return HelpPages; | ||||||
| @@ -194,6 +198,12 @@ const char **cPluginFemon::SVDRPHelpPages(void) | |||||||
|  |  | ||||||
| cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) | cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) | ||||||
| { | { | ||||||
|  |   cDvbDevice *dev = getDvbDevice(cDevice::ActualDevice()); | ||||||
|  |   if (*Option && isnumber(Option)) { | ||||||
|  |      cDvbDevice *dev2 = dynamic_cast<cDvbDevice*>(cDevice::GetDevice(int(strtol(Option, NULL, 10)))); | ||||||
|  |      if (dev2) | ||||||
|  |         dev = dev2; | ||||||
|  |      } | ||||||
|   if (strcasecmp(Command, "OPEN") == 0) { |   if (strcasecmp(Command, "OPEN") == 0) { | ||||||
|      if (cReplayControl::NowReplaying()) { |      if (cReplayControl::NowReplaying()) { | ||||||
|         ReplyCode = 550; // Requested action not taken |         ReplyCode = 550; // Requested action not taken | ||||||
| @@ -221,33 +231,33 @@ cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int | |||||||
|         return cString("Cannot switch device"); |         return cString("Cannot switch device"); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "INFO") == 0) { |   else if (strcasecmp(Command, "INFO") == 0) { | ||||||
|      return getFrontendInfo(cDevice::ActualDevice()->CardIndex()); |      return getFrontendInfo(dev); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "NAME") == 0) { |   else if (strcasecmp(Command, "NAME") == 0) { | ||||||
|      return getFrontendName(cDevice::ActualDevice()->CardIndex()); |      return getFrontendName(dev); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "STAT") == 0) { |   else if (strcasecmp(Command, "STAT") == 0) { | ||||||
|      return getFrontendStatus(cDevice::ActualDevice()->CardIndex()); |      return getFrontendStatus(dev); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "STRG") == 0) { |   else if (strcasecmp(Command, "STRG") == 0) { | ||||||
|      return cString::sprintf("%d on device #%d", cDevice::ActualDevice()->SignalStrength(), cDevice::ActualDevice()->CardIndex()); |      return cString::sprintf("%d on device #%d", dev->SignalStrength(), dev->CardIndex()); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "QUAL") == 0) { |   else if (strcasecmp(Command, "QUAL") == 0) { | ||||||
|      return cString::sprintf("%d on device #%d", cDevice::ActualDevice()->SignalQuality(), cDevice::ActualDevice()->CardIndex()); |      return cString::sprintf("%d on device #%d", dev->SignalQuality(), dev->CardIndex()); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "SGNL") == 0) { |   else if (strcasecmp(Command, "SGNL") == 0) { | ||||||
|      int value = getSignal(cDevice::ActualDevice()->CardIndex()); |      int value = getSignal(dev); | ||||||
|      return cString::sprintf("%04X (%02d%%) on device #%d", value, value / 655, cDevice::ActualDevice()->CardIndex()); |      return cString::sprintf("%04X (%02d%%) on device #%d", value, value / 655, dev->CardIndex()); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "SNRA") == 0) { |   else if (strcasecmp(Command, "SNRA") == 0) { | ||||||
|      int value = getSNR(cDevice::ActualDevice()->CardIndex()); |      int value = getSNR(dev); | ||||||
|      return cString::sprintf("%04X (%02d%%) on device #%d", value, value / 655, cDevice::ActualDevice()->CardIndex()); |      return cString::sprintf("%04X (%02d%%) on device #%d", value, value / 655, dev->CardIndex()); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "BERA") == 0) { |   else if (strcasecmp(Command, "BERA") == 0) { | ||||||
|      return cString::sprintf("%08X on device #%d", getBER(cDevice::ActualDevice()->CardIndex()), cDevice::ActualDevice()->CardIndex()); |      return cString::sprintf("%08X on device #%d", getBER(dev), dev->CardIndex()); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "UNCB") == 0) { |   else if (strcasecmp(Command, "UNCB") == 0) { | ||||||
|      return cString::sprintf("%08X on device #%d", getUNC(cDevice::ActualDevice()->CardIndex()), cDevice::ActualDevice()->CardIndex()); |      return cString::sprintf("%08X on device #%d", getUNC(dev), dev->CardIndex()); | ||||||
|      } |      } | ||||||
|   else if (strcasecmp(Command, "VIBR") == 0) { |   else if (strcasecmp(Command, "VIBR") == 0) { | ||||||
|      if (cFemonOsd::Instance()) |      if (cFemonOsd::Instance()) | ||||||
| @@ -305,6 +315,7 @@ cMenuFemonSetup::cMenuFemonSetup(void) | |||||||
|   themes[eFemonThemeEgalsTry]      = tr("EgalsTry"); |   themes[eFemonThemeEgalsTry]      = tr("EgalsTry"); | ||||||
|   themes[eFemonThemeDuotone]       = tr("Duotone"); |   themes[eFemonThemeDuotone]       = tr("Duotone"); | ||||||
|   themes[eFemonThemeSilverGreen]   = tr("SilverGreen"); |   themes[eFemonThemeSilverGreen]   = tr("SilverGreen"); | ||||||
|  |   themes[eFemonThemePearlHD]       = tr("PearlHD"); | ||||||
|  |  | ||||||
|   data = femonConfig; |   data = femonConfig; | ||||||
|   Setup(); |   Setup(); | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ | |||||||
|  |  | ||||||
| #define IS_HEAAC_AUDIO(buf) (((buf)[0] == 0xFF) && (((buf)[1] & 0xF6) == 0xF0)) | #define IS_HEAAC_AUDIO(buf) (((buf)[0] == 0xFF) && (((buf)[1] & 0xF6) == 0xF0)) | ||||||
|  |  | ||||||
| unsigned int cFemonAAC::s_Samplerates[16] = | int cFemonAAC::s_Samplerates[16] = | ||||||
| { | { | ||||||
|   96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, -1, -1, -1, -1 |   96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, -1, -1, -1, -1 | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ class cFemonAAC { | |||||||
| private: | private: | ||||||
|   cFemonAudioIf *m_AudioHandler; |   cFemonAudioIf *m_AudioHandler; | ||||||
|  |  | ||||||
|   static unsigned int s_Samplerates[16]; |   static int s_Samplerates[16]; | ||||||
|  |  | ||||||
| public: | public: | ||||||
|   cFemonAAC(cFemonAudioIf *audiohandler); |   cFemonAAC(cFemonAudioIf *audiohandler); | ||||||
|   | |||||||
| @@ -9,17 +9,17 @@ | |||||||
| #include "femontools.h" | #include "femontools.h" | ||||||
| #include "femonac3.h" | #include "femonac3.h" | ||||||
|  |  | ||||||
| unsigned int cFemonAC3::s_Bitrates[32] = | int cFemonAC3::s_Bitrates[32] = | ||||||
| { | { | ||||||
|   32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 576, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 |   32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 576, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| unsigned int cFemonAC3::s_Frequencies[4] = | int cFemonAC3::s_Frequencies[4] = | ||||||
| { | { | ||||||
|   480, 441, 320, 0 |   480, 441, 320, 0 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| unsigned int cFemonAC3::s_Frames[3][32] = | int cFemonAC3::s_Frames[3][32] = | ||||||
| { | { | ||||||
|   {64, 80,  96,  112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 640, 768,  896,  1024, 1152, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |   {64, 80,  96,  112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 640, 768,  896,  1024, 1152, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | ||||||
|   {69, 87,  104, 121, 139, 174, 208, 243, 278, 348, 417, 487, 557, 696, 835,  975,  1114, 1253, 1393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |   {69, 87,  104, 121, 139, 174, 208, 243, 278, 348, 417, 487, 557, 696, 835,  975,  1114, 1253, 1393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | ||||||
|   | |||||||
| @@ -14,9 +14,9 @@ class cFemonAC3 { | |||||||
| private: | private: | ||||||
|   cFemonAC3If *m_AudioHandler; |   cFemonAC3If *m_AudioHandler; | ||||||
|  |  | ||||||
|   static unsigned int s_Bitrates[32]; |   static int s_Bitrates[32]; | ||||||
|   static unsigned int s_Frequencies[4]; |   static int s_Frequencies[4]; | ||||||
|   static unsigned int s_Frames[3][32]; |   static int s_Frames[3][32]; | ||||||
|  |  | ||||||
| public: | public: | ||||||
|   cFemonAC3(cFemonAC3If *audiohandler); |   cFemonAC3(cFemonAC3If *audiohandler); | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								femoncfg.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								femoncfg.c
									
									
									
									
									
								
							| @@ -138,4 +138,16 @@ const cFemonTheme femonTheme[eFemonThemeMaxNumber] = | |||||||
|     0xFFCE7B00, // clrYellow |     0xFFCE7B00, // clrYellow | ||||||
|     0xFF336600, // clrGreen |     0xFF336600, // clrGreen | ||||||
|   }, |   }, | ||||||
|  |   { | ||||||
|  |     // eFemonThemePearlHD | ||||||
|  |     4,          // bpp | ||||||
|  |     0x90000000, // clrBackground | ||||||
|  |     0xCC000000, // clrTitleBackground | ||||||
|  |     0xFFBEBEBE, // clrTitleText | ||||||
|  |     0xFF4E78B1, // clrActiveText | ||||||
|  |     0xFFBEBEBE, // clrInactiveText | ||||||
|  |     0xAAFF0000, // clrRed | ||||||
|  |     0xAAF8F800, // clrYellow | ||||||
|  |     0x6000ff00, // clrGreen | ||||||
|  |   }, | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								femoncfg.h
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								femoncfg.h
									
									
									
									
									
								
							| @@ -59,20 +59,21 @@ enum eFemonThemes | |||||||
|   eFemonThemeEgalsTry, |   eFemonThemeEgalsTry, | ||||||
|   eFemonThemeDuotone, |   eFemonThemeDuotone, | ||||||
|   eFemonThemeSilverGreen, |   eFemonThemeSilverGreen, | ||||||
|  |   eFemonThemePearlHD, | ||||||
|   eFemonThemeMaxNumber |   eFemonThemeMaxNumber | ||||||
| }; | }; | ||||||
|  |  | ||||||
| struct cFemonTheme | struct cFemonTheme | ||||||
| { | { | ||||||
|   int bpp; |   int bpp; | ||||||
|   int clrBackground; |   unsigned int clrBackground; | ||||||
|   int clrTitleBackground; |   unsigned int clrTitleBackground; | ||||||
|   int clrTitleText; |   unsigned int clrTitleText; | ||||||
|   int clrActiveText; |   unsigned int clrActiveText; | ||||||
|   int clrInactiveText; |   unsigned int clrInactiveText; | ||||||
|   int clrRed; |   unsigned int clrRed; | ||||||
|   int clrYellow; |   unsigned int clrYellow; | ||||||
|   int clrGreen; |   unsigned int clrGreen; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| extern const cFemonTheme femonTheme[eFemonThemeMaxNumber]; | extern const cFemonTheme femonTheme[eFemonThemeMaxNumber]; | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								femonclient/vdr-femonclient-0.0.5.tgz
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								femonclient/vdr-femonclient-0.0.5.tgz
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -8,14 +8,14 @@ | |||||||
| #include "femontools.h" | #include "femontools.h" | ||||||
| #include "femonlatm.h" | #include "femonlatm.h" | ||||||
|  |  | ||||||
| unsigned int cFemonLATM::s_Bitrates[3][16] = | int cFemonLATM::s_Bitrates[3][16] = | ||||||
| { | { | ||||||
|   {0,  32,  48,  56,  64,  80,  96, 112, 128, 144, 160, 176, 192, 224, 256, -1}, // MPEG-2 Layer I |   {0,  32,  48,  56,  64,  80,  96, 112, 128, 144, 160, 176, 192, 224, 256, -1}, // MPEG-2 Layer I | ||||||
|   {0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, -1}, // MPEG-2 Layer II/III |   {0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, -1}, // MPEG-2 Layer II/III | ||||||
|   {0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, -1}  // MPEG-2 Layer II/III |   {0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, -1}  // MPEG-2 Layer II/III | ||||||
| }; | }; | ||||||
|  |  | ||||||
| unsigned int cFemonLATM::s_Samplerates[4] = | int cFemonLATM::s_Samplerates[4] = | ||||||
| { | { | ||||||
|   22050, 24000, 16000, -1 |   22050, 24000, 16000, -1 | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -14,8 +14,8 @@ class cFemonLATM { | |||||||
| private: | private: | ||||||
|   cFemonAudioIf *m_AudioHandler; |   cFemonAudioIf *m_AudioHandler; | ||||||
|  |  | ||||||
|   static unsigned int s_Bitrates[3][16]; |   static int s_Bitrates[3][16]; | ||||||
|   static unsigned int s_Samplerates[4]; |   static int s_Samplerates[4]; | ||||||
|  |  | ||||||
| public: | public: | ||||||
|   cFemonLATM(cFemonAudioIf *audiohandler); |   cFemonLATM(cFemonAudioIf *audiohandler); | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ | |||||||
|  |  | ||||||
| #define IS_EXTENSION_START(buf) (((buf)[0] == 0x00) && ((buf)[1] == 0x00) && ((buf)[2] == 0x01) && ((buf)[3] == 0xB5)) | #define IS_EXTENSION_START(buf) (((buf)[0] == 0x00) && ((buf)[1] == 0x00) && ((buf)[2] == 0x01) && ((buf)[3] == 0xB5)) | ||||||
|  |  | ||||||
| unsigned int cFemonMPEG::s_Bitrates[2][3][16] = | int cFemonMPEG::s_Bitrates[2][3][16] = | ||||||
| { | { | ||||||
|   { |   { | ||||||
|     {0,  32,  48,  56,  64,  80,  96, 112, 128, 144, 160, 176, 192, 224, 256, -1}, // MPEG-2 Layer I |     {0,  32,  48,  56,  64,  80,  96, 112, 128, 144, 160, 176, 192, 224, 256, -1}, // MPEG-2 Layer I | ||||||
| @@ -24,7 +24,7 @@ unsigned int cFemonMPEG::s_Bitrates[2][3][16] = | |||||||
|   } |   } | ||||||
| }; | }; | ||||||
|  |  | ||||||
| unsigned int cFemonMPEG::s_Samplerates[2][4] = | int cFemonMPEG::s_Samplerates[2][4] = | ||||||
| { | { | ||||||
|   {22050, 24000, 16000, -1}, // MPEG-2 |   {22050, 24000, 16000, -1}, // MPEG-2 | ||||||
|   {44100, 48000, 32000, -1}  // MPEG-1 |   {44100, 48000, 32000, -1}  // MPEG-1 | ||||||
|   | |||||||
| @@ -16,9 +16,9 @@ private: | |||||||
|   cFemonVideoIf *m_VideoHandler; |   cFemonVideoIf *m_VideoHandler; | ||||||
|   cFemonAudioIf *m_AudioHandler; |   cFemonAudioIf *m_AudioHandler; | ||||||
|  |  | ||||||
|   static unsigned int s_Bitrates[2][3][16]; |   static int s_Bitrates[2][3][16]; | ||||||
|   static unsigned int s_Samplerates[2][4]; |   static int s_Samplerates[2][4]; | ||||||
|   static eAudioCodec  s_Formats[2][4]; |   static eAudioCodec s_Formats[2][4]; | ||||||
|  |  | ||||||
| public: | public: | ||||||
|   cFemonMPEG(cFemonVideoIf *videohandler, cFemonAudioIf *audiohandler); |   cFemonMPEG(cFemonVideoIf *videohandler, cFemonAudioIf *audiohandler); | ||||||
|   | |||||||
							
								
								
									
										358
									
								
								femonosd.c
									
									
									
									
									
								
							
							
						
						
									
										358
									
								
								femonosd.c
									
									
									
									
									
								
							| @@ -11,6 +11,7 @@ | |||||||
|  |  | ||||||
| #include <ctype.h> | #include <ctype.h> | ||||||
| #include <math.h> | #include <math.h> | ||||||
|  | #include "iptvservice.h" | ||||||
| #include "femoncfg.h" | #include "femoncfg.h" | ||||||
| #include "femonreceiver.h" | #include "femonreceiver.h" | ||||||
| #include "femontools.h" | #include "femontools.h" | ||||||
| @@ -183,7 +184,9 @@ cFemonOsd::cFemonOsd() | |||||||
|   m_BERValid(false), |   m_BERValid(false), | ||||||
|   m_UNC(0), |   m_UNC(0), | ||||||
|   m_UNCValid(false), |   m_UNCValid(false), | ||||||
|  |   m_FrontendName(""), | ||||||
|   m_FrontendStatusValid(false), |   m_FrontendStatusValid(false), | ||||||
|  |   m_DeviceSource(DEVICESOURCE_DVBAPI), | ||||||
|   m_DisplayMode(femonConfig.displaymode), |   m_DisplayMode(femonConfig.displaymode), | ||||||
|   m_OsdWidth(cOsd::OsdWidth() * (100 - femonConfig.downscale) / 100), |   m_OsdWidth(cOsd::OsdWidth() * (100 - femonConfig.downscale) / 100), | ||||||
|   m_OsdHeight(cOsd::OsdHeight() * (100 - femonConfig.downscale) / 100), |   m_OsdHeight(cOsd::OsdHeight() * (100 - femonConfig.downscale) / 100), | ||||||
| @@ -199,7 +202,7 @@ cFemonOsd::cFemonOsd() | |||||||
|   memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); |   memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); | ||||||
|   m_SvdrpConnection.handle = -1; |   m_SvdrpConnection.handle = -1; | ||||||
|   femonSymbols.Refresh(); |   femonSymbols.Refresh(); | ||||||
|   m_Font = cFont::CreateFont(Setup.FontSml, min(max(Setup.FontSmlSize, MINFONTSIZE), MAXFONTSIZE)); |   m_Font = cFont::CreateFont(Setup.FontSml, constrain(Setup.FontSmlSize, MINFONTSIZE, MAXFONTSIZE)); | ||||||
|   if (!m_Font || !m_Font->Height()) { |   if (!m_Font || !m_Font->Height()) { | ||||||
|      m_Font = new cFemonDummyFont; |      m_Font = new cFemonDummyFont; | ||||||
|      error("cFemonOsd::cFemonOsd() cannot create required font."); |      error("cFemonOsd::cFemonOsd() cannot create required font."); | ||||||
| @@ -394,7 +397,6 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|   if (m_Osd && channel) { |   if (m_Osd && channel) { | ||||||
|      int offset = 0; |      int offset = 0; | ||||||
|      eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); |      eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); | ||||||
|      cDvbTransponderParameters dtp(channel->Parameters()); |  | ||||||
|  |  | ||||||
|      switch (m_DisplayMode) { |      switch (m_DisplayMode) { | ||||||
|        case eFemonModeTransponder: |        case eFemonModeTransponder: | ||||||
| @@ -418,8 +420,9 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|             OSDDRAWINFOLEFT( trVDR("CA"),   *getCAids(channel)); |             OSDDRAWINFOLEFT( trVDR("CA"),   *getCAids(channel)); | ||||||
|             offset += OSDROWHEIGHT; |             offset += OSDROWHEIGHT; | ||||||
|             switch (channel->Source() & cSource::st_Mask) { |             switch (channel->Source() & cSource::st_Mask) { | ||||||
|               case cSource::stSat: |               case cSource::stSat: { | ||||||
|                    OSDDRAWINFOLINE(*cString::sprintf("DVB-S%s #%d - %s", (m_FrontendInfo.caps & 0x10000000) ? "2" : "", (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); |                    cDvbTransponderParameters dtp(channel->Parameters()); | ||||||
|  |                    OSDDRAWINFOLINE(*cString::sprintf("%s #%d - %s", *getSatelliteSystem(dtp.System()), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), *m_FrontendName)); | ||||||
|                    offset += OSDROWHEIGHT; |                    offset += OSDROWHEIGHT; | ||||||
|                    OSDDRAWINFOLEFT( trVDR("Frequency"),    *getFrequencyMHz(channel->Frequency())); |                    OSDDRAWINFOLEFT( trVDR("Frequency"),    *getFrequencyMHz(channel->Frequency())); | ||||||
|                    OSDDRAWINFORIGHT(trVDR("Source"),       *cSource::ToString(channel->Source())); |                    OSDDRAWINFORIGHT(trVDR("Source"),       *cSource::ToString(channel->Source())); | ||||||
| @@ -430,12 +433,16 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|                    OSDDRAWINFOLEFT( trVDR("Inversion"),    *getInversion(dtp.Inversion())); |                    OSDDRAWINFOLEFT( trVDR("Inversion"),    *getInversion(dtp.Inversion())); | ||||||
|                    OSDDRAWINFORIGHT(trVDR("CoderateH"),    *getCoderate(dtp.CoderateH())); |                    OSDDRAWINFORIGHT(trVDR("CoderateH"),    *getCoderate(dtp.CoderateH())); | ||||||
|                    offset += OSDROWHEIGHT; |                    offset += OSDROWHEIGHT; | ||||||
|                    OSDDRAWINFOLEFT( trVDR("System"),       *getSystem(dtp.System())); |                    OSDDRAWINFOLEFT( trVDR("System"),       *getSatelliteSystem(dtp.System())); | ||||||
|                    OSDDRAWINFORIGHT(trVDR("RollOff"),      *getRollOff(dtp.RollOff())); |                    if (dtp.System()) { | ||||||
|  |                       OSDDRAWINFORIGHT(trVDR("RollOff"),   *getRollOff(dtp.RollOff())); | ||||||
|  |                       } | ||||||
|  |                    } | ||||||
|                    break; |                    break; | ||||||
|  |  | ||||||
|               case cSource::stCable: |               case cSource::stCable: { | ||||||
|                    OSDDRAWINFOLINE(*cString::sprintf("DVB-C #%d - %s", (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); |                    cDvbTransponderParameters dtp(channel->Parameters()); | ||||||
|  |                    OSDDRAWINFOLINE(*cString::sprintf("DVB-C #%d - %s", (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), *m_FrontendName)); | ||||||
|                    offset += OSDROWHEIGHT; |                    offset += OSDROWHEIGHT; | ||||||
|                    OSDDRAWINFOLEFT( trVDR("Frequency"),    *getFrequencyMHz(channel->Frequency())); |                    OSDDRAWINFOLEFT( trVDR("Frequency"),    *getFrequencyMHz(channel->Frequency())); | ||||||
|                    OSDDRAWINFORIGHT(trVDR("Source"),       *cSource::ToString(channel->Source())); |                    OSDDRAWINFORIGHT(trVDR("Source"),       *cSource::ToString(channel->Source())); | ||||||
| @@ -445,10 +452,12 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|                    offset += OSDROWHEIGHT; |                    offset += OSDROWHEIGHT; | ||||||
|                    OSDDRAWINFOLEFT( trVDR("Inversion"),    *getInversion(dtp.Inversion())); |                    OSDDRAWINFOLEFT( trVDR("Inversion"),    *getInversion(dtp.Inversion())); | ||||||
|                    OSDDRAWINFORIGHT(trVDR("CoderateH"),    *getCoderate(dtp.CoderateH())); |                    OSDDRAWINFORIGHT(trVDR("CoderateH"),    *getCoderate(dtp.CoderateH())); | ||||||
|  |                    } | ||||||
|                    break; |                    break; | ||||||
|  |  | ||||||
|               case cSource::stTerr: |               case cSource::stTerr: { | ||||||
|                    OSDDRAWINFOLINE(*cString::sprintf("DVB-T #%d - %s", (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); |                    cDvbTransponderParameters dtp(channel->Parameters()); | ||||||
|  |                    OSDDRAWINFOLINE(*cString::sprintf("%s #%d - %s", *getTerrestrialSystem(dtp.System()), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), *m_FrontendName)); | ||||||
|                    offset += OSDROWHEIGHT; |                    offset += OSDROWHEIGHT; | ||||||
|                    OSDDRAWINFOLEFT( trVDR("Frequency"),    *getFrequencyMHz(channel->Frequency())); |                    OSDDRAWINFOLEFT( trVDR("Frequency"),    *getFrequencyMHz(channel->Frequency())); | ||||||
|                    OSDDRAWINFORIGHT(trVDR("Transmission"), *getTransmission(dtp.Transmission())); |                    OSDDRAWINFORIGHT(trVDR("Transmission"), *getTransmission(dtp.Transmission())); | ||||||
| @@ -461,6 +470,30 @@ void cFemonOsd::DrawInfoWindow(void) | |||||||
|                    offset += OSDROWHEIGHT; |                    offset += OSDROWHEIGHT; | ||||||
|                    OSDDRAWINFOLEFT( trVDR("Hierarchy"),    *getHierarchy(dtp.Hierarchy())); |                    OSDDRAWINFOLEFT( trVDR("Hierarchy"),    *getHierarchy(dtp.Hierarchy())); | ||||||
|                    OSDDRAWINFORIGHT(trVDR("Guard"),        *getGuard(dtp.Guard())); |                    OSDDRAWINFORIGHT(trVDR("Guard"),        *getGuard(dtp.Guard())); | ||||||
|  |                    offset += OSDROWHEIGHT; | ||||||
|  |                    OSDDRAWINFOLEFT( trVDR("System"),       *getTerrestrialSystem(dtp.System())); | ||||||
|  |                    if (dtp.System()) { | ||||||
|  |                       OSDDRAWINFORIGHT(trVDR("StreamId"),  *cString::sprintf("%d", dtp.StreamId())); | ||||||
|  |                       } | ||||||
|  |                    } | ||||||
|  |                    break; | ||||||
|  |  | ||||||
|  |               case stIptv: { | ||||||
|  |                    OSDDRAWINFOLINE(*cString::sprintf("IPTV #%d - %s", (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), *m_FrontendName)); | ||||||
|  |                    offset += OSDROWHEIGHT; | ||||||
|  |                    if (m_SvdrpFrontend < 0) { | ||||||
|  |                       cPlugin *p; | ||||||
|  |                       IptvService_v1_0 data; | ||||||
|  |                       data.cardIndex = cDevice::ActualDevice()->CardIndex(); | ||||||
|  |                       p = cPluginManager::CallFirstService("IptvService-v1.0", &data); | ||||||
|  |                       if (p) { | ||||||
|  |                          OSDDRAWINFOLEFT(tr("Protocol"),   *data.protocol); | ||||||
|  |                          offset += OSDROWHEIGHT; | ||||||
|  |                          OSDDRAWINFOLEFT(tr("Bitrate"),    *data.bitrate); | ||||||
|  |                          offset += OSDROWHEIGHT; | ||||||
|  |                          } | ||||||
|  |                       } | ||||||
|  |                    } | ||||||
|                    break; |                    break; | ||||||
|  |  | ||||||
|               default: |               default: | ||||||
| @@ -544,76 +577,114 @@ void cFemonOsd::Action(void) | |||||||
|     m_SvdrpFrontend = -1; |     m_SvdrpFrontend = -1; | ||||||
|     m_SvdrpVideoBitrate = -1.0; |     m_SvdrpVideoBitrate = -1.0; | ||||||
|     m_SvdrpAudioBitrate = -1.0; |     m_SvdrpAudioBitrate = -1.0; | ||||||
|     if (m_Frontend != -1) { |     switch (m_DeviceSource) { | ||||||
|        m_Quality = cDevice::ActualDevice()->SignalQuality(); |       case DEVICESOURCE_PVRINPUT: | ||||||
|        m_QualityValid = (m_Quality >= 0); |            m_Quality = cDevice::ActualDevice()->SignalStrength(); | ||||||
|        m_Strength = cDevice::ActualDevice()->SignalStrength(); |            m_QualityValid = (m_Quality >= 0); | ||||||
|        m_StrengthValid = (m_Strength >= 0); |            m_Strength = cDevice::ActualDevice()->SignalStrength(); | ||||||
|        m_FrontendStatusValid = (ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus) >= 0); |            m_StrengthValid = (m_Strength >= 0); | ||||||
|        m_SignalValid = (ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &m_Signal) >= 0); |            m_FrontendName = cDevice::ActualDevice()->DeviceName(); | ||||||
|        m_SNRValid = (ioctl(m_Frontend, FE_READ_SNR, &m_SNR) >= 0); |            m_FrontendStatus = (fe_status_t)(m_StrengthValid ? (FE_HAS_LOCK | FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC) : 0); | ||||||
|        m_BERValid = (ioctl(m_Frontend, FE_READ_BER, &m_BER) >= 0); |            m_FrontendStatusValid = m_StrengthValid; | ||||||
|        m_UNCValid = (ioctl(m_Frontend, FE_READ_UNCORRECTED_BLOCKS, &m_UNC) >= 0); |            m_Signal = uint16_t(m_Strength * 0xFFFF / 100); | ||||||
|        DrawInfoWindow(); |            m_SignalValid = m_StrengthValid; | ||||||
|        DrawStatusWindow(); |            m_SNR = 0; | ||||||
|        } |            m_SNRValid = false; | ||||||
|     else if (m_SvdrpConnection.handle >= 0) { |            m_BER = 0; | ||||||
|        cmd.handle = m_SvdrpConnection.handle; |            m_BERValid = false; | ||||||
|        m_SvdrpPlugin->Service("SvdrpCommand-v1.0", &cmd); |            m_UNC = 0; | ||||||
|        if (cmd.responseCode == 900) { |            m_UNCValid = false; | ||||||
|           m_StrengthValid = false; |            break; | ||||||
|           m_QualityValid = false; |       case DEVICESOURCE_IPTV: | ||||||
|           m_FrontendStatusValid = false; |            m_Quality = cDevice::ActualDevice()->SignalQuality(); | ||||||
|           m_SignalValid = false; |            m_QualityValid = (m_Quality >= 0); | ||||||
|           m_SNRValid = false; |            m_Strength = cDevice::ActualDevice()->SignalStrength(); | ||||||
|           m_BERValid = false; |            m_StrengthValid = (m_Strength >= 0); | ||||||
|           m_UNCValid = false; |            m_FrontendName = cDevice::ActualDevice()->DeviceName(); | ||||||
|           for (cLine *line = cmd.reply.First(); line; line = cmd.reply.Next(line)) { |            m_FrontendStatus = (fe_status_t)(m_StrengthValid ? (FE_HAS_LOCK | FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC) : 0); | ||||||
|               const char *s = line->Text(); |            m_FrontendStatusValid = m_StrengthValid; | ||||||
| 	      if (!strncasecmp(s, "CARD:", 5)) |            m_Signal = uint16_t(m_Strength * 0xFFFF / 100); | ||||||
|                  m_SvdrpFrontend = (int)strtol(s + 5, NULL, 10); |            m_SignalValid = m_StrengthValid; | ||||||
|               else if (!strncasecmp(s, "STRG:", 5)) { |            m_SNR = uint16_t(m_Quality * 0xFFFF / 100); | ||||||
|                  m_Strength = (int)strtol(s + 5, NULL, 10); |            m_SNRValid = m_QualityValid; | ||||||
|                  m_StrengthValid = (m_Strength >= 0); |            m_BER = 0; | ||||||
|                  } |            m_BERValid = false; | ||||||
|               else if (!strncasecmp(s, "QUAL:", 5)) { |            m_UNC = 0; | ||||||
|                  m_Quality = (int)strtol(s + 5, NULL, 10); |            m_UNCValid = false; | ||||||
|                  m_QualityValid = (m_Quality >= 0); |            break; | ||||||
|                  } |       default: | ||||||
|               else if (!strncasecmp(s, "TYPE:", 5)) |       case DEVICESOURCE_DVBAPI: | ||||||
|                  m_FrontendInfo.type = (fe_type_t)strtol(s + 5, NULL, 10); |            if (m_Frontend != -1) { | ||||||
|               else if (!strncasecmp(s, "NAME:", 5)) { |               m_Quality = cDevice::ActualDevice()->SignalQuality(); | ||||||
|                  strn0cpy(m_FrontendInfo.name, s + 5, sizeof(m_FrontendInfo.name)); |               m_QualityValid = (m_Quality >= 0); | ||||||
|                  } |               m_Strength = cDevice::ActualDevice()->SignalStrength(); | ||||||
|               else if (!strncasecmp(s, "STAT:", 5)) { |               m_StrengthValid = (m_Strength >= 0); | ||||||
|                  m_FrontendStatus = (fe_status_t)strtol(s + 5, NULL, 16); |               m_FrontendName = cDevice::ActualDevice()->DeviceName(); | ||||||
|                  m_FrontendStatusValid = true; |               m_FrontendStatusValid = (ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus) >= 0); | ||||||
|                  } |               m_SignalValid = (ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &m_Signal) >= 0); | ||||||
|               else if (!strncasecmp(s, "SGNL:", 5)) { |               m_SNRValid = (ioctl(m_Frontend, FE_READ_SNR, &m_SNR) >= 0); | ||||||
|                  m_Signal = (uint16_t)strtol(s + 5, NULL, 16); |               m_BERValid = (ioctl(m_Frontend, FE_READ_BER, &m_BER) >= 0); | ||||||
|                  m_SignalValid = true; |               m_UNCValid = (ioctl(m_Frontend, FE_READ_UNCORRECTED_BLOCKS, &m_UNC) >= 0); | ||||||
|                  } |  | ||||||
|               else if (!strncasecmp(s, "SNRA:", 5)) { |  | ||||||
|                  m_SNR = (uint16_t)strtol(s + 5, NULL, 16); |  | ||||||
|                  m_SNRValid = true; |  | ||||||
|                  } |  | ||||||
|               else if (!strncasecmp(s, "BERA:", 5)) { |  | ||||||
|                  m_BER = (uint32_t)strtol(s + 5, NULL, 16); |  | ||||||
|                  m_BERValid = true; |  | ||||||
|                  } |  | ||||||
|               else if (!strncasecmp(s, "UNCB:", 5)) { |  | ||||||
|                  m_UNC = (uint32_t)strtol(s + 5, NULL, 16); |  | ||||||
|                  m_UNCValid = true; |  | ||||||
|                  } |  | ||||||
|               else if (!strncasecmp(s, "VIBR:", 5)) |  | ||||||
|                  m_SvdrpVideoBitrate = (double)strtol(s + 5, NULL, 10); |  | ||||||
|               else if (!strncasecmp(s, "AUBR:", 5)) |  | ||||||
|                  m_SvdrpAudioBitrate = (double)strtol(s + 5, NULL, 10); |  | ||||||
|               } |               } | ||||||
|           } |            else if (m_SvdrpConnection.handle >= 0) { | ||||||
|        DrawInfoWindow(); |               cmd.handle = m_SvdrpConnection.handle; | ||||||
|        DrawStatusWindow(); |               m_SvdrpPlugin->Service("SvdrpCommand-v1.0", &cmd); | ||||||
|        } |               if (cmd.responseCode == 900) { | ||||||
|  |                  m_StrengthValid = false; | ||||||
|  |                  m_QualityValid = false; | ||||||
|  |                  m_FrontendStatusValid = false; | ||||||
|  |                  m_SignalValid = false; | ||||||
|  |                  m_SNRValid = false; | ||||||
|  |                  m_BERValid = false; | ||||||
|  |                  m_UNCValid = false; | ||||||
|  |                  for (cLine *line = cmd.reply.First(); line; line = cmd.reply.Next(line)) { | ||||||
|  |                      const char *s = line->Text(); | ||||||
|  | 	             if (!strncasecmp(s, "CARD:", 5)) | ||||||
|  |                         m_SvdrpFrontend = (int)strtol(s + 5, NULL, 10); | ||||||
|  |                      else if (!strncasecmp(s, "STRG:", 5)) { | ||||||
|  |                         m_Strength = (int)strtol(s + 5, NULL, 10); | ||||||
|  |                         m_StrengthValid = (m_Strength >= 0); | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "QUAL:", 5)) { | ||||||
|  |                         m_Quality = (int)strtol(s + 5, NULL, 10); | ||||||
|  |                         m_QualityValid = (m_Quality >= 0); | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "TYPE:", 5)) | ||||||
|  |                         m_FrontendInfo.type = (fe_type_t)strtol(s + 5, NULL, 10); | ||||||
|  |                      else if (!strncasecmp(s, "NAME:", 5)) { | ||||||
|  |                         m_FrontendName = s + 5; | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "STAT:", 5)) { | ||||||
|  |                         m_FrontendStatus = (fe_status_t)strtol(s + 5, NULL, 16); | ||||||
|  |                         m_FrontendStatusValid = true; | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "SGNL:", 5)) { | ||||||
|  |                         m_Signal = (uint16_t)strtol(s + 5, NULL, 16); | ||||||
|  |                         m_SignalValid = true; | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "SNRA:", 5)) { | ||||||
|  |                         m_SNR = (uint16_t)strtol(s + 5, NULL, 16); | ||||||
|  |                         m_SNRValid = true; | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "BERA:", 5)) { | ||||||
|  |                         m_BER = (uint32_t)strtol(s + 5, NULL, 16); | ||||||
|  |                         m_BERValid = true; | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "UNCB:", 5)) { | ||||||
|  |                         m_UNC = (uint32_t)strtol(s + 5, NULL, 16); | ||||||
|  |                         m_UNCValid = true; | ||||||
|  |                         } | ||||||
|  |                      else if (!strncasecmp(s, "VIBR:", 5)) | ||||||
|  |                         m_SvdrpVideoBitrate = (double)strtol(s + 5, NULL, 10); | ||||||
|  |                      else if (!strncasecmp(s, "AUBR:", 5)) | ||||||
|  |                         m_SvdrpAudioBitrate = (double)strtol(s + 5, NULL, 10); | ||||||
|  |                      } | ||||||
|  |                  } | ||||||
|  |               } | ||||||
|  |            break; | ||||||
|  |       } | ||||||
|  |     DrawInfoWindow(); | ||||||
|  |     DrawStatusWindow(); | ||||||
|     m_Sleep.Wait(max((int)(100 * femonConfig.updateinterval - t.Elapsed()), 3)); |     m_Sleep.Wait(max((int)(100 * femonConfig.updateinterval - t.Elapsed()), 3)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -622,26 +693,40 @@ void cFemonOsd::Show(void) | |||||||
| { | { | ||||||
|   debug("%s()\n", __PRETTY_FUNCTION__); |   debug("%s()\n", __PRETTY_FUNCTION__); | ||||||
|   eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); |   eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0); |   const cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); | ||||||
|   m_Frontend = open(dev, O_RDONLY | O_NONBLOCK); |  | ||||||
|   if (m_Frontend >= 0) { |   m_DeviceSource = DEVICESOURCE_DVBAPI; | ||||||
|      if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) { |   if (channel) { | ||||||
|         if (!femonConfig.usesvdrp) |      if (channel->IsSourceType('I')) | ||||||
|            error("cFemonOsd::Show() cannot read frontend info."); |         m_DeviceSource = DEVICESOURCE_IPTV; | ||||||
|         close(m_Frontend); |      else if (channel->IsSourceType('V')) | ||||||
|         m_Frontend = -1; |         m_DeviceSource = DEVICESOURCE_PVRINPUT; | ||||||
|         memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); |      } | ||||||
|  |  | ||||||
|  |   if (m_DeviceSource == DEVICESOURCE_DVBAPI) { | ||||||
|  |      cDvbDevice *dev = getDvbDevice(cDevice::ActualDevice()); | ||||||
|  |      m_Frontend = dev ? open(*cString::sprintf(FRONTEND_DEVICE, dev->Adapter(), dev->Frontend()), O_RDONLY | O_NONBLOCK) : -1; | ||||||
|  |      if (m_Frontend >= 0) { | ||||||
|  |         if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) { | ||||||
|  |            if (!femonConfig.usesvdrp) | ||||||
|  |               error("cFemonOsd::Show() cannot read frontend info."); | ||||||
|  |            close(m_Frontend); | ||||||
|  |            m_Frontend = -1; | ||||||
|  |            memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); | ||||||
|  |            return; | ||||||
|  |            } | ||||||
|  |         } | ||||||
|  |      else if (femonConfig.usesvdrp) { | ||||||
|  |         if (!SvdrpConnect() || !SvdrpTune()) | ||||||
|  |            return; | ||||||
|  |         } | ||||||
|  |      else { | ||||||
|  |         error("cFemonOsd::Show() cannot open frontend device."); | ||||||
|         return; |         return; | ||||||
|         } |         } | ||||||
|      } |      } | ||||||
|   else if (femonConfig.usesvdrp) { |   else | ||||||
|      if (!SvdrpConnect() || !SvdrpTune()) |      m_Frontend = -1; | ||||||
|         return; |  | ||||||
|      } |  | ||||||
|   else { |  | ||||||
|      error("cFemonOsd::Show() cannot open frontend device."); |  | ||||||
|      return; |  | ||||||
|      } |  | ||||||
|  |  | ||||||
|   m_Osd = cOsdProvider::NewOsd(m_OsdLeft, m_OsdTop); |   m_Osd = cOsdProvider::NewOsd(m_OsdLeft, m_OsdTop); | ||||||
|   if (m_Osd) { |   if (m_Osd) { | ||||||
| @@ -662,55 +747,66 @@ void cFemonOsd::Show(void) | |||||||
|         m_Receiver->Deactivate(); |         m_Receiver->Deactivate(); | ||||||
|         DELETENULL(m_Receiver); |         DELETENULL(m_Receiver); | ||||||
|         } |         } | ||||||
|      if (femonConfig.analyzestream) { |      if (femonConfig.analyzestream && channel) { | ||||||
|         cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); |         m_Receiver = new cFemonReceiver(channel, IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0, IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0); | ||||||
|         if (channel) { |         cDevice::ActualDevice()->AttachReceiver(m_Receiver); | ||||||
|            m_Receiver = new cFemonReceiver(channel->Vtype(), channel->Vpid(), channel->Apid(IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0), channel->Dpid(IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0)); |  | ||||||
|            cDevice::ActualDevice()->AttachReceiver(m_Receiver); |  | ||||||
|            } |  | ||||||
|         } |         } | ||||||
|      Start(); |      Start(); | ||||||
|      } |      } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber) | void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber, bool liveView) | ||||||
| { | { | ||||||
|   debug("%s(%d,%d)\n", __PRETTY_FUNCTION__, device->DeviceNumber(), channelNumber); |   debug("%s(%d,%d)\n", __PRETTY_FUNCTION__, device->DeviceNumber(), channelNumber); | ||||||
|   eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); |   eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); | ||||||
|   if (!device->IsPrimaryDevice() || !channelNumber || cDevice::PrimaryDevice()->CurrentChannel() != channelNumber) |   const cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); | ||||||
|  |  | ||||||
|  |   if (!liveView || !channelNumber || !channel || channel->Number() != channelNumber) | ||||||
|      return; |      return; | ||||||
|   close(m_Frontend); |  | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cDevice::ActualDevice()->CardIndex(), 0); |   m_DeviceSource = DEVICESOURCE_DVBAPI; | ||||||
|   m_Frontend = open(dev, O_RDONLY | O_NONBLOCK); |   if (channel) { | ||||||
|  |      if (channel->IsSourceType('I')) | ||||||
|  |         m_DeviceSource = DEVICESOURCE_IPTV; | ||||||
|  |      else if (channel->IsSourceType('V')) | ||||||
|  |         m_DeviceSource = DEVICESOURCE_PVRINPUT; | ||||||
|  |      } | ||||||
|  |  | ||||||
|   if (m_Frontend >= 0) { |   if (m_Frontend >= 0) { | ||||||
|      if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) { |      close(m_Frontend); | ||||||
|         if (!femonConfig.usesvdrp) |      m_Frontend = -1; | ||||||
|            error("cFemonOsd::ChannelSwitch() cannot read frontend info."); |      } | ||||||
|         close(m_Frontend); |  | ||||||
|         m_Frontend = -1; |   if (m_DeviceSource == DEVICESOURCE_DVBAPI) { | ||||||
|         memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); |      cDvbDevice *dev = getDvbDevice(cDevice::ActualDevice()); | ||||||
|  |      m_Frontend = dev ? open(*cString::sprintf(FRONTEND_DEVICE, dev->Adapter(), dev->Frontend()), O_RDONLY | O_NONBLOCK) : -1; | ||||||
|  |      if (m_Frontend >= 0) { | ||||||
|  |         if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) { | ||||||
|  |            if (!femonConfig.usesvdrp) | ||||||
|  |               error("cFemonOsd::ChannelSwitch() cannot read frontend info."); | ||||||
|  |            close(m_Frontend); | ||||||
|  |            m_Frontend = -1; | ||||||
|  |            memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); | ||||||
|  |            return; | ||||||
|  |            } | ||||||
|  |         } | ||||||
|  |      else if (femonConfig.usesvdrp) { | ||||||
|  |         if (!SvdrpConnect() || !SvdrpTune()) | ||||||
|  |            return; | ||||||
|  |         } | ||||||
|  |      else { | ||||||
|  |         error("cFemonOsd::ChannelSwitch() cannot open frontend device."); | ||||||
|         return; |         return; | ||||||
|         } |         } | ||||||
|      } |      } | ||||||
|   else if (femonConfig.usesvdrp) { |  | ||||||
|      if (!SvdrpConnect() || !SvdrpTune()) |  | ||||||
|         return; |  | ||||||
|      } |  | ||||||
|   else { |  | ||||||
|      error("cFemonOsd::ChannelSwitch() cannot open frontend device."); |  | ||||||
|      return; |  | ||||||
|      } |  | ||||||
|  |  | ||||||
|   if (m_Receiver) { |   if (m_Receiver) { | ||||||
|      m_Receiver->Deactivate(); |      m_Receiver->Deactivate(); | ||||||
|      DELETENULL(m_Receiver); |      DELETENULL(m_Receiver); | ||||||
|      } |      } | ||||||
|   if (femonConfig.analyzestream) { |   if (femonConfig.analyzestream && channel) { | ||||||
|      cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); |      m_Receiver = new cFemonReceiver(channel, IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0, IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0); | ||||||
|      if (channel) { |      cDevice::ActualDevice()->AttachReceiver(m_Receiver); | ||||||
|         m_Receiver = new cFemonReceiver(channel->Vtype(), channel->Vpid(), channel->Apid(IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0), channel->Dpid(IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0)); |  | ||||||
|         cDevice::ActualDevice()->AttachReceiver(m_Receiver); |  | ||||||
|         } |  | ||||||
|      } |      } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -723,9 +819,9 @@ void cFemonOsd::SetAudioTrack(int Index, const char * const *Tracks) | |||||||
|      DELETENULL(m_Receiver); |      DELETENULL(m_Receiver); | ||||||
|      } |      } | ||||||
|   if (femonConfig.analyzestream) { |   if (femonConfig.analyzestream) { | ||||||
|      cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); |      const cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); | ||||||
|      if (channel) { |      if (channel) { | ||||||
|         m_Receiver = new cFemonReceiver(channel->Vtype(), channel->Vpid(), channel->Apid(IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0), channel->Dpid(IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0)); |         m_Receiver = new cFemonReceiver(channel, IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0, IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0); | ||||||
|         cDevice::ActualDevice()->AttachReceiver(m_Receiver); |         cDevice::ActualDevice()->AttachReceiver(m_Receiver); | ||||||
|         } |         } | ||||||
|      } |      } | ||||||
| @@ -750,13 +846,13 @@ bool cFemonOsd::DeviceSwitch(int direction) | |||||||
|               } |               } | ||||||
|            if (cDevice::GetDevice(device)->ProvidesChannel(channel, 0)) { |            if (cDevice::GetDevice(device)->ProvidesChannel(channel, 0)) { | ||||||
|               debug("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device); |               debug("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device); | ||||||
|               cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0); |               cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0, true); | ||||||
|               cControl::Shutdown(); |               cControl::Shutdown(); | ||||||
|               cDevice::GetDevice(device)->SwitchChannel(channel, true); |               cDevice::GetDevice(device)->SwitchChannel(channel, true); | ||||||
|               if (cDevice::GetDevice(device) == cDevice::PrimaryDevice()) |               if (cDevice::GetDevice(device) == cDevice::PrimaryDevice()) | ||||||
|                  cDevice::GetDevice(device)->ForceTransferMode(); |                  cDevice::GetDevice(device)->ForceTransferMode(); | ||||||
|               cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel)); |               cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel)); | ||||||
|               cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number()); |               cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number(), true); | ||||||
|               return (true); |               return (true); | ||||||
|               } |               } | ||||||
|            } |            } | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								femonosd.h
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								femonosd.h
									
									
									
									
									
								
							| @@ -24,6 +24,13 @@ | |||||||
|  |  | ||||||
| class cFemonOsd : public cOsdObject, public cThread, public cStatus { | class cFemonOsd : public cOsdObject, public cThread, public cStatus { | ||||||
| private: | private: | ||||||
|  |   enum eDeviceSourceType { | ||||||
|  |     DEVICESOURCE_DVBAPI = 0, | ||||||
|  |     DEVICESOURCE_IPTV, | ||||||
|  |     DEVICESOURCE_PVRINPUT, | ||||||
|  |     DEVICESOURCE_COUNT | ||||||
|  |     }; | ||||||
|  |  | ||||||
|   static cFemonOsd *pInstance; |   static cFemonOsd *pInstance; | ||||||
|  |  | ||||||
|   cOsd             *m_Osd; |   cOsd             *m_Osd; | ||||||
| @@ -48,9 +55,11 @@ private: | |||||||
|   bool              m_BERValid; |   bool              m_BERValid; | ||||||
|   uint32_t          m_UNC; |   uint32_t          m_UNC; | ||||||
|   bool              m_UNCValid; |   bool              m_UNCValid; | ||||||
|  |   cString           m_FrontendName; | ||||||
|   fe_status_t       m_FrontendStatus; |   fe_status_t       m_FrontendStatus; | ||||||
|   bool              m_FrontendStatusValid; |   bool              m_FrontendStatusValid; | ||||||
|   dvb_frontend_info m_FrontendInfo; |   dvb_frontend_info m_FrontendInfo; | ||||||
|  |   eDeviceSourceType m_DeviceSource; | ||||||
|   int               m_DisplayMode; |   int               m_DisplayMode; | ||||||
|   int               m_OsdWidth; |   int               m_OsdWidth; | ||||||
|   int               m_OsdHeight; |   int               m_OsdHeight; | ||||||
| @@ -71,7 +80,7 @@ protected: | |||||||
|   cFemonOsd(const cFemonOsd&); |   cFemonOsd(const cFemonOsd&); | ||||||
|   cFemonOsd& operator= (const cFemonOsd&); |   cFemonOsd& operator= (const cFemonOsd&); | ||||||
|   virtual void Action(void); |   virtual void Action(void); | ||||||
|   virtual void ChannelSwitch(const cDevice * device, int channelNumber); |   virtual void ChannelSwitch(const cDevice *device, int channelNumber, bool liveView); | ||||||
|   virtual void SetAudioTrack(int Index, const char * const *Tracks); |   virtual void SetAudioTrack(int Index, const char * const *Tracks); | ||||||
|  |  | ||||||
| public: | public: | ||||||
|   | |||||||
| @@ -10,8 +10,9 @@ | |||||||
| #include "femoncfg.h" | #include "femoncfg.h" | ||||||
| #include "femonreceiver.h" | #include "femonreceiver.h" | ||||||
|  |  | ||||||
| cFemonReceiver::cFemonReceiver(int Vtype, int Vpid, int Apid, int Dpid) | cFemonReceiver::cFemonReceiver(const cChannel *Channel, int ATrack, int DTrack) | ||||||
| : cThread("femon receiver"), | : cReceiver(Channel), | ||||||
|  |   cThread("femon receiver"), | ||||||
|   m_Mutex(), |   m_Mutex(), | ||||||
|   m_Sleep(), |   m_Sleep(), | ||||||
|   m_Active(false), |   m_Active(false), | ||||||
| @@ -21,24 +22,25 @@ cFemonReceiver::cFemonReceiver(int Vtype, int Vpid, int Apid, int Dpid) | |||||||
|   m_DetectLATM(this), |   m_DetectLATM(this), | ||||||
|   m_DetectAC3(this), |   m_DetectAC3(this), | ||||||
|   m_VideoBuffer(KILOBYTE(512), TS_SIZE, false, "Femon video"), |   m_VideoBuffer(KILOBYTE(512), TS_SIZE, false, "Femon video"), | ||||||
|   m_VideoType(Vtype), |   m_VideoType(Channel ? Channel->Vtype(): 0), | ||||||
|   m_VideoPid(Vpid), |   m_VideoPid(Channel ? Channel->Vpid() : 0), | ||||||
|   m_VideoPacketCount(0), |   m_VideoPacketCount(0), | ||||||
|   m_VideoBitrate(0.0), |   m_VideoBitrate(0.0), | ||||||
|   m_VideoValid(false), |   m_VideoValid(false), | ||||||
|   m_AudioBuffer(KILOBYTE(256), TS_SIZE, false, "Femon audio"), |   m_AudioBuffer(KILOBYTE(256), TS_SIZE, false, "Femon audio"), | ||||||
|   m_AudioPid(Apid), |   m_AudioPid(Channel ? Channel->Apid(ATrack) : 0), | ||||||
|   m_AudioPacketCount(0), |   m_AudioPacketCount(0), | ||||||
|   m_AudioBitrate(0.0), |   m_AudioBitrate(0.0), | ||||||
|   m_AudioValid(false), |   m_AudioValid(false), | ||||||
|   m_AC3Buffer(KILOBYTE(256), TS_SIZE, false, "Femon AC3"), |   m_AC3Buffer(KILOBYTE(256), TS_SIZE, false, "Femon AC3"), | ||||||
|   m_AC3Pid(Dpid), |   m_AC3Pid(Channel ? Channel->Dpid(DTrack) : 0), | ||||||
|   m_AC3PacketCount(0), |   m_AC3PacketCount(0), | ||||||
|   m_AC3Bitrate(0), |   m_AC3Bitrate(0), | ||||||
|   m_AC3Valid(false) |   m_AC3Valid(false) | ||||||
| { | { | ||||||
|   debug("%s()\n", __PRETTY_FUNCTION__); |   debug("%s()\n", __PRETTY_FUNCTION__); | ||||||
|  |  | ||||||
|  |   SetPids(NULL); | ||||||
|   AddPid(m_VideoPid); |   AddPid(m_VideoPid); | ||||||
|   AddPid(m_AudioPid); |   AddPid(m_AudioPid); | ||||||
|   AddPid(m_AC3Pid); |   AddPid(m_AC3Pid); | ||||||
| @@ -79,12 +81,12 @@ cFemonReceiver::~cFemonReceiver(void) | |||||||
| void cFemonReceiver::Deactivate(void) | void cFemonReceiver::Deactivate(void) | ||||||
| { | { | ||||||
|   debug("%s()\n", __PRETTY_FUNCTION__); |   debug("%s()\n", __PRETTY_FUNCTION__); | ||||||
|  |   Detach(); | ||||||
|   if (m_Active) { |   if (m_Active) { | ||||||
|      m_Active = false; |      m_Active = false; | ||||||
|      m_Sleep.Signal(); |      m_Sleep.Signal(); | ||||||
|      if (Running()) |      if (Running()) | ||||||
|         Cancel(3); |         Cancel(3); | ||||||
|      Detach(); |  | ||||||
|      } |      } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -142,7 +144,7 @@ void cFemonReceiver::Action(void) | |||||||
|     bool processed = false; |     bool processed = false; | ||||||
|  |  | ||||||
|     // process available video data |     // process available video data | ||||||
|     while (Data = m_VideoBuffer.Get(Length)) { |     while ((Data = m_VideoBuffer.Get(Length))) { | ||||||
|       if (!m_Active || (Length < TS_SIZE)) |       if (!m_Active || (Length < TS_SIZE)) | ||||||
|          break; |          break; | ||||||
|       Length = TS_SIZE; |       Length = TS_SIZE; | ||||||
| @@ -179,7 +181,7 @@ void cFemonReceiver::Action(void) | |||||||
|       } |       } | ||||||
|  |  | ||||||
|     // process available audio data |     // process available audio data | ||||||
|     while (Data = m_AudioBuffer.Get(Length)) { |     while ((Data = m_AudioBuffer.Get(Length))) { | ||||||
|       if (!m_Active || (Length < TS_SIZE)) |       if (!m_Active || (Length < TS_SIZE)) | ||||||
|          break; |          break; | ||||||
|       Length = TS_SIZE; |       Length = TS_SIZE; | ||||||
| @@ -204,7 +206,7 @@ void cFemonReceiver::Action(void) | |||||||
|       } |       } | ||||||
|  |  | ||||||
|     // process available dolby data |     // process available dolby data | ||||||
|     while (Data = m_AC3Buffer.Get(Length)) { |     while ((Data = m_AC3Buffer.Get(Length))) { | ||||||
|       if (!m_Active || (Length < TS_SIZE)) |       if (!m_Active || (Length < TS_SIZE)) | ||||||
|          break; |          break; | ||||||
|       Length = TS_SIZE; |       Length = TS_SIZE; | ||||||
|   | |||||||
| @@ -108,7 +108,7 @@ public: | |||||||
|                                                        m_AC3Info.lfe = onoff; } |                                                        m_AC3Info.lfe = onoff; } | ||||||
|  |  | ||||||
| public: | public: | ||||||
|   cFemonReceiver(int Vtype, int Vpid, int Apid, int Dpid); |   cFemonReceiver(const cChannel* Channel, int ATrack, int DTrack); | ||||||
|   virtual ~cFemonReceiver(); |   virtual ~cFemonReceiver(); | ||||||
|   void Deactivate(void); |   void Deactivate(void); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -77,8 +77,8 @@ public: | |||||||
|   ~cFemonSymbolCache(); |   ~cFemonSymbolCache(); | ||||||
|   void Refresh(); |   void Refresh(); | ||||||
|   cBitmap& Get(eSymbols symbolP); |   cBitmap& Get(eSymbols symbolP); | ||||||
|   int GetSpacing()  { return yFactorM * DEFAULT_SPACING; } |   int GetSpacing()  { return int(yFactorM * DEFAULT_SPACING);  } | ||||||
|   int GetRounding() { return yFactorM * DEFAULT_ROUNDING; } |   int GetRounding() { return int(yFactorM * DEFAULT_ROUNDING); } | ||||||
| }; | }; | ||||||
|  |  | ||||||
| extern cFemonSymbolCache femonSymbols; | extern cFemonSymbolCache femonSymbols; | ||||||
|   | |||||||
							
								
								
									
										160
									
								
								femontools.c
									
									
									
									
									
								
							
							
						
						
									
										160
									
								
								femontools.c
									
									
									
									
									
								
							| @@ -25,41 +25,41 @@ static cString getCA(int value) | |||||||
|   switch (value) { |   switch (value) { | ||||||
|     case 0x0000:            return cString::sprintf("%s (%X)", trVDR("Free To Air"), value);  // Reserved |     case 0x0000:            return cString::sprintf("%s (%X)", trVDR("Free To Air"), value);  // Reserved | ||||||
|     case 0x0001 ... 0x009F: |     case 0x0001 ... 0x009F: | ||||||
|     case 0x00A2 ... 0x00FF: return cString::sprintf("%s (%X)", tr("Fixed"),          value); // Standardized systems |     case 0x00A2 ... 0x00FF: return cString::sprintf("%s (%X)", tr("Fixed"),  value); // Standardized systems | ||||||
|     case 0x00A0 ... 0x00A1: return cString::sprintf("%s (%X)", tr("Analog"),         value); // Analog signals |     case 0x00A0 ... 0x00A1: return cString::sprintf("%s (%X)", tr("Analog"), value); // Analog signals | ||||||
|     case 0x0100 ... 0x01FF: return cString::sprintf("%s (%X)", "SECA Mediaguard",    value); // Canal Plus |     case 0x0100 ... 0x01FF: return cString::sprintf("SECA Mediaguard (%X)",  value); // Canal Plus | ||||||
|     case 0x0464:            return cString::sprintf("%s (%X)", "EuroDec",            value); // EuroDec |     case 0x0464:            return cString::sprintf("EuroDec (%X)",          value); // EuroDec | ||||||
|     case 0x0500 ... 0x05FF: return cString::sprintf("%s (%X)", "Viaccess",           value); // France Telecom |     case 0x0500 ... 0x05FF: return cString::sprintf("Viaccess (%X)",         value); // France Telecom | ||||||
|     case 0x0600 ... 0x06FF: return cString::sprintf("%s (%X)", "Irdeto",             value); // Irdeto |     case 0x0600 ... 0x06FF: return cString::sprintf("Irdeto (%X)",           value); // Irdeto | ||||||
|     case 0x0900 ... 0x09FF: return cString::sprintf("%s (%X)", "NDS Videoguard",     value); // News Datacom |     case 0x0900 ... 0x09FF: return cString::sprintf("NDS Videoguard (%X)",   value); // News Datacom | ||||||
|     case 0x0B00 ... 0x0BFF: return cString::sprintf("%s (%X)", "Conax",              value); // Norwegian Telekom |     case 0x0B00 ... 0x0BFF: return cString::sprintf("Conax (%X)",            value); // Norwegian Telekom | ||||||
|     case 0x0D00 ... 0x0DFF: return cString::sprintf("%s (%X)", "CryptoWorks",        value); // Philips |     case 0x0D00 ... 0x0DFF: return cString::sprintf("CryptoWorks (%X)",      value); // Philips | ||||||
|     case 0x0E00 ... 0x0EFF: return cString::sprintf("%s (%X)", "PowerVu",            value); // Scientific Atlanta |     case 0x0E00 ... 0x0EFF: return cString::sprintf("PowerVu (%X)",          value); // Scientific Atlanta | ||||||
|     case 0x1000:            return cString::sprintf("%s (%X)", "RAS",                value); // Tandberg Television |     case 0x1000:            return cString::sprintf("RAS (%X)",              value); // Tandberg Television | ||||||
|     case 0x1200 ... 0x12FF: return cString::sprintf("%s (%X)", "NagraVision",        value); // BellVu Express |     case 0x1200 ... 0x12FF: return cString::sprintf("NagraVision (%X)",      value); // BellVu Express | ||||||
|     case 0x1700 ... 0x17FF: return cString::sprintf("%s (%X)", "BetaCrypt",          value); // BetaTechnik |     case 0x1700 ... 0x17FF: return cString::sprintf("BetaCrypt (%X)",        value); // BetaTechnik | ||||||
|     case 0x1800 ... 0x18FF: return cString::sprintf("%s (%X)", "NagraVision",        value); // Kudelski SA |     case 0x1800 ... 0x18FF: return cString::sprintf("NagraVision (%X)",      value); // Kudelski SA | ||||||
|     case 0x22F0:            return cString::sprintf("%s (%X)", "Codicrypt",          value); // Scopus Network Technologies |     case 0x22F0:            return cString::sprintf("Codicrypt (%X)",        value); // Scopus Network Technologies | ||||||
|     case 0x2600:            return cString::sprintf("%s (%X)", "BISS",               value); // European Broadcasting Union |     case 0x2600:            return cString::sprintf("BISS (%X)",             value); // European Broadcasting Union | ||||||
|     case 0x4347:            return cString::sprintf("%s (%X)", "CryptOn",            value); // CryptOn |     case 0x4347:            return cString::sprintf("CryptOn (%X)",          value); // CryptOn | ||||||
|     case 0x4800:            return cString::sprintf("%s (%X)", "Accessgate",         value); // Telemann |     case 0x4800:            return cString::sprintf("Accessgate (%X)",       value); // Telemann | ||||||
|     case 0x4900:            return cString::sprintf("%s (%X)", "China Crypt",        value); // CryptoWorks |     case 0x4900:            return cString::sprintf("China Crypt (%X)",      value); // CryptoWorks | ||||||
|     case 0x4A10:            return cString::sprintf("%s (%X)", "EasyCas",            value); // EasyCas |     case 0x4A10:            return cString::sprintf("EasyCas (%X)",          value); // EasyCas | ||||||
|     case 0x4A20:            return cString::sprintf("%s (%X)", "AlphaCrypt",         value); // AlphaCrypt |     case 0x4A20:            return cString::sprintf("AlphaCrypt (%X)",       value); // AlphaCrypt | ||||||
|     case 0x4A70:            return cString::sprintf("%s (%X)", "DreamCrypt",         value); // Dream Multimedia |     case 0x4A70:            return cString::sprintf("DreamCrypt (%X)",       value); // Dream Multimedia | ||||||
|     case 0x4A60:            return cString::sprintf("%s (%X)", "SkyCrypt",           value); // @Sky |     case 0x4A60:            return cString::sprintf("SkyCrypt (%X)",         value); // @Sky | ||||||
|     case 0x4A61:            return cString::sprintf("%s (%X)", "Neotioncrypt",       value); // Neotion |     case 0x4A61:            return cString::sprintf("Neotioncrypt (%X)",     value); // Neotion | ||||||
|     case 0x4A62:            return cString::sprintf("%s (%X)", "SkyCrypt",           value); // @Sky |     case 0x4A62:            return cString::sprintf("SkyCrypt (%X)",         value); // @Sky | ||||||
|     case 0x4A63:            return cString::sprintf("%s (%X)", "Neotion SHL",        value); // Neotion |     case 0x4A63:            return cString::sprintf("Neotion SHL (%X)",      value); // Neotion | ||||||
|     case 0x4A64 ... 0x4A6F: return cString::sprintf("%s (%X)", "SkyCrypt",           value); // @Sky |     case 0x4A64 ... 0x4A6F: return cString::sprintf("SkyCrypt (%X)",         value); // @Sky | ||||||
|     case 0x4A80:            return cString::sprintf("%s (%X)", "ThalesCrypt",        value); // TPS |     case 0x4A80:            return cString::sprintf("ThalesCrypt (%X)",      value); // TPS | ||||||
|     case 0x4AA1:            return cString::sprintf("%s (%X)", "KeyFly",             value); // SIDSA |     case 0x4AA1:            return cString::sprintf("KeyFly (%X)",           value); // SIDSA | ||||||
|     case 0x4ABF:            return cString::sprintf("%s (%X)", "DG-Crypt",           value); // Beijing Compunicate Technology Inc. |     case 0x4ABF:            return cString::sprintf("DG-Crypt (%X)",         value); // Beijing Compunicate Technology Inc. | ||||||
|     case 0x4AD0 ... 0x4AD1: return cString::sprintf("%s (%X)", "X-Crypt",            value); // XCrypt Inc. |     case 0x4AD0 ... 0x4AD1: return cString::sprintf("X-Crypt (%X)",          value); // XCrypt Inc. | ||||||
|     case 0x4AD4:            return cString::sprintf("%s (%X)", "OmniCrypt",          value); // Widevine Technologies, Inc. |     case 0x4AD4:            return cString::sprintf("OmniCrypt (%X)",        value); // Widevine Technologies, Inc. | ||||||
|     case 0x4AE0:            return cString::sprintf("%s (%X)", "RossCrypt",          value); // Digi Raum Electronics Co. Ltd. |     case 0x4AE0:            return cString::sprintf("RossCrypt (%X)",        value); // Digi Raum Electronics Co. Ltd. | ||||||
|     case 0x5500:            return cString::sprintf("%s (%X)", "Z-Crypt",            value); // Digi Raum Electronics Co. Ltd. |     case 0x5500:            return cString::sprintf("Z-Crypt (%X)",          value); // Digi Raum Electronics Co. Ltd. | ||||||
|     case 0x5501:            return cString::sprintf("%s (%X)", "Griffin",            value); // Griffin |     case 0x5501:            return cString::sprintf("Griffin (%X)",          value); // Griffin | ||||||
|     default:                break; |     default:                break; | ||||||
|     } |     } | ||||||
|   return cString::sprintf("%X", value); |   return cString::sprintf("%X", value); | ||||||
| @@ -76,26 +76,38 @@ static const char *getUserString(int Value, const tDvbParameterMap *Map) | |||||||
|   return "---"; |   return "---"; | ||||||
| } | } | ||||||
|  |  | ||||||
| cString getFrontendInfo(int cardIndex) | cDvbDevice *getDvbDevice(cDevice* device) | ||||||
|  | { | ||||||
|  |   cDvbDevice *dev = dynamic_cast<cDvbDevice*>(device); | ||||||
|  | #ifdef __DYNAMIC_DEVICE_PROBE | ||||||
|  |   if (!dev && device && device->HasSubDevice()) | ||||||
|  |      dev = dynamic_cast<cDvbDevice*>(device->SubDevice()); | ||||||
|  | #endif | ||||||
|  |   return dev; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | cString getFrontendInfo(cDvbDevice *device) | ||||||
| { | { | ||||||
|   cString info; |  | ||||||
|   struct dvb_frontend_info value; |   struct dvb_frontend_info value; | ||||||
|   fe_status_t status; |   fe_status_t status; | ||||||
|  |   cString info = ""; | ||||||
|   uint16_t signal = 0; |   uint16_t signal = 0; | ||||||
|   uint16_t snr = 0; |   uint16_t snr = 0; | ||||||
|   uint32_t ber = 0; |   uint32_t ber = 0; | ||||||
|   uint32_t unc = 0; |   uint32_t unc = 0; | ||||||
|   cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); |   cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0); |  | ||||||
|  |  | ||||||
|   int fe = open(dev, O_RDONLY | O_NONBLOCK); |   if (!device) | ||||||
|  |      return info; | ||||||
|  |  | ||||||
|  |   int fe = open(*cString::sprintf(FRONTEND_DEVICE, device->Adapter(), device->Frontend()), O_RDONLY | O_NONBLOCK); | ||||||
|   if (fe < 0) |   if (fe < 0) | ||||||
|      return NULL; |      return info; | ||||||
|  |  | ||||||
|   info = cString::sprintf("CARD:%d\nSTRG:%d\nQUAL:%d", cardIndex, cDevice::ActualDevice()->SignalStrength(), cDevice::ActualDevice()->SignalQuality()); |   info = cString::sprintf("CARD:%d\nSTRG:%d\nQUAL:%d", device->CardIndex(), device->SignalStrength(), device->SignalQuality()); | ||||||
|  |  | ||||||
|   if (ioctl(fe, FE_GET_INFO, &value) >= 0) |   if (ioctl(fe, FE_GET_INFO, &value) >= 0) | ||||||
|      info = cString::sprintf("%s\nTYPE:%d\nNAME:%s", *info, value.type, value.name); |      info = cString::sprintf("%s\nTYPE:%d\nNAME:%s", *info, value.type, *device->DeviceName()); | ||||||
|   if (ioctl(fe, FE_READ_STATUS, &status) >= 0) |   if (ioctl(fe, FE_READ_STATUS, &status) >= 0) | ||||||
|      info = cString::sprintf("%s\nSTAT:%02X", *info, status); |      info = cString::sprintf("%s\nSTAT:%02X", *info, status); | ||||||
|   if (ioctl(fe, FE_READ_SIGNAL_STRENGTH, &signal) >= 0) |   if (ioctl(fe, FE_READ_SIGNAL_STRENGTH, &signal) >= 0) | ||||||
| @@ -117,42 +129,39 @@ cString getFrontendInfo(int cardIndex) | |||||||
|   return info; |   return info; | ||||||
| } | } | ||||||
|  |  | ||||||
| cString getFrontendName(int cardIndex) | cString getFrontendName(cDvbDevice *device) | ||||||
| { | { | ||||||
|   struct dvb_frontend_info value; |   if (!device) | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0); |  | ||||||
|  |  | ||||||
|   int fe = open(dev, O_RDONLY | O_NONBLOCK); |  | ||||||
|   if (fe < 0) |  | ||||||
|      return NULL; |      return NULL; | ||||||
|   memset(&value, 0, sizeof(value)); |  | ||||||
|   ioctl(fe, FE_GET_INFO, &value); |  | ||||||
|   close(fe); |  | ||||||
|  |  | ||||||
|   return (cString::sprintf("%s on device #%d", value.name, cardIndex)); |   return (cString::sprintf("%s on device #%d", *device->DeviceName(), device->CardIndex())); | ||||||
| } | } | ||||||
|  |  | ||||||
| cString getFrontendStatus(int cardIndex) | cString getFrontendStatus(cDvbDevice *device) | ||||||
| { | { | ||||||
|   fe_status_t value; |   fe_status_t value; | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0); |  | ||||||
|  |  | ||||||
|   int fe = open(dev, O_RDONLY | O_NONBLOCK); |   if (!device) | ||||||
|  |      return NULL; | ||||||
|  |  | ||||||
|  |   int fe = open(*cString::sprintf(FRONTEND_DEVICE, device->Adapter(), device->Frontend()), O_RDONLY | O_NONBLOCK); | ||||||
|   if (fe < 0) |   if (fe < 0) | ||||||
|      return NULL; |      return NULL; | ||||||
|   memset(&value, 0, sizeof(value)); |   memset(&value, 0, sizeof(value)); | ||||||
|   ioctl(fe, FE_READ_STATUS, &value); |   ioctl(fe, FE_READ_STATUS, &value); | ||||||
|   close(fe); |   close(fe); | ||||||
|  |  | ||||||
|   return (cString::sprintf("Status %s:%s:%s:%s:%s on device #%d", (value & FE_HAS_LOCK) ? "LOCKED" : "-", (value & FE_HAS_SIGNAL) ? "SIGNAL" : "-", (value & FE_HAS_CARRIER) ? "CARRIER" : "-", (value & FE_HAS_VITERBI) ? "VITERBI" : "-", (value & FE_HAS_SYNC) ? "SYNC" : "-", cardIndex)); |   return (cString::sprintf("Status %s:%s:%s:%s:%s on device #%d", (value & FE_HAS_LOCK) ? "LOCKED" : "-", (value & FE_HAS_SIGNAL) ? "SIGNAL" : "-", (value & FE_HAS_CARRIER) ? "CARRIER" : "-", (value & FE_HAS_VITERBI) ? "VITERBI" : "-", (value & FE_HAS_SYNC) ? "SYNC" : "-", device->CardIndex())); | ||||||
| } | } | ||||||
|  |  | ||||||
| uint16_t getSignal(int cardIndex) | uint16_t getSignal(cDvbDevice *device) | ||||||
| { | { | ||||||
|   uint16_t value = 0; |   uint16_t value = 0; | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0); |  | ||||||
|  |  | ||||||
|   int fe = open(dev, O_RDONLY | O_NONBLOCK); |   if (!device) | ||||||
|  |      return (value); | ||||||
|  |  | ||||||
|  |   int fe = open(*cString::sprintf(FRONTEND_DEVICE, device->Adapter(), device->Frontend()), O_RDONLY | O_NONBLOCK); | ||||||
|   if (fe < 0) |   if (fe < 0) | ||||||
|      return (value); |      return (value); | ||||||
|   ioctl(fe, FE_READ_SIGNAL_STRENGTH, &value); |   ioctl(fe, FE_READ_SIGNAL_STRENGTH, &value); | ||||||
| @@ -161,12 +170,14 @@ uint16_t getSignal(int cardIndex) | |||||||
|   return (value); |   return (value); | ||||||
| } | } | ||||||
|  |  | ||||||
| uint16_t getSNR(int cardIndex) | uint16_t getSNR(cDvbDevice *device) | ||||||
| { | { | ||||||
|   uint16_t value = 0; |   uint16_t value = 0; | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0); |  | ||||||
|  |  | ||||||
|   int fe = open(dev, O_RDONLY | O_NONBLOCK); |   if (!device) | ||||||
|  |      return (value); | ||||||
|  |  | ||||||
|  |   int fe = open(*cString::sprintf(FRONTEND_DEVICE, device->Adapter(), device->Frontend()), O_RDONLY | O_NONBLOCK); | ||||||
|   if (fe < 0) |   if (fe < 0) | ||||||
|      return (value); |      return (value); | ||||||
|   ioctl(fe, FE_READ_SNR, &value); |   ioctl(fe, FE_READ_SNR, &value); | ||||||
| @@ -175,12 +186,14 @@ uint16_t getSNR(int cardIndex) | |||||||
|   return (value); |   return (value); | ||||||
| } | } | ||||||
|  |  | ||||||
| uint32_t getBER(int cardIndex) | uint32_t getBER(cDvbDevice *device) | ||||||
| { | { | ||||||
|   uint32_t value = 0; |   uint32_t value = 0; | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0); |  | ||||||
|  |  | ||||||
|   int fe = open(dev, O_RDONLY | O_NONBLOCK); |   if (!device) | ||||||
|  |      return (value); | ||||||
|  |  | ||||||
|  |   int fe = open(*cString::sprintf(FRONTEND_DEVICE, device->Adapter(), device->Frontend()), O_RDONLY | O_NONBLOCK); | ||||||
|   if (fe < 0) |   if (fe < 0) | ||||||
|      return (value); |      return (value); | ||||||
|   ioctl(fe, FE_READ_BER, &value); |   ioctl(fe, FE_READ_BER, &value); | ||||||
| @@ -189,12 +202,14 @@ uint32_t getBER(int cardIndex) | |||||||
|   return (value); |   return (value); | ||||||
| } | } | ||||||
|  |  | ||||||
| uint32_t getUNC(int cardIndex) | uint32_t getUNC(cDvbDevice *device) | ||||||
| { | { | ||||||
|   uint32_t value = 0; |   uint32_t value = 0; | ||||||
|   cString dev = cString::sprintf(FRONTEND_DEVICE, cardIndex, 0); |  | ||||||
|  |  | ||||||
|   int fe = open(dev, O_RDONLY | O_NONBLOCK); |   if (!device) | ||||||
|  |      return (value); | ||||||
|  |  | ||||||
|  |   int fe = open(*cString::sprintf(FRONTEND_DEVICE, device->Adapter(), device->Frontend()), O_RDONLY | O_NONBLOCK); | ||||||
|   if (fe < 0) |   if (fe < 0) | ||||||
|      return (value); |      return (value); | ||||||
|   ioctl(fe, FE_READ_UNCORRECTED_BLOCKS, &value); |   ioctl(fe, FE_READ_UNCORRECTED_BLOCKS, &value); | ||||||
| @@ -347,9 +362,14 @@ cString getModulation(int value) | |||||||
|   return cString::sprintf("%s", getUserString(value, ModulationValues)); |   return cString::sprintf("%s", getUserString(value, ModulationValues)); | ||||||
| } | } | ||||||
|  |  | ||||||
| cString getSystem(int value) | cString getTerrestrialSystem(int value) | ||||||
| { | { | ||||||
|   return cString::sprintf("%s", getUserString(value, SystemValues)); |   return cString::sprintf("%s", getUserString(value, SystemValuesTerr)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | cString getSatelliteSystem(int value) | ||||||
|  | { | ||||||
|  |   return cString::sprintf("%s", getUserString(value, SystemValuesSat)); | ||||||
| } | } | ||||||
|  |  | ||||||
| cString getRollOff(int value) | cString getRollOff(int value) | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								femontools.h
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								femontools.h
									
									
									
									
									
								
							| @@ -10,6 +10,7 @@ | |||||||
|  |  | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| #include <vdr/channels.h> | #include <vdr/channels.h> | ||||||
|  | #include <vdr/dvbdevice.h> | ||||||
| #include <vdr/remux.h> | #include <vdr/remux.h> | ||||||
| #include <vdr/tools.h> | #include <vdr/tools.h> | ||||||
|  |  | ||||||
| @@ -25,15 +26,17 @@ | |||||||
|  |  | ||||||
| #define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d" | #define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d" | ||||||
|  |  | ||||||
| cString getFrontendInfo(int cardIndex = 0); | cDvbDevice *getDvbDevice(cDevice* device); | ||||||
| cString getFrontendName(int cardIndex = 0); |  | ||||||
| cString getFrontendStatus(int cardIndex = 0); |  | ||||||
|  |  | ||||||
| uint16_t getSNR(int cardIndex = 0); | cString getFrontendInfo(cDvbDevice *device); | ||||||
| uint16_t getSignal(int cardIndex = 0); | cString getFrontendName(cDvbDevice *device); | ||||||
|  | cString getFrontendStatus(cDvbDevice *device); | ||||||
|  |  | ||||||
| uint32_t getBER(int cardIndex = 0); | uint16_t getSNR(cDvbDevice *device); | ||||||
| uint32_t getUNC(int cardIndex = 0); | uint16_t getSignal(cDvbDevice *device); | ||||||
|  |  | ||||||
|  | uint32_t getBER(cDvbDevice *device); | ||||||
|  | uint32_t getUNC(cDvbDevice *device); | ||||||
|  |  | ||||||
| cString getApids(const cChannel *channel); | cString getApids(const cChannel *channel); | ||||||
| cString getDpids(const cChannel *channel); | cString getDpids(const cChannel *channel); | ||||||
| @@ -51,7 +54,8 @@ cString getInversion(int value); | |||||||
| cString getHierarchy(int value); | cString getHierarchy(int value); | ||||||
| cString getGuard(int value); | cString getGuard(int value); | ||||||
| cString getModulation(int value); | cString getModulation(int value); | ||||||
| cString getSystem(int value); | cString getTerrestrialSystem(int value); | ||||||
|  | cString getSatelliteSystem(int value); | ||||||
| cString getRollOff(int value); | cString getRollOff(int value); | ||||||
| cString getResolution(int width, int height, int scan); | cString getResolution(int width, int height, int scan); | ||||||
| cString getAspectRatio(int value); | cString getAspectRatio(int value); | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								iptvservice.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								iptvservice.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | /* | ||||||
|  |  * iptvservice.h: IPTV plugin for the Video Disk Recorder | ||||||
|  |  * | ||||||
|  |  * See the README file for copyright information and how to reach the author. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef __IPTVSERVICE_H | ||||||
|  | #define __IPTVSERVICE_H | ||||||
|  |  | ||||||
|  | #include <vdr/tools.h> | ||||||
|  |  | ||||||
|  | #define stIptv ('I' << 24) | ||||||
|  |  | ||||||
|  | struct IptvService_v1_0 { | ||||||
|  |   unsigned int cardIndex; | ||||||
|  |   cString protocol; | ||||||
|  |   cString bitrate; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  | #endif //__IPTVSERVICE_H | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								po/de_DE.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/de_DE.po
									
									
									
									
									
								
							| @@ -7,7 +7,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -66,6 +66,9 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "Hauptmen<65>eintrag verstecken" | msgstr "Hauptmen<65>eintrag verstecken" | ||||||
|  |  | ||||||
| @@ -177,6 +180,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Coderate" | msgstr "Coderate" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Bitrate" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "Streaminformation" | msgstr "Streaminformation" | ||||||
|  |  | ||||||
| @@ -186,9 +195,6 @@ msgstr "Video Stream" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "Bitrate" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "Seitenverh<72>ltnis" | msgstr "Seitenverh<72>ltnis" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								po/es_ES.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/es_ES.po
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -64,6 +64,9 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "Ocultar en el men<65> principal" | msgstr "Ocultar en el men<65> principal" | ||||||
|  |  | ||||||
| @@ -175,6 +178,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Coderate" | msgstr "Coderate" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Tasa de bits" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "Informaci<63>n del flujo" | msgstr "Informaci<63>n del flujo" | ||||||
|  |  | ||||||
| @@ -184,9 +193,6 @@ msgstr "Flujo de video" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "Tasa de bits" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "Proporciones de la imagen" | msgstr "Proporciones de la imagen" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								po/et_EE.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/et_EE.po
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -64,6 +64,9 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "Peita valik peamen<65><6E>s" | msgstr "Peita valik peamen<65><6E>s" | ||||||
|  |  | ||||||
| @@ -175,6 +178,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Coderate" | msgstr "Coderate" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Bitikiirus" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "Vooinfo" | msgstr "Vooinfo" | ||||||
|  |  | ||||||
| @@ -184,9 +193,6 @@ msgstr "Videovoog" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "Koodek" | msgstr "Koodek" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "Bitikiirus" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "K<>lgsuhe" | msgstr "K<>lgsuhe" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								po/fi_FI.po
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								po/fi_FI.po
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -64,6 +64,9 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "Piilota valinta päävalikosta" | msgstr "Piilota valinta päävalikosta" | ||||||
|  |  | ||||||
| @@ -167,7 +170,7 @@ msgid "Nid" | |||||||
| msgstr "Verkko-ID" | msgstr "Verkko-ID" | ||||||
|  |  | ||||||
| msgid "Tid" | msgid "Tid" | ||||||
| msgstr "Lähete-ID" | msgstr "TS-ID" | ||||||
|  |  | ||||||
| msgid "Rid" | msgid "Rid" | ||||||
| msgstr "Radio-ID" | msgstr "Radio-ID" | ||||||
| @@ -175,6 +178,12 @@ msgstr "Radio-ID" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Suojaustaso" | msgstr "Suojaustaso" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "Protokolla" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Bittinopeus" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "Lähetteen tiedot" | msgstr "Lähetteen tiedot" | ||||||
|  |  | ||||||
| @@ -184,9 +193,6 @@ msgstr "Kuvaraita" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "Koodekki" | msgstr "Koodekki" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "Bittinopeus" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "Kuvasuhde" | msgstr "Kuvasuhde" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										128
									
								
								po/fr_FR.po
									
									
									
									
									
								
							
							
						
						
									
										128
									
								
								po/fr_FR.po
									
									
									
									
									
								
							| @@ -2,25 +2,27 @@ | |||||||
| # Copyright (C) 2007 Rolf Ahrenberg | # Copyright (C) 2007 Rolf Ahrenberg | ||||||
| # This file is distributed under the same license as the femon package. | # This file is distributed under the same license as the femon package. | ||||||
| # Nicolas Huillard | # Nicolas Huillard | ||||||
|  | # Michaël Nival <mnival@club-internet.fr>, 2010 | ||||||
|  | # Bernard Jaulin <bernard.jaulin@gmail.com>, 2013 | ||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| "Last-Translator: NIVAL Micha<68>l <mnival@club-internet.fr>\n" | "Last-Translator: Bernard Jaulin <bernard.jaulin@gmail.com>\n" | ||||||
| "Language-Team: French <vdr@linuxtv.org>\n" | "Language-Team: French <vdr@linuxtv.org>\n" | ||||||
| "Language: fr\n" | "Language: fr\n" | ||||||
| "MIME-Version: 1.0\n" | "MIME-Version: 1.0\n" | ||||||
| "Content-Type: text/plain; charset=ISO-8859-1\n" | "Content-Type: text/plain; charset=UTF-8\n" | ||||||
| "Content-Transfer-Encoding: 8bit\n" | "Content-Transfer-Encoding: 8bit\n" | ||||||
|  |  | ||||||
| msgid "DVB Signal Information Monitor (OSD)" | msgid "DVB Signal Information Monitor (OSD)" | ||||||
| msgstr "Affiche les informations du signal DVB" | msgstr "Affiche les informations du signal DVB" | ||||||
|  |  | ||||||
| msgid "Signal Information" | msgid "Signal Information" | ||||||
| msgstr "Signal DVB" | msgstr "Infos sur le signal" | ||||||
|  |  | ||||||
| msgid "Femon not available" | msgid "Femon not available" | ||||||
| msgstr "Femon n'est pas disponible" | msgstr "Femon n'est pas disponible" | ||||||
| @@ -64,95 +66,98 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "Masquer dans le menu principal" | msgstr "Masquer dans le menu principal" | ||||||
|  |  | ||||||
| msgid "Define whether the main menu entry is hidden." | msgid "Define whether the main menu entry is hidden." | ||||||
| msgstr "D<EFBFBD>finit si l'entr<EFBFBD>e doit <EFBFBD>tre masqu<EFBFBD>e dans le menu principal." | msgstr "Définit si l'entrée doit être masquée dans le menu principal." | ||||||
|  |  | ||||||
| msgid "Default display mode" | msgid "Default display mode" | ||||||
| msgstr "Affichage par d<EFBFBD>faut" | msgstr "Affichage par défaut" | ||||||
|  |  | ||||||
| msgid "Define the default display mode at startup." | msgid "Define the default display mode at startup." | ||||||
| msgstr "D<EFBFBD>finit l'affichage par d<EFBFBD>faut au d<EFBFBD>marrage." | msgstr "Définit l'affichage par défaut au démarrage." | ||||||
|  |  | ||||||
| msgid "Define the used OSD skin." | msgid "Define the used OSD skin." | ||||||
| msgstr "D<EFBFBD>finit le skin OSD <EFBFBD> utiliser." | msgstr "Définit le skin OSD à utiliser." | ||||||
|  |  | ||||||
| msgid "Define the used OSD theme." | msgid "Define the used OSD theme." | ||||||
| msgstr "D<EFBFBD>finit le th<EFBFBD>me OSD <EFBFBD> utiliser." | msgstr "Définit le thème OSD à utiliser." | ||||||
|  |  | ||||||
| msgid "Position" | msgid "Position" | ||||||
| msgstr "Position" | msgstr "Position" | ||||||
|  |  | ||||||
| msgid "Define the position of OSD." | msgid "Define the position of OSD." | ||||||
| msgstr "D<EFBFBD>finit la position de l'OSD." | msgstr "Définit la position de l'OSD." | ||||||
|  |  | ||||||
| msgid "Downscale OSD size [%]" | msgid "Downscale OSD size [%]" | ||||||
| msgstr "" | msgstr "Réduit la taille de l'OSD (%)" | ||||||
|  |  | ||||||
| msgid "Define the downscale ratio for OSD size." | msgid "Define the downscale ratio for OSD size." | ||||||
| msgstr "" | msgstr "Définit le ration de réduction de l'OSD." | ||||||
|  |  | ||||||
| msgid "Red limit [%]" | msgid "Red limit [%]" | ||||||
| msgstr "Limite du rouge (%)" | msgstr "Limite du rouge (%)" | ||||||
|  |  | ||||||
| msgid "Define a limit for red bar, which is used to indicate a bad signal." | msgid "Define a limit for red bar, which is used to indicate a bad signal." | ||||||
| msgstr "D<EFBFBD>finit la limite de la barre rouge, qui est utilis<EFBFBD> pour indiquer un mauvais signal." | msgstr "Définit la limite de la barre rouge, qui est utilisé pour indiquer un mauvais signal." | ||||||
|  |  | ||||||
| msgid "Green limit [%]" | msgid "Green limit [%]" | ||||||
| msgstr "Limite du vert (%)" | msgstr "Limite du vert (%)" | ||||||
|  |  | ||||||
| msgid "Define a limit for green bar, which is used to indicate a good signal." | msgid "Define a limit for green bar, which is used to indicate a good signal." | ||||||
| msgstr "D<EFBFBD>finit la limite de la barre rouge, qui est utilis<EFBFBD> pour indiquer un bon signal." | msgstr "Définit la limite de la barre rouge, qui est utilisé pour indiquer un bon signal." | ||||||
|  |  | ||||||
| msgid "OSD update interval [0.1s]" | msgid "OSD update interval [0.1s]" | ||||||
| msgstr "Intervalle de mise <EFBFBD> jour (0,1s)" | msgstr "Intervalle de mise à jour (0,1s)" | ||||||
|  |  | ||||||
| msgid "Define an interval for OSD updates. The smaller interval generates higher CPU load." | msgid "Define an interval for OSD updates. The smaller interval generates higher CPU load." | ||||||
| msgstr "D<EFBFBD>finit l'intervalle de mise <EFBFBD> jour de l'OSD. Un petit intervalle g<EFBFBD>n<EFBFBD>re une charge CPU plus importante." | msgstr "Définit l'intervalle de mise à jour de l'OSD. Un petit intervalle génère une charge CPU plus importante." | ||||||
|  |  | ||||||
| msgid "Analyze stream" | msgid "Analyze stream" | ||||||
| msgstr "Analyser le flux" | msgstr "Analyser le flux" | ||||||
|  |  | ||||||
| msgid "Define whether the DVB stream is analyzed and bitrates calculated." | msgid "Define whether the DVB stream is analyzed and bitrates calculated." | ||||||
| msgstr "D<EFBFBD>finit si le flux DVB est analys<EFBFBD> et le bitrates calcul<EFBFBD>." | msgstr "Définit si le flux DVB est analysé et le taux d'échantillonnage fixe calculé." | ||||||
|  |  | ||||||
| msgid "Calculation interval [0.1s]" | msgid "Calculation interval [0.1s]" | ||||||
| msgstr "Intervalle de calcul (0,1s)" | msgstr "Intervalle de calcul (0,1s)" | ||||||
|  |  | ||||||
| msgid "Define an interval for calculation. The bigger interval generates more stable values." | msgid "Define an interval for calculation. The bigger interval generates more stable values." | ||||||
| msgstr "D<EFBFBD>finit l'intervalle de cacul. Un plus grand intervalle g<EFBFBD>n<EFBFBD>re une valeur plus stable." | msgstr "Définit l'intervalle de cacul. Un plus grand intervalle génère une valeur plus stable." | ||||||
|  |  | ||||||
| msgid "Use SVDRP service" | msgid "Use SVDRP service" | ||||||
| msgstr "Utiliser le service SVDRP" | msgstr "Utiliser le service SVDRP" | ||||||
|  |  | ||||||
| msgid "Define whether the SVDRP service is used in client/server setups." | msgid "Define whether the SVDRP service is used in client/server setups." | ||||||
| msgstr "D<EFBFBD>finit si le service SVDRP est utilis<EFBFBD> en configuration client/serveur." | msgstr "Définit si le service SVDRP est utilisé dans la configuration client/serveur." | ||||||
|  |  | ||||||
| msgid "SVDRP service port" | msgid "SVDRP service port" | ||||||
| msgstr "Port du service SVDRP" | msgstr "Port du service SVDRP" | ||||||
|  |  | ||||||
| msgid "Define the port number of SVDRP service." | msgid "Define the port number of SVDRP service." | ||||||
| msgstr "D<EFBFBD>finit le port d'<EFBFBD>coute du service SVDRP." | msgstr "Définit le port d'écoute du service SVDRP." | ||||||
|  |  | ||||||
| msgid "SVDRP service IP" | msgid "SVDRP service IP" | ||||||
| msgstr "IP du service SVDRP" | msgstr "IP du service SVDRP" | ||||||
|  |  | ||||||
| msgid "Define the IP address of SVDRP service." | msgid "Define the IP address of SVDRP service." | ||||||
| msgstr "D<EFBFBD>finit l'adresse IP du service SVDRP." | msgstr "Définit l'adresse IP du service SVDRP." | ||||||
|  |  | ||||||
| msgid "Help" | msgid "Help" | ||||||
| msgstr "Aide" | msgstr "Aide" | ||||||
|  |  | ||||||
| msgid "Video" | msgid "Video" | ||||||
| msgstr "Vid<EFBFBD>o" | msgstr "Vidéo" | ||||||
|  |  | ||||||
| msgid "Audio" | msgid "Audio" | ||||||
| msgstr "Audio" | msgstr "Audio" | ||||||
|  |  | ||||||
| msgid "Transponder Information" | msgid "Transponder Information" | ||||||
| msgstr "Information transpondeur" | msgstr "Information du transpondeur" | ||||||
|  |  | ||||||
| msgid "Apid" | msgid "Apid" | ||||||
| msgstr "Apid" | msgstr "Apid" | ||||||
| @@ -175,38 +180,41 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Coderate" | msgstr "Coderate" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Protocol" | ||||||
| msgstr "Information flux" | msgstr "Protocole" | ||||||
|  |  | ||||||
| msgid "Video Stream" |  | ||||||
| msgstr "Flux vid<69>o" |  | ||||||
|  |  | ||||||
| msgid "Codec" |  | ||||||
| msgstr "" |  | ||||||
|  |  | ||||||
| msgid "Bitrate" | msgid "Bitrate" | ||||||
| msgstr "Bitrate" | msgstr "Taux d'échantillonnage fixe" | ||||||
|  |  | ||||||
|  | msgid "Stream Information" | ||||||
|  | msgstr "Information du flux" | ||||||
|  |  | ||||||
|  | msgid "Video Stream" | ||||||
|  | msgstr "Flux vidéo" | ||||||
|  |  | ||||||
|  | msgid "Codec" | ||||||
|  | msgstr "Codec" | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "Proportions d'image" | msgstr "Format de l'image" | ||||||
|  |  | ||||||
| msgid "Frame Rate" | msgid "Frame Rate" | ||||||
| msgstr "Rafra<EFBFBD>chissement" | msgstr "Rafraîchissement" | ||||||
|  |  | ||||||
| msgid "Video Format" | msgid "Video Format" | ||||||
| msgstr "Standard vid<EFBFBD>o" | msgstr "Standard vidéo" | ||||||
|  |  | ||||||
| msgid "Resolution" | msgid "Resolution" | ||||||
| msgstr "R<EFBFBD>solution" | msgstr "Résolution" | ||||||
|  |  | ||||||
| msgid "Audio Stream" | msgid "Audio Stream" | ||||||
| msgstr "Flux audio" | msgstr "Flux audio" | ||||||
|  |  | ||||||
| msgid "Channel Mode" | msgid "Channel Mode" | ||||||
| msgstr "" | msgstr "Mode chaîne" | ||||||
|  |  | ||||||
| msgid "Sampling Frequency" | msgid "Sampling Frequency" | ||||||
| msgstr "Fr<EFBFBD>quence d'<EFBFBD>chantillonage" | msgstr "Fréquence d'échantillonage" | ||||||
|  |  | ||||||
| msgid "AC-3 Stream" | msgid "AC-3 Stream" | ||||||
| msgstr "Flux AC-3" | msgstr "Flux AC-3" | ||||||
| @@ -239,64 +247,64 @@ msgid "Analog" | |||||||
| msgstr "Analogique" | msgstr "Analogique" | ||||||
|  |  | ||||||
| msgid "MPEG-2" | msgid "MPEG-2" | ||||||
| msgstr "" | msgstr "MPEG-2" | ||||||
|  |  | ||||||
| msgid "H.264" | msgid "H.264" | ||||||
| msgstr "" | msgstr "H.264" | ||||||
|  |  | ||||||
| msgid "MPEG-1 Layer I" | msgid "MPEG-1 Layer I" | ||||||
| msgstr "" | msgstr "MPEG-1 Layer I" | ||||||
|  |  | ||||||
| msgid "MPEG-1 Layer II" | msgid "MPEG-1 Layer II" | ||||||
| msgstr "" | msgstr "MPEG-1 Layer II" | ||||||
|  |  | ||||||
| msgid "MPEG-1 Layer III" | msgid "MPEG-1 Layer III" | ||||||
| msgstr "" | msgstr "MPEG-1 Layer III" | ||||||
|  |  | ||||||
| msgid "MPEG-2 Layer I" | msgid "MPEG-2 Layer I" | ||||||
| msgstr "" | msgstr "MPEG-2 Layer I" | ||||||
|  |  | ||||||
| msgid "MPEG-2 Layer II" | msgid "MPEG-2 Layer II" | ||||||
| msgstr "" | msgstr "MPEG-2 Layer II" | ||||||
|  |  | ||||||
| msgid "MPEG-2 Layer III" | msgid "MPEG-2 Layer III" | ||||||
| msgstr "" | msgstr "MPEG-2 Layer III" | ||||||
|  |  | ||||||
| msgid "HE-AAC" | msgid "HE-AAC" | ||||||
| msgstr "" | msgstr "HE-AAC" | ||||||
|  |  | ||||||
| msgid "LATM" | msgid "LATM" | ||||||
| msgstr "" | msgstr "LATM" | ||||||
|  |  | ||||||
| msgid "stereo" | msgid "stereo" | ||||||
| msgstr "" | msgstr "stéréo" | ||||||
|  |  | ||||||
| msgid "joint Stereo" | msgid "joint Stereo" | ||||||
| msgstr "" | msgstr "joint Stereo" | ||||||
|  |  | ||||||
| msgid "dual" | msgid "dual" | ||||||
| msgstr "" | msgstr "double" | ||||||
|  |  | ||||||
| msgid "mono" | msgid "mono" | ||||||
| msgstr "" | msgstr "mono" | ||||||
|  |  | ||||||
| msgid "interlaced" | msgid "interlaced" | ||||||
| msgstr "" | msgstr "entrelacé" | ||||||
|  |  | ||||||
| msgid "progressive" | msgid "progressive" | ||||||
| msgstr "" | msgstr "progressif" | ||||||
|  |  | ||||||
| msgid "reserved" | msgid "reserved" | ||||||
| msgstr "r<EFBFBD>serv<EFBFBD>" | msgstr "réservé" | ||||||
|  |  | ||||||
| msgid "extended" | msgid "extended" | ||||||
| msgstr "" | msgstr "étendu" | ||||||
|  |  | ||||||
| msgid "unknown" | msgid "unknown" | ||||||
| msgstr "inconnu" | msgstr "inconnu" | ||||||
|  |  | ||||||
| msgid "component" | msgid "component" | ||||||
| msgstr "" | msgstr "composant" | ||||||
|  |  | ||||||
| msgid "PAL" | msgid "PAL" | ||||||
| msgstr "PAL" | msgstr "PAL" | ||||||
| @@ -305,10 +313,10 @@ msgid "NTSC" | |||||||
| msgstr "NTSC" | msgstr "NTSC" | ||||||
|  |  | ||||||
| msgid "SECAM" | msgid "SECAM" | ||||||
| msgstr "" | msgstr "SECAM" | ||||||
|  |  | ||||||
| msgid "MAC" | msgid "MAC" | ||||||
| msgstr "" | msgstr "MAC" | ||||||
|  |  | ||||||
| msgid "Hz" | msgid "Hz" | ||||||
| msgstr "Hz" | msgstr "Hz" | ||||||
| @@ -368,7 +376,7 @@ msgid "dB" | |||||||
| msgstr "dB" | msgstr "dB" | ||||||
|  |  | ||||||
| msgid "not indicated" | msgid "not indicated" | ||||||
| msgstr "non indiqu<EFBFBD>" | msgstr "non indiqué" | ||||||
|  |  | ||||||
| msgid "MHz" | msgid "MHz" | ||||||
| msgstr "MHz" | msgstr "MHz" | ||||||
|   | |||||||
							
								
								
									
										392
									
								
								po/hu_HU.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										392
									
								
								po/hu_HU.po
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,392 @@ | |||||||
|  | # VDR plugin language source file. | ||||||
|  | # Copyright (C) 2007 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 1.7.19\n" | ||||||
|  | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
|  | "POT-Creation-Date: 2010-10-10 10:10+0300\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" | ||||||
|  | "Language: hu\n" | ||||||
|  | "MIME-Version: 1.0\n" | ||||||
|  | "Content-Type: text/plain; charset=iso-8859-2\n" | ||||||
|  | "Content-Transfer-Encoding: 8bit\n" | ||||||
|  | "X-Poedit-Language: Hungarian\n" | ||||||
|  | "X-Poedit-Country: HUNGARY\n" | ||||||
|  | "X-Poedit-SourceCharset: iso-8859-2\n" | ||||||
|  |  | ||||||
|  | msgid "DVB Signal Information Monitor (OSD)" | ||||||
|  | msgstr "DVB jelszint monitor (OSD)" | ||||||
|  |  | ||||||
|  | msgid "Signal Information" | ||||||
|  | msgstr "Jel inform<72>ci<63>" | ||||||
|  |  | ||||||
|  | msgid "Femon not available" | ||||||
|  | msgstr "Femon nem el<65>rhet<65>" | ||||||
|  |  | ||||||
|  | msgid "basic" | ||||||
|  | msgstr "alap" | ||||||
|  |  | ||||||
|  | msgid "transponder" | ||||||
|  | msgstr "transponder" | ||||||
|  |  | ||||||
|  | msgid "stream" | ||||||
|  | msgstr "adatfolyam (stream)" | ||||||
|  |  | ||||||
|  | msgid "AC-3" | ||||||
|  | msgstr "AC-3" | ||||||
|  |  | ||||||
|  | msgid "Classic" | ||||||
|  | msgstr "Klasszikus" | ||||||
|  |  | ||||||
|  | msgid "Elchi" | ||||||
|  | msgstr "Elchi" | ||||||
|  |  | ||||||
|  | msgid "ST:TNG" | ||||||
|  | msgstr "ST:TNG" | ||||||
|  |  | ||||||
|  | msgid "DeepBlue" | ||||||
|  | msgstr "S<>t<EFBFBD>tk<74>k" | ||||||
|  |  | ||||||
|  | msgid "Moronimo" | ||||||
|  | msgstr "Moronimo" | ||||||
|  |  | ||||||
|  | msgid "Enigma" | ||||||
|  | msgstr "Enigma" | ||||||
|  |  | ||||||
|  | msgid "EgalsTry" | ||||||
|  | msgstr "EgalsTry" | ||||||
|  |  | ||||||
|  | msgid "Duotone" | ||||||
|  | msgstr "K<>tsz<73>n<EFBFBD> (duotone)" | ||||||
|  |  | ||||||
|  | msgid "SilverGreen" | ||||||
|  | msgstr "Ez<45>st-z<>ld" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
|  | msgid "Hide main menu entry" | ||||||
|  | msgstr "Men<65>bejegyz<79>s elrejt<6A>se" | ||||||
|  |  | ||||||
|  | msgid "Define whether the main menu entry is hidden." | ||||||
|  | msgstr "Meghat<61>rozza, hogy megjelenjen-e a f<>men<65>ben." | ||||||
|  |  | ||||||
|  | msgid "Default display mode" | ||||||
|  | msgstr "Alap<61>rtelmezett megjelen<65>t<EFBFBD>si m<>d" | ||||||
|  |  | ||||||
|  | msgid "Define the default display mode at startup." | ||||||
|  | msgstr "Bekapcsol<6F>skor melyik megjelen<65>t<EFBFBD>si m<>ddal induljon." | ||||||
|  |  | ||||||
|  | msgid "Define the used OSD skin." | ||||||
|  | msgstr "Az OSD b<>r kiv<69>laszt<7A>sa." | ||||||
|  |  | ||||||
|  | msgid "Define the used OSD theme." | ||||||
|  | msgstr "Az OSD t<>ma kiv<69>laszt<7A>sa." | ||||||
|  |  | ||||||
|  | msgid "Position" | ||||||
|  | msgstr "Elhelyez<65>s" | ||||||
|  |  | ||||||
|  | msgid "Define the position of OSD." | ||||||
|  | msgstr "A k<>perny<6E>elhelyez<65>s kiv<69>laszt<7A>sa" | ||||||
|  |  | ||||||
|  | msgid "Downscale OSD size [%]" | ||||||
|  | msgstr "Az OSD lem<65>retez<65>se [%]" | ||||||
|  |  | ||||||
|  | msgid "Define the downscale ratio for OSD size." | ||||||
|  | msgstr "Az OSD m<>ret<65>nek lem<65>retez<65>se sz<73>zal<61>kban." | ||||||
|  |  | ||||||
|  | msgid "Red limit [%]" | ||||||
|  | msgstr "Piros sz<73>nt hat<61>ra [%]" | ||||||
|  |  | ||||||
|  | msgid "Define a limit for red bar, which is used to indicate a bad signal." | ||||||
|  | msgstr "A piros s<>v hat<61>r<EFBFBD>nak be<62>ll<6C>t<EFBFBD>sa, ezt haszn<7A>ljuk a nem el<65>gs<67>ges jelszint kijelz<6C>s<EFBFBD>hez." | ||||||
|  |  | ||||||
|  | msgid "Green limit [%]" | ||||||
|  | msgstr "Z<>ld sz<73>nt hat<61>ra [%]" | ||||||
|  |  | ||||||
|  | msgid "Define a limit for green bar, which is used to indicate a good signal." | ||||||
|  | msgstr "A z<>ld s<>v hat<61>r<EFBFBD>nak be<62>ll<6C>t<EFBFBD>sa, ezt haszn<7A>ljuk az el<65>gs<67>ges jelszint kijelz<6C>s<EFBFBD>hez." | ||||||
|  |  | ||||||
|  | msgid "OSD update interval [0.1s]" | ||||||
|  | msgstr "OSD friss<73>t<EFBFBD>s<EFBFBD>nek gyakoris<69>ga [0.1mp]" | ||||||
|  |  | ||||||
|  | msgid "Define an interval for OSD updates. The smaller interval generates higher CPU load." | ||||||
|  | msgstr "Meghat<61>rozza, hogy milyen gyakran legyen friss<73>tve az OSD. Kisebb intervallum nagyobb CPU terhel<65>st eredm<64>nyez." | ||||||
|  |  | ||||||
|  | msgid "Analyze stream" | ||||||
|  | msgstr "Adatfolyam (stream) elemz<6D>se." | ||||||
|  |  | ||||||
|  | msgid "Define whether the DVB stream is analyzed and bitrates calculated." | ||||||
|  | msgstr "Meghat<61>rozza, hogy a DVB adatfolyam elemz<6D>sre ker<65>lj<6C>n-e, <20>s sz<73>mol<6F>djon-e bitr<74>ta." | ||||||
|  |  | ||||||
|  | msgid "Calculation interval [0.1s]" | ||||||
|  | msgstr "Sz<53>m<EFBFBD>t<EFBFBD>s gyakoris<69>ga [0.1mp]" | ||||||
|  |  | ||||||
|  | msgid "Define an interval for calculation. The bigger interval generates more stable values." | ||||||
|  | msgstr "Meghat<61>rozza, hogy milyen gyakran t<>rt<72>njen sz<73>m<EFBFBD>t<EFBFBD>s. Nagyobb intervallum pontosabb <20>rt<72>keket eredm<64>nyez." | ||||||
|  |  | ||||||
|  | msgid "Use SVDRP service" | ||||||
|  | msgstr "SVDRP szolg<6C>ltat<61>s haszn<7A>lata." | ||||||
|  |  | ||||||
|  | msgid "Define whether the SVDRP service is used in client/server setups." | ||||||
|  | msgstr "Ki-bekapcsolja az SVDRP szolg<6C>ltat<61>st, amely kliens-szerver k<>rnyezetben haszn<7A>latos." | ||||||
|  |  | ||||||
|  | msgid "SVDRP service port" | ||||||
|  | msgstr "Az SVDRP szolg<6C>ltat<61>s portja" | ||||||
|  |  | ||||||
|  | msgid "Define the port number of SVDRP service." | ||||||
|  | msgstr "Meghat<61>rozza, hogy melyik porton fut az SVDRP." | ||||||
|  |  | ||||||
|  | msgid "SVDRP service IP" | ||||||
|  | msgstr "Az SVDRP szolg<6C>ltat<61>s IP-je" | ||||||
|  |  | ||||||
|  | msgid "Define the IP address of SVDRP service." | ||||||
|  | msgstr "Meghat<61>rozza, hogy milyen IP c<>men fut az SVDRP szolg<6C>ltat<61>s." | ||||||
|  |  | ||||||
|  | msgid "Help" | ||||||
|  | msgstr "Seg<65>ts<74>g" | ||||||
|  |  | ||||||
|  | msgid "Video" | ||||||
|  | msgstr "Video" | ||||||
|  |  | ||||||
|  | msgid "Audio" | ||||||
|  | msgstr "Audio" | ||||||
|  |  | ||||||
|  | msgid "Transponder Information" | ||||||
|  | msgstr "Transponder inf<6E>" | ||||||
|  |  | ||||||
|  | msgid "Apid" | ||||||
|  | msgstr "Apid" | ||||||
|  |  | ||||||
|  | msgid "Dpid" | ||||||
|  | msgstr "Dpid" | ||||||
|  |  | ||||||
|  | msgid "Spid" | ||||||
|  | msgstr "Spid" | ||||||
|  |  | ||||||
|  | msgid "Nid" | ||||||
|  | msgstr "Nid" | ||||||
|  |  | ||||||
|  | msgid "Tid" | ||||||
|  | msgstr "Tid" | ||||||
|  |  | ||||||
|  | msgid "Rid" | ||||||
|  | msgstr "Rid" | ||||||
|  |  | ||||||
|  | msgid "Coderate" | ||||||
|  | msgstr "Coderate" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Bitr<74>ta" | ||||||
|  |  | ||||||
|  | msgid "Stream Information" | ||||||
|  | msgstr "Adatfolyam inf<6E>" | ||||||
|  |  | ||||||
|  | msgid "Video Stream" | ||||||
|  | msgstr "Vide<64> adatfolyam" | ||||||
|  |  | ||||||
|  | msgid "Codec" | ||||||
|  | msgstr "Kodek" | ||||||
|  |  | ||||||
|  | msgid "Aspect Ratio" | ||||||
|  | msgstr "M<>retar<61>ny" | ||||||
|  |  | ||||||
|  | msgid "Frame Rate" | ||||||
|  | msgstr "K<>pfriss<73>t<EFBFBD>s" | ||||||
|  |  | ||||||
|  | msgid "Video Format" | ||||||
|  | msgstr "Vide<64> form<72>tum" | ||||||
|  |  | ||||||
|  | msgid "Resolution" | ||||||
|  | msgstr "Felbont<6E>s" | ||||||
|  |  | ||||||
|  | msgid "Audio Stream" | ||||||
|  | msgstr "Hang adatfolyam" | ||||||
|  |  | ||||||
|  | msgid "Channel Mode" | ||||||
|  | msgstr "Hangs<67>v m<>d" | ||||||
|  |  | ||||||
|  | msgid "Sampling Frequency" | ||||||
|  | msgstr "Mintav<61>telez<65>si frekvencia" | ||||||
|  |  | ||||||
|  | msgid "AC-3 Stream" | ||||||
|  | msgstr "AC-3 adatfolyam" | ||||||
|  |  | ||||||
|  | msgid "Bit Stream Mode" | ||||||
|  | msgstr "Bit Stream m<>d" | ||||||
|  |  | ||||||
|  | msgid "Audio Coding Mode" | ||||||
|  | msgstr "Hang k<>dol<6F>si m<>d" | ||||||
|  |  | ||||||
|  | msgid "Center Mix Level" | ||||||
|  | msgstr "K<>z<EFBFBD>pcsatorna kever<65>si jelszintje" | ||||||
|  |  | ||||||
|  | msgid "Surround Mix Level" | ||||||
|  | msgstr "T<>rhat<61>s csatorna kever<65>si szintje" | ||||||
|  |  | ||||||
|  | msgid "Dolby Surround Mode" | ||||||
|  | msgstr "Dolby Surround m<>d" | ||||||
|  |  | ||||||
|  | msgid "Low Frequency Effects" | ||||||
|  | msgstr "LFE - alacsony frekvenci<63>s effektek" | ||||||
|  |  | ||||||
|  | msgid "Dialogue Normalization" | ||||||
|  | msgstr "P<>rbesz<73>d jelszint normaliz<69>l<EFBFBD>sa" | ||||||
|  |  | ||||||
|  | msgid "Fixed" | ||||||
|  | msgstr "<22>lland<6E>" | ||||||
|  |  | ||||||
|  | msgid "Analog" | ||||||
|  | msgstr "analog" | ||||||
|  |  | ||||||
|  | msgid "MPEG-2" | ||||||
|  | msgstr "MPEG-2" | ||||||
|  |  | ||||||
|  | msgid "H.264" | ||||||
|  | msgstr "H.264" | ||||||
|  |  | ||||||
|  | msgid "MPEG-1 Layer I" | ||||||
|  | msgstr "MPEG-1 Layer I" | ||||||
|  |  | ||||||
|  | msgid "MPEG-1 Layer II" | ||||||
|  | msgstr "MPEG-1 Layer II" | ||||||
|  |  | ||||||
|  | msgid "MPEG-1 Layer III" | ||||||
|  | msgstr "MPEG-1 Layer III" | ||||||
|  |  | ||||||
|  | msgid "MPEG-2 Layer I" | ||||||
|  | msgstr "MPEG-2 Layer I" | ||||||
|  |  | ||||||
|  | msgid "MPEG-2 Layer II" | ||||||
|  | msgstr "MPEG-2 Layer II" | ||||||
|  |  | ||||||
|  | msgid "MPEG-2 Layer III" | ||||||
|  | msgstr "MPEG-2 Layer III" | ||||||
|  |  | ||||||
|  | msgid "HE-AAC" | ||||||
|  | msgstr "HE-AAC" | ||||||
|  |  | ||||||
|  | msgid "LATM" | ||||||
|  | msgstr "LATM" | ||||||
|  |  | ||||||
|  | msgid "stereo" | ||||||
|  | msgstr "sztere<72>" | ||||||
|  |  | ||||||
|  | msgid "joint Stereo" | ||||||
|  | msgstr "joint sztere<72>" | ||||||
|  |  | ||||||
|  | msgid "dual" | ||||||
|  | msgstr "du<64>l" | ||||||
|  |  | ||||||
|  | msgid "mono" | ||||||
|  | msgstr "mon<6F>" | ||||||
|  |  | ||||||
|  | msgid "interlaced" | ||||||
|  | msgstr "v<>ltotts<74>vos" | ||||||
|  |  | ||||||
|  | msgid "progressive" | ||||||
|  | msgstr "progressz<73>v" | ||||||
|  |  | ||||||
|  | msgid "reserved" | ||||||
|  | msgstr "fenntartott" | ||||||
|  |  | ||||||
|  | msgid "extended" | ||||||
|  | msgstr "kiterjesztett" | ||||||
|  |  | ||||||
|  | msgid "unknown" | ||||||
|  | msgstr "ismeretlen" | ||||||
|  |  | ||||||
|  | msgid "component" | ||||||
|  | msgstr "komponens" | ||||||
|  |  | ||||||
|  | msgid "PAL" | ||||||
|  | msgstr "PAL" | ||||||
|  |  | ||||||
|  | msgid "NTSC" | ||||||
|  | msgstr "NTSC" | ||||||
|  |  | ||||||
|  | msgid "SECAM" | ||||||
|  | msgstr "SECAM" | ||||||
|  |  | ||||||
|  | msgid "MAC" | ||||||
|  | msgstr "MAC" | ||||||
|  |  | ||||||
|  | msgid "Hz" | ||||||
|  | msgstr "Hz" | ||||||
|  |  | ||||||
|  | msgid "Complete Main (CM)" | ||||||
|  | msgstr "Mestercsatorna (CM)" | ||||||
|  |  | ||||||
|  | msgid "Music and Effects (ME)" | ||||||
|  | msgstr "Zene <20>s effektek (ME)" | ||||||
|  |  | ||||||
|  | msgid "Visually Impaired (VI)" | ||||||
|  | msgstr "L<>t<EFBFBD>sk<73>rosultak (VI)" | ||||||
|  |  | ||||||
|  | msgid "Hearing Impaired (HI)" | ||||||
|  | msgstr "Hall<6C>sk<73>rosultak (HI)" | ||||||
|  |  | ||||||
|  | msgid "Dialogue (D)" | ||||||
|  | msgstr "P<>rbesz<73>d (D)" | ||||||
|  |  | ||||||
|  | msgid "Commentary (C)" | ||||||
|  | msgstr "Narr<72>ci<63> (C)" | ||||||
|  |  | ||||||
|  | msgid "Emergency (E)" | ||||||
|  | msgstr "S<>rg<72>ss<73>gi (E)" | ||||||
|  |  | ||||||
|  | msgid "Voice Over (VO)" | ||||||
|  | msgstr "R<>besz<73>l<EFBFBD>s (VO)" | ||||||
|  |  | ||||||
|  | msgid "Karaoke" | ||||||
|  | msgstr "Karaoke" | ||||||
|  |  | ||||||
|  | msgid "Ch1" | ||||||
|  | msgstr "Ch1" | ||||||
|  |  | ||||||
|  | msgid "Ch2" | ||||||
|  | msgstr "Ch2" | ||||||
|  |  | ||||||
|  | msgid "C" | ||||||
|  | msgstr "K" | ||||||
|  |  | ||||||
|  | msgid "L" | ||||||
|  | msgstr "B" | ||||||
|  |  | ||||||
|  | msgid "R" | ||||||
|  | msgstr "J" | ||||||
|  |  | ||||||
|  | msgid "S" | ||||||
|  | msgstr "S" | ||||||
|  |  | ||||||
|  | msgid "SL" | ||||||
|  | msgstr "BS" | ||||||
|  |  | ||||||
|  | msgid "SR" | ||||||
|  | msgstr "JS" | ||||||
|  |  | ||||||
|  | msgid "dB" | ||||||
|  | msgstr "dB" | ||||||
|  |  | ||||||
|  | msgid "not indicated" | ||||||
|  | msgstr "nincs felt<6C>ntetve" | ||||||
|  |  | ||||||
|  | msgid "MHz" | ||||||
|  | msgstr "MHz" | ||||||
|  |  | ||||||
|  | msgid "free" | ||||||
|  | msgstr "szabad" | ||||||
|  |  | ||||||
|  | msgid "Mbit/s" | ||||||
|  | msgstr "Mbit/s" | ||||||
|  |  | ||||||
|  | msgid "kbit/s" | ||||||
|  | msgstr "kbit/s" | ||||||
							
								
								
									
										14
									
								
								po/it_IT.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/it_IT.po
									
									
									
									
									
								
							| @@ -6,7 +6,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -68,6 +68,9 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "Nascondi voce menu principale" | msgstr "Nascondi voce menu principale" | ||||||
|  |  | ||||||
| @@ -179,6 +182,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Coderate" | msgstr "Coderate" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Bitrate" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "Informazioni flusso" | msgstr "Informazioni flusso" | ||||||
|  |  | ||||||
| @@ -188,9 +197,6 @@ msgstr "Flusso video" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "Codifica" | msgstr "Codifica" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "Bitrate" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "Formato immagine" | msgstr "Formato immagine" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								po/lt_LT.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/lt_LT.po
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -64,6 +64,9 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "Paslėpti pagrindinio meniu įrašus" | msgstr "Paslėpti pagrindinio meniu įrašus" | ||||||
|  |  | ||||||
| @@ -175,6 +178,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Kodavimo dažnis" | msgstr "Kodavimo dažnis" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Kokybė" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "Srauto informacija" | msgstr "Srauto informacija" | ||||||
|  |  | ||||||
| @@ -184,9 +193,6 @@ msgstr "Video srautas" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "Kodekas" | msgstr "Kodekas" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "Kokybė" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "Proporcijos" | msgstr "Proporcijos" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								po/ru_RU.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/ru_RU.po
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -64,6 +64,9 @@ msgstr "Duotone" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "SilverGreen" | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | 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>" | msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" | ||||||
|  |  | ||||||
| @@ -175,6 +178,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "Coderate" | msgstr "Coderate" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| @@ -184,9 +193,6 @@ msgstr "" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										399
									
								
								po/uk_UA.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										399
									
								
								po/uk_UA.po
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,399 @@ | |||||||
|  | # Ukrainian translation. | ||||||
|  | # Copyright (C) 2010 The Claws Mail Team | ||||||
|  | # This file is distributed under the same license as the claws-mail package. | ||||||
|  | # Yarema aka Knedlyk <yupadmin@gmail.com>, 2010. | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
|  | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
|  | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
|  | "PO-Revision-Date: 2010-10-10 10:10+0300\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" | ||||||
|  |  | ||||||
|  | msgid "DVB Signal Information Monitor (OSD)" | ||||||
|  | msgstr "Монітор інформації про DVB сигнал" | ||||||
|  |  | ||||||
|  | msgid "Signal Information" | ||||||
|  | msgstr "Інформація про сигнал" | ||||||
|  |  | ||||||
|  | msgid "Femon not available" | ||||||
|  | msgstr "Femon не доступний" | ||||||
|  |  | ||||||
|  | msgid "basic" | ||||||
|  | msgstr "основне" | ||||||
|  |  | ||||||
|  | msgid "transponder" | ||||||
|  | msgstr "транспондер" | ||||||
|  |  | ||||||
|  | msgid "stream" | ||||||
|  | msgstr "потік" | ||||||
|  |  | ||||||
|  | msgid "AC-3" | ||||||
|  | msgstr "AC-3" | ||||||
|  |  | ||||||
|  | msgid "Classic" | ||||||
|  | msgstr "Класичний" | ||||||
|  |  | ||||||
|  | msgid "Elchi" | ||||||
|  | msgstr "Elchi" | ||||||
|  |  | ||||||
|  | msgid "ST:TNG" | ||||||
|  | msgstr "ST:TNG" | ||||||
|  |  | ||||||
|  | msgid "DeepBlue" | ||||||
|  | msgstr "DeepBlue" | ||||||
|  |  | ||||||
|  | msgid "Moronimo" | ||||||
|  | msgstr "Moronimo" | ||||||
|  |  | ||||||
|  | msgid "Enigma" | ||||||
|  | msgstr "Enigma" | ||||||
|  |  | ||||||
|  | msgid "EgalsTry" | ||||||
|  | msgstr "EgalsTry" | ||||||
|  |  | ||||||
|  | msgid "Duotone" | ||||||
|  | msgstr "Duotone" | ||||||
|  |  | ||||||
|  | msgid "SilverGreen" | ||||||
|  | msgstr "SilverGreen" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
|  | msgid "Hide main menu entry" | ||||||
|  | msgstr "Сховати в головному меню" | ||||||
|  |  | ||||||
|  | msgid "Define whether the main menu entry is hidden." | ||||||
|  | msgstr "Визначення, чи приховувати в головному меню" | ||||||
|  |  | ||||||
|  | msgid "Default display mode" | ||||||
|  | msgstr "Типовий режим показу" | ||||||
|  |  | ||||||
|  | msgid "Define the default display mode at startup." | ||||||
|  | msgstr "Визначення типового режиму показу при запуску" | ||||||
|  |  | ||||||
|  | msgid "Define the used OSD skin." | ||||||
|  | msgstr "Визначення шкірки для повідомлень" | ||||||
|  |  | ||||||
|  | msgid "Define the used OSD theme." | ||||||
|  | msgstr "Визначення теми повідомлень" | ||||||
|  |  | ||||||
|  | msgid "Position" | ||||||
|  | msgstr "Позиція" | ||||||
|  |  | ||||||
|  | msgid "Define the position of OSD." | ||||||
|  | msgstr "Визначити позицію показу повідомлень" | ||||||
|  |  | ||||||
|  | msgid "Downscale OSD size [%]" | ||||||
|  | msgstr "Масштаб розміру повідомлень [%]" | ||||||
|  |  | ||||||
|  | msgid "Define the downscale ratio for OSD size." | ||||||
|  | msgstr "Визначити коефіцієнт масштабування розміру повідомлень" | ||||||
|  |  | ||||||
|  | msgid "Red limit [%]" | ||||||
|  | msgstr "Червона границя [%]" | ||||||
|  |  | ||||||
|  | msgid "Define a limit for red bar, which is used to indicate a bad signal." | ||||||
|  | msgstr "Визначення границі червоної поділки, яка показує поганий сигнал." | ||||||
|  |  | ||||||
|  | msgid "Green limit [%]" | ||||||
|  | msgstr "Зелена границя [%]" | ||||||
|  |  | ||||||
|  | msgid "Define a limit for green bar, which is used to indicate a good signal." | ||||||
|  | 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 "Analyze stream" | ||||||
|  | msgstr "Аналіз потоку" | ||||||
|  |  | ||||||
|  | msgid "Define whether the DVB stream is analyzed and bitrates calculated." | ||||||
|  | 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 "Use SVDRP service" | ||||||
|  | msgstr "Використати SVDRP сервіс" | ||||||
|  |  | ||||||
|  | msgid "Define whether the SVDRP service is used in client/server setups." | ||||||
|  | msgstr "" | ||||||
|  | "Визначення чи буде використовуватися SVDRP сервіс в налаштуваннях клієнта/" | ||||||
|  | "сервера" | ||||||
|  |  | ||||||
|  | msgid "SVDRP service port" | ||||||
|  | msgstr "Порт SVDRP сервісу" | ||||||
|  |  | ||||||
|  | msgid "Define the port number of SVDRP service." | ||||||
|  | msgstr "Визначення номеру порту SVDRP сервісу" | ||||||
|  |  | ||||||
|  | msgid "SVDRP service IP" | ||||||
|  | msgstr "IP сервісу SVDRP" | ||||||
|  |  | ||||||
|  | msgid "Define the IP address of SVDRP service." | ||||||
|  | msgstr "Визначення IP адреси сервісу SVDRP." | ||||||
|  |  | ||||||
|  | msgid "Help" | ||||||
|  | msgstr "Допомога" | ||||||
|  |  | ||||||
|  | msgid "Video" | ||||||
|  | msgstr "Відео" | ||||||
|  |  | ||||||
|  | msgid "Audio" | ||||||
|  | msgstr "Аудіо" | ||||||
|  |  | ||||||
|  | msgid "Transponder Information" | ||||||
|  | msgstr "Інформація про транспондер" | ||||||
|  |  | ||||||
|  | msgid "Apid" | ||||||
|  | msgstr "Apid" | ||||||
|  |  | ||||||
|  | msgid "Dpid" | ||||||
|  | msgstr "Dpid" | ||||||
|  |  | ||||||
|  | msgid "Spid" | ||||||
|  | msgstr "Spid" | ||||||
|  |  | ||||||
|  | msgid "Nid" | ||||||
|  | msgstr "Nid" | ||||||
|  |  | ||||||
|  | msgid "Tid" | ||||||
|  | msgstr "Tid" | ||||||
|  |  | ||||||
|  | msgid "Rid" | ||||||
|  | msgstr "Rid" | ||||||
|  |  | ||||||
|  | msgid "Coderate" | ||||||
|  | msgstr "Шв. кодування" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "Протокол" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "Бітрейт" | ||||||
|  |  | ||||||
|  | msgid "Stream Information" | ||||||
|  | msgstr "Інформація про потік" | ||||||
|  |  | ||||||
|  | msgid "Video Stream" | ||||||
|  | msgstr "Відео потік" | ||||||
|  |  | ||||||
|  | msgid "Codec" | ||||||
|  | msgstr "Кодек" | ||||||
|  |  | ||||||
|  | msgid "Aspect Ratio" | ||||||
|  | msgstr "Співвідношення сторін" | ||||||
|  |  | ||||||
|  | msgid "Frame Rate" | ||||||
|  | msgstr "Частота кадрів" | ||||||
|  |  | ||||||
|  | msgid "Video Format" | ||||||
|  | msgstr "Формат відео" | ||||||
|  |  | ||||||
|  | msgid "Resolution" | ||||||
|  | msgstr "Роздільна здатність" | ||||||
|  |  | ||||||
|  | msgid "Audio Stream" | ||||||
|  | msgstr "Аудіо потік" | ||||||
|  |  | ||||||
|  | msgid "Channel Mode" | ||||||
|  | msgstr "Режим каналу" | ||||||
|  |  | ||||||
|  | msgid "Sampling Frequency" | ||||||
|  | msgstr "Частота" | ||||||
|  |  | ||||||
|  | msgid "AC-3 Stream" | ||||||
|  | msgstr "AC-3 потік" | ||||||
|  |  | ||||||
|  | msgid "Bit Stream Mode" | ||||||
|  | msgstr "Режим бітового потоку:" | ||||||
|  |  | ||||||
|  | msgid "Audio Coding Mode" | ||||||
|  | msgstr "Режим кодування малюнка" | ||||||
|  |  | ||||||
|  | msgid "Center Mix Level" | ||||||
|  | msgstr "Рівень міксування в центрі" | ||||||
|  |  | ||||||
|  | msgid "Surround Mix Level" | ||||||
|  | msgstr "Рівень міксування заповнення" | ||||||
|  |  | ||||||
|  | msgid "Dolby Surround Mode" | ||||||
|  | msgstr "Режим Dolby Surround" | ||||||
|  |  | ||||||
|  | msgid "Low Frequency Effects" | ||||||
|  | msgstr "Ефекти низької частоти" | ||||||
|  |  | ||||||
|  | msgid "Dialogue Normalization" | ||||||
|  | msgstr "Нормалізація гучності" | ||||||
|  |  | ||||||
|  | msgid "Fixed" | ||||||
|  | msgstr "Фіксовано" | ||||||
|  |  | ||||||
|  | msgid "Analog" | ||||||
|  | msgstr "Аналог." | ||||||
|  |  | ||||||
|  | msgid "MPEG-2" | ||||||
|  | msgstr "MPEG-2" | ||||||
|  |  | ||||||
|  | msgid "H.264" | ||||||
|  | msgstr "H.264" | ||||||
|  |  | ||||||
|  | msgid "MPEG-1 Layer I" | ||||||
|  | msgstr "MPEG-1 Layer I" | ||||||
|  |  | ||||||
|  | msgid "MPEG-1 Layer II" | ||||||
|  | msgstr "MPEG-1 Layer II" | ||||||
|  |  | ||||||
|  | msgid "MPEG-1 Layer III" | ||||||
|  | msgstr "MPEG-1 Layer III" | ||||||
|  |  | ||||||
|  | msgid "MPEG-2 Layer I" | ||||||
|  | msgstr "MPEG-2 Layer I" | ||||||
|  |  | ||||||
|  | msgid "MPEG-2 Layer II" | ||||||
|  | msgstr "MPEG-2 Layer II" | ||||||
|  |  | ||||||
|  | msgid "MPEG-2 Layer III" | ||||||
|  | msgstr "MPEG-2 Layer III" | ||||||
|  |  | ||||||
|  | msgid "HE-AAC" | ||||||
|  | msgstr "HE-AAC" | ||||||
|  |  | ||||||
|  | msgid "LATM" | ||||||
|  | msgstr "LATM" | ||||||
|  |  | ||||||
|  | msgid "stereo" | ||||||
|  | msgstr "стерео" | ||||||
|  |  | ||||||
|  | msgid "joint Stereo" | ||||||
|  | msgstr "об’єднане стерео" | ||||||
|  |  | ||||||
|  | msgid "dual" | ||||||
|  | msgstr "дуальний" | ||||||
|  |  | ||||||
|  | msgid "mono" | ||||||
|  | msgstr "моно" | ||||||
|  |  | ||||||
|  | msgid "interlaced" | ||||||
|  | msgstr "черезрядкове" | ||||||
|  |  | ||||||
|  | msgid "progressive" | ||||||
|  | msgstr "прогресивне" | ||||||
|  |  | ||||||
|  | msgid "reserved" | ||||||
|  | msgstr "зарезервовано" | ||||||
|  |  | ||||||
|  | msgid "extended" | ||||||
|  | msgstr "розширено" | ||||||
|  |  | ||||||
|  | msgid "unknown" | ||||||
|  | msgstr "невідомо" | ||||||
|  |  | ||||||
|  | msgid "component" | ||||||
|  | msgstr "компонентно" | ||||||
|  |  | ||||||
|  | msgid "PAL" | ||||||
|  | msgstr "PAL" | ||||||
|  |  | ||||||
|  | msgid "NTSC" | ||||||
|  | msgstr "NTSC" | ||||||
|  |  | ||||||
|  | msgid "SECAM" | ||||||
|  | msgstr "SECAM" | ||||||
|  |  | ||||||
|  | msgid "MAC" | ||||||
|  | msgstr "MAC" | ||||||
|  |  | ||||||
|  | msgid "Hz" | ||||||
|  | msgstr "Гц" | ||||||
|  |  | ||||||
|  | msgid "Complete Main (CM)" | ||||||
|  | msgstr "Заповнення основного (CM)" | ||||||
|  |  | ||||||
|  | msgid "Music and Effects (ME)" | ||||||
|  | msgstr "Музика і ефекти (ME)" | ||||||
|  |  | ||||||
|  | msgid "Visually Impaired (VI)" | ||||||
|  | msgstr "Слабозорі (VI)" | ||||||
|  |  | ||||||
|  | msgid "Hearing Impaired (HI)" | ||||||
|  | msgstr "Погіршений слух (HI)" | ||||||
|  |  | ||||||
|  | msgid "Dialogue (D)" | ||||||
|  | msgstr "Діалог (D)" | ||||||
|  |  | ||||||
|  | msgid "Commentary (C)" | ||||||
|  | msgstr "Коментарі (C)" | ||||||
|  |  | ||||||
|  | msgid "Emergency (E)" | ||||||
|  | msgstr "Аварійне (E)" | ||||||
|  |  | ||||||
|  | msgid "Voice Over (VO)" | ||||||
|  | msgstr "Голос через (VO)" | ||||||
|  |  | ||||||
|  | msgid "Karaoke" | ||||||
|  | msgstr "Караоке" | ||||||
|  |  | ||||||
|  | msgid "Ch1" | ||||||
|  | msgstr "Кан.1" | ||||||
|  |  | ||||||
|  | msgid "Ch2" | ||||||
|  | msgstr "Кан.2" | ||||||
|  |  | ||||||
|  | msgid "C" | ||||||
|  | msgstr "C" | ||||||
|  |  | ||||||
|  | msgid "L" | ||||||
|  | msgstr "L" | ||||||
|  |  | ||||||
|  | msgid "R" | ||||||
|  | msgstr "R" | ||||||
|  |  | ||||||
|  | msgid "S" | ||||||
|  | msgstr "S" | ||||||
|  |  | ||||||
|  | msgid "SL" | ||||||
|  | msgstr "SL" | ||||||
|  |  | ||||||
|  | msgid "SR" | ||||||
|  | msgstr "Симв.шв." | ||||||
|  |  | ||||||
|  | msgid "dB" | ||||||
|  | msgstr "дБ" | ||||||
|  |  | ||||||
|  | msgid "not indicated" | ||||||
|  | msgstr "не вказано" | ||||||
|  |  | ||||||
|  | msgid "MHz" | ||||||
|  | msgstr "МГц" | ||||||
|  |  | ||||||
|  | msgid "free" | ||||||
|  | msgstr "вільний" | ||||||
|  |  | ||||||
|  | msgid "Mbit/s" | ||||||
|  | msgstr "Мбіт/c" | ||||||
|  |  | ||||||
|  | msgid "kbit/s" | ||||||
|  | msgstr "кбіт/с" | ||||||
							
								
								
									
										14
									
								
								po/zh_CN.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/zh_CN.po
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -64,6 +64,9 @@ msgstr "双色调" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "银绿" | msgstr "银绿" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "隐藏主菜单条目." | msgstr "隐藏主菜单条目." | ||||||
|  |  | ||||||
| @@ -175,6 +178,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "码速率" | msgstr "码速率" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "比特率" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "流信息" | msgstr "流信息" | ||||||
|  |  | ||||||
| @@ -184,9 +193,6 @@ msgstr "视频流" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "解码模式" | msgstr "解码模式" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "比特率" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "纵横比" | msgstr "纵横比" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								po/zh_TW.po
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | |||||||
| # | # | ||||||
| msgid "" | msgid "" | ||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: vdr-femon 1.7.10\n" | "Project-Id-Version: vdr-femon 1.7.19\n" | ||||||
| "Report-Msgid-Bugs-To: <see README>\n" | "Report-Msgid-Bugs-To: <see README>\n" | ||||||
| "POT-Creation-Date: 2010-10-10 10:10+0300\n" | "POT-Creation-Date: 2010-10-10 10:10+0300\n" | ||||||
| "PO-Revision-Date: 2010-10-10 10:10+0300\n" | "PO-Revision-Date: 2010-10-10 10:10+0300\n" | ||||||
| @@ -64,6 +64,9 @@ msgstr "雙色調" | |||||||
| msgid "SilverGreen" | msgid "SilverGreen" | ||||||
| msgstr "銀綠" | msgstr "銀綠" | ||||||
|  |  | ||||||
|  | msgid "PearlHD" | ||||||
|  | msgstr "PearlHD" | ||||||
|  |  | ||||||
| msgid "Hide main menu entry" | msgid "Hide main menu entry" | ||||||
| msgstr "隱藏主菜單條目." | msgstr "隱藏主菜單條目." | ||||||
|  |  | ||||||
| @@ -175,6 +178,12 @@ msgstr "Rid" | |||||||
| msgid "Coderate" | msgid "Coderate" | ||||||
| msgstr "碼速率" | msgstr "碼速率" | ||||||
|  |  | ||||||
|  | msgid "Protocol" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | msgid "Bitrate" | ||||||
|  | msgstr "比特率" | ||||||
|  |  | ||||||
| msgid "Stream Information" | msgid "Stream Information" | ||||||
| msgstr "流信息" | msgstr "流信息" | ||||||
|  |  | ||||||
| @@ -184,9 +193,6 @@ msgstr "視頻流" | |||||||
| msgid "Codec" | msgid "Codec" | ||||||
| msgstr "解碼模式" | msgstr "解碼模式" | ||||||
|  |  | ||||||
| msgid "Bitrate" |  | ||||||
| msgstr "比特率" |  | ||||||
|  |  | ||||||
| msgid "Aspect Ratio" | msgid "Aspect Ratio" | ||||||
| msgstr "縱橫比" | msgstr "縱橫比" | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user