[tremor] Ogg/Vorbis report, FFT optimizations

timmy brolin timmy at home.se
Thu Mar 11 18:46:49 PST 2004



First of all: nice work.
I do however have a few comments.

You talk about the 32bit lookup tables, and the performance hit the 32*32 bit multiplications causes (requires 3 multiplications and some additions on your 16bit DSP).
Tremor is written specifically to take advantage of the 32*32=64bit multiplication instruction found in ARM processors (and similar 32bit RISC architectures). Naturally you get a big performance hit when compiling tremor for processors without 32*32bit multiplication instructions.

Secondly, as far as I understand, when you compare the performance of the old MDCT with your new FFT based implementation, you are comparing:
A pure C implementation of a MDCT written specifically for processors with a 32*32bit multiplication instruction, but complied for a processor with only a 16*16bit multiplication instruction.
With:
A FFT based MDCT implementation where the FFT is highly asm optimised by Texas Instruments for this particular DSP.
Not a very fair comparison.

The obvious fact that the original Tremor codebase is neither suited nor intended for 16bit processors shows clearly in table 7.4. According to that table, Tremor require 107MIPS to decode at 112kbps on your DSP. Tremor runs fine on a ~60MIPS ARM7.

In your paper, you suggest a system consisting of a ARM processor for parsing and pre-decoding, and a DSP (presumably the 16bit TI DSP you use) for decoding. This sounds rather silly to me, since Tremor is specifically designed to run on 32bit ARM CPUs.

I also spotted a small technical error on page 35.. It says the DSP requires all 16bit words to be aligned on 2-byte boundarys, all 32bit words on 4-byte boundarys, and that this is not the case on ARM processors..
Words must allways be properly aligned on all processors. This is not specific for your DSP.

It would be very interesting to see the results of your FFT based approach on a ARM7 machine!

Regards,
Timmy

-----Original Message-----
From: Johannes Sandvall <js at sandvall.nu>
To: tremor at xiph.org
Date: Thu, 11 Mar 2004 21:55:21 +0100
Subject: [tremor] Ogg/Vorbis report, FFT optimizations

I wrote to the list earlier about optimizations of the
tremor. Specially replacing the IMDCT with a N/4 FFT.

The report is available here: http://www.sandvall.nu/thesis.pdf

Short summary:
Optimization of the Tremor code under 50kB for a "split" decoder version.
~44 MIPS. Huffman highly unoptimized. IMDCT ~ 8 MIPS.
Quick overview of the Ogg/Vorbis format and a psycho acoustic
introduction.

I've send code to the list about the FFT but that seems to have
disappeared somehow... Maybe the attachments got lost somewhere.

Most of the code is free, all of the stuff in the report. The parts
developed in cooperation with Ericsson mobile platforms is not
available.

Give me feedback if any parts of the code is of interest.

If there is any questions please send them but check in the report
first if the answer is there.

Regards

/ Johannes Sandvall, Erik Montnemery

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'tremor-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

<p><p>--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'tremor-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Tremor mailing list