powered by Jive Software

Extending Jingle

Hi- I’m developing an application that needs to set up a real-time stream between two XMPP endpoints, and I’d like to explore Jingle as the signalling/setup protocol (my other option is just using the lower level XEP-0095 stream init). I’ve taken a look at the demo app and stepped through a couple of calls using a debugger, so I think I have a decent feel for how it works.

What’s not clear to me, though, is what are the elements that I’ll need to touch to extend Jingle to other forms of media. Can someone point me to documentation to that effect, or perhaps post in this thread a quick 1-2-3 on what exactly needs to be extended to provide new media stream support? Is it simply a matter of creating a new JingleMediaManager and supporting classes?



I haven’t worked with Jingle yet myself and so I might not be on the right track here, but I would probably start by looking at how the screen sharing API was implemented. That feature of the library was added after the initial Jingle work was done, so I think it is essentially an example of using the Jingle system to send a custom type of streaming data. The package for that code is: org.jivesoftware.smackx.jingle.mediaimpl.sshare

Although the comment in ScreenShareMediaManager states: “Implements a JingleMediaManager for ScreenSharing. It currently uses an Audio payload Type. Which needs to be fixed in the next version.”

So it sounds like the general idea is what you would want, but perhaps it uses the audio payload type because everything needed to make it totally independent is not implemented yet. If that is true though you could still follow the same approach as a temporary solution.


Chris- I had to chuckle when I read your post… I feel like the characters from Monty Python and the Holy Grail when they asked the Normans about the Grail, and the Normans said, “Grail? We already have one!”

I was indeed looking to prototype a screen sharing application, so the code you pointed me to was very instructive. I was not able to get it working out of the box, however, so barring any other pointers, sample code, or advice, I guess I’ll just wade in and go through the source to see what’s happening

Thanks again.