[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