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

List:       kde-commits
Subject:    playground/network/kcall
From:       George Kiagiadakis <gkiagiad () csd ! uoc ! gr>
Date:       2009-07-23 14:31:14
Message-ID: 1248359474.798765.28315.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1001517 by gkiagia:

Re-add support for showing video output.

 M  +5 -0      kcall_handler/channelhandler.cpp  
 M  +20 -8     kcall_handler/farsight/farsightmediahandler.cpp  
 M  +2 -2      libqtpfarsight/qtfchannel.cpp  


--- trunk/playground/network/kcall/kcall_handler/channelhandler.cpp #1001516:1001517
@@ -147,6 +147,11 @@
     kDebug() << " direction:" << stream->direction();
     kDebug() << " state:" << stream->state();
     kDebug() << " pending send:" << stream->pendingSend();
+
+    //clear pending send in new video streams.
+    if ( stream->type() == Tp::MediaStreamTypeVideo && stream->pendingSend() ) {
+        stream->requestDirection(Tp::MediaStreamDirectionReceive);
+    }
 }
 
 void ChannelHandler::onStreamRemoved(const Tp::MediaStreamPtr & stream)
--- trunk/playground/network/kcall/kcall_handler/farsight/farsightmediahandler.cpp #1001516:1001517
@@ -22,6 +22,7 @@
 #include "../../libqtgstreamer/qgstglobal.h"
 #include "../../libqtgstreamer/qgstbus.h"
 #include "../../libqtpfarsight/qtfchannel.h"
+#include "../../libkgstvideowidget/videowidget.h"
 #include <KDebug>
 #include <KGlobal>
 #include <KConfig>
@@ -34,6 +35,8 @@
 
 struct FarsightMediaHandler::Private
 {
+    Private() : videoWidgetIdsCounter(0) {}
+
     QTfChannel *qtfchannel;
     DeviceManager *deviceManager;
 
@@ -43,6 +46,8 @@
     QGstElementPtr audioAdder;
 
     QHash<QByteArray, QGstPadPtr> audioAdderPadsMap;
+    QHash<QByteArray, uint> videoWidgetIdsMap;
+    uint videoWidgetIdsCounter;
 };
 
 FarsightMediaHandler::FarsightMediaHandler(const Tp::StreamedMediaChannelPtr & channel,
@@ -239,22 +244,29 @@
 
 void FarsightMediaHandler::openVideoOutputDevice(bool *success)
 {
-    //TODO implement me
-    *success = false;
+    //assume that we always have a video widget available.
+    *success = true;
 }
 
 void FarsightMediaHandler::videoSrcPadAdded(QGstPadPtr srcPad)
 {
-    //TODO implement me
-    Q_UNUSED(srcPad);
-    Q_ASSERT(false);
+    //TODO use the VideoWidget from DeviceManager
+    ::VideoWidget *widget = new ::VideoWidget;
+
+    QGstElementPtr element = QGstElement::fromGstElement(widget->videoElement());
+    d->pipeline->add(element);
+    element->setState(QGstElement::Playing);
+    QGstPadPtr sinkPad = element->getStaticPad("sink");
+    srcPad->link(sinkPad);
+
+    d->videoWidgetIdsMap.insert(srcPad->property<QByteArray>("name"), d->videoWidgetIdsCounter);
+    emit videoOutputWidgetCreated(widget, d->videoWidgetIdsCounter++);
 }
 
 void FarsightMediaHandler::videoSrcPadRemoved(QGstPadPtr srcPad)
 {
-    //TODO implement me
-    Q_UNUSED(srcPad);
-    Q_ASSERT(false);
+    uint id = d->videoWidgetIdsMap.take(srcPad->property<QByteArray>("name"));
+    emit closeVideoOutputWidget(id);
 }
 
 #include "farsightmediahandler.moc"
--- trunk/playground/network/kcall/libqtpfarsight/qtfchannel.cpp #1001516:1001517
@@ -237,7 +237,7 @@
 
             QMutexLocker l(&self->m_srcPadAddedMutex);
             if ( !self->m_audioOutputDeviceIsOpen ) {
-                bool success;
+                bool success = false;
                 emit self->q->openAudioOutputDevice(&success);
                 self->m_audioOutputDeviceIsOpen = success;
 
@@ -281,7 +281,7 @@
 
             QMutexLocker l(&self->m_srcPadAddedMutex);
             if ( !self->m_videoOutputDeviceIsOpen ) {
-                bool success;
+                bool success = false;
                 emit self->q->openVideoOutputDevice(&success);
                 self->m_videoOutputDeviceIsOpen = success;
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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