mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 13:36:53 +02:00
Backported from 1.2.2.
This commit is contained in:
parent
64e56af6dc
commit
b0b0fe4f02
18
COPYING
18
COPYING
@ -2,7 +2,7 @@
|
|||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
|
|||||||
General Public License applies to most of the Free Software
|
General Public License applies to most of the Free Software
|
||||||
Foundation's software and to any other program whose authors commit to
|
Foundation's software and to any other program whose authors commit to
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
your programs, too.
|
your programs, too.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
|
|||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
|
|||||||
License. (Exception: if the Program itself is interactive but
|
License. (Exception: if the Program itself is interactive but
|
||||||
does not normally print such an announcement, your work based on
|
does not normally print such an announcement, your work based on
|
||||||
the Program is not required to print an announcement.)
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
These requirements apply to the modified work as a whole. If
|
||||||
identifiable sections of that work are not derived from the Program,
|
identifiable sections of that work are not derived from the Program,
|
||||||
and can be reasonably considered independent and separate works in
|
and can be reasonably considered independent and separate works in
|
||||||
@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
|
|||||||
access to copy the source code from the same place counts as
|
access to copy the source code from the same place counts as
|
||||||
distribution of the source code, even though third parties are not
|
distribution of the source code, even though third parties are not
|
||||||
compelled to copy the source along with the object code.
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
except as expressly provided under this License. Any attempt
|
except as expressly provided under this License. Any attempt
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
@ -225,7 +225,7 @@ impose that choice.
|
|||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
This section is intended to make thoroughly clear what is believed to
|
||||||
be a consequence of the rest of this License.
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
original copyright holder who places the Program under this License
|
original copyright holder who places the Program under this License
|
||||||
@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|||||||
POSSIBILITY OF SUCH DAMAGES.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
If you develop a new program, and you want it to be of the greatest
|
||||||
@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
@ -336,5 +336,5 @@ necessary. Here is a sample; alter the names:
|
|||||||
This General Public License does not permit incorporating your program into
|
This General Public License does not permit incorporating your program into
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
consider it more useful to permit linking proprietary applications with the
|
consider it more useful to permit linking proprietary applications with the
|
||||||
library. If this is what you want to do, use the GNU Library General
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
Public License instead of this License.
|
Public License instead of this License.
|
||||||
|
17
HISTORY
17
HISTORY
@ -252,3 +252,20 @@ VDR Plugin 'femon' Revision History
|
|||||||
2007-05-15: Version 1.1.3
|
2007-05-15: Version 1.1.3
|
||||||
|
|
||||||
- Fixed a race condition in cFemonReceiver (Thanks to Reinhard Nissl).
|
- Fixed a race condition in cFemonReceiver (Thanks to Reinhard Nissl).
|
||||||
|
|
||||||
|
2007-10-14: Version 1.1.4
|
||||||
|
|
||||||
|
- Backported from 1.2.2.
|
||||||
|
|
||||||
|
2007-08-14: Version 1.2.0
|
||||||
|
|
||||||
|
- Updated for vdr-1.5.7.
|
||||||
|
|
||||||
|
2007-08-19: Version 1.2.1
|
||||||
|
|
||||||
|
- Updated for vdr-1.5.8.
|
||||||
|
|
||||||
|
2007-10-14: Version 1.2.2
|
||||||
|
|
||||||
|
- Added Spids support.
|
||||||
|
- Minor OSD layout changes.
|
||||||
|
8
Makefile
8
Makefile
@ -20,7 +20,7 @@ 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).h | awk '{ print $$6 }' | sed -e 's/[";]//g')
|
VERSION = $(shell grep 'static const char VERSION\[\] *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g')
|
||||||
|
|
||||||
### The C++ compiler and options:
|
### The C++ compiler and options:
|
||||||
|
|
||||||
@ -67,6 +67,10 @@ all-redirect: all
|
|||||||
|
|
||||||
OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o femontools.o
|
OBJS = femon.o femonosd.o femonreceiver.o femoncfg.o femoni18n.o femontools.o
|
||||||
|
|
||||||
|
### The main target:
|
||||||
|
|
||||||
|
all: libvdr-$(PLUGIN).so
|
||||||
|
|
||||||
### Implicit rules:
|
### Implicit rules:
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
@ -83,8 +87,6 @@ $(DEPFILE): Makefile
|
|||||||
|
|
||||||
### Targets:
|
### Targets:
|
||||||
|
|
||||||
all: libvdr-$(PLUGIN).so
|
|
||||||
|
|
||||||
libvdr-$(PLUGIN).so: $(OBJS)
|
libvdr-$(PLUGIN).so: $(OBJS)
|
||||||
$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
|
$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
|
||||||
ifndef FEMON_DEBUG
|
ifndef FEMON_DEBUG
|
||||||
|
7
README
7
README
@ -1,11 +1,16 @@
|
|||||||
This is a DVB Frontend Status Monitor plugin for the Video Disk Recorder (VDR).
|
This is a DVB Frontend Status Monitor plugin for the Video Disk Recorder (VDR).
|
||||||
|
|
||||||
Written by: R o l f . A h r e n b e r g @ s c i . f i
|
Written by: Rolf Ahrenberg
|
||||||
|
< R o l f . A h r e n b e r g @ s c i . f i >
|
||||||
|
|
||||||
Project's homepage: http://www.saunalahti.fi/~rahrenbe/vdr/femon/
|
Project's homepage: http://www.saunalahti.fi/~rahrenbe/vdr/femon/
|
||||||
|
|
||||||
Latest version available at: http://www.saunalahti.fi/~rahrenbe/vdr/femon/
|
Latest version available at: http://www.saunalahti.fi/~rahrenbe/vdr/femon/
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
See the file COPYING for license information.
|
See the file COPYING for license information.
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
|
42
femon.c
42
femon.c
@ -14,12 +14,38 @@
|
|||||||
#include "femonosd.h"
|
#include "femonosd.h"
|
||||||
#include "femonservice.h"
|
#include "femonservice.h"
|
||||||
#include "femontools.h"
|
#include "femontools.h"
|
||||||
#include "femon.h"
|
|
||||||
|
|
||||||
#if defined(APIVERSNUM) && APIVERSNUM < 10400
|
#if defined(APIVERSNUM) && APIVERSNUM < 10400
|
||||||
#error "VDR-1.4.0 API version or greater is required!"
|
#error "VDR-1.4.0 API version or greater is required!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static const char VERSION[] = "1.1.4";
|
||||||
|
static const char DESCRIPTION[] = "DVB Signal Information Monitor (OSD)";
|
||||||
|
static const char MAINMENUENTRY[] = "Signal Information";
|
||||||
|
|
||||||
|
class cPluginFemon : public cPlugin {
|
||||||
|
public:
|
||||||
|
cPluginFemon(void);
|
||||||
|
virtual ~cPluginFemon();
|
||||||
|
virtual const char *Version(void) { return VERSION; }
|
||||||
|
virtual const char *Description(void) { return tr(DESCRIPTION); }
|
||||||
|
virtual const char *CommandLineHelp(void);
|
||||||
|
virtual bool ProcessArgs(int argc, char *argv[]);
|
||||||
|
virtual bool Initialize(void);
|
||||||
|
virtual bool Start(void);
|
||||||
|
virtual void Stop(void);
|
||||||
|
virtual void Housekeeping(void);
|
||||||
|
virtual void MainThreadHook(void) {}
|
||||||
|
virtual cString Active(void) { return NULL; }
|
||||||
|
virtual const char *MainMenuEntry(void) { return (femonConfig.hidemenu ? NULL : tr(MAINMENUENTRY)); }
|
||||||
|
virtual cOsdObject *MainMenuAction(void);
|
||||||
|
virtual cMenuSetupPage *SetupMenu(void);
|
||||||
|
virtual bool SetupParse(const char *Name, const char *Value);
|
||||||
|
virtual bool Service(const char *Id, void *Data);
|
||||||
|
virtual const char **SVDRPHelpPages(void);
|
||||||
|
virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
|
||||||
|
};
|
||||||
|
|
||||||
cPluginFemon::cPluginFemon()
|
cPluginFemon::cPluginFemon()
|
||||||
{
|
{
|
||||||
// Initialize any member variables here.
|
// Initialize any member variables here.
|
||||||
@ -234,6 +260,20 @@ cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class cMenuFemonSetup : public cMenuSetupPage {
|
||||||
|
private:
|
||||||
|
const char *dispmodes[eFemonModeMaxNumber];
|
||||||
|
const char *skins[eFemonSkinMaxNumber];
|
||||||
|
const char *themes[eFemonThemeMaxNumber];
|
||||||
|
cFemonConfig data;
|
||||||
|
virtual void Setup(void);
|
||||||
|
protected:
|
||||||
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
|
virtual void Store(void);
|
||||||
|
public:
|
||||||
|
cMenuFemonSetup(void);
|
||||||
|
};
|
||||||
|
|
||||||
cMenuFemonSetup::cMenuFemonSetup(void)
|
cMenuFemonSetup::cMenuFemonSetup(void)
|
||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
|
56
femon.h
56
femon.h
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* Frontend Status Monitor plugin for the Video Disk Recorder
|
|
||||||
*
|
|
||||||
* See the README file for copyright information and how to reach the author.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __FEMON_H
|
|
||||||
#define __FEMON_H
|
|
||||||
|
|
||||||
#include <vdr/plugin.h>
|
|
||||||
|
|
||||||
static const char VERSION[] = "1.1.3";
|
|
||||||
static const char DESCRIPTION[] = "DVB Signal Information Monitor (OSD)";
|
|
||||||
static const char MAINMENUENTRY[] = "Signal Information";
|
|
||||||
|
|
||||||
class cPluginFemon : public cPlugin {
|
|
||||||
public:
|
|
||||||
cPluginFemon(void);
|
|
||||||
virtual ~cPluginFemon();
|
|
||||||
virtual const char *Version(void) { return VERSION; }
|
|
||||||
virtual const char *Description(void) { return tr(DESCRIPTION); }
|
|
||||||
virtual const char *CommandLineHelp(void);
|
|
||||||
virtual bool ProcessArgs(int argc, char *argv[]);
|
|
||||||
virtual bool Initialize(void);
|
|
||||||
virtual bool Start(void);
|
|
||||||
virtual void Stop(void);
|
|
||||||
virtual void Housekeeping(void);
|
|
||||||
virtual void MainThreadHook(void) {}
|
|
||||||
virtual cString Active(void) { return NULL; }
|
|
||||||
virtual const char *MainMenuEntry(void) { return (femonConfig.hidemenu ? NULL : tr(MAINMENUENTRY)); }
|
|
||||||
virtual cOsdObject *MainMenuAction(void);
|
|
||||||
virtual cMenuSetupPage *SetupMenu(void);
|
|
||||||
virtual bool SetupParse(const char *Name, const char *Value);
|
|
||||||
virtual bool Service(const char *Id, void *Data);
|
|
||||||
virtual const char **SVDRPHelpPages(void);
|
|
||||||
virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
|
|
||||||
};
|
|
||||||
|
|
||||||
class cMenuFemonSetup : public cMenuSetupPage {
|
|
||||||
private:
|
|
||||||
const char *dispmodes[eFemonModeMaxNumber];
|
|
||||||
const char *skins[eFemonSkinMaxNumber];
|
|
||||||
const char *themes[eFemonThemeMaxNumber];
|
|
||||||
cFemonConfig data;
|
|
||||||
virtual void Setup(void);
|
|
||||||
protected:
|
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
|
||||||
virtual void Store(void);
|
|
||||||
public:
|
|
||||||
cMenuFemonSetup(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif //__FEMON_H
|
|
||||||
|
|
15
femonosd.c
15
femonosd.c
@ -44,7 +44,7 @@
|
|||||||
#define OSDHEIGHT femonConfig.osdheight // in pixels
|
#define OSDHEIGHT femonConfig.osdheight // in pixels
|
||||||
#define OSDWIDTH 600 // in pixels
|
#define OSDWIDTH 600 // in pixels
|
||||||
#define OSDROWHEIGHT m_Font->Height() // in pixels
|
#define OSDROWHEIGHT m_Font->Height() // in pixels
|
||||||
#define OSDINFOHEIGHT (OSDROWHEIGHT * 11) // in pixels (11 rows)
|
#define OSDINFOHEIGHT (OSDROWHEIGHT * 12) // in pixels (12 rows)
|
||||||
#define OSDSTATUSHEIGHT (OSDROWHEIGHT * 6) // in pixels (6 rows)
|
#define OSDSTATUSHEIGHT (OSDROWHEIGHT * 6) // in pixels (6 rows)
|
||||||
#define OSDSPACING 5
|
#define OSDSPACING 5
|
||||||
#define OSDCORNERING 10
|
#define OSDCORNERING 10
|
||||||
@ -319,8 +319,8 @@ void cFemonOsd::DrawInfoWindow(void)
|
|||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *getDpids(channel), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *getDpids(channel), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
offset += OSDROWHEIGHT;
|
offset += OSDROWHEIGHT;
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Spid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), *getCAids(channel, femonConfig.showcasystem), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), *getSpids(channel), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Tpid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Tpid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Tpid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
offset += OSDROWHEIGHT;
|
offset += OSDROWHEIGHT;
|
||||||
@ -334,6 +334,9 @@ void cFemonOsd::DrawInfoWindow(void)
|
|||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Rid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Rid"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Rid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), *cString::sprintf("%d", channel->Rid()), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
offset += OSDROWHEIGHT;
|
offset += OSDROWHEIGHT;
|
||||||
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
|
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), *getCAids(channel, femonConfig.showcasystem), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
|
offset += OSDROWHEIGHT;
|
||||||
switch (m_FrontendInfo.type) {
|
switch (m_FrontendInfo.type) {
|
||||||
case FE_QPSK:
|
case FE_QPSK:
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), *cString::sprintf("%s #%d - %s", tr("Satellite Card"), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), *cString::sprintf("%s #%d - %s", tr("Satellite Card"), (m_SvdrpFrontend >= 0) ? m_SvdrpFrontend : cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
@ -432,6 +435,7 @@ void cFemonOsd::DrawInfoWindow(void)
|
|||||||
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Resolution"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Resolution"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), m_Receiver ? *cString::sprintf("%d x %d", m_Receiver->VideoHorizontalSize(), m_Receiver->VideoVerticalSize()) : *cString::sprintf("---"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), m_Receiver ? *cString::sprintf("%d x %d", m_Receiver->VideoHorizontalSize(), m_Receiver->VideoVerticalSize()) : *cString::sprintf("---"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
offset += OSDROWHEIGHT;
|
offset += OSDROWHEIGHT;
|
||||||
|
offset += OSDROWHEIGHT;
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("#%d %s", IS_AUDIO_TRACK(track) ? channel->Apid(int(track - ttAudioFirst)) : channel->Apid(0), IS_AUDIO_TRACK(track) ? channel->Alang(int(track - ttAudioFirst)) : channel->Alang(0)), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("#%d %s", IS_AUDIO_TRACK(track) ? channel->Apid(int(track - ttAudioFirst)) : channel->Apid(0), IS_AUDIO_TRACK(track) ? channel->Alang(int(track - ttAudioFirst)) : channel->Alang(0)), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
offset += OSDROWHEIGHT;
|
offset += OSDROWHEIGHT;
|
||||||
@ -451,13 +455,16 @@ void cFemonOsd::DrawInfoWindow(void)
|
|||||||
else if (m_DisplayMode == eFemonModeAC3) {
|
else if (m_DisplayMode == eFemonModeAC3) {
|
||||||
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), femonTheme[femonConfig.theme].clrBackground);
|
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), femonTheme[femonConfig.theme].clrBackground);
|
||||||
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+OSDROWHEIGHT-1), femonTheme[femonConfig.theme].clrTitleBackground);
|
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+OSDROWHEIGHT-1), femonTheme[femonConfig.theme].clrTitleBackground);
|
||||||
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), *cString::sprintf("%s - %s #%d %s", tr("Stream Information"), tr("AC-3 Stream"), IS_DOLBY_TRACK(track) ? channel->Dpid(int(track - ttDolbyFirst)) : channel->Dpid(0), IS_DOLBY_TRACK(track) ? channel->Dlang(int(track - ttDolbyFirst)) : channel->Dlang(0)), femonTheme[femonConfig.theme].clrTitleText, femonTheme[femonConfig.theme].clrTitleBackground, m_Font);
|
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Stream Information"), femonTheme[femonConfig.theme].clrTitleText, femonTheme[femonConfig.theme].clrTitleBackground, m_Font);
|
||||||
if (IS_OSDCORNERING) {
|
if (IS_OSDCORNERING) {
|
||||||
m_Osd->DrawEllipse(0, OSDINFOWIN_Y(0), OSDCORNERING, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -2);
|
m_Osd->DrawEllipse(0, OSDINFOWIN_Y(0), OSDCORNERING, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -2);
|
||||||
m_Osd->DrawEllipse((OSDWIDTH-OSDCORNERING), OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -1);
|
m_Osd->DrawEllipse((OSDWIDTH-OSDCORNERING), OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDCORNERING), clrTransparent, -1);
|
||||||
}
|
}
|
||||||
offset += OSDROWHEIGHT;
|
offset += OSDROWHEIGHT;
|
||||||
if (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(track)) {
|
if (m_Receiver && m_Receiver->AC3Valid() && IS_DOLBY_TRACK(track)) {
|
||||||
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("AC-3 Stream"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("#%d %s", channel->Dpid(int(track - ttDolbyFirst)), channel->Dlang(int(track - ttDolbyFirst))), femonTheme[femonConfig.theme].clrTitleText, femonTheme[femonConfig.theme].clrTitleBackground, m_Font);
|
||||||
|
offset += OSDROWHEIGHT;
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), femonTheme[femonConfig.theme].clrInactiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("%s (%s)", *getBitrateKbits(m_Receiver->AC3StreamBitrate()), *getBitrateKbits(m_Receiver->AC3Bitrate())), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), *cString::sprintf("%s (%s)", *getBitrateKbits(m_Receiver->AC3StreamBitrate()), *getBitrateKbits(m_Receiver->AC3Bitrate())), femonTheme[femonConfig.theme].clrActiveText, femonTheme[femonConfig.theme].clrBackground, m_Font);
|
||||||
offset += OSDROWHEIGHT;
|
offset += OSDROWHEIGHT;
|
||||||
|
@ -165,6 +165,15 @@ cString getDpids(const cChannel *channel)
|
|||||||
return dpids;
|
return dpids;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cString getSpids(const cChannel *channel)
|
||||||
|
{
|
||||||
|
int value = 0;
|
||||||
|
cString spids = cString::sprintf("%d", channel->Spid(value));
|
||||||
|
while (channel->Spid(++value) && (value < MAXSPIDS))
|
||||||
|
spids = cString::sprintf("%s, %d", *spids, channel->Spid(value));
|
||||||
|
return spids;
|
||||||
|
}
|
||||||
|
|
||||||
cString getCAids(const cChannel *channel, bool identify)
|
cString getCAids(const cChannel *channel, bool identify)
|
||||||
{
|
{
|
||||||
cString caids;
|
cString caids;
|
||||||
|
@ -33,6 +33,7 @@ uint32_t getUNC(int cardIndex = 0);
|
|||||||
|
|
||||||
cString getApids(const cChannel *channel);
|
cString getApids(const cChannel *channel);
|
||||||
cString getDpids(const cChannel *channel);
|
cString getDpids(const cChannel *channel);
|
||||||
|
cString getSpids(const cChannel *channel);
|
||||||
cString getCAids(const cChannel *channel, bool identify = false);
|
cString getCAids(const cChannel *channel, bool identify = false);
|
||||||
cString getCA(int value);
|
cString getCA(int value);
|
||||||
cString getCoderate(int value);
|
cString getCoderate(int value);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user