GNOME Bugzilla – Bug 339883
Make it possible to change video device during a call
Last modified: 2008-04-03 10:56:03 UTC
Someone requested to be able to choose his bluetooth headset upon receiving a call, which means changing the audio device just before the call. This prompted me to propose an old, yet unimplemented idea I had some time ago, which would allow to change the audio device during a call : <quote> Well, oh, well. Let me share a wild idea I have in the back of my mind ever since I worked on turning drivers into plugins in ekiga (but never specifically worked on this). Why can't we change the audio device after the call has started ? Because we have set the PSoundChannel at the start, and won't change afterwards (we already configured it, and gave it to use for the codec and networking code, so it's natural). So how can we get around it and still manage to do it!? Simple: write a PFacadeSoundChannel, which you give to the codec & networking code as your audio device. This channel only sends silence by default. And accepts all configurations you throw at it. Now give your real PSoundChannel to that PFacadeSoundChannel. It will try to force it to the same configuration as itself. If it manages to do so, it will now send the audio coming from it into the codec+network. If it doesn't, it just goes on sending silence. Now, if you decide you want to use another device during the call, just give the corresponding PSoundChannel to PFacadeSoundChannel, and it will be used automagically. The same could be done for PVideoInputDevice, of course. This is a little sketchy, quite a few details have to be filled to make it possible, but it shouldn't give too difficult code. </quote>
New code from Matthias allows this.