[opus] opus Digest, Vol 52, Issue 15

Cliff Parris cliff at espico.com
Wed May 15 08:21:27 PDT 2013


Hello All,

We have been doing an optimised port of OPUS to a ARM Cortex A9. We are 
currently measuring between 20 and 90 MCPS for our code running on a Panda 
board (single core), this covers all bit-rates,sample rates for stereo 
coding (encode + decode) under normal operation. As Marc says complexity can 
be controlled via the API with our higher figure corresponding to the 
default setting of 10 (maximum). An earlier thread mentioned measuring 
around 300 for the 'straight' OPUS code on this platform for a particular 
use case (stereo Silk only) . What's not clear is what the quality 
degradation is as you reduce the complexity setting, this earlier thread 
also asked for this information.

Some other comments we have are:

1. Forget the floating point version since key parts are only written in 
fixed point and key parts of these are not interoperable (decoder synthesis 
is fixed point).
2. Dominant requirement is 32 by 16 with 32-bit accumulate so this is what 
your platform should efficiently support.

Best Regards

Cliff

-----Original Message----- 
From: opus-request at xiph.org
Sent: Tuesday, May 14, 2013 8:00 PM
To: opus at xiph.org
Subject: opus Digest, Vol 52, Issue 15

Send opus mailing list submissions to
opus at xiph.org

To subscribe or unsubscribe via the World Wide Web, visit
http://lists.xiph.org/mailman/listinfo/opus
or, via email, send a message with subject or body 'help' to
opus-request at xiph.org

You can reach the person managing the list at
opus-owner at xiph.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of opus digest..."


Today's Topics:

   1. Re: OPUS in embedded platform (Jean-Marc Valin)
   2. Re: OPUS in embedded platform
      (van Bijleveld Christian (ST-CO/ENG1.3))


----------------------------------------------------------------------

Message: 1
Date: Mon, 13 May 2013 17:15:06 -0400
From: Jean-Marc Valin <jmvalin at jmvalin.ca>
Subject: Re: [opus] OPUS in embedded platform
To: "van Bijleveld Christian (ST-CO/ENG1.3)"
<Christian.vanBijleveld at nl.bosch.com>
Cc: "opus at xiph.org" <opus at xiph.org>
Message-ID: <519157DA.1040002 at jmvalin.ca>
Content-Type: text/plain; charset=windows-1252

On 05/13/2013 08:57 AM, van Bijleveld Christian (ST-CO/ENG1.3) wrote:
> I am interested in porting OPUS to an embedded platform. The idea is
> that the encoder and decoder will run on different processors. In order
> to choose the proper platform, I need an estimate of the resources which
> are needed for OPUS.

It's very hard to provide estimates because the complexity varies by a
large amount depending on the fearures used and on the value of the
complexity setting being selected.

> I read the following in the OPUS wiki:
>
> ?The Opus code base is written in C89 and should run on the vast
> majority of recent (and not so recent) CPUs. A few of the platforms on
> which Opus has been tested and *is known to run include x86, x86-64,
> ARM, Itanium, Blackfin, and SPARC*.?
> Are there, or is it known, figures regarding the resources needed for
> OPUS to run on an embedded platform such as DSP or microprocessor? If
> exact figures are not available, but if anyone can give an indication
> about which type of platform is required at least, I would appreciate
> very much. I can image that the amount of resources for the encoder and
> the decoder may be different.

The only hard requirement on the platform is that the chip must at least
be able to natively compute 16-bit multiplications with 32-bit
accumulation. That rules out most low-power micro-controllers.

> Another question: does OPUS need the support  of an Operating System or
> Real Time Kernel (ie; threads,?)?

The Opus code is very generic C89 code. It does not require anything
that isn't part of C89 and in fact, it makes it relatively easy to
remove the dependency on libc (mostly just a matter of changing the
malloc()/free() wrappers).

Cheers,

Jean-Marc

> Met vriendelijke groeten | Best Regards,
> *Christian van Bijleveld
>
> *Bosch Security Systems BV
> Bosch Communications Systems, BL Public Address and Conference Systems
> (ST-CO/ENG1.3)
> P.O. Box 80 002
> 5600 JB  Eindhoven
> The Netherlands
> _www.bosch__security.com_ <http://www.boschsecurity.com>
> T. +31 (0)40 257 7076
> F. +31 (0)40 257 7091
> _christian.vanbijleveld at nl.bosch.com_
> <mailto:christian.vanbijleveld at nl.bosch.com>
>
>
>
>
>
> _______________________________________________
> opus mailing list
> opus at xiph.org
> http://lists.xiph.org/mailman/listinfo/opus
>



------------------------------

Message: 2
Date: Tue, 14 May 2013 13:28:27 +0200
From: "van Bijleveld Christian (ST-CO/ENG1.3)"
<Christian.vanBijleveld at nl.bosch.com>
Subject: Re: [opus] OPUS in embedded platform
To: Jean-Marc Valin <jmvalin at jmvalin.ca>
Cc: "opus at xiph.org" <opus at xiph.org>
Message-ID:
<8E99D2CE27782C4BA15262EE04CE7AA37952D4BB13 at SI-MBX18.de.bosch.com>
Content-Type: text/plain; charset="us-ascii"

Hi,


Thanks for your replies.
I would narrow-down a little bit the specifications, in case someone have 
access to more accurate indicators.

Let's say that I would like to use OPUS for a mono speech signal (1 channel) 
sampled at 48kHz (Full-Band), 64kbps bitrate, 10ms frame length (thus VoIP 
mode, using both speech and audio layers) and Complexity=10.
Are there memory figures and/or clock cycles for this configuration (or 
similar)?


Where is most of the processing located: at the encoder or at the decoder?


I got some answers which points towards DSP platforms (TI mainly). Are there 
opportunities for ARM processors with DSP extension, such a Cortex-M4, or 
without DSP extension such as Cortex-M3?


One more question: does the in-built Packet Loss Concealment methods 
introduces much more complexity to the OPUS codec?



Met vriendelijke groeten | Best Regards,
Christian van Bijleveld



-----Original Message-----
From: Jean-Marc Valin [mailto:jmvalin at jmvalin.ca]
Sent: maandag 13 mei 2013 23:15
To: van Bijleveld Christian (ST-CO/ENG1.3)
Cc: opus at xiph.org
Subject: Re: [opus] OPUS in embedded platform

On 05/13/2013 08:57 AM, van Bijleveld Christian (ST-CO/ENG1.3) wrote:
> I am interested in porting OPUS to an embedded platform. The idea is
> that the encoder and decoder will run on different processors. In order
> to choose the proper platform, I need an estimate of the resources which
> are needed for OPUS.

It's very hard to provide estimates because the complexity varies by a
large amount depending on the fearures used and on the value of the
complexity setting being selected.

> I read the following in the OPUS wiki:
>
> "The Opus code base is written in C89 and should run on the vast
> majority of recent (and not so recent) CPUs. A few of the platforms on
> which Opus has been tested and *is known to run include x86, x86-64,
> ARM, Itanium, Blackfin, and SPARC*."
> Are there, or is it known, figures regarding the resources needed for
> OPUS to run on an embedded platform such as DSP or microprocessor? If
> exact figures are not available, but if anyone can give an indication
> about which type of platform is required at least, I would appreciate
> very much. I can image that the amount of resources for the encoder and
> the decoder may be different.

The only hard requirement on the platform is that the chip must at least
be able to natively compute 16-bit multiplications with 32-bit
accumulation. That rules out most low-power micro-controllers.

> Another question: does OPUS need the support  of an Operating System or
> Real Time Kernel (ie; threads,...)?

The Opus code is very generic C89 code. It does not require anything
that isn't part of C89 and in fact, it makes it relatively easy to
remove the dependency on libc (mostly just a matter of changing the
malloc()/free() wrappers).

Cheers,

Jean-Marc

> Met vriendelijke groeten | Best Regards,
> *Christian van Bijleveld
>
> *Bosch Security Systems BV
> Bosch Communications Systems, BL Public Address and Conference Systems
> (ST-CO/ENG1.3)
> P.O. Box 80 002
> 5600 JB  Eindhoven
> The Netherlands
> _www.bosch__security.com_ <http://www.boschsecurity.com>
> T. +31 (0)40 257 7076
> F. +31 (0)40 257 7091
> _christian.vanbijleveld at nl.bosch.com_
> <mailto:christian.vanbijleveld at nl.bosch.com>
>
>
>
>
>
> _______________________________________________
> opus mailing list
> opus at xiph.org
> http://lists.xiph.org/mailman/listinfo/opus
>



------------------------------

_______________________________________________
opus mailing list
opus at xiph.org
http://lists.xiph.org/mailman/listinfo/opus


End of opus Digest, Vol 52, Issue 15
************************************ 




More information about the opus mailing list