[Pidgin] #13535: Support addition and removal of media session from running call
Pidgin
trac at pidgin.im
Sun Mar 20 15:40:54 EDT 2011
#13535: Support addition and removal of media session from running call
--------------------------------------+-------------------------------------
Reporter: haakon | Owner: Maiku
Type: patch | Status: new
Component: Voice and Video | Version: 2.7.11
Keywords: add remove media session |
--------------------------------------+-------------------------------------
== Motivation ==
Some VoIP clients allow to dynamically add or remove media sessions from
running call. For example in Empathy it is possible to start Jabber voice
call, later turn on webcam to add video and remove it again at any time.
Same applies to VoIP application in Maemo 5 running on N900 internet
tablet and many others. It would be nice to have proper support for these
usage scenarios also in Pidgin, when communicating with clients having
such capabilities.
== Scope of patches ==
This set of patches attempts to implement the base support for dynamic
addition and removal of sessions in the core libpurple media code and
adapt Pidgin's call UI to create needed widgets when session is added and
properly destroy them when session terminates.
It was developed and tested in conjunction with 3rd party Sipe plugin,
with intention to be usable also by other protocols in mind.
== Implementation details ==
'''purple_media_dynamic_av.patch''' enhances libpurple and allows to
remove a media session while the call is still running. Upon a change
state signal announcing transition to PURPLE_MEDIA_STATE_END, affected
Farsight backend streams and sessions are unreferenced and GStreamer
elements created for the session are cleaned up from pipeline. In previous
implementation, this was done only when the whole call terminated.
There were some bugs in Farsight2 that did not allow to properly remove
FsRtpSession and FsRtpStream from the conference, resolved in Farsight2
0.0.26. Those were:
* https://bugs.freedesktop.org/show_bug.cgi?id=34580
* https://bugs.freedesktop.org/show_bug.cgi?id=34582
'''pidgin_ui_dynamic_av.patch''' implements removal of audio level meters
and video picture boxes for sessions that were terminated. Also ensures
only one 'Pause' and 'Hold' button per conference, they were created
whenever new session was added.
Code was successfully tested with Sipe, I tried also jabber with Empathy
and Maemo, but call terminates with "unsupported-applications" reason, so
it seems some support within XMPP plugin is needed (I am not enough
familiar with XMPP protocol to implement this correctly).
== Possibilities for further enhancements ==
* Support in other protocol plugins than Sipe
* Pidgin user itself should be able to dynamically add and remove at
least webcam video (buttons in UI to turn on camera, ...)
--
Ticket URL: <http://developer.pidgin.im/ticket/13535>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list