[pjsip] Opus codec
r3gis.3r at gmail.com
Sat May 12 14:45:29 EDT 2012
Just to inform that a new codec implementation is available in
It's for OPUS (http://opus-codec.org) codec (I've also updated SILK
As usually with codecs made in CSipSimple it doesn't include makefile or
toolchain for other platform, but the codec implementation (one file)
itself is compatible with all platforms.
So if you need to use it for other platforms it should not be too hard
(all the more so as libopus has standard gnu make files).
Source code :
I've also a question/remark about new codecs integration in pjsip.
In CSipSimple I'm now able to load codecs dynamically from plugin
applications. Thanks to the great design of codec api it's pretty easy
to load dynamically codecs from dyn libs.
However, each time I add a new codec, I need to modify the known payload
types of the pjsip stack and ensure it's not more than 127.
That's very annoying for 2 big reasons :
* I will reach the limit very soon... in addition to all codecs
supported by pjsip, I've added CODEC2, SILK, ISAC and OPUS. If you
multiply by the number of frequency supported... ;)
Don't be confused, my point is not that I may potentially reach 127 in
my SDP. Nobody will use all codecs at same time. The point is that even
if I don't load or leave deactivated some codecs, the dynamic pt in SDP
* The second reason is that it's impossible to enrich the application
only adding new plugins. Each time I want to create a new plugin I
should update the pjsip stack *ONLY* to add new dynamic PT !
Well I could add new values but would lead to potential conflict.
So, I'm wondering if it would not be possible to make independent
dynamic payload types (as announced by endpoint) and codec.
Maybe simply adding 0 in codec implementation and in endpoint when a 0
is encountered, consider it should manage allocation of pt dynamically
based on something it manages itself. For example with a map between
dynamic pt created and codecs of codec manager (fully qualified name).
BTW, it will be possible to manage in the method allocating new pt
numbers to reserve some dynamic types (for example the one for telephony
What do you think? Does that makes sense and could be added as a new
ticket? Or is there technical reason why it shouldn't be done this way?
More information about the pjsip