diff options
author | Pedro Vasconcelos <pbv@rockbox.org> | 2005-06-06 23:01:51 +0000 |
---|---|---|
committer | Pedro Vasconcelos <pbv@rockbox.org> | 2005-06-06 23:01:51 +0000 |
commit | 0f10e898f0040e30f0a23719e67223744c47f90d (patch) | |
tree | 5283879581de1eb29fdb6e2c2838f9e152ea693b /apps/codecs/Tremor/codebook.c | |
parent | 127f14210fb632e069ac6c8891cf28d01bf79e2f (diff) | |
download | rockbox-0f10e898f0040e30f0a23719e67223744c47f90d.tar.gz rockbox-0f10e898f0040e30f0a23719e67223744c47f90d.zip |
Vorbis optimizations: allocation of PCM buffers in IRAM, avoiding copying.
Slight code improvements to the MDCT functions.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6590 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/Tremor/codebook.c')
-rw-r--r-- | apps/codecs/Tremor/codebook.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/apps/codecs/Tremor/codebook.c b/apps/codecs/Tremor/codebook.c index 4da7641553..f03b5efb04 100644 --- a/apps/codecs/Tremor/codebook.c +++ b/apps/codecs/Tremor/codebook.c | |||
@@ -140,7 +140,7 @@ int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){ | |||
140 | be. The first-stage decode table catches most words so that | 140 | be. The first-stage decode table catches most words so that |
141 | bitreverse is not in the main execution path. */ | 141 | bitreverse is not in the main execution path. */ |
142 | 142 | ||
143 | static ogg_uint32_t bitreverse(ogg_uint32_t x){ | 143 | static inline ogg_uint32_t bitreverse(register ogg_uint32_t x){ |
144 | x= ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000); | 144 | x= ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000); |
145 | x= ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00); | 145 | x= ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00); |
146 | x= ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0); | 146 | x= ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0); |
@@ -265,12 +265,13 @@ long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a, | |||
265 | a[i++]+=t[j++]>>shift; | 265 | a[i++]+=t[j++]>>shift; |
266 | } | 266 | } |
267 | }else{ | 267 | }else{ |
268 | shift = -shift; | ||
268 | for(i=0;i<n;){ | 269 | for(i=0;i<n;){ |
269 | entry = decode_packed_entry_number(book,b); | 270 | entry = decode_packed_entry_number(book,b); |
270 | if(entry==-1)return(-1); | 271 | if(entry==-1)return(-1); |
271 | t = book->valuelist+entry*book->dim; | 272 | t = book->valuelist+entry*book->dim; |
272 | for (j=0;j<book->dim;) | 273 | for (j=0;j<book->dim;) |
273 | a[i++]+=t[j++]<<-shift; | 274 | a[i++]+=t[j++]<<shift; |
274 | } | 275 | } |
275 | } | 276 | } |
276 | return(0); | 277 | return(0); |
@@ -293,13 +294,13 @@ long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a, | |||
293 | } | 294 | } |
294 | } | 295 | } |
295 | }else{ | 296 | }else{ |
296 | 297 | shift = -shift; | |
297 | for(i=0;i<n;){ | 298 | for(i=0;i<n;){ |
298 | entry = decode_packed_entry_number(book,b); | 299 | entry = decode_packed_entry_number(book,b); |
299 | if(entry==-1)return(-1); | 300 | if(entry==-1)return(-1); |
300 | t = book->valuelist+entry*book->dim; | 301 | t = book->valuelist+entry*book->dim; |
301 | for (j=0;j<book->dim;){ | 302 | for (j=0;j<book->dim;){ |
302 | a[i++]=t[j++]<<-shift; | 303 | a[i++]=t[j++]<<shift; |
303 | } | 304 | } |
304 | } | 305 | } |
305 | } | 306 | } |
@@ -330,14 +331,14 @@ long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a, | |||
330 | } | 331 | } |
331 | } | 332 | } |
332 | }else{ | 333 | }else{ |
333 | 334 | shift = -shift; | |
334 | for(i=offset;i<offset+n;){ | 335 | for(i=offset;i<offset+n;){ |
335 | entry = decode_packed_entry_number(book,b); | 336 | entry = decode_packed_entry_number(book,b); |
336 | if(entry==-1)return(-1); | 337 | if(entry==-1)return(-1); |
337 | { | 338 | { |
338 | const ogg_int32_t *t = book->valuelist+entry*book->dim; | 339 | const ogg_int32_t *t = book->valuelist+entry*book->dim; |
339 | for (j=0;j<book->dim;j++){ | 340 | for (j=0;j<book->dim;j++){ |
340 | a[chptr++][i]+=t[j]<<-shift; | 341 | a[chptr++][i]+=t[j]<<shift; |
341 | if(chptr==ch){ | 342 | if(chptr==ch){ |
342 | chptr=0; | 343 | chptr=0; |
343 | i++; | 344 | i++; |