Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] Re: some patches for vdr-1.3.18 (SourceCaps, RO, timer-info)and plugins (femon, osdimage)
C.Y.M wrote:
It appears that there are a few hunks missing from your femon patch
(although my diff is against 0.1.7 and yours is against 0.1.6).
diff -ru vdr-1.3.17/PLUGINS/src/femon-0.1.7/femonreceiver.c
femon-0.1.7/femonreceiver.c
--- vdr-1.3.17/PLUGINS/src/femon-0.1.7/femonreceiver.c 2004-11-27
18:20:00.000000000 -0800
+++ vdr-1.3.18/PLUGINS/src/femon-0.1.7/femonreceiver.c 2005-01-10
15:19:34.000000000 -0800
@@ -313,7 +313,7 @@
//printf("cFemonReceiver::Action()\n");
m_Active = true;
while (m_Active) {
- t0 = time_ms();
+ t0 = int(cTimeMs::Now());
// 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_VideoPacketCount = 0;
@@ -321,6 +321,6 @@
m_AudioPacketCount = 0;
m_AC3Bitrate = (8.0 * 184.0 * m_AC3PacketCount) /
(femonConfig.calcinterval * 100.0);
m_AC3PacketCount = 0;
- cCondWait::SleepMs(100 * femonConfig.calcinterval -
(time_ms() - t0));
+ cCondWait::SleepMs(100 * femonConfig.calcinterval -
(int(cTimeMs::Now()) - t0));
}
}
Yeah you are right ... I didn't know about the newer version, so I've
patched the wrong one. ;-)
You write, about "your patch" ... I must have completely missed that one
... otherwise I wouldn't have made a patch. Anyway "Urig" from the
vdr-portal also enhanced the patch for femon-0.1.7 so I attached it.
Bye,
Andreas Brugger
diff -Naur femon-0.1.7.orig/femonosd.c femon-0.1.7/femonosd.c
--- femon-0.1.7.orig/femonosd.c 2004-11-28 03:20:00.000000000 +0100
+++ femon-0.1.7/femonosd.c 2005-01-11 18:20:43.000000000 +0100
@@ -32,11 +32,11 @@
#define CHANNELINPUT_TIMEOUT 1000
#ifdef NTSC_SYSTEM
-#define OSDHEIGHT 420 // in pixels
+#define OSDHEIGHT Setup.OSDHeight // in pixels
#else
-#define OSDHEIGHT 480 // in pixels
+#define OSDHEIGHT Setup.OSDHeight // in pixels
#endif
-#define OSDWIDTH 600 // in pixels
+#define OSDWIDTH Setup.OSDWidth // in pixels
#define OSDINFOHEIGHT (m_Font->Height() * 11) // in pixels (11 rows)
#define OSDSTATUSHEIGHT (m_Font->Height() * 6) // in pixels (6 rows)
@@ -149,9 +149,14 @@
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice3, clrBlack, clrWhite);
}
- value = -1;
- const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&value);
- if (AudioTracks) {
+ //value = -1;
+
+ // dirty audio-fix
+ value = cDevice::PrimaryDevice()->GetCurrentAudioTrack() - ttAudioFirst;
+
+ // original functionality
+ /*const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&value);
+ if (AudioTracks) { */
if (value == 0) {
x -= bmApid1.Width() + SPACING;
y = (m_Font->Height() - bmApid1.Height()) / 2;
@@ -164,7 +169,7 @@
if (y < 0) y = 0;
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmApid2, clrBlack, clrWhite);
}
- }
+ // }
value = m_Receiver->VideoFormat();
if (value == VF_PAL) {
x -= bmPAL.Width() + SPACING;
@@ -309,14 +314,14 @@
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Apid1"), clrWhite, clrBackground, m_Font);
- value = channel->Apid2();
- if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Apid1(), value);
- else snprintf(buf, sizeof(buf), "%d", channel->Apid1());
+ value = channel->Apid(1);
+ if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Apid(0), value);
+ else snprintf(buf, sizeof(buf), "%d", channel->Apid(0));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Dpid1"), clrWhite, clrBackground, m_Font);
- value = channel->Dpid2();
- if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Dpid1(), value);
- else snprintf(buf, sizeof(buf), "%d", channel->Dpid1());
+ value = channel->Dpid(1);
+ if (value) snprintf(buf, sizeof(buf), "%d, %d", channel->Dpid(0), value);
+ else snprintf(buf, sizeof(buf), "%d", channel->Dpid(0));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("CA"), clrWhite, clrBackground, m_Font);
@@ -419,7 +424,7 @@
snprintf(buf, sizeof(buf), "%d %s", value, tr("MHz"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font);
- snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source()));
+ snprintf(buf, sizeof(buf), "%s", *cSource::ToString(channel->Source()));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font);
@@ -460,7 +465,7 @@
snprintf(buf, sizeof(buf), "%d %s", value, tr("MHz"));
m_Osd->DrawText(OSDINFOWIN_X(2), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), tr("Source"), clrWhite, clrBackground, m_Font);
- snprintf(buf, sizeof(buf), "%s", cSource::ToString(channel->Source()));
+ snprintf(buf, sizeof(buf), "%s", *cSource::ToString(channel->Source()));
m_Osd->DrawText(OSDINFOWIN_X(4), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Srate"), clrWhite, clrBackground, m_Font);
@@ -631,8 +636,13 @@
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_Font);
value = -1;
- cDevice::PrimaryDevice()->GetAudioTracks(&value);
- snprintf(buf, sizeof(buf), "#%d", (value > 0 ? channel->Apid2() : channel->Apid1()));
+
+ // dirty audio-fix
+ value = cDevice::PrimaryDevice()->GetCurrentAudioTrack() - ttAudioFirst;
+
+ // original functionality
+ //cDevice::PrimaryDevice()->GetAudioTracks(&value);
+ snprintf(buf, sizeof(buf), "#%d", (value > 0 ? channel->Apid(1) : channel->Apid(0)));
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
offset += m_Font->Height();
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font);
@@ -663,7 +673,7 @@
else if (m_DisplayMode == modeAC3) {
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(0), OSDWIDTH, OSDINFOWIN_Y(OSDINFOHEIGHT), clrBackground);
m_Osd->DrawRectangle(0, OSDINFOWIN_Y(offset), OSDWIDTH, OSDINFOWIN_Y(offset+m_Font->Height()-1), clrWhite);
- snprintf(buf, sizeof(buf), "%s - %s #%d", tr("Stream Information"), tr("AC-3 Stream"), channel->Dpid1());
+ snprintf(buf, sizeof(buf), "%s - %s #%d", tr("Stream Information"), tr("AC-3 Stream"), channel->Dpid(0));
m_Osd->DrawText( OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), buf, clrBackground, clrWhite, m_Font);
offset += m_Font->Height();
if (m_Receiver && m_Receiver->AC3Valid()) {
@@ -765,7 +775,7 @@
//printf("cFemonOsd::Action()\n");
m_Active = true;
while (m_Active) {
- t0 = time_ms();
+ t0 = cTimeMs::Now();
if (m_Frontend != -1) {
CHECK(ioctl(m_Frontend, FE_READ_STATUS, &m_FrontendStatus));
CHECK(ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &m_Signal));
@@ -778,7 +788,7 @@
isyslog("Card #%d (%s) STR: %04x SNR: %04x BER: %08x UNC: %08x |%c|%c|%c|%c|%c|", cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name, m_Signal, m_SNR, m_BER, m_UNC, (m_FrontendStatus & FE_HAS_LOCK) ? 'L' : ' ', (m_FrontendStatus & FE_HAS_SIGNAL) ? 'S' : ' ', (m_FrontendStatus & FE_HAS_CARRIER) ? 'C' : ' ', (m_FrontendStatus & FE_HAS_VITERBI) ? 'V' : ' ', (m_FrontendStatus & FE_HAS_SYNC) ? 'Z' : ' ');
}
}
- cCondWait::SleepMs(100 * femonConfig.updateinterval - (time_ms() - t0));
+ cCondWait::SleepMs(100 * femonConfig.updateinterval - (cTimeMs::Now() - t0));
}
}
@@ -818,7 +828,7 @@
delete m_Receiver;
if (femonConfig.analyzestream) {
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
- m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid1(), channel->Dpid1());
+ m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid(0), channel->Dpid(0));
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
Start();
@@ -850,13 +860,13 @@
delete m_Receiver;
if (femonConfig.analyzestream) {
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
- m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid1(), channel->Dpid1());
+ m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), channel->Apid(0), channel->Dpid(0));
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
eOSState cFemonOsd::ProcessKey(eKeys Key)
-{
+{
eOSState state = cOsdObject::ProcessKey(Key);
if (state == osUnknown) {
switch (Key) {
@@ -874,7 +884,7 @@
if (m_Number > 0) {
DrawStatusWindow();
cChannel *ch = Channels.GetByNumber(m_Number);
- m_InputTime = time_ms();
+ m_InputTime = cTimeMs::Now();
// Lets see if there can be any useful further input:
int n = ch ? m_Number * 10 : 0;
while (ch && (ch = Channels.Next(ch)) != NULL) {
@@ -899,7 +909,7 @@
case kBack:
return osEnd;
case kGreen:
- {
+ /*{
int CurrentAudioTrack = -1;
const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&CurrentAudioTrack);
if (AudioTracks) {
@@ -911,11 +921,11 @@
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());
+ m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), (at - AudioTracks) ? channel->Apid(1) : channel->Apid(0), channel->Dpid(0));
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
- }
+ }*/
break;
case kRight:
case kLeft:
@@ -950,21 +960,21 @@
m_Number = 0;
break;
case kNone:
- if (m_Number && (time_ms() - m_InputTime > CHANNELINPUT_TIMEOUT)) {
+ if (m_Number && (cTimeMs::Now() - m_InputTime > CHANNELINPUT_TIMEOUT)) {
if (Channels.GetByNumber(m_Number)) {
m_OldNumber = cDevice::CurrentChannel();
Channels.SwitchTo(m_Number);
m_Number = 0;
}
else {
- m_InputTime = time_ms();
+ m_InputTime = cTimeMs::Now();
m_Number = 0;
}
}
break;
case kOk:
// toggle between display modes
- if (++m_DisplayMode == modeAC3 && !Channels.GetByNumber(cDevice::CurrentChannel())->Dpid1()) m_DisplayMode++;
+ if (++m_DisplayMode == modeAC3 && !Channels.GetByNumber(cDevice::CurrentChannel())->Dpid(0)) m_DisplayMode++;
if (m_DisplayMode >= modeMaxNumber) m_DisplayMode = 0;
DrawInfoWindow();
break;
diff -Naur femon-0.1.7.orig/femonreceiver.c femon-0.1.7/femonreceiver.c
--- femon-0.1.7.orig/femonreceiver.c 2004-11-28 03:20:00.000000000 +0100
+++ femon-0.1.7/femonreceiver.c 2005-01-11 18:20:53.000000000 +0100
@@ -23,7 +23,7 @@
m_Active = false;
m_VideoPid = Vpid;
m_AudioPid = Apid;
- m_AC3Pid = Dpid;
+ m_AC3Pid = Dpid;
m_VideoValid = false;
m_VideoPacketCount = 0;
m_VideoHorizontalSize = 0;
@@ -41,7 +41,7 @@
m_AudioMPEGLayer = 0;
m_AudioBitrate = 0.0;
m_AC3Valid = false;
- m_AC3PacketCount = 0;
+ m_AC3PacketCount = 0;
m_AC3StreamBitrate = 0;
m_AC3SamplingFreq = 0;
m_AC3Bitrate = 0;
@@ -54,7 +54,7 @@
m_AC3LfeOn = false;
m_AC3DialogLevel = FR_NOTVALID;
}
-
+
cFemonReceiver::~cFemonReceiver(void)
{
//printf("cFemonReceiver::~cFemonReceiver()\n");
@@ -173,7 +173,7 @@
found = 1;
else
c++;
- }
+ }
if ((!found) || ((c + 3) >= count)) return;
m_AudioValid = true;
headr = mbuf + c;
@@ -245,7 +245,7 @@
m_AC3SurroundMixLevel = FR_NOTVALID;
if (m_AC3AudioCodingMode == 0x02) // if in 2/0 mode
m_AC3DolbySurroundMode = ((headr[4] & 1) << 1) | ((headr[5] & 0x80) >> 7);
- else
+ else
m_AC3DolbySurroundMode = FR_NOTVALID;
m_AC3LfeOn = (headr[5] & 0x40) >> 6;
m_AC3DialogLevel = (headr[5] & 0x3e) >> 1;
@@ -290,7 +290,7 @@
if (Data[1] & PAY_START) {
uint8_t *sb = Data + 4 + off;
if (sb[7] & PTS_DTS_FLAGS) {
- uint8_t *pay = sb + sb[8] + 9;
+ uint8_t *pay = sb + sb[8] + 9;
int l = TS_SIZE - 13 - off - sb[8];
if (pid == m_VideoPid) {
GetVideoInfo(pay, l);
@@ -313,7 +313,7 @@
//printf("cFemonReceiver::Action()\n");
m_Active = true;
while (m_Active) {
- t0 = time_ms();
+ t0 = cTimeMs::Now();
// 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_VideoPacketCount = 0;
@@ -321,6 +321,6 @@
m_AudioPacketCount = 0;
m_AC3Bitrate = (8.0 * 184.0 * m_AC3PacketCount) / (femonConfig.calcinterval * 100.0);
m_AC3PacketCount = 0;
- cCondWait::SleepMs(100 * femonConfig.calcinterval - (time_ms() - t0));
+ cCondWait::SleepMs(100 * femonConfig.calcinterval - (cTimeMs::Now() - t0));
}
}
Home |
Main Index |
Thread Index