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').
|
- Renamed compiling switches ('DEBUG' to 'FEMON_DEBUG' and 'NTSC_SYSTEM' to 'FEMON_NTSC').
|
||||||
- Enabled preliminary support for the device switching.
|
- 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:
|
### The C++ compiler and options:
|
||||||
|
|
||||||
CXX ?= g++
|
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:
|
### The directory environment:
|
||||||
|
|
||||||
@@ -80,6 +84,9 @@ all: libvdr-$(PLUGIN).so
|
|||||||
libvdr-$(PLUGIN).so: $(OBJS)
|
libvdr-$(PLUGIN).so: $(OBJS)
|
||||||
$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
|
$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
|
||||||
@cp $@ $(LIBDIR)/$@.$(VDRVERSION)
|
@cp $@ $(LIBDIR)/$@.$(VDRVERSION)
|
||||||
|
ifndef FEMON_DEBUG
|
||||||
|
strip $(LIBDIR)/$@.$(VDRVERSION)
|
||||||
|
endif
|
||||||
|
|
||||||
dist: clean
|
dist: clean
|
||||||
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
@-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
|
Green - Select next audio track
|
||||||
Yellow - Select audio channel: stereo, mono left, mono right
|
Yellow - Select audio channel: stereo, mono left, mono right
|
||||||
Back - Exit plugin
|
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:
|
Installation:
|
||||||
|
|
||||||
@@ -80,14 +80,16 @@ 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.
|
||||||
|
|
||||||
- Disable the stream analyze to speed up heavy zapping sessions.
|
- Disable the stream analyze to speed up heavy zapping sessions.
|
||||||
|
|
||||||
- The signal strength and signal-to-noise ratio values are comparable only
|
- The signal strength and signal-to-noise ratio values are comparable only
|
||||||
between the same brand/model frontends. Due to the lack of proper frontend
|
between the same brand/model frontends. Due to the lack of proper frontend
|
||||||
specifications those values cannot be calculated into any real units.
|
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
|
- 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
|
small. Please, try to adjust the variable on the setup page before writing
|
||||||
any bug reports.
|
any bug reports. NTSC users should use a shrinked default OSD height by
|
||||||
- There's a shrinked default OSD height for NTSC users: make FEMON_NTSC=1
|
compiling the plugin with: make FEMON_NTSC=1
|
||||||
- The device switching feature is still non-functional.
|
|
||||||
|
|
||||||
"Femon - A real womon who lives according to her natural feminine inclinations."
|
"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 "femonosd.h"
|
||||||
#include "femon.h"
|
#include "femon.h"
|
||||||
|
|
||||||
#if VDRVERSNUM && VDRVERSNUM < 10321
|
#if VDRVERSNUM && VDRVERSNUM < 10329
|
||||||
#error "You don't exist! Go away!"
|
#error "You don't exist! Go away!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
2
femon.h
2
femon.h
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include <vdr/plugin.h>
|
#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 *DESCRIPTION = "DVB Signal Information Monitor (OSD)";
|
||||||
static const char *MAINMENUENTRY = "Signal Information";
|
static const char *MAINMENUENTRY = "Signal Information";
|
||||||
|
|
||||||
|
|||||||
21
femoni18n.c
21
femoni18n.c
@@ -1836,6 +1836,27 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Fikseeritud", // Eesti
|
"Fikseeritud", // Eesti
|
||||||
"", // Dansk
|
"", // 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", // English
|
||||||
"Free to Air", // Deutsch
|
"Free to Air", // Deutsch
|
||||||
"", // Slovenski
|
"", // Slovenski
|
||||||
|
|||||||
14
femonosd.c
14
femonosd.c
@@ -87,7 +87,6 @@ cFemonOsd::cFemonOsd(void)
|
|||||||
m_Osd = NULL;
|
m_Osd = NULL;
|
||||||
m_Receiver = NULL;
|
m_Receiver = NULL;
|
||||||
m_Frontend = -1;
|
m_Frontend = -1;
|
||||||
m_Active = false;
|
|
||||||
m_Number = 0;
|
m_Number = 0;
|
||||||
m_OldNumber = 0;
|
m_OldNumber = 0;
|
||||||
m_Signal = 0;
|
m_Signal = 0;
|
||||||
@@ -110,8 +109,7 @@ cFemonOsd::cFemonOsd(void)
|
|||||||
cFemonOsd::~cFemonOsd(void)
|
cFemonOsd::~cFemonOsd(void)
|
||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
if (m_Active) {
|
if (Running()) {
|
||||||
m_Active = false;
|
|
||||||
Cancel(3);
|
Cancel(3);
|
||||||
}
|
}
|
||||||
if (m_Receiver)
|
if (m_Receiver)
|
||||||
@@ -405,7 +403,10 @@ void cFemonOsd::DrawInfoWindow(void)
|
|||||||
break;
|
break;
|
||||||
case 0x0001 ... 0x00FF:
|
case 0x0001 ... 0x00FF:
|
||||||
/* Standardized systems */
|
/* 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;
|
break;
|
||||||
case 0x0100 ... 0x01FF:
|
case 0x0100 ... 0x01FF:
|
||||||
/* Canal Plus */
|
/* Canal Plus */
|
||||||
@@ -844,8 +845,7 @@ void cFemonOsd::Action(void)
|
|||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
cTimeMs t;
|
cTimeMs t;
|
||||||
m_Active = true;
|
while (Running()) {
|
||||||
while (m_Active) {
|
|
||||||
t.Set(0);
|
t.Set(0);
|
||||||
if (m_Frontend != -1) {
|
if (m_Frontend != -1) {
|
||||||
CHECK(ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus));
|
CHECK(ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus));
|
||||||
@@ -1057,9 +1057,11 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
|
|||||||
}
|
}
|
||||||
if (cDevice::GetDevice(device)->ProvidesChannel(channel)) {
|
if (cDevice::GetDevice(device)->ProvidesChannel(channel)) {
|
||||||
Dprintf("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, Key, device);
|
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);
|
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0);
|
||||||
cControl::Shutdown();
|
cControl::Shutdown();
|
||||||
cDevice::GetDevice(device)->SwitchChannel(channel, true);
|
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()));
|
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
|
||||||
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
|
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
class cFemonOsd : public cOsdObject, public cThread, public cStatus {
|
class cFemonOsd : public cOsdObject, public cThread, public cStatus {
|
||||||
private:
|
private:
|
||||||
bool m_Active;
|
|
||||||
cOsd *m_Osd;
|
cOsd *m_Osd;
|
||||||
cFemonReceiver *m_Receiver;
|
cFemonReceiver *m_Receiver;
|
||||||
int m_Frontend;
|
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")
|
:cReceiver(Ca, -1, Vpid, Apid, Dpid, NULL), cThread("femon receiver")
|
||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
m_Active = false;
|
|
||||||
m_VideoPid = Vpid;
|
m_VideoPid = Vpid;
|
||||||
m_AudioPid = Apid[0];
|
m_AudioPid = Apid[0];
|
||||||
m_AC3Pid = Dpid[0];
|
m_AC3Pid = Dpid[0];
|
||||||
@@ -60,10 +59,8 @@ cFemonReceiver::~cFemonReceiver(void)
|
|||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
Detach();
|
Detach();
|
||||||
if (m_Active) {
|
if (Running())
|
||||||
m_Active = false;
|
|
||||||
Cancel();
|
Cancel();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The following function originates from libdvbmpeg: */
|
/* The following function originates from libdvbmpeg: */
|
||||||
@@ -72,7 +69,7 @@ void cFemonReceiver::GetVideoInfo(uint8_t *mbuf, int count)
|
|||||||
uint8_t *headr;
|
uint8_t *headr;
|
||||||
int found = 0;
|
int found = 0;
|
||||||
int c = 0;
|
int c = 0;
|
||||||
m_VideoValid = false;
|
//m_VideoValid = false;
|
||||||
while ((found < 4) && ((c + 4) < count)) {
|
while ((found < 4) && ((c + 4) < count)) {
|
||||||
uint8_t *b;
|
uint8_t *b;
|
||||||
b = mbuf + c;
|
b = mbuf + c;
|
||||||
@@ -165,7 +162,7 @@ void cFemonReceiver::GetAudioInfo(uint8_t *mbuf, int count)
|
|||||||
int found = 0;
|
int found = 0;
|
||||||
int c = 0;
|
int c = 0;
|
||||||
int tmp = 0;
|
int tmp = 0;
|
||||||
m_AudioValid = false;
|
//m_AudioValid = false;
|
||||||
while (!found && (c < count)) {
|
while (!found && (c < count)) {
|
||||||
uint8_t *b = mbuf + c;
|
uint8_t *b = mbuf + c;
|
||||||
if ((b[0] == 0xff) && ((b[1] & 0xf8) == 0xf8))
|
if ((b[0] == 0xff) && ((b[1] & 0xf8) == 0xf8))
|
||||||
@@ -214,7 +211,7 @@ void cFemonReceiver::GetAC3Info(uint8_t *mbuf, int count)
|
|||||||
int found = 0;
|
int found = 0;
|
||||||
int c = 0;
|
int c = 0;
|
||||||
uint8_t frame;
|
uint8_t frame;
|
||||||
m_AC3Valid = false;
|
//m_AC3Valid = false;
|
||||||
while (!found && (c < count)) {
|
while (!found && (c < count)) {
|
||||||
uint8_t *b = mbuf + c;
|
uint8_t *b = mbuf + c;
|
||||||
if ((b[0] == 0x0b) && (b[1] == 0x77))
|
if ((b[0] == 0x0b) && (b[1] == 0x77))
|
||||||
@@ -253,14 +250,10 @@ void cFemonReceiver::GetAC3Info(uint8_t *mbuf, int count)
|
|||||||
void cFemonReceiver::Activate(bool On)
|
void cFemonReceiver::Activate(bool On)
|
||||||
{
|
{
|
||||||
Dprintf("%s(%d)\n", __PRETTY_FUNCTION__, On);
|
Dprintf("%s(%d)\n", __PRETTY_FUNCTION__, On);
|
||||||
if (On) {
|
if (On)
|
||||||
if (!m_Active)
|
Start();
|
||||||
Start();
|
else
|
||||||
}
|
|
||||||
else if (m_Active) {
|
|
||||||
m_Active = false;
|
|
||||||
Cancel();
|
Cancel();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cFemonReceiver::Receive(uchar *Data, int Length)
|
void cFemonReceiver::Receive(uchar *Data, int Length)
|
||||||
@@ -309,8 +302,7 @@ void cFemonReceiver::Action(void)
|
|||||||
{
|
{
|
||||||
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
Dprintf("%s()\n", __PRETTY_FUNCTION__);
|
||||||
cTimeMs t;
|
cTimeMs t;
|
||||||
m_Active = true;
|
while (Running()) {
|
||||||
while (m_Active) {
|
|
||||||
t.Set(0);
|
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);
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ enum eDolbySurroundMode {
|
|||||||
|
|
||||||
class cFemonReceiver : public cReceiver, public cThread {
|
class cFemonReceiver : public cReceiver, public cThread {
|
||||||
private:
|
private:
|
||||||
bool m_Active;
|
|
||||||
int m_VideoPid;
|
int m_VideoPid;
|
||||||
int m_AudioPid;
|
int m_AudioPid;
|
||||||
int m_AC3Pid;
|
int m_AC3Pid;
|
||||||
|
|||||||
Reference in New Issue
Block a user