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

Compare commits

..

12 Commits

Author SHA1 Message Date
Rolf Ahrenberg
825755281f Added Estonian translations (Thanks to Arthur Konovalov). 2005-01-24 04:20:00 +02:00
Rolf Ahrenberg
ab3f270eed Updated for vdr-1.3.19. 2005-01-23 04:20:00 +02:00
Rolf Ahrenberg
995b2567e5 Some minor cosmetic fixes. 2005-01-23 04:20:00 +02:00
Rolf Ahrenberg
6f9961f499 Updated for vdr-1.3.18.
Added DEBUG mode (make DEBUG=1 plugins).
OSD height is now user configurable.
Added audio channel selection into Yellow key.
2005-01-15 04:20:00 +02:00
Rolf Ahrenberg
c454189adf Updated for vdr-1.3.17.
Fixed receiver related crash (Thanks to Marco Schluessler).
2004-11-28 04:20:00 +02:00
Rolf Ahrenberg
5339f71b33 Yet Another Minor Release.
Integrated the CA system names patch: "Setup / Show CA System".
2004-09-11 04:20:00 +03:00
Rolf Ahrenberg
8e53fa8521 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-08-18 04:20:00 +03:00
Rolf Ahrenberg
9514ed5387 Added some new symbols and beautified the old ones.
Added audio track selection feature.
Added preliminary device switching feature (disabled at the moment).
2004-06-24 04:20:00 +03:00
Rolf Ahrenberg
a6039cdd66 Added "AC-3 Stream Information" display mode (Thanks to Lothar Englisch). 2004-06-11 04:20:00 +03:00
Rolf Ahrenberg
848a2ba78d Fixed the channel switch bug (reported by Stefan Lucke).
Nid/Tid/Rid are now included in translations.
Added video format and aspect ratio symbols into status window.
2004-06-06 04:20:00 +03:00
Rolf Ahrenberg
74ed4d8490 Added "Stream Information" display mode.
Toggle between different modes with 'OK' key:
 .-> basic -> transponder -> stream -.
 `-----------------------------------´
Added missing german translations (Thanks to Peter Marquardt).
2004-05-30 04:20:00 +03:00
Rolf Ahrenberg
8c7c110cf2 Updated for vdr-1.3.7 and removed compability with older versions. 2004-05-18 04:20:00 +03:00
32 changed files with 1767 additions and 485 deletions

53
HISTORY
View File

@@ -1,5 +1,6 @@
===================================
VDR Plugin 'femon' Revision History VDR Plugin 'femon' Revision History
----------------------------------- ===================================
2004-02-15: Version 0.0.1 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. - 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 2004-05-18: Version 0.1.0
@@ -81,3 +88,45 @@ VDR Plugin 'femon' Revision History
2004-06-11: Version 0.1.3 2004-06-11: Version 0.1.3
- Added "AC-3 Stream Information" display mode (Thanks to Lothar Englisch). - 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".
2004-11-28: Version 0.1.7
- Updated for vdr-1.3.17.
- Fixed receiver related crash (Thanks to Marco Schluessler).
2005-01-15: Version 0.7.7
- Updated for vdr-1.3.18.
- Added DEBUG mode (make DEBUG=1 plugins).
- OSD height is now user configurable.
- Added audio channel selection into Yellow key.
2005-01-23: Version 0.7.9
- Some minor cosmetic fixes.
2005-01-23: Version 0.8.0
- Updated for vdr-1.3.19.
2005-01-24: Version 0.8.1
- Added Estonian translations (Thanks to Arthur Konovalov).

View File

@@ -11,12 +11,12 @@ 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).h | awk '{ print $$6 }' | sed -e 's/[";]//g')
### The C++ compiler and options: ### The C++ compiler and options:
CXX ?= g++ CXX ?= g++
CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -fPIC
### The directory environment: ### The directory environment:
@@ -44,6 +44,10 @@ INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
ifdef NTSC_SYSTEM
DEFINES += -DNTSC_SYSTEM
endif
### The object files (add further files here): ### The object files (add further files here):
OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o

38
README
View File

@@ -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 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 channels and the plugin should be monitoring always the right frontend. The
transponder and stream information are also available in advanced display modes. 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 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 called 'femon' by Johannes Stezenbach (see DVB-apps/szap/femon.c for further
@@ -31,8 +30,8 @@ Metzler Brothers.
Terminology: Terminology:
-------------------------------------------------------------- --------------------------------------------------------------
|## Channel Name ############################# DD 16:9 PAL ##| |## Channel Name ########################## [AR][VF][A/DD][D]|
|[=====Signal Strength in % =============|=================]| |[=====Signal Strength in % ==============|=================]|
|[=====Signal-to-Noise Ratio in % ========|=================]| |[=====Signal-to-Noise Ratio in % ========|=================]|
| STR: #0000 (0%) BER: #00000000 Video: 0 Mbit/s | | STR: #0000 (0%) BER: #00000000 Video: 0 Mbit/s |
| SNR: #0000 (0%) UNC: #00000000 Audio: 0 kbit/s | | SNR: #0000 (0%) UNC: #00000000 Audio: 0 kbit/s |
@@ -44,7 +43,7 @@ SNR - Signal-to-noise ratio
BER - Bit error rate BER - Bit error rate
UNC - Uncorrected blocks UNC - Uncorrected blocks
Video - Calculated video bitrate in Mbit/s 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... LOCK - Everything's working...
SIGNAL - Found something above the noise level SIGNAL - Found something above the noise level
@@ -52,10 +51,26 @@ CARRIER - Found a DVB signal
VITERBI - FEC (forward error correction) is stable VITERBI - FEC (forward error correction) is stable
SYNC - Found sync bytes SYNC - Found sync bytes
AR - Aspect Ratio: 1:1/4:3/16:9/2.21:1 (optional)
VF - Video format: PAL/NTSC (optional)
A/DD - Audio (0..5) / AC-3 track (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
Green - Select next audio track
Yellow - Select audio channel: stereo, mono left, mono right
Back - Exit plugin
(Left/Right - Switch to next/previous device that provides the current channel)
Installation: Installation:
cd /put/your/path/here/VDR/PLUGINS/src 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 ln -s femon-X.Y.Z femon
cd /put/your/path/here/VDR cd /put/your/path/here/VDR
make make
@@ -67,7 +82,14 @@ Notes:
- The plugin supports only those DVB cards with _one_ frontend (do any cards - The plugin supports only those DVB cards with _one_ frontend (do any cards
with multiple frontends even exist?), because I haven't yet figured howto do with multiple frontends even exist?), because I haven't yet figured howto do
it without patching the VDR core. it without patching the VDR core.
- Sometimes (read always) ttxtsubs plugin messes up the OSD - user should disable
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. - 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.
- If the OSD isn't visible, you've configured the OSD height too big or too
small. Please, try to adjust the variable on the setup page before writing
any bug reports.
- There's a shrinked default OSD height 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."

10
femon.c
View File

@@ -12,7 +12,7 @@
#include "femonosd.h" #include "femonosd.h"
#include "femon.h" #include "femon.h"
#if VDRVERSNUM >= 10307 #if VDRVERSNUM && VDRVERSNUM < 10319
#error "You don't exist! Go away!" #error "You don't exist! Go away!"
#endif #endif
@@ -71,6 +71,8 @@ bool cPluginFemon::SetupParse(const char *Name, const char *Value)
else if (!strcasecmp(Name, "SyslogOutput")) femonConfig.syslogoutput = atoi(Value); else if (!strcasecmp(Name, "SyslogOutput")) femonConfig.syslogoutput = atoi(Value);
else if (!strcasecmp(Name, "DisplayMode")) femonConfig.displaymode = atoi(Value); else if (!strcasecmp(Name, "DisplayMode")) femonConfig.displaymode = atoi(Value);
else if (!strcasecmp(Name, "Position")) femonConfig.position = atoi(Value); else if (!strcasecmp(Name, "Position")) femonConfig.position = atoi(Value);
else if (!strcasecmp(Name, "OSDHeight")) femonConfig.osdheight = atoi(Value);
else if (!strcasecmp(Name, "ShowCASystem")) femonConfig.showcasystem = atoi(Value);
else if (!strcasecmp(Name, "RedLimit")) femonConfig.redlimit = atoi(Value); else if (!strcasecmp(Name, "RedLimit")) femonConfig.redlimit = atoi(Value);
else if (!strcasecmp(Name, "GreenLimit")) femonConfig.greenlimit = atoi(Value); else if (!strcasecmp(Name, "GreenLimit")) femonConfig.greenlimit = atoi(Value);
else if (!strcasecmp(Name, "UpdateInterval")) femonConfig.updateinterval = atoi(Value); else if (!strcasecmp(Name, "UpdateInterval")) femonConfig.updateinterval = atoi(Value);
@@ -101,6 +103,8 @@ void cMenuFemonSetup::Setup(void)
Add(new cMenuEditBoolItem( tr("Use Syslog Output"), &femonConfig.syslogoutput, tr("no"), tr("yes"))); 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 cMenuEditStraItem( tr("Default Display Mode"), &femonConfig.displaymode, modeMaxNumber, dispmodes));
Add(new cMenuEditBoolItem( tr("Position"), &femonConfig.position, tr("bottom"), tr("top"))); Add(new cMenuEditBoolItem( tr("Position"), &femonConfig.position, tr("bottom"), tr("top")));
Add(new cMenuEditIntItem( tr("Height"), &femonConfig.osdheight, 400, 500));
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("Red Limit [%]"), &femonConfig.redlimit, 1, 50));
Add(new cMenuEditIntItem( tr("Green Limit [%]"), &femonConfig.greenlimit, 51, 100)); Add(new cMenuEditIntItem( tr("Green Limit [%]"), &femonConfig.greenlimit, 51, 100));
Add(new cMenuEditIntItem( tr("OSD Update Interval [0.1s]"), &femonConfig.updateinterval, 1, 100)); Add(new cMenuEditIntItem( tr("OSD Update Interval [0.1s]"), &femonConfig.updateinterval, 1, 100));
@@ -116,8 +120,10 @@ void cMenuFemonSetup::Store(void)
{ {
SetupStore("HideMenu", femonConfig.hidemenu); SetupStore("HideMenu", femonConfig.hidemenu);
SetupStore("SyslogOutput", femonConfig.syslogoutput); SetupStore("SyslogOutput", femonConfig.syslogoutput);
SetupStore("Position", femonConfig.position);
SetupStore("DisplayMode", femonConfig.displaymode); SetupStore("DisplayMode", femonConfig.displaymode);
SetupStore("Position", femonConfig.position);
SetupStore("OSDHeight", femonConfig.osdheight);
SetupStore("ShowCASystem", femonConfig.showcasystem);
SetupStore("RedLimit", femonConfig.redlimit); SetupStore("RedLimit", femonConfig.redlimit);
SetupStore("GreenLimit", femonConfig.greenlimit); SetupStore("GreenLimit", femonConfig.greenlimit);
SetupStore("UpdateInterval", femonConfig.updateinterval); SetupStore("UpdateInterval", femonConfig.updateinterval);

View File

@@ -11,7 +11,7 @@
#include <vdr/plugin.h> #include <vdr/plugin.h>
static const char *VERSION = "0.0.6"; static const char *VERSION = "0.8.1";
static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)"; static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)";
static const char *MAINMENUENTRY = "Signal Information"; static const char *MAINMENUENTRY = "Signal Information";

View File

@@ -21,4 +21,10 @@ cFemonConfig::cFemonConfig(void)
analyzestream = 1; analyzestream = 1;
calcinterval = 20; calcinterval = 20;
syslogoutput = 0; syslogoutput = 0;
showcasystem = 0;
#ifdef NTSC_SYSTEM
osdheight = 420;
#else
osdheight = 480;
#endif
} }

View File

@@ -9,6 +9,12 @@
#ifndef __FEMONCFG_H #ifndef __FEMONCFG_H
#define __FEMONCFG_H #define __FEMONCFG_H
#ifdef DEBUG
#define debug(x) (x);
#else
#define debug(x) ;
#endif
enum dispModes { enum dispModes {
modeBasic, modeBasic,
modeTransponder, modeTransponder,
@@ -30,6 +36,8 @@ public:
int analyzestream; int analyzestream;
int calcinterval; int calcinterval;
int syslogoutput; int syslogoutput;
int showcasystem;
int osdheight;
}; };
extern cFemonConfig femonConfig; extern cFemonConfig femonConfig;

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,6 @@
#ifndef __FEMONI18N_H #ifndef __FEMONI18N_H
#define __FEMONI18N_H #define __FEMONI18N_H
#include <vdr/config.h> // for VDRVERSNUM
#include <vdr/i18n.h> #include <vdr/i18n.h>
extern const tI18nPhrase Phrases[]; extern const tI18nPhrase Phrases[];

File diff suppressed because it is too large Load Diff

View File

@@ -16,34 +16,37 @@
#include <vdr/thread.h> #include <vdr/thread.h>
#include <vdr/status.h> #include <vdr/status.h>
#include <vdr/channels.h> #include <vdr/channels.h>
#include <vdr/font.h> #include <vdr/transfer.h>
#include <vdr/tools.h>
class cFemonOsd : public cOsdObject, public cThread, public cStatus { class cFemonOsd : public cOsdObject, public cThread, public cStatus {
private: private:
bool m_Active; bool m_Active;
cOsdBase *m_Osd; cOsd *m_Osd;
tWindowHandle m_InfoWindow;
tWindowHandle m_StatusWindow;
cFemonReceiver *m_Receiver; cFemonReceiver *m_Receiver;
int m_Frontend; int m_Frontend;
struct dvb_frontend_info m_FrontendInfo; struct dvb_frontend_info m_FrontendInfo;
int m_Number; int m_Number;
int m_OldNumber; int m_OldNumber;
int m_InputTime;
uint16_t m_SNR; uint16_t m_SNR;
uint16_t m_Signal; uint16_t m_Signal;
uint32_t m_BER; uint32_t m_BER;
uint32_t m_UNC; uint32_t m_UNC;
fe_status_t m_FrontendStatus; fe_status_t m_FrontendStatus;
int m_DisplayMode; int m_DisplayMode;
eDvbFont m_Font; const cFont *m_Font;
cTimeMs m_InputTime;
cMutex* m_Mutex; cMutex* m_Mutex;
static cBitmap bmStereo, bmMonoLeft, bmMonoRight, bmDD, bmDD20, bmDD51;
static cBitmap bmZero, bmDevice, bmPAL, bmNTSC, bmOne, bmTwo, bmThree, bmFour, bmFive;
static cBitmap bmAspectRatio_1_1, bmAspectRatio_16_9, bmAspectRatio_2_21_1, bmAspectRatio_4_3;
void DrawStatusWindow(void); void DrawStatusWindow(void);
void DrawInfoWindow(void); void DrawInfoWindow(void);
protected: protected:
virtual void Action(void); virtual void Action(void);
virtual void ChannelSwitch(const cDevice * device, int channelNumber); virtual void ChannelSwitch(const cDevice * device, int channelNumber);
virtual void SetAudioTrack(int Index, const char * const *Tracks);
public: public:
cFemonOsd(void); cFemonOsd(void);

View File

@@ -7,6 +7,7 @@
*/ */
#include <unistd.h> #include <unistd.h>
#include <vdr/tools.h>
#include "femoncfg.h" #include "femoncfg.h"
#include "femonreceiver.h" #include "femonreceiver.h"
@@ -16,18 +17,14 @@
#define PAYLOAD 0x10 #define PAYLOAD 0x10
#define PTS_DTS_FLAGS 0xC0 #define PTS_DTS_FLAGS 0xC0
cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid) cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[])
#if VDRVERSNUM >= 10300 :cReceiver(Ca, -1, Vpid, Apid, Dpid, NULL), cThread("femon receiver")
:cReceiver(Ca, -1, 3, Vpid, Apid, Dpid), cThread("femon receiver")
#else
:cReceiver(Ca, -1, 3, Vpid, Apid, Dpid)
#endif
{ {
//printf("cFemonReceiver::cFemonReceiver()\n"); debug(printf("cFemonReceiver::cFemonReceiver()\n"));
m_Active = false; m_Active = false;
m_VideoPid = Vpid; m_VideoPid = Vpid;
m_AudioPid = Apid; m_AudioPid = Apid[0];
m_AC3Pid = Dpid; m_AC3Pid = Dpid[0];
m_VideoValid = false; m_VideoValid = false;
m_VideoPacketCount = 0; m_VideoPacketCount = 0;
m_VideoHorizontalSize = 0; m_VideoHorizontalSize = 0;
@@ -61,7 +58,8 @@ cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid)
cFemonReceiver::~cFemonReceiver(void) cFemonReceiver::~cFemonReceiver(void)
{ {
//printf("cFemonReceiver::~cFemonReceiver()\n"); debug(printf("cFemonReceiver::~cFemonReceiver()\n"));
Detach();
if (m_Active) { if (m_Active) {
m_Active = false; m_Active = false;
Cancel(0); Cancel(0);
@@ -71,7 +69,7 @@ cFemonReceiver::~cFemonReceiver(void)
/* The following function originates from libdvbmpeg: */ /* The following function originates from libdvbmpeg: */
void cFemonReceiver::GetVideoInfo(uint8_t *mbuf, int count) void cFemonReceiver::GetVideoInfo(uint8_t *mbuf, int count)
{ {
//printf("cFemonReceiver::GetVideoInfo()\n"); debug(printf("cFemonReceiver::GetVideoInfo()\n"));
uint8_t *headr; uint8_t *headr;
int found = 0; int found = 0;
int c = 0; int c = 0;
@@ -164,7 +162,7 @@ static unsigned int samplerates[4] =
/* The following function originates from libdvbmpeg: */ /* The following function originates from libdvbmpeg: */
void cFemonReceiver::GetAudioInfo(uint8_t *mbuf, int count) void cFemonReceiver::GetAudioInfo(uint8_t *mbuf, int count)
{ {
//printf("cFemonReceiver::GetAudioInfo()\n"); debug(printf("cFemonReceiver::GetAudioInfo()\n"));
uint8_t *headr; uint8_t *headr;
int found = 0; int found = 0;
int c = 0; int c = 0;
@@ -256,13 +254,20 @@ void cFemonReceiver::GetAC3Info(uint8_t *mbuf, int count)
void cFemonReceiver::Activate(bool On) void cFemonReceiver::Activate(bool On)
{ {
//printf("cFemonReceiver::Activate()\n"); debug(printf("cFemonReceiver::Activate()\n"));
if (On) {
if (!m_Active)
Start(); Start();
} }
else if (m_Active) {
m_Active = false;
Cancel(0);
}
}
void cFemonReceiver::Receive(uchar *Data, int Length) void cFemonReceiver::Receive(uchar *Data, int Length)
{ {
//printf("cFemonReceiver::Receive()\n"); debug(printf("cFemonReceiver::Receive()\n"));
// TS packet length: TS_SIZE // TS packet length: TS_SIZE
if (Length == TS_SIZE) { if (Length == TS_SIZE) {
int pid = ((Data[1] & 0x1f) << 8) | (Data[2]); int pid = ((Data[1] & 0x1f) << 8) | (Data[2]);
@@ -305,12 +310,11 @@ void cFemonReceiver::Receive(uchar *Data, int Length)
void cFemonReceiver::Action(void) void cFemonReceiver::Action(void)
{ {
//printf("cFemonReceiver::Action()\n"); debug(printf("cFemonReceiver::Action()\n"));
#if (VDRVERSNUM < 10300) cTimeMs t;
isyslog("femon receiver: thread started (pid = %d)", getpid());
#endif
m_Active = true; m_Active = true;
while (m_Active) { while (m_Active) {
t.Set(0);
// TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit // TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit
m_VideoBitrate = (8.0 * 184.0 * m_VideoPacketCount) / (femonConfig.calcinterval * 100000.0); m_VideoBitrate = (8.0 * 184.0 * m_VideoPacketCount) / (femonConfig.calcinterval * 100000.0);
m_VideoPacketCount = 0; m_VideoPacketCount = 0;
@@ -318,9 +322,6 @@ void cFemonReceiver::Action(void)
m_AudioPacketCount = 0; m_AudioPacketCount = 0;
m_AC3Bitrate = (8.0 * 184.0 * m_AC3PacketCount) / (femonConfig.calcinterval * 100.0); m_AC3Bitrate = (8.0 * 184.0 * m_AC3PacketCount) / (femonConfig.calcinterval * 100.0);
m_AC3PacketCount = 0; m_AC3PacketCount = 0;
usleep(100000L * femonConfig.calcinterval); cCondWait::SleepMs(100 * femonConfig.calcinterval - t.Elapsed());
} }
#if (VDRVERSNUM < 10300)
isyslog("femon receiver: thread stopped (pid = %d)", getpid());
#endif
} }

View File

@@ -95,7 +95,7 @@ protected:
virtual void Action(void); virtual void Action(void);
public: public:
cFemonReceiver(int Ca, int Vpid, int Apid, int Dpid); cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[]);
virtual ~cFemonReceiver(); virtual ~cFemonReceiver();
bool VideoValid(void) { return m_VideoValid; }; // boolean bool VideoValid(void) { return m_VideoValid; }; // boolean

23
symbols/ar11.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * ar11_xpm[] = {
"26 18 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++",
"+........................+",
"+......++..........++....+",
"+...+++++.......+++++....+",
"+...+++++.......+++++....+",
"+......++...++.....++....+",
"+......++...++.....++....+",
"+......++..........++....+",
"+......++..........++....+",
"+......++..........++....+",
"+......++..........++....+",
"+......++..........++....+",
"+......++..........++....+",
"+......++..........++....+",
"+......++...++.....++....+",
"+......++...++.....++....+",
"+........................+",
"++++++++++++++++++++++++++"};

23
symbols/ar169.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * ar169_xpm[] = {
"38 18 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++++++++++++++",
"+....................................+",
"+......++.....++++..........++++.....+",
"+...+++++....+++++++.......++++++....+",
"+...+++++....++...++......++...+++...+",
"+......++...++........++..++....++...+",
"+......++...++........++..++....++...+",
"+......++...++............++....++...+",
"+......++...++.+++.........+++++++...+",
"+......++...+++++++.........+++.++...+",
"+......++...++....++............++...+",
"+......++...++....++............++...+",
"+......++...++....++............++...+",
"+......++...+++...++......++...++....+",
"+......++....++++++...++..+++++++....+",
"+......++.....++++....++...+++++.....+",
"+....................................+",
"++++++++++++++++++++++++++++++++++++++"};

23
symbols/ar2211.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * ar2211_xpm[] = {
"52 18 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++++++++++++++++++++++++++++++++++++",
"+..................................................+",
"+.....++++..........++++........++...........++....+",
"+...+++++++.......+++++++....+++++........+++++....+",
"+...++....++......++....++...+++++........+++++....+",
"+.........++............++......++...++......++....+",
"+.........++............++......++...++......++....+",
"+........+++...........+++......++...........++....+",
"+.......+++...........+++.......++...........++....+",
"+......+++...........+++........++...........++....+",
"+.....+++...........+++.........++...........++....+",
"+....+++...........+++..........++...........++....+",
"+...+++...........+++...........++...........++....+",
"+...++............++............++...........++....+",
"+...++++++++..++..++++++++......++...++......++....+",
"+...++++++++..++..++++++++......++...++......++....+",
"+..................................................+",
"++++++++++++++++++++++++++++++++++++++++++++++++++++"};

23
symbols/ar43.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * ar43_xpm[] = {
"31 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++++++++++++++++",
"+.............................+",
"+.........++.........+++++....+",
"+........+++........+++++++...+",
"+.......++++.......++....++...+",
"+......++.++...++..++....++...+",
"+.....++..++...++........++...+",
"+.....++..++............++....+",
"+....++...++..........+++.....+",
"+...++....++..........++++....+",
"+...+++++++++...........+++...+",
"+...+++++++++............++...+",
"+.........++.......++....++...+",
"+.........++.......++...+++...+",
"+.........++...++...++++++....+",
"+.........++...++....++++.....+",
"+.............................+",
"+++++++++++++++++++++++++++++++"};

23
symbols/device.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * device_xpm[] = {
"14 18 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++",
"+.............",
"+.......+..+..",
"+.......+..+..",
"+.......+..+..",
"+....+++++++++",
"+....+++++++++",
"+......+..+...",
"+......+..+...",
"+......+..+...",
"+......+..+...",
"+...+++++++++.",
"+...+++++++++.",
"+.....+..+....",
"+.....+..+....",
"+.....+..+....",
"+.............",
"++++++++++++++"};

23
symbols/dolbydigital.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * dolbydigital_xpm[] = {
"31 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++++++++++++++++",
"+.............................+",
"+...+++++++++++.+++++++++++...+",
"+...++.++++++++.++++++++.++...+",
"+...++...++++++.++++++...++...+",
"+...++.....++++.++++.....++...+",
"+...++......+++.+++......++...+",
"+...++.......++.++.......++...+",
"+...++.......++.++.......++...+",
"+...++.......++.++.......++...+",
"+...++.......++.++.......++...+",
"+...++......+++.+++......++...+",
"+...++.....++++.++++.....++...+",
"+...++...++++++.++++++...++...+",
"+...++.++++++++.++++++++.++...+",
"+...+++++++++++.+++++++++++...+",
"+.............................+",
"+++++++++++++++++++++++++++++++"};

View File

@@ -0,0 +1,23 @@
/* XPM */
static char * dolbydigital20_xpm[] = {
"55 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"+.....................................................+",
"+...+++++++++++.+++++++++++.....++++.........++++.....+",
"+...++.++++++++.++++++++.++...+++++++.......++++++....+",
"+...++...++++++.++++++...++...++....++......++..++....+",
"+...++.....++++.++++.....++.........++.....++....++...+",
"+...++......+++.+++......++.........++.....++....++...+",
"+...++.......++.++.......++........+++.....++....++...+",
"+...++.......++.++.......++.......+++......++....++...+",
"+...++.......++.++.......++......+++.......++....++...+",
"+...++.......++.++.......++.....+++........++....++...+",
"+...++......+++.+++......++....+++.........++....++...+",
"+...++.....++++.++++.....++...+++..........++....++...+",
"+...++...++++++.++++++...++...++............++..++....+",
"+...++.++++++++.++++++++.++...++++++++..++..++++++....+",
"+...+++++++++++.+++++++++++...++++++++..++...++++.....+",
"+.....................................................+",
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++"};

View File

@@ -0,0 +1,23 @@
/* XPM */
static char * dolbydigital51_xpm[] = {
"51 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++++++++++++++++++++++++++++++++++++",
"+.................................................+",
"+...+++++++++++.+++++++++++...+++++++........++...+",
"+...++.++++++++.++++++++.++...+++++++.....+++++...+",
"+...++...++++++.++++++...++...++..........+++++...+",
"+...++.....++++.++++.....++...++.............++...+",
"+...++......+++.+++......++...++++++.........++...+",
"+...++.......++.++.......++...+++++++........++...+",
"+...++.......++.++.......++...++...+++.......++...+",
"+...++.......++.++.......++.........++.......++...+",
"+...++.......++.++.......++.........++.......++...+",
"+...++......+++.+++......++.........++.......++...+",
"+...++.....++++.++++.....++...++....++.......++...+",
"+...++...++++++.++++++...++...++...+++.......++...+",
"+...++.++++++++.++++++++.++...+++++++...++...++...+",
"+...+++++++++++.+++++++++++....+++++....++...++...+",
"+.................................................+",
"+++++++++++++++++++++++++++++++++++++++++++++++++++"};

23
symbols/five.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * five_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
"...+++++++....+",
"...+++++++....+",
"...++.........+",
"...++.........+",
"...++.........+",
"...++++++.....+",
"...+++++++....+",
"...++...+++...+",
".........++...+",
".........++...+",
"...++....++...+",
"...++...+++...+",
"...+++++++....+",
"....+++++.....+",
"..............+",
"+++++++++++++++"};

23
symbols/four.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * four_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".........++...+",
"........+++...+",
".......++++...+",
"......++.++...+",
".....++..++...+",
".....++..++...+",
"....++...++...+",
"...++....++...+",
"...+++++++++..+",
"...+++++++++..+",
".........++...+",
".........++...+",
".........++...+",
".........++...+",
"..............+",
"+++++++++++++++"};

23
symbols/monoleft.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * monoleft_xpm[] = {
"17 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++",
"+................",
"+...++...........",
"+...++++.........",
"+...++++++.......",
"+...++++++++.....",
"+...+++++++++++++",
"+...+++++++++++++",
"+...+++++++++..++",
"+...+++++++++..++",
"+...+++++++++++++",
"+...+++++++++++++",
"+...++++++++.....",
"+...++++++.......",
"+...++++.........",
"+...+++..........",
"+................",
"+++++++++++++++++"};

23
symbols/monoright.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * monoright_xpm[] = {
"17 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++",
"+................",
"+..............++",
"+............++++",
"+..........++++++",
"+........++++++++",
"+...+++++++++++++",
"+...+++++++++++++",
"+...++..+++++++++",
"+...++..+++++++++",
"+...+++++++++++++",
"+...+++++++++++++",
"+........++++++++",
"+..........++++++",
"+............++++",
"+.............+++",
"+................",
"+++++++++++++++++"};

23
symbols/ntsc.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * ntsc_xpm[] = {
"19 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++++",
"+.................+",
"+...++.......++...+",
"+...+++......++...+",
"+...++++.....++...+",
"+...++++.....++...+",
"+...++.++....++...+",
"+...++..++...++...+",
"+...++..++...++...+",
"+...++...++..++...+",
"+...++...++..++...+",
"+...++....++.++...+",
"+...++.....++++...+",
"+...++.....++++...+",
"+...++......+++...+",
"+...++.......++...+",
"+.................+",
"+++++++++++++++++++"};

23
symbols/one.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * one_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".......++.....+",
"....+++++.....+",
"....+++++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
".......++.....+",
"..............+",
"+++++++++++++++"};

23
symbols/pal.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * pal_xpm[] = {
"18 18 2 1",
". c #FFFFFF",
"+ c #000000",
"++++++++++++++++++",
"+................+",
"+...++++++++.....+",
"+...+++++++++....+",
"+...++.....+++...+",
"+...++......++...+",
"+...++......++...+",
"+...++.....+++...+",
"+...+++++++++....+",
"+...++++++++.....+",
"+...++...........+",
"+...++...........+",
"+...++...........+",
"+...++...........+",
"+...++...........+",
"+...++...........+",
"+................+",
"++++++++++++++++++"};

23
symbols/stereo.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * stereo_xpm[] = {
"17 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++++",
"+................",
"+..............++",
"+............++++",
"+..........+++.++",
"+........+++...++",
"+...+++++++....++",
"+...++++++.....++",
"+...++..++.....++",
"+...++..++.....++",
"+...++++++.....++",
"+...+++++++....++",
"+........+++...++",
"+..........+++.++",
"+............++++",
"+.............+++",
"+................",
"+++++++++++++++++"};

23
symbols/three.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * three_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".....+++++....+",
"....+++++++...+",
"...++....++...+",
"...++....++...+",
".........++...+",
"........++....+",
"......+++.....+",
"......++++....+",
"........+++...+",
".........++...+",
"...++....++...+",
"...++...+++...+",
"....++++++....+",
".....++++.....+",
"..............+",
"+++++++++++++++"};

23
symbols/two.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * two_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".....++++.....+",
"...+++++++....+",
"...++....++...+",
".........++...+",
".........++...+",
"........+++...+",
".......+++....+",
"......+++.....+",
".....+++......+",
"....+++.......+",
"...+++........+",
"...++.........+",
"...++++++++...+",
"...++++++++...+",
"..............+",
"+++++++++++++++"};

23
symbols/zero.xpm Normal file
View File

@@ -0,0 +1,23 @@
/* XPM */
static char * zero_xpm[] = {
"15 18 2 1",
". c #FFFFFF",
"+ c #000000",
"+++++++++++++++",
"..............+",
".....++++.....+",
"....++++++....+",
"....++..++....+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"...++....++...+",
"....++..++....+",
"....++++++....+",
".....++++.....+",
"..............+",
"+++++++++++++++"};