Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: DXR3



On Wed, 2004-11-03 at 14:41, Andrey Kuzmin wrote:
> >> Works fine for me! I'm using a 2.6 kernel, cvs drivers, vdr-1.3.15, and
> >> the current dxr3 plugin (0.2.3-pre2, I think it is).
> 
> What is your configuration? I couldn't compile 0.2.3-pre2 with VDR >=
> 1.3.13, current CVS dxr3 version compiles successfully, but OSD isn't
> enabled in it.

{snippage}

Ahhh yes. I forgot about that: you need a small patch for the plugin to
compile with vdr-1.3.13 and later...
>From http://www.linuxtv.org/mailinglists/vdr/2004/10-2004/msg00340.html


--- dxr3_old/dxr3syncbuffer.c   2004-07-26 04:04:47.000000000 +0200
+++ dxr3/dxr3syncbuffer.c       2004-10-17 22:59:10.812346976 +0200
@@ -31,7 +31,8 @@
 const int DXR3_MAX_VIDEO_FRAME_LENGTH = 4096;
 const int DXR3_MAX_AUDIO_FRAME_LENGTH = 4096;
 
-// ==================================
+// ==================================
+//! constructor
 cFixedLengthFrame::cFixedLengthFrame(uint32_t length) : 
 m_count(0), m_length(length), m_pts(0), m_type(ftUnknown) {
 
@@ -102,7 +103,8 @@
 
 
 
-// ==================================
+// ==================================
+//! constructor
 cDxr3SyncBuffer::cDxr3SyncBuffer(int frameCount, int frameLength,
cDxr3Interface& dxr3Device) : cRingBuffer(frameCount, true),
m_dxr3Device(dxr3Device) 
 {
     m_pBuffer = new cFixedLengthFrame[frameCount](frameLength);
@@ -141,10 +143,14 @@
 // ==================================
 int cDxr3SyncBuffer::Available(void) 
 {
-    int ret = 0;
-    Lock();
+    int ret = 0;
+#if VDRVERSNUM < 10313
+       Lock();
+#endif
     ret = m_count;
-    Unlock();
+#if VDRVERSNUM < 10313
+       Unlock();
+#endif
     return ret;
 }
 
@@ -202,7 +208,9 @@
                 WaitForPut();
             }
         
-            Lock();
+               #if VDRVERSNUM < 10313
+                       Lock();
+               #endif
             if (pts == m_lastPts) 
                        {
                 pts = 0;
@@ -246,7 +254,9 @@
                     m_bWaitPts = false;
                 }
             }
-            Unlock();
+               #if VDRVERSNUM < 10313
+                       Unlock();
+               #endif
             break;
     }
 
@@ -256,7 +266,9 @@
 // ==================================
 void cDxr3SyncBuffer::Pop(void) 
 {
-    Lock();
+#if VDRVERSNUM < 10313
+       Lock();
+#endif
     if (m_count) 
        {
         uint32_t nextPts = 0;
@@ -279,8 +291,10 @@
             m_next = m_nextFree = m_count = 0;
         } 
     }
-    EnablePut();
-    Unlock();
+    EnablePut();
+#if VDRVERSNUM < 10313
+       Unlock();
+#endif
 }
 
 // ==================================
@@ -297,12 +311,16 @@
             WaitForGet();
         }
         
-        Lock();
+       #if VDRVERSNUM < 10313
+               Lock();
+       #endif
         if (m_nextFree != m_next) 
                {
             pRet = &m_pBuffer[m_next]; 
         }
-        Unlock();
+       #if VDRVERSNUM < 10313
+               Unlock();
+       #endif
     } 
        else 
        {
@@ -315,7 +333,9 @@
 // ==================================
 void cDxr3SyncBuffer::Clear(void) 
 {
-    Lock();
+#if VDRVERSNUM < 10313
+       Lock();
+#endif
     m_next = 0;
     m_nextFree = 0;
     m_count = 0;
@@ -330,7 +350,9 @@
     }
     cFixedLengthFrame::Clear();
     cDxr3NextPts::Instance().Clear();
-    Unlock();
+#if VDRVERSNUM < 10313
+       Unlock();
+#endif
 }
 
 // ==================================
@@ -340,9 +362,13 @@
     m_waitDelta = delta;
     if (!m_bPutBlock) 
        {
-        Lock();
+       #if VDRVERSNUM < 10313
+               Lock();
+       #endif
         m_bWaitPts = true;
-        Unlock();
+       #if VDRVERSNUM < 10313
+               Unlock();
+       #endif
         m_bGetBlock = true;
         ReceiverStopped();
         WaitForGet();
@@ -382,7 +408,9 @@
 // ==================================
 void cDxr3SyncBuffer::WakeUp(void) 
 {
-    Lock();
+#if VDRVERSNUM < 10313
+       Lock();
+#endif
     if (m_bStartReceiver == true) 
        {
         if (!m_bWaitPts) 
@@ -399,7 +427,9 @@
             }
         }
     }
-    Unlock();
+#if VDRVERSNUM < 10313
+       Unlock();
+#endif
 }
 
 // ==================================


Should compile fine with that patch.

> BTW what is a roadmap of future DXR3-plugin releases? :)

Best answered by Christian Gmeiner (the maintainer)! As you've found
out, there is no OSD in the current CVS because that part is being
totally rewritten before he moves on to other parts such as A/V sync,
etc. Christian?

The 0.2.3-pre2 version works just fine for me. There are some A/V sync
problems (video sometimes gets ahead of audio for me) and a few glitches
when there is an aspect ratio change but apart from that no complaints!

No complaints apart from the OSD isn't as good as a FF card so I can't
play solitaire on my OSD!

:-(

A few other plugins may not work quite as expected due to this too,
although many have dedicated dxr3 modes to compensate!

Cheers,

Laz





Home | Main Index | Thread Index