HydrogenAudio

Lossy Audio Compression => Opus => Topic started by: 2012 on 2014-05-29 13:41:10

Title: Native Opus decoder committed to FFmpeg/libav
Post by: 2012 on 2014-05-29 13:41:10
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:
Code: [Select]
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:
Code: [Select]
[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:

Code: [Select]
[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:

Code: [Select]
[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
Title: Native Opus decoder committed to FFmpeg/libav
Post by: darkbyte on 2014-05-29 15:57:26
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+
Title: Native Opus decoder committed to FFmpeg/libav
Post by: darkbyte on 2014-05-29 17:12:11
DeadBeef is not using ffmpeg as it was told by me, instead it uses it's own plugins. Sorry for that.
Title: Native Opus decoder committed to FFmpeg/libav
Post by: skamp on 2014-05-29 18:20:06
There's an ffmpeg plugin, but it's old (last I checked anyway).
Title: Native Opus decoder committed to FFmpeg/libav
Post by: lithopsian on 2014-05-29 22:28:38
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.
Title: Native Opus decoder committed to FFmpeg/libav
Post by: droidmjt on 2014-05-30 23:07:52
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.
Title: Native Opus decoder committed to FFmpeg/libav
Post by: lithopsian on 2014-05-30 23:29:23
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.