[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdeextragear-3/kdetv/plugins
From:       Dirk Ziegelmeier <dziegel () gmx ! de>
Date:       2004-12-29 23:47:03
Message-ID: 20041229234703.216E81BA87 () office ! kde ! org
[Download RAW message or body]

CVS commit by dziegel: 

VBIDecoder: Support VBI proxy and a fix for libzvbi 0.2.9 crash


  M +2 -0      configure.in.in   1.9
  M +41 -10    vbi/libzvbidecoder/vbidecoder.cpp   1.21


--- kdeextragear-3/kdetv/plugins/configure.in.in  #1.8:1.9
@@ -81,4 +81,6 @@
 AM_CONDITIONAL(include_ZVBIDIR, [test -n "$ZVBIDIRS"])
 
+AC_CHECK_LIB(zvbi, vbi_proxy_client_create, AC_DEFINE(HAVE_VBI_PROXY, 1, [If we have VBI proxy]))
+
 dnl ------------------------------------------------------------------------
 dnl Check for XRANDR

--- kdeextragear-3/kdetv/plugins/vbi/libzvbidecoder/vbidecoder.cpp  #1.20:1.21
@@ -63,4 +63,8 @@
 #include "vbimanager.h"
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 // ---------------------------------------------- VBI capture configuration
 
@@ -135,4 +139,7 @@ private:
     volatile bool    _terminate;
     vbi_capture*     _cap;
+#ifdef HAVE_VBI_PROXY
+    vbi_proxy_client* _proxy;
+#endif
     vbi_raw_decoder* _par;
     vbi_sliced*      _sliced;
@@ -148,4 +155,7 @@ VbiDecoderPrivate::VbiDecoderPrivate(QOb
       _terminate(false),
       _cap(0L),
+#ifdef HAVE_VBI_PROXY
+      _proxy(0L),
+#endif
       _sliced(0L),
       _eventTarget(eventTarget)
@@ -168,17 +178,38 @@ void VbiDecoderPrivate::stop()
     if (_cap) vbi_capture_delete(_cap);
     _cap = 0L;
+#ifdef HAVE_VBI_PROXY
+    if(_proxy) vbi_proxy_client_destroy(_proxy);
+    _proxy = 0L;
+#endif
 }
 
 bool VbiDecoderPrivate::init(const QString& dev, uint services)
 {
+    char* errorstr;
+
     if ( running() ) {
         stop();
     }
 
-    _cap = vbi_capture_v4l2_new(QFile::encodeName(dev), 16, &services, -1, 0, true);
+    _cap = NULL;
+
+#ifdef HAVE_VBI_PROXY
+    _proxy = vbi_proxy_client_create(QFile::encodeName(dev), "kdetv",
+                                     VBI_PROXY_CLIENT_NO_TIMEOUTS, &errorstr, true);
+    if (NULL != _proxy) {
+        _cap = vbi_capture_proxy_new(_proxy, 16, 0, &services, -1, &errorstr);
+    }
+#endif
+
+    if(NULL == _cap) {
+        _cap = vbi_capture_v4l2_new(QFile::encodeName(dev), 16, &services, -1, &errorstr, true);
     if (!_cap) {
-        _cap = vbi_capture_v4l_new(QFile::encodeName(dev), 16, &services, -1, 0, true);
+            _cap = vbi_capture_v4l_new(QFile::encodeName(dev), 16, &services, -1, &errorstr, true);
         if (!_cap) return false;
     }
+        kdDebug() << "VBIDecoder: Using V4L interface." << endl;
+    } else {
+        kdDebug() << "VBIDecoder: Using VBI proxy." << endl;
+    }
     _par       = vbi_capture_parameters(_cap);
     _sliced    = new vbi_sliced[_par->count[0] + _par->count[1]];
@@ -443,5 +474,5 @@ extern "C" {
     VbiDecoderPlugin* create_libzvbidecoder(Kdetv* ktv, QObject* parent)
     {
-        return new VbiDecoderPlugin(ktv, "libzvbi-decoder", parent, "lizvbi vbi decoder");
+        return new VbiDecoderPlugin(ktv, "libzvbi-decoder", parent, "libzvbi vbi decoder");
     }
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic