KTp/Components/Call UI: Difference between revisions

From KDE Community Wiki
< KTp
No edit summary
Line 1: Line 1:
==The plan==
* The current code is wrong by design, needs to be replaced.
* Build a simple Qt library that exports the whole call application logic with a QML-izable interface, using QtGStreamer/farsight/farsight utils/telepathy-qt4.
* Build a GUI that possibly consists of a standard KXmlGuiWindow that embeds a QDeclarativeView, which implements the call GUI.
===Blockers===
* Needs telepathy-qt4 to export interfaces for the Call spec.
** tp-qt4-yell exports them now. will soon be merged to tp-qt4.
* Needs a QML video widget in QtGStreamer.
** this is work in progress.
** we need it if and only if we build the interface using QML.
===GUI Ideas===
* [http://cgit.collabora.com/git/user/asoliver/kde-telepathy-callhandler/ Alvaro's mockup]
* [https://bugzilla.gnome.org/show_bug.cgi?id=629902 empathy's new call UI mockup]
== Dependency hell ==
== Dependency hell ==


* telepathy-qt:
* telepathy-qt:
** Provides Qt high level api to telepathy.
** Provides Qt high level api to telepathy.
** http://cgit.freedesktop.org/telepathy/telepathy-qt4/
** http://cgit.freedesktop.org/telepathy/telepathy-qt/
 
** Required version: >= 0.9.1
* telepathy-qt-yell:
** Note: This must be built with farstream support, so before building it make sure you have farstream, telepathy-farstream, telepathy-glib and gstreamer (core and base plugins) installed.
** Provides Qt high level api for the Call interface (will be merged to tp-qt at some point)
** http://cgit.freedesktop.org/telepathy/telepathy-qt4-yell/


* qt-gstreamer:
* qt-gstreamer:
** Provides Qt bindings for GStreamer
** Provides Qt bindings for GStreamer
** http://cgit.freedesktop.org/gstreamer/qt-gstreamer
** http://cgit.freedesktop.org/gstreamer/qt-gstreamer
** Required version: git master (unreleased 0.10.2)


* farstream:
* farstream:
** This is the library and gstreamer elements that do the actual media streaming.
** This is the library and gstreamer elements that do the actual media streaming.
** http://cgit.collabora.com/git/farstream.git/
** http://cgit.collabora.com/git/farstream.git/
** Required version: >= 0.1.0


* telepathy-farstream:
* telepathy-farstream:
** Provides the glue between telepathy CMs and farsight2/farstream.
** Provides the glue between telepathy CMs and farstream.
** http://cgit.freedesktop.org/telepathy/telepathy-farstream/  
** http://cgit.freedesktop.org/telepathy/telepathy-farstream/  
** (Note: use the telepathy-farstream-0.1 branch with farsight2 / master is to be used with farstream)
** Required version: >= 0.2.2


* telepathy-gabble:
** XMPP connection manager
** http://cgit.freedesktop.org/telepathy/telepathy-gabble/
** Required version: >= 0.15.4


=== How it all blends together ===
* ktp-contact-list and/or ktp-text-ui and/or ktp-contact-applet
** Provide the buttons to start audio/video calls :P
** Required version: git master (unreleased 0.4)


telepathy-qt-yell provides the Tpy::CallChannel class, which wraps the Channel.Type.Call d-bus object. From this object, we create a TfChannel (provided by tp-farstream) and we wrap it in a QTf::Channel object (provided by libqtf inside the call-ui repository; this is qt-gstreamer based bindings for tp-farstream). This TfChannel object does all the internal communication with the CM and constructs some GStreamer bin (using farsight2/farstream internally) that will do all the streaming. On this bin, we connect our GStreamer sources and sinks using the QtGStreamer API.
==GUI Ideas==
 
* [http://cgit.collabora.com/git/user/asoliver/kde-telepathy-callhandler/ Alvaro's mockup]
* [https://bugzilla.gnome.org/show_bug.cgi?id=629902 empathy's new call UI mockup]

Revision as of 23:17, 28 March 2012

Dependency hell

  • telepathy-qt:
    • Provides Qt high level api to telepathy.
    • http://cgit.freedesktop.org/telepathy/telepathy-qt/
    • Required version: >= 0.9.1
    • Note: This must be built with farstream support, so before building it make sure you have farstream, telepathy-farstream, telepathy-glib and gstreamer (core and base plugins) installed.
  • ktp-contact-list and/or ktp-text-ui and/or ktp-contact-applet
    • Provide the buttons to start audio/video calls :P
    • Required version: git master (unreleased 0.4)

GUI Ideas