[tremor] Tremor on strongarm CPU

dilb dilb at alrj.org
Sat Sep 7 18:11:24 PDT 2002



Hi,
as Nicholas Pitre did, I did spend some time on a fixed point version of the 
ogg vorbis decoder. Now, as Tremor is free, I will help merge the things I 
did optimize for my version of the decoder. But first, I have some questions 
regarding arm optimisation made in the mdct_backward function.

So, as far as I have seen, in this function are used MULT31 and MULT30, 
defined this way:
static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) {
  int lo,hi;
  asm volatile("smull  %0,%1,%2,%3;\n"
               : "=&r"(lo),"=&r"(hi)
               : "%r"(x),"r"(y));
  return(hi);
}

tatic inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) {
  return MULT32(x,y)<<1;
}

tatic inline ogg_int32_t MULT30(ogg_int32_t x, ogg_int32_t y) {
  return MULT32(x,y)<<2;
}
so, obviously in MULT31 (resp. MULT30),  1 bit (resp. 2 bits) are truncated. 
My question is: according to the specification, is this truncation noise 
amplified by the following stages of the decoder, i.e. can a human being 
perceive it ? (Sorry, I didn't have enough time to read vorbis specifications 
:))

Now, what I can propose, is an asm version of mdct_backward function, from my 
fixed point project, I did already merge it with tremor with a quick 
adaptation hack, and I get a good 5% improvement when decoding. And 
currently, it's using 64bits operation/accumulation (SMULL/SMLAL 
instructions), so it can be a little bit more improved, depending on the 
answer to my question.

I had another function written in pure asm, but it seems, I will need more 
time to merge it with tremor, and it will probably not be worth.

Fred <Dilb> Boulay.

P.S.: For people interested in my hack of the ogg vorbis decoder:
        http://dilb.blablanux.org/ipaq/fr/software/oggvorbis_SA1110.html , click on 
[miroir] (the page is currently in french only, but the changelog and the 
.tgz are commented in english).
--- >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