A native Opus decoder is now available in FFmpeg/libav [git]:
https://git.videolan.org/?p=ffmpeg.git;a=co...770fdf5f57de222 (https://git.videolan.org/?p=ffmpeg.git;a=commit;h=b70d7a4ac72d23f3448f3b08b770fdf5f57de222)
https://git.libav.org/?p=libav.git;a=commit...770fdf5f57de222 (https://git.libav.org/?p=libav.git;a=commit;h=b70d7a4ac72d23f3448f3b08b770fdf5f57de222)
Some applications might start using the native decoder (knowingly or unknowingly). So, I decided to test both decoders (FFmpeg and libopus) to see how they perform.
Two samples where used in the test:
Filename Length Info
t96.opus 13824.1 music content encoded with default VBR 96kbps [CELT]
t16.opus 7869.97 voice content encoded with VBR 16kbps [SILK]
Two devices used in the test:
[Laptop]
CPU: Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz
OS: ArchLinux [x86_64]
[Tablet]
CPU: ARMv7 Processor rev 9 (v7l)
Tegra 3, 1700MHz
swp half thumb fastmult vfp edsp neon vfpv3 tls
OS: ArchLinux ARM [armv7h] chroot (Native env: Android/CM11)
Laptop/
X86_64 Results:
[t96.opus]
Decoder Time Speed
FFmpeg ~114 ~121.26x
libopus ~108.5 ~127.41x
[t16.opus]
Decoder Time Speed
FFmpeg ~37.75 ~208.47x
libopus ~38.25 ~205.75x
Tablet/
ARMv7l Results:
[t96.opus]
Decoder Time Speed
FFmpeg ~333 ~41.51x
libopus ~385.5 ~35.86x
libopus* ~296.5 ~46.62x
[t16.opus]
Decoder Time Speed
FFmpeg ~128 ~61.48x
libopus ~139.5 ~56.41x
libopus* ~78 ~100.89x
* Built with --enable-fixed-point
Nice I really hope that this speeds up Opus integration into Android audio player's which are know to based on ffmpeg (Poweramp, DeadBeef).
I'll go and post this on DeadBeef's Google+
DeadBeef is not using ffmpeg as it was told by me, instead it uses it's own plugins. Sorry for that.
There's an ffmpeg plugin, but it's old (last I checked anyway).
Deadbeef has an ffmpeg plugin, but versions from 0.11 weren't supported for several releases. Should be supported again in latest release. ffmpeg versions are complicated but 2.0 upwards is supported, versions up to 0.10 also work, and anything in between might work.
Hello, how I can include libopus in Android ffmpeg library? I know the --enable-libopus switch but the rest.... I've built normal FFmpeg for Android before, thats no problem tho.
Do you have libopus on your system? I don't know if you need the source but you definitely need libopus-dev or the equivalent so that ffmpeg has headers to compile against.