On my wishlist for 1.8 long-term-support release the #1 item is a new media negotiation framework for Asterisk.

The history – something to learn from

If we had integrated John Martin’s videocaps in time for release of 1.4 we now would have enjoyed four releases of an Asterisk with much better video support, instead of the broken support we have today. Integration of that code was denied because of plans of something greater and bigger, which we have discussed for years at many Astridevcons. Because of us denying this and other code,  outside-of-tree code has been around that fixes a lot of issues and the original Asterisk still lacks proper video support.There’s also a few codec negotation patches that has been around and maintained for years, one of the major ones being Maxim Sobolev’s patch.

What are the issues we need to solve?

There are a few main issues here:

  • Codecs: Codecs should not be handled as a bit, being turned on and off. Both audio and video codecs have attributes that we need to take care of properly
  • Call setup: When answering, the properties of the answer needs to be relayed to the calling channel, not just a control frame that says “somebody answered”.
  • Media streams: We should be prepared for multiple media streams, including multiple media streams of the same format

The new solution should be extensible, it should be easy to add both new codecs and properties.The solution has to be configurable. The way you want Asterisk to set up a bridge between two channels varies much. Some people prefer Asterisk doing transcoding some people want Asterisk to stay out of as much trouble as possible and just set up whatever is most simple. Other users just want to standardize all call legs to one type of phone, but have a different policy for other connections. There’s no one-solution-fits-all.

Asterisk needs a new media negotiation framework for continued success

We did write up a few documents on this a year ago at Astridevcon in Phoenix. I would really like to see some work on this. My personal feeling is that this is very important for the continued success of Asterisk in the marketplace. The amount of long-lived patches in this area that has been maintained for years shows that we have to do something (and that we sadly have ignored customer demand). The arrival of new codecs and new solutions, like video conferences with multiple audio and video channels, with text channels and possibly other types of channels (lika a binary channel for MSRP and digital ISDN) – all this tells us that we have to get there.

Everyone needs to contribute, not only Digium

I haven’t seen Digium invest in this project during the years we have discussed this. The Digium team has fixed the codec list, it is no longer a limited bitmap. Building a new media negotiation framework not a simple project and it’s not something any customer alone would fund, it would propably allocate too much resources from the team. (my personal guesses) I don’t think the community as a whole can expect or demand that Digium funds every needed change themselves, especially not in these times of financial worry. Everyone in the eco system will have to contribute to make Asterisk a better product – and I’m not only talking money here.Maybe we have to apply for funding somewhere else. It requires much more knowledge of Asterisk and experience than what I think we can get through Google summer-of-code, and it’s more urgent. Let’s discuss this and see how we can make this happen. Read the docs, start an open discussion and hopefully we can get not all of this, but at least the core of it, inside the next long term release of Asterisk, 1.8. It will require a lot of job from all of us in the dev team, as well as the community. Testing, feeding input, building a stabile architecture. I am sure we can get it done.

The floor is open. What do you think?/Olle