[opus] 1.1 Much slower on Raspberry Pi

Christian Hoene christian.hoene at symonics.com
Tue Dec 17 01:04:52 PST 2013


Hi Stuart,

 

you are compressing it at 6kbit/s. Then, then SILK mode is probability used
and the Silk mode is much faster than CELT. Do you also some figures at
64kbit/s?

 

It is strange that Opus 1.1 got slower in the Silk mode - may the
speech/voice selection adds some overhead. I would be interested in seeing
the performance of the 64 kbit/s in both Opus 1.0 and Opus 1.1.

 

With best regards,

 

Christian Hoene

 

PS:
I also though on using Raspberry PI as a reference platform for testing the
speech of Opus on a            ARM processor. For measuring the speech of
Opus on Intel CPUs, the MARSS86.org simulator might be appropriate.

 

 

 

 

 

Von: opus-bounces at xiph.org [mailto:opus-bounces at xiph.org] Im Auftrag von
Stuart Marsden
Gesendet: Montag, 16. Dezember 2013 14:03
An: opus at xiph.org
Betreff: [opus] 1.1 Much slower on Raspberry Pi

 

I have just started trying Opus with a view to using it in a project. I am
interested in embedded hardware and tried it on the Raspberry Pi using the
raspbian distro.

 

The version of libopus in the repos is 0.9.14. I installed this and tried
encoding 2 minutes of speech from a librevox recording. It managed this at a
respectable pace for complexity 10:

 

Skipping chunk of type "LIST", length 76

Encoding using libopus 0.9.14 (audio)

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

   Input: 44.1kHz 1 channel

  Output: 1 channel (1 uncoupled)

          20ms packets, 6kbit/sec VBR

 Preskip: 356

 

Encoding complete                            

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

    Encoded: 2 minutes and 0.02 seconds

    Runtime: 50.9 seconds

             (2.358x realtime)

      Wrote: 111194 bytes, 6001 packets, 123 pages

    Bitrate: 6.78414kbit/s (without overhead)

 Rate range: 2.8kbit/s to 12kbit/s

             (7 to 30 bytes per packet)

   Overhead: 8.47% (container+metadata)

 

And even faster on complexity 0:

 

Skipping chunk of type "LIST", length 76

Encoding using libopus 0.9.14 (audio)

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

   Input: 44.1kHz 1 channel

  Output: 1 channel (1 uncoupled)

          20ms packets, 6kbit/sec VBR

 Preskip: 316

 

Encoding complete                            

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

    Encoded: 2 minutes and 0.02 seconds

    Runtime: 23.72 seconds

             (5.059x realtime)

      Wrote: 106598 bytes, 6001 packets, 123 pages

    Bitrate: 6.47779kbit/s (without overhead)

 Rate range: 2.4kbit/s to 13.6kbit/s

             (6 to 34 bytes per packet)

   Overhead: 8.83% (container+metadata)

 

I saw the 1.1 release notes and it said speed improvements on ARM so thought
I would try. I downloaded from opus-codec.org and compiled directly on the
Pi. It has however turned out a lot slower. Complexity 10 barely can encode
in realtime:

 

Skipping chunk of type "LIST", length 76

Encoding using libopus 1.1 (audio)

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

   Input: 44.1kHz 1 channel

  Output: 1 channel (1 uncoupled)

          20ms packets, 6kbit/sec VBR

 Preskip: 356

 

Encoding complete


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

       Encoded: 2 minutes and 0.02 seconds

       Runtime: 1 minute and 53 seconds

                (1.062x realtime)

         Wrote: 110743 bytes, 6001 packets, 123 pages

       Bitrate: 6.70782kbit/s (without overhead)

 Instant rates: 2.8kbit/s to 11.6kbit/s

                (7 to 29 bytes per packet)

      Overhead: 9.13% (container+metadata)

 

And is also much slower at complexity 0:

 

Skipping chunk of type "LIST", length 76

Notice: Using resampling with complexity<10.

Opusenc is fastest with 48, 24, 16, 12, or 8kHz input.

 

Encoding using libopus 1.1 (audio)

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

   Input: 44.1kHz 1 channel

  Output: 1 channel (1 uncoupled)

          20ms packets, 6kbit/sec VBR

 Preskip: 316

 

Encoding complete


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

       Encoded: 2 minutes and 0.02 seconds

       Runtime: 36 seconds

                (3.334x realtime)

         Wrote: 106945 bytes, 6001 packets, 123 pages

       Bitrate: 6.45466kbit/s (without overhead)

 Instant rates: 2.4kbit/s to 12.8kbit/s

                (6 to 32 bytes per packet)

      Overhead: 9.45% (container+metadata)

 

I tried compiling it as fixed point and it is slightly faster but no where
near the older version. At complexity 10:

 

Skipping chunk of type "LIST", length 76

Encoding using libopus 1.1-fixed (audio)

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

   Input: 44.1kHz 1 channel

  Output: 1 channel (1 uncoupled)

          20ms packets, 6kbit/sec VBR

 Preskip: 356

 

Encoding complete


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

       Encoded: 2 minutes and 0.02 seconds

       Runtime: 1 minute and 42 seconds

                (1.177x realtime)

         Wrote: 110686 bytes, 6001 packets, 123 pages

       Bitrate: 6.70402kbit/s (without overhead)

 Instant rates: 2.4kbit/s to 11.2kbit/s

                (6 to 28 bytes per packet)

      Overhead: 9.13% (container+metadata)

 

 

I have tried different compiler options but nothing has brought the speed
back up. 

 

Any advice on the compiler flags or why I should be seeing such a big speed
regression?

 

Stuart Marsden

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/opus/attachments/20131217/025dcb2e/attachment-0001.htm 


More information about the opus mailing list