dwrtc / sa

0 stars 0 forks source link

Check codecs #2

Closed lroellin closed 6 years ago

lroellin commented 6 years ago

Are these codecs suitable for a P2P Skype on a laptop?

Note: we've not yet defined if it's just about audio, or video too.

lroellin commented 6 years ago

If we go with just audio, the OPUS codec should be no problem performance-wise.

There's Java implementation here: https://github.com/lostromb/concentus#performance. It mentions the following performance characteristics:

For those interested in the expected real-world performance of the library, I ran some quick C# benchmarks on a Raspberry Pi 1 (700mhz ARM) at various modes: 0.82x realtime - 48Khz Voice, Stereo, 32Kbps (SILK), Compexity 0 0.98x realtime - 48Khz Music, Stereo, 128Kbps (CELT), Compexity 10 1.55x realtime - 16Khz Voice, Mono , 32Kbps (SILK), Compexity 0 1.70x realtime - 48Khz Music, Stereo, 96Kbps (CELT), Compexity 0 3.59x realtime - 16Khz Music, Mono , 96Kbps (CELT), Compexity 0

I will check now if AV1 would be suitable, that would include video too.

lroellin commented 6 years ago

I can't find any library with Java bindings yet. This is a "fast and safe" AV1 encoder, written in Rust: https://github.com/xiph/rav1e

I'll check if we can get any performance out of this...

thde commented 6 years ago

https://github.com/jcodec/jcodec

lroellin commented 6 years ago

We've decided to check if we get any decent performance out of rav1e. We could maybe split the project into a "stream AV between defined peers" and "find peers via TomP2P"!

lroellin commented 6 years ago

If you look for Y4M sample files, for testing rav1e: https://media.xiph.org/video/derf/y4m/

lroellin commented 6 years ago

https://kadence.gitlab.io/ https://kadence.gitlab.io/tutorial-quickstart.html

lroellin commented 6 years ago

We've decided to not implement encoding/decoding ourselves, so we can close this issue