Extended Audio / Video Codec Support
devopsec opened this issue · comments
I Have been using the twinkle SIP phone for a while now and it is one of my favorite soft phones.
We the community could be stuck with proprietary non-sense like Zoiper or with an awful GUI like Linphone but Twinkle has always stood out to me as a valuable asset.
I am deeply in gratitude for the developers that started this project.
That being said, my one gripe working with Twinkle has been the lack of audio and video codec support.
A quick look at the codecs supported by 2 of the leading open source PBX platforms, freeswitch and Asterisk shows what we are really missing out on:
freeswitch supported codecs:
https://freeswitch.org/confluence/display/FREESWITCH/Audio+Codecs
https://freeswitch.org/confluence/display/FREESWITCH/Video+Codecs
asterisk supported codecs:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Audio+and+Video+Capabilities
Compared to what Twinkle supports currently:
twinkle/src/audio/audio_codecs.h
Line 25 in b7965d0
There is so much missing potential here.
I propose we expand the audio codec support in Twinkle to support OPUS and SILK, at a minimum, out of the box.
Lastly, I propose we support VP8 and H264 out of the box.
Twinkle has a great foundation so far but we are falling behind the curve!
As a reference, Belledonne Communications (the makers of Linphone) have done a pretty good job at incorporating sub-modules into their main repo (the majority of which provide codec support).
We should take a page from their book and manage dependencies, as opposed to reinventing the wheel for each codec we want to support 😉
I am more than happy to help with the development of these features but this is certainly not a one-man project...
Lets pull our heads together and stand out among the other VOIP clients!
Do know if Twinkle supports video calls?
That being said, my one gripe working with Twinkle has been the lack of audio and video codec support. A quick look at the codecs supported by 2 of the leading open source PBX platforms, freeswitch and Asterisk shows what we are really missing out on:
Forgive me for being blunt, but I don't think blindly comparing codec lists is much useful, and adding codecs just for bragging rights doesn't seem like a productive use of our (limited) resources.
It all comes down to whether or not a codec is in active use in the wild; otherwise, what good is it to speak a language that nobody else understands?
There is so much missing potential here. I propose we expand the audio codec support in Twinkle to support OPUS and SILK, at a minimum, out of the box.
Opus support can be found in #179; if anyone is interested, we would be glad to have more people testing it.
As for SILK, is it still commonly used now that we have Opus? (I'm genuinely asking.)
Lastly, I propose we support VP8 and H264 out of the box.
Huh? What do video codecs have to do with Twinkle?
As a reference, Belledonne Communications (the makers of Linphone) have done a pretty good job at incorporating sub-modules into their main repo (the majority of which provide codec support). We should take a page from their book and manage dependencies, as opposed to reinventing the wheel for each codec we want to support wink
Having worked on adding two codecs (G.722 and Opus) so far, I can tell you that while it did involve a fair amount of mundane copy-pasting, that wasn't much of a factor as far as I was concerned. The big hurdle for each codec was the changes required to support its unique peculiarities, which would've been an issue regardless of any plugin system.