KTP-Call UI and QtGstreamer almost 1.0

People have been asking me about QtGstreamer 1.0 in various IRC channels. David Edmundson told me he was asked if it was ready at FOSDEM.

It works. I have ported KTP-Call-UI and Kamosa to use QtGstreamer 1.0 and I have sent the patches to the current QtGstreamer maintainers for review.

As an example, recently David and I managed to make a call using the version of KTp-Call-UI linked against GStreamer 1.0 and Farstream 0.2.

Call-UI working (desktop parts not related to this post removed.)

You might notice we were a bit surprised. My previous tests had been between Jitsi and KTp-Call-UI and those all failed. As far as I can tell, calls have the best chance of working between two copies of KTp New Call UI. I have a hunch that it might work with Empathy, but I haven't tried it.

Instructions on how to get and try the updated KTP-Call-UI and QtGstreamer are on the KTp wiki.

For porting an application from QtGstreamer 0.10 to 1.0 most of the work consists of mapping the GStreamer element names. E.g. renaming playbin2 to playbin (See the "soft" API Change section in GStreamer porting to 1.0)

Because I was mostly trying to get KTp working there are issues with the QtGstreamer 1.0-proposed branch I haven't resolved. There are new API features in GStreamer 1.0 that I didn't add such as custom memory allocation GstAllocator.

Also if you had been directly accessing sample data using GstBuffer, you'll need to use the Buffer->map to get a MapInfo structure containing a pointer to sample data. I don't like how I handled that part of the API, and I think the MapInfo struct should be some kind of Qt shared pointer pointing to the underlying GstMapInfo.

I wouldn't recommend shipping code based on QtGstreamer yet, as it needs reviews and suggestions. Please do feel free to send pull requests on github or poke me (detrout) on freenode in #kde-telepathy or #qtgstreamer. (Some day I'll get around to setting up a comment system.)

As for KTp-Call-UI, I want to get it working with Jitsi. I think my current call setup problems are because KTp doesn't have any way of influncing how farstream handles the codec discovery and negotiation when the FsRTPConference element is being set up. In the near future, I hope to figure out how to improve that negotiation.