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