mirror of
				https://github.com/rofafor/vdr-plugin-femon.git
				synced 2023-10-10 11:36:53 +00:00 
			
		
		
		
	Backported changes and fixes from version 0.1.6.
This commit is contained in:
		
							
								
								
									
										29
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -1,5 +1,6 @@ | ||||
| =================================== | ||||
| VDR Plugin 'femon' Revision History | ||||
| ----------------------------------- | ||||
| =================================== | ||||
|  | ||||
| 2004-02-15: Version 0.0.1 | ||||
|  | ||||
| @@ -58,7 +59,13 @@ VDR Plugin 'femon' Revision History | ||||
|  | ||||
| - Backported the "AC3 Stream Information" feature from version 0.1.3. | ||||
|  | ||||
| ------------------------- | ||||
| 2004-09-11: Version 0.0.7 | ||||
|  | ||||
| -  Backported changes and fixes from version 0.1.6. | ||||
|  | ||||
| =================================== | ||||
| VDR Plugin 'femon' Revision History | ||||
| =================================== | ||||
|  | ||||
| 2004-05-18: Version 0.1.0 | ||||
|  | ||||
| @@ -81,3 +88,21 @@ VDR Plugin 'femon' Revision History | ||||
| 2004-06-11: Version 0.1.3 | ||||
|  | ||||
| - Added "AC-3 Stream Information" display mode (Thanks to Lothar Englisch). | ||||
|  | ||||
| 2004-06-24: Version 0.1.4 | ||||
|  | ||||
| - Added some new symbols and beautified the old ones. | ||||
| - Added audio track selection feature. | ||||
| - Added preliminary device switching feature (disabled at the moment). | ||||
|  | ||||
| 2004-08-18: Version 0.1.5 | ||||
|  | ||||
| - Fixed OSDSTATUSWIN_XC define. | ||||
| - Added preliminary NTSC support (make NTSC_SYSTEM=1 plugins). | ||||
| - Fixed "Setup/OSD/Use Small Fonts" bug (Thanks to Winni for reporting this one). | ||||
| - Added patches directory: CA system names by Lauri Tischler. | ||||
|  | ||||
| 2004-09-11: Version 0.1.6 | ||||
|  | ||||
| - Yet Another Minor Release. | ||||
| - Integrated the CA system names patch: "Setup / Show CA System". | ||||
|   | ||||
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
								
							| @@ -11,7 +11,7 @@ PLUGIN = femon | ||||
|  | ||||
| ### 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).h | awk '{ print $$6 }' | sed -e 's/[";]//g') | ||||
|  | ||||
| ### The C++ compiler and options: | ||||
|  | ||||
| @@ -44,6 +44,10 @@ INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include | ||||
|  | ||||
| DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' | ||||
|  | ||||
| ifdef NTSC_SYSTEM | ||||
| DEFINES += -DNTSC_SYSTEM | ||||
| endif | ||||
|  | ||||
| ### The object files (add further files here): | ||||
|  | ||||
| OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o | ||||
|   | ||||
							
								
								
									
										34
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								README
									
									
									
									
									
								
							| @@ -18,7 +18,6 @@ DVB Frontend Status Monitor is a plugin that displays some signal information | ||||
| parameters of the current tuned channel on OSD. You can zap through all your | ||||
| channels and the plugin should be monitoring always the right frontend. The | ||||
| transponder and stream information are also available in advanced display modes. | ||||
| User can switch between different display modes by pressing 'OK' key. | ||||
|  | ||||
| The plugin is based on a neat console frontend status monitor application | ||||
| called 'femon' by Johannes Stezenbach (see DVB-apps/szap/femon.c for further | ||||
| @@ -31,8 +30,8 @@ Metzler Brothers. | ||||
| Terminology: | ||||
|  | ||||
| -------------------------------------------------------------- | ||||
| |## Channel Name ############################# DD 16:9 PAL ##| | ||||
| |[=====Signal Strength in %  =============|=================]| | ||||
| |## Channel Name ######################### [DD][AR][VF][A][D]| | ||||
| |[=====Signal Strength in % ==============|=================]| | ||||
| |[=====Signal-to-Noise Ratio in % ========|=================]| | ||||
| | STR: #0000 (0%)       BER: #00000000       Video: 0 Mbit/s | | ||||
| | SNR: #0000 (0%)       UNC: #00000000       Audio: 0 kbit/s | | ||||
| @@ -44,7 +43,7 @@ SNR     - Signal-to-noise ratio | ||||
| BER     - Bit error rate | ||||
| UNC     - Uncorrected blocks | ||||
| Video   - Calculated video bitrate in Mbit/s | ||||
| Audio   - Calculated audio / AC-3 bitrate in kbit/s (only first PID) | ||||
| Audio   - Calculated audio / AC-3 bitrate in kbit/s | ||||
|  | ||||
| LOCK    - Everything's working... | ||||
| SIGNAL  - Found something above the noise level | ||||
| @@ -52,15 +51,31 @@ CARRIER - Found a DVB signal | ||||
| VITERBI - FEC (forward error correction) is stable | ||||
| SYNC    - Found sync bytes | ||||
|  | ||||
| DD      - AC-3 stream (optional) | ||||
| AR      - Aspect Ratio: 1:1/4:3/16:9/2.21:1 (optional) | ||||
| VF      - Video format: PAL/NTSC (optional) | ||||
| A       - Audio track: 1..2 (optional) | ||||
| D       - Device number: 0..3 (optional) | ||||
|  | ||||
| Controls: | ||||
|  | ||||
| ChanUp/ChanDn - Switch channel up/down | ||||
| Up/Down       - Switch channel up/down | ||||
| 0-9           - Select channel | ||||
| Ok            - Switch between display modes: basic, transponder, stream, AC-3 | ||||
| Right/Left    - Switch to next/previous device that provides the current channel | ||||
| Green         - Select language (APID) | ||||
| Back          - Exit plugin | ||||
|  | ||||
| Installation: | ||||
|  | ||||
| cd /put/your/path/here/VDR/PLUGINS/src | ||||
| tar -xzf /put/your/path/here/vdr-femon-X.Y.Z.tar.gz | ||||
| tar -xzf /put/your/path/here/vdr-femon-X.Y.Z.tgz | ||||
| ln -s femon-X.Y.Z femon | ||||
| cd /put/your/path/here/VDR | ||||
| make | ||||
| make plugins | ||||
| ./vdr -Pfemon | ||||
| ./vdr -P femon | ||||
|  | ||||
| Notes: | ||||
|  | ||||
| @@ -71,3 +86,10 @@ Notes: | ||||
|   ttxtsubs, but closing and reopening the femon plugin might help temporarily as | ||||
|   well. Btw., this same thing happens with OSDTeletext plugin too :) | ||||
| - Disable the stream analyze to speed up heavy zapping sessions. | ||||
| - The signal strength and signal-to-noise ratio values are comparable only | ||||
|   between the same brand/model frontends. Due to the lack of proper frontend | ||||
|   specifications those values cannot be calculated into any real units. | ||||
| - Shrinked OSD is available for NTSC users: make NTSC_SYSTEM=1 | ||||
| - The device switching feature is still non-functional. | ||||
|  | ||||
| "Femon - A real womon who lives according to her natural feminine inclinations." | ||||
|   | ||||
							
								
								
									
										7
									
								
								femon.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								femon.c
									
									
									
									
									
								
							| @@ -12,7 +12,7 @@ | ||||
| #include "femonosd.h" | ||||
| #include "femon.h" | ||||
|  | ||||
| #if VDRVERSNUM >= 10307 | ||||
| #if VDRVERSNUM && VDRVERSNUM >= 10307 | ||||
| #error "You don't exist! Go away!" | ||||
| #endif | ||||
|  | ||||
| @@ -71,6 +71,7 @@ bool cPluginFemon::SetupParse(const char *Name, const char *Value) | ||||
|   else if (!strcasecmp(Name, "SyslogOutput"))   femonConfig.syslogoutput   = atoi(Value); | ||||
|   else if (!strcasecmp(Name, "DisplayMode"))    femonConfig.displaymode    = atoi(Value); | ||||
|   else if (!strcasecmp(Name, "Position"))       femonConfig.position       = atoi(Value); | ||||
|   else if (!strcasecmp(Name, "ShowCASystem"))   femonConfig.showcasystem   = atoi(Value); | ||||
|   else if (!strcasecmp(Name, "RedLimit"))       femonConfig.redlimit       = atoi(Value); | ||||
|   else if (!strcasecmp(Name, "GreenLimit"))     femonConfig.greenlimit     = atoi(Value); | ||||
|   else if (!strcasecmp(Name, "UpdateInterval")) femonConfig.updateinterval = atoi(Value); | ||||
| @@ -101,6 +102,7 @@ void cMenuFemonSetup::Setup(void) | ||||
|   Add(new cMenuEditBoolItem(  tr("Use Syslog Output"),           &femonConfig.syslogoutput,   tr("no"),      tr("yes"))); | ||||
|   Add(new cMenuEditStraItem(  tr("Default Display Mode"),        &femonConfig.displaymode,    modeMaxNumber, dispmodes)); | ||||
|   Add(new cMenuEditBoolItem(  tr("Position"),                    &femonConfig.position,       tr("bottom"),  tr("top"))); | ||||
|   Add(new cMenuEditBoolItem(  tr("Show CA System"),              &femonConfig.showcasystem,   tr("no"),      tr("yes"))); | ||||
|   Add(new cMenuEditIntItem(   tr("Red Limit [%]"),               &femonConfig.redlimit,       1,             50)); | ||||
|   Add(new cMenuEditIntItem(   tr("Green Limit [%]"),             &femonConfig.greenlimit,     51,            100)); | ||||
|   Add(new cMenuEditIntItem(   tr("OSD Update Interval [0.1s]"),  &femonConfig.updateinterval, 1,             100)); | ||||
| @@ -116,8 +118,9 @@ void cMenuFemonSetup::Store(void) | ||||
| { | ||||
|   SetupStore("HideMenu",       femonConfig.hidemenu); | ||||
|   SetupStore("SyslogOutput",   femonConfig.syslogoutput); | ||||
|   SetupStore("Position",       femonConfig.position); | ||||
|   SetupStore("DisplayMode",    femonConfig.displaymode); | ||||
|   SetupStore("Position",       femonConfig.position); | ||||
|   SetupStore("ShowCASystem",   femonConfig.showcasystem); | ||||
|   SetupStore("RedLimit",       femonConfig.redlimit); | ||||
|   SetupStore("GreenLimit",     femonConfig.greenlimit); | ||||
|   SetupStore("UpdateInterval", femonConfig.updateinterval); | ||||
|   | ||||
							
								
								
									
										2
									
								
								femon.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								femon.h
									
									
									
									
									
								
							| @@ -11,7 +11,7 @@ | ||||
|  | ||||
| #include <vdr/plugin.h> | ||||
|  | ||||
| static const char *VERSION        = "0.0.6"; | ||||
| static const char *VERSION        = "0.0.7"; | ||||
| static const char *DESCRIPTION    = "DVB Signal Information Monitor (OSD)"; | ||||
| static const char *MAINMENUENTRY  = "Signal Information"; | ||||
|  | ||||
|   | ||||
| @@ -21,4 +21,5 @@ cFemonConfig::cFemonConfig(void) | ||||
|   analyzestream  = 1; | ||||
|   calcinterval   = 20; | ||||
|   syslogoutput   = 0; | ||||
|   showcasystem   = 0; | ||||
| } | ||||
|   | ||||
| @@ -30,6 +30,7 @@ public: | ||||
|   int analyzestream; | ||||
|   int calcinterval; | ||||
|   int syslogoutput; | ||||
|   int showcasystem; | ||||
| }; | ||||
|  | ||||
| extern cFemonConfig femonConfig; | ||||
|   | ||||
							
								
								
									
										260
									
								
								femoni18n.c
									
									
									
									
									
								
							
							
						
						
									
										260
									
								
								femoni18n.c
									
									
									
									
									
								
							| @@ -1627,6 +1627,266 @@ const tI18nPhrase Phrases[] = { | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "Show CA System", // English | ||||
|     "CA System anzeigen", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "N<EFBFBD>yt<EFBFBD> salausj<73>rjestelm<6C>", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "Fixed", // English | ||||
|     "Fest", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>eais | ||||
|     "", // Norsk | ||||
|     "kiinte<EFBFBD>", // suomi | ||||
|     "", // Polskie | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "Free to Air", // English | ||||
|     "Free to Air", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "salaamaton", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "SECA/Mediaguard", // English | ||||
|     "SECA/Mediaguard", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "SECA/Mediaguard", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "Viaccess", // English | ||||
|     "Viaccess", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "Viaccess", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "Irdeto", // English | ||||
|     "Irdeto", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "Irdeto", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "NDS/Videoguard", // English | ||||
|     "NDS/Videoguard", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "NDS/Videoguard", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "Conax", // English | ||||
|     "Conax", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "Conax", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "CryptoWorks", // English | ||||
|     "CryptoWorks", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>es | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "CryptoWorks", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "PowerVu", // English | ||||
|     "PowerVu", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "PowerVu", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "BetaCrypt", // English | ||||
|     "BetaCrypt", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "BetaCrypt", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "NagraVision", // English | ||||
|     "NagraVision", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk | ||||
|     "NagraVision", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { "SkyCrypt", // English | ||||
|     "SkyCrypt", // Deutsch | ||||
|     "", // Slovenski | ||||
|     "", // Italiano | ||||
|     "", // Nederlands | ||||
|     "", // Portugu<67>s | ||||
|     "", // Fran<61>ais | ||||
|     "", // Norsk    | ||||
|     "SkyCrypt", // suomi | ||||
|     "", // Polski | ||||
|     "", // Espa<70>ol | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek) | ||||
|     "", // Svenska | ||||
|     "", // Romaneste | ||||
|     "", // Magyar | ||||
|     "", // Catal<61> | ||||
| #if VDRVERSNUM >= 10302 | ||||
|     "", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian) | ||||
| #endif | ||||
|   }, | ||||
|   { NULL } | ||||
|   | ||||
							
								
								
									
										130
									
								
								femonosd.c
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								femonosd.c
									
									
									
									
									
								
							| @@ -19,18 +19,23 @@ | ||||
| #define FRONTEND_DEVICE          "/dev/dvb/adapter%d/frontend%d" | ||||
| #define CHANNELINPUT_TIMEOUT     1000 | ||||
|  | ||||
| #define SCREENWIDTH              720 // in pixels | ||||
| #ifdef NTSC_SYSTEM | ||||
| #define SCREENHEIGHT             480 // in pixels | ||||
| #define OSDHEIGHT                420 // in pixels | ||||
| #else | ||||
| #define SCREENHEIGHT             576 // in pixels | ||||
| #define OSDWIDTH                 600 // in pixels | ||||
| #define OSDHEIGHT                480 // in pixels | ||||
| #endif | ||||
| #define SCREENWIDTH              720 // in pixels | ||||
| #define OSDWIDTH                 600 // in pixels | ||||
| #define OSDINFOHEIGHT            ((cOsd::LineHeight() - 2) * 11) // in pixels (11 rows) | ||||
| #define OSDSTATUSHEIGHT          ((cOsd::LineHeight() - 2) * 6)  // in pixels (6 rows) | ||||
|  | ||||
| #define OSDINFOWIN_Y(offset)     (femonConfig.position ? (OSDHEIGHT - OSDINFOHEIGHT + offset) : offset) | ||||
| #define OSDINFOWIN_X(col)        ((col == 4) ? 470 : (col == 3) ? 300 : (col==2) ? 180 : 15) | ||||
| #define OSDINFOWIN_X(col)        ((col == 4) ? 455 : (col == 3) ? 305 : (col == 2) ? 155 : 15) | ||||
| #define OSDSTATUSWIN_Y(offset)   (femonConfig.position ? offset : (OSDHEIGHT - OSDSTATUSHEIGHT + offset)) | ||||
| #define OSDSTATUSWIN_X(col)      ((col == 7) ? 475 : (col == 6) ? 410 : (col == 5) ? 275 : (col == 4) ? 220 : (col == 3) ? 125 : (col==2) ? 70 : 15) | ||||
| #define OSDSTATUSWIN_XC(col,txt) (((col - 1) * SCREENWIDTH / 6) + ((SCREENWIDTH / 6 - cOsd::WidthInCells(txt) * cOsd::CellWidth()) / 2)) | ||||
| #define OSDSTATUSWIN_X(col)      ((col == 7) ? 475 : (col == 6) ? 410 : (col == 5) ? 275 : (col == 4) ? 220 : (col == 3) ? 125 : (col == 2) ? 70 : 15) | ||||
| #define OSDSTATUSWIN_XC(col,txt) (((col - 1) * OSDWIDTH / 5) + ((OSDWIDTH / 5 - cOsd::WidthInCells(txt) * cOsd::CellWidth()) / 2)) | ||||
| #define BARWIDTH(x)              (OSDWIDTH * x / 100) | ||||
| #define DELTA                    2 | ||||
|  | ||||
| @@ -195,7 +200,70 @@ void cFemonOsd::DrawInfoWindow(void) | ||||
|         m_Osd->Text(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow); | ||||
|         offset += cOsd::LineHeight() - DELTA; | ||||
|         m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_InfoWindow); | ||||
|         snprintf(buf, sizeof(buf), "%d", channel->Ca()); | ||||
|         value = channel->Ca(); | ||||
|         if (femonConfig.showcasystem) { | ||||
|            /* http://www.dvb.org/index.php?id=174 */ | ||||
|            switch (value) { | ||||
|              case 0x0000: | ||||
|                   /* Reserved */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("Free to Air")); | ||||
|                   break; | ||||
|              case 0x0001 ... 0x00FF: | ||||
|                   /* Standardized systems */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("Fixed")); | ||||
|                   break; | ||||
|              case 0x0100 ... 0x01FF: | ||||
|                   /* Canal Plus */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("SECA/Mediaguard")); | ||||
|                   break; | ||||
|              case 0x0500 ... 0x05FF: | ||||
|                   /* France Telecom */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("Viaccess")); | ||||
|                   break; | ||||
|              case 0x0600 ... 0x06FF: | ||||
|                   /* Irdeto */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("Irdeto")); | ||||
|                   break; | ||||
|              case 0x0900 ... 0x09FF: | ||||
|                   /* News Datacom */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("NDS/Videoguard")); | ||||
|                   break; | ||||
|              case 0x0B00 ... 0x0BFF: | ||||
|                   /* Norwegian Telekom */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("Conax")); | ||||
|                   break; | ||||
|              case 0x0D00 ... 0x0DFF: | ||||
|                   /* Philips */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("CryptoWorks")); | ||||
|                   break; | ||||
|              case 0x0E00 ... 0x0EFF: | ||||
|                   /* Scientific Atlanta */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("PowerVu")); | ||||
|                   break; | ||||
|              case 0x1200 ... 0x12FF: | ||||
|                   /* BellVu Express */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("NagraVision")); | ||||
|                   break; | ||||
|              case 0x1700 ... 0x17FF: | ||||
|                   /* BetaTechnik */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("BetaCrypt")); | ||||
|                   break; | ||||
|              case 0x1800 ... 0x18FF: | ||||
|                   /* Kudelski SA */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("NagraVision")); | ||||
|                   break; | ||||
|              case 0x4A60 ... 0x4A6F: | ||||
|                   /* @Sky */ | ||||
|                   snprintf(buf, sizeof(buf), "%s", tr("SkyCrypt")); | ||||
|                   break; | ||||
|              default: | ||||
|                   snprintf(buf, sizeof(buf), "%X", value); | ||||
|                   break; | ||||
|              } | ||||
|            } | ||||
|         else { | ||||
|            snprintf(buf, sizeof(buf), "%X", value); | ||||
|            } | ||||
|         m_Osd->Text(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow); | ||||
|         m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), clrWhite, clrBackground, m_InfoWindow); | ||||
|         snprintf(buf, sizeof(buf), "%d", channel->Tpid()); | ||||
| @@ -439,7 +507,9 @@ void cFemonOsd::DrawInfoWindow(void) | ||||
|         m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow); | ||||
|         offset += cOsd::LineHeight() - DELTA; | ||||
|         m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_InfoWindow); | ||||
|         snprintf(buf, sizeof(buf), "#%d", channel->Apid1()); | ||||
|         value = -1; | ||||
|         cDevice::PrimaryDevice()->GetAudioTracks(&value); | ||||
|         snprintf(buf, sizeof(buf), "#%d", (value > 0 ? channel->Apid2() : channel->Apid1())); | ||||
|         m_Osd->Text(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_InfoWindow); | ||||
|         offset += cOsd::LineHeight() - DELTA; | ||||
|         m_Osd->Text(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_InfoWindow); | ||||
| @@ -671,9 +741,8 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber) | ||||
| eOSState cFemonOsd::ProcessKey(eKeys Key) | ||||
| {  | ||||
|   eOSState state = cOsdObject::ProcessKey(Key); | ||||
|  | ||||
|   if (state == osUnknown) { | ||||
|      switch (Key & ~k_Repeat) { | ||||
|      switch (Key) { | ||||
|        case k0: | ||||
|             if ((m_Number == 0) && (m_OldNumber != 0)) { | ||||
|                m_Number = m_OldNumber; | ||||
| @@ -712,6 +781,49 @@ eOSState cFemonOsd::ProcessKey(eKeys Key) | ||||
|             break; | ||||
|        case kBack: | ||||
|             return osEnd; | ||||
|        case kGreen: | ||||
|             { | ||||
|             int CurrentAudioTrack = -1; | ||||
|             const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&CurrentAudioTrack); | ||||
|             if (AudioTracks) { | ||||
|                const char **at = &AudioTracks[CurrentAudioTrack]; | ||||
|                if (!*++at) | ||||
|                   at = AudioTracks; | ||||
|                cDevice::PrimaryDevice()->SetAudioTrack(at - AudioTracks); | ||||
|                if (femonConfig.analyzestream) { | ||||
|                   cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); | ||||
|                   if (m_Receiver) | ||||
|                      delete m_Receiver; | ||||
|                   m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), (at - AudioTracks) ? channel->Apid2() : channel->Apid1(), channel->Dpid1()); | ||||
|                   cDevice::ActualDevice()->AttachReceiver(m_Receiver); | ||||
|                   } | ||||
|                } | ||||
|             } | ||||
|             break; | ||||
|        case kRight: | ||||
|        case kLeft: | ||||
|             { | ||||
|             int device = cDevice::ActualDevice()->DeviceNumber(); | ||||
|             if (device >= 0) { | ||||
|                cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel()); | ||||
|                for (int i = 0; i < cDevice::NumDevices() - 1; i++) { | ||||
|                    if (NORMALKEY(Key) == kRight) { | ||||
|                       if (++device >= cDevice::NumDevices()) device = 0; | ||||
|                       } | ||||
|                    else { | ||||
|                       if (--device < 0) device = cDevice::NumDevices() - 1; | ||||
|                       } | ||||
|                    if (cDevice::GetDevice(device)->ProvidesChannel(channel)) { | ||||
|                       //cStatus::MsgChannelSwitch(cDevice::GetDevice(device), 0); | ||||
|                       //implement some tuning mechanism here | ||||
|                       //cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apid1(), channel->Apid2(), channel->Dpid1(), channel->Dpid2($ | ||||
|                       //cStatus::MsgChannelSwitch(cDevice::GetDevice(device), channel->Number()); | ||||
|                       break; | ||||
|                       } | ||||
|                    } | ||||
|                } | ||||
|             } | ||||
|             break; | ||||
|        case kUp|k_Repeat: | ||||
|        case kUp: | ||||
|        case kDown|k_Repeat: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user