[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