[opus] Opus decoding performance on ARM devices

Dan Nilsson Dan.Nilsson at king.com
Fri Sep 5 00:56:12 PDT 2014


Hi,

Thank you for your response. I pulled yesterday to commit
da97db1ca1f92592af3534c9a2596da0e9a009ca, added a bunch of more defines to
my compile options, and assembled & linked in
armopts.s,celt_pitch_xcorr_arm.s.

Performance jumped up from about 4.8 Mb/s to 5.3 Mb/s on the same device,
so it is improvement. Not sure what other tweaks there would be to try,
but if it could match the tremolo decoder, we could probably throw that
out entirely which would be very nice.

Thanks!
Dan

On 04/09/14 19:40, "Jean-Marc Valin" <jmvalin at jmvalin.ca> wrote:

>Hi Dan,
>
>I suggest you try the code in git master, which has further ARM
>optimizations compared to 1.1.
>
>Cheers,
>
>	Jean-Marc
>
>On 04/09/14 08:00 AM, Dan Nilsson wrote:
>> Hi everyone,
>> 
>> I have lately been evaluating the performance of various audio decoders,
>> particularly for ARM devices (Cortex A8 / A9). The context is audio
>> playback in a game engine, and thus decoding performance is of
>>particular
>> interest. 
>> 
>> Looking at Opus versus Vorbis on a Cortex A9 smartphone, the numbers
>>look
>> approximately like this:
>> 
>> Vorbis (tremolo decoder)
>> 9.3 Mb PCM/s
>> 
>> Opus (libopus 1.1)
>> 4.8 Mb PCM/s
>> 
>> The Opus audio is encoded approximately 120 kbps (and the vorbis file
>>has
>> higher bitrate). On ARM devices this far I get Opus decoded at about
>>half
>> the rate (and on x86 they are about on par).
>> 
>> Should I be able to squeeze more performance out of it?  Or do those
>> numbers look about what should be expected? What I really want to know
>>is
>> if Opus could potentially run faster than Vorbis for equivalent audio.
>> 
>> I also must mention I am cross compiling with a different build system.
>>I
>> have attempted different sets of compilation defines. Latest run
>>included
>> the following:
>> 
>> OPUS_ARM_ASM
>> OPUS_ARM_MAY_HAVE_NEON
>> OPUS_ARM_MAY_HAVE_MEDIA
>> OPUS_ARM_INLINE_EDSP
>> OPUS_ARM_INLINE_NEON
>> OPUS_ARM_INLINE_ASM
>> FIXED_POINT
>> OPUS_BUILD
>> HAVE_LRINT
>> HAVE_LRINTF
>> 
>> Thanks!
>> Dan
>> 
>> _______________________________________________
>> opus mailing list
>> opus at xiph.org
>> http://lists.xiph.org/mailman/listinfo/opus
>> 
>



More information about the opus mailing list