mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 11:36:53 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
713f9e652a | ||
|
|
7c948cde72 |
10
HISTORY
10
HISTORY
@@ -161,3 +161,13 @@ VDR Plugin 'femon' Revision History
|
||||
|
||||
- Renamed compiling switches ('DEBUG' to 'FEMON_DEBUG' and 'NTSC_SYSTEM' to 'FEMON_NTSC').
|
||||
- Enabled preliminary support for the device switching.
|
||||
|
||||
2005-07-23: Version 0.9.1
|
||||
|
||||
- Fixed AC3-info flickering (Thanks to Pasi Juppo for reporting this one).
|
||||
- Added "Analog" type CA system.
|
||||
- Plugin is now stripped by default.
|
||||
|
||||
2005-08-15: Version 0.9.2
|
||||
|
||||
- Threads updated for vdr-1.3.29.
|
||||
|
||||
9
Makefile
9
Makefile
@@ -16,7 +16,11 @@ VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).h | awk '{ pri
|
||||
### The C++ compiler and options:
|
||||
|
||||
CXX ?= g++
|
||||
CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -fPIC
|
||||
ifdef FEMON_DEBUG
|
||||
CXXFLAGS ?= -g -Wall -Woverloaded-virtual -fPIC
|
||||
else
|
||||
CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual -fPIC
|
||||
endif
|
||||
|
||||
### The directory environment:
|
||||
|
||||
@@ -80,6 +84,9 @@ all: libvdr-$(PLUGIN).so
|
||||
libvdr-$(PLUGIN).so: $(OBJS)
|
||||
$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
|
||||
@cp $@ $(LIBDIR)/$@.$(VDRVERSION)
|
||||
ifndef FEMON_DEBUG
|
||||
strip $(LIBDIR)/$@.$(VDRVERSION)
|
||||
endif
|
||||
|
||||
dist: clean
|
||||
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
||||
|
||||
10
README
10
README
@@ -63,7 +63,7 @@ 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
|
||||
Left/Right - Switch to next/previous device that provides the current channel
|
||||
|
||||
Installation:
|
||||
|
||||
@@ -80,14 +80,16 @@ Notes:
|
||||
- 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
|
||||
it without patching the VDR core.
|
||||
|
||||
- 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 FEMON_NTSC=1
|
||||
- The device switching feature is still non-functional.
|
||||
any bug reports. NTSC users should use a shrinked default OSD height by
|
||||
compiling the plugin with: make FEMON_NTSC=1
|
||||
|
||||
"Femon - A real womon who lives according to her natural feminine inclinations."
|
||||
|
||||
2
femon.c
2
femon.c
@@ -12,7 +12,7 @@
|
||||
#include "femonosd.h"
|
||||
#include "femon.h"
|
||||
|
||||
#if VDRVERSNUM && VDRVERSNUM < 10321
|
||||
#if VDRVERSNUM && VDRVERSNUM < 10329
|
||||
#error "You don't exist! Go away!"
|
||||
#endif
|
||||
|
||||
|
||||
2
femon.h
2
femon.h
@@ -11,7 +11,7 @@
|
||||
|
||||
#include <vdr/plugin.h>
|
||||
|
||||
static const char *VERSION = "0.9.0";
|
||||
static const char *VERSION = "0.9.2";
|
||||
static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)";
|
||||
static const char *MAINMENUENTRY = "Signal Information";
|
||||
|
||||
|
||||
21
femoni18n.c
21
femoni18n.c
@@ -1836,6 +1836,27 @@ const tI18nPhrase Phrases[] = {
|
||||
"Fikseeritud", // Eesti
|
||||
"", // Dansk
|
||||
},
|
||||
{ "Analog", // English
|
||||
"", // Deutsch
|
||||
"", // Slovenski
|
||||
"", // Italiano
|
||||
"", // Nederlands
|
||||
"", // Portugu<67>s
|
||||
"", // Fran<61>ais
|
||||
"", // Norsk
|
||||
"analoginen", // suomi
|
||||
"", // Polski
|
||||
"", // Espa<70>ol
|
||||
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek)
|
||||
"", // Svenska
|
||||
"", // Romaneste
|
||||
"", // Magyar
|
||||
"", // Catal<61>
|
||||
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
|
||||
"", // Hrvatski (Croatian)
|
||||
"", // Eesti
|
||||
"", // Dansk
|
||||
},
|
||||
{ "Free to Air", // English
|
||||
"Free to Air", // Deutsch
|
||||
"", // Slovenski
|
||||
|
||||
14
femonosd.c
14
femonosd.c
@@ -87,7 +87,6 @@ cFemonOsd::cFemonOsd(void)
|
||||
m_Osd = NULL;
|
||||
m_Receiver = NULL;
|
||||
m_Frontend = -1;
|
||||
m_Active = false;
|
||||
m_Number = 0;
|
||||
m_OldNumber = 0;
|
||||
m_Signal = 0;
|
||||
@@ -110,8 +109,7 @@ cFemonOsd::cFemonOsd(void)
|
||||
cFemonOsd::~cFemonOsd(void)
|
||||
{
|
||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||
if (m_Active) {
|
||||
m_Active = false;
|
||||
if (Running()) {
|
||||
Cancel(3);
|
||||
}
|
||||
if (m_Receiver)
|
||||
@@ -405,7 +403,10 @@ void cFemonOsd::DrawInfoWindow(void)
|
||||
break;
|
||||
case 0x0001 ... 0x00FF:
|
||||
/* Standardized systems */
|
||||
snprintf(buf, sizeof(buf), "%s", tr("Fixed"));
|
||||
if ((value == 0x00A0) || (value == 0x00A1))
|
||||
snprintf(buf, sizeof(buf), "%s", tr("Analog"));
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "%s", tr("Fixed"));
|
||||
break;
|
||||
case 0x0100 ... 0x01FF:
|
||||
/* Canal Plus */
|
||||
@@ -844,8 +845,7 @@ void cFemonOsd::Action(void)
|
||||
{
|
||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||
cTimeMs t;
|
||||
m_Active = true;
|
||||
while (m_Active) {
|
||||
while (Running()) {
|
||||
t.Set(0);
|
||||
if (m_Frontend != -1) {
|
||||
CHECK(ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus));
|
||||
@@ -1057,9 +1057,11 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
|
||||
}
|
||||
if (cDevice::GetDevice(device)->ProvidesChannel(channel)) {
|
||||
Dprintf("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, Key, device);
|
||||
// here should be added some checks, if the device is really available (i.e. not recording)
|
||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0);
|
||||
cControl::Shutdown();
|
||||
cDevice::GetDevice(device)->SwitchChannel(channel, true);
|
||||
// does this work with primary devices ?
|
||||
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
|
||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
|
||||
break;
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
|
||||
class cFemonOsd : public cOsdObject, public cThread, public cStatus {
|
||||
private:
|
||||
bool m_Active;
|
||||
cOsd *m_Osd;
|
||||
cFemonReceiver *m_Receiver;
|
||||
int m_Frontend;
|
||||
|
||||
@@ -21,7 +21,6 @@ cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[])
|
||||
:cReceiver(Ca, -1, Vpid, Apid, Dpid, NULL), cThread("femon receiver")
|
||||
{
|
||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||
m_Active = false;
|
||||
m_VideoPid = Vpid;
|
||||
m_AudioPid = Apid[0];
|
||||
m_AC3Pid = Dpid[0];
|
||||
@@ -60,10 +59,8 @@ cFemonReceiver::~cFemonReceiver(void)
|
||||
{
|
||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||
Detach();
|
||||
if (m_Active) {
|
||||
m_Active = false;
|
||||
if (Running())
|
||||
Cancel();
|
||||
}
|
||||
}
|
||||
|
||||
/* The following function originates from libdvbmpeg: */
|
||||
@@ -72,7 +69,7 @@ void cFemonReceiver::GetVideoInfo(uint8_t *mbuf, int count)
|
||||
uint8_t *headr;
|
||||
int found = 0;
|
||||
int c = 0;
|
||||
m_VideoValid = false;
|
||||
//m_VideoValid = false;
|
||||
while ((found < 4) && ((c + 4) < count)) {
|
||||
uint8_t *b;
|
||||
b = mbuf + c;
|
||||
@@ -165,7 +162,7 @@ void cFemonReceiver::GetAudioInfo(uint8_t *mbuf, int count)
|
||||
int found = 0;
|
||||
int c = 0;
|
||||
int tmp = 0;
|
||||
m_AudioValid = false;
|
||||
//m_AudioValid = false;
|
||||
while (!found && (c < count)) {
|
||||
uint8_t *b = mbuf + c;
|
||||
if ((b[0] == 0xff) && ((b[1] & 0xf8) == 0xf8))
|
||||
@@ -214,7 +211,7 @@ void cFemonReceiver::GetAC3Info(uint8_t *mbuf, int count)
|
||||
int found = 0;
|
||||
int c = 0;
|
||||
uint8_t frame;
|
||||
m_AC3Valid = false;
|
||||
//m_AC3Valid = false;
|
||||
while (!found && (c < count)) {
|
||||
uint8_t *b = mbuf + c;
|
||||
if ((b[0] == 0x0b) && (b[1] == 0x77))
|
||||
@@ -253,14 +250,10 @@ void cFemonReceiver::GetAC3Info(uint8_t *mbuf, int count)
|
||||
void cFemonReceiver::Activate(bool On)
|
||||
{
|
||||
Dprintf("%s(%d)\n", __PRETTY_FUNCTION__, On);
|
||||
if (On) {
|
||||
if (!m_Active)
|
||||
Start();
|
||||
}
|
||||
else if (m_Active) {
|
||||
m_Active = false;
|
||||
if (On)
|
||||
Start();
|
||||
else
|
||||
Cancel();
|
||||
}
|
||||
}
|
||||
|
||||
void cFemonReceiver::Receive(uchar *Data, int Length)
|
||||
@@ -309,8 +302,7 @@ void cFemonReceiver::Action(void)
|
||||
{
|
||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||
cTimeMs t;
|
||||
m_Active = true;
|
||||
while (m_Active) {
|
||||
while (Running()) {
|
||||
t.Set(0);
|
||||
// TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit
|
||||
m_VideoBitrate = (8.0 * 184.0 * m_VideoPacketCount) / (femonConfig.calcinterval * 100000.0);
|
||||
|
||||
@@ -53,7 +53,6 @@ enum eDolbySurroundMode {
|
||||
|
||||
class cFemonReceiver : public cReceiver, public cThread {
|
||||
private:
|
||||
bool m_Active;
|
||||
int m_VideoPid;
|
||||
int m_AudioPid;
|
||||
int m_AC3Pid;
|
||||
|
||||
Reference in New Issue
Block a user