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
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 >
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 >> >