summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNedeljko Babic <nbabic@mips.com>2012-02-25 10:56:20 +0100
committerNedeljko Babic <nbabic@mips.com>2012-04-03 14:44:31 +0200
commitc7d9d26f14aa5f0ac9f0e52fa602e0314f0cf317 (patch)
tree4309bf341e5f364137feeeae96ba6c2a98f06994
parentdc716e37fafdce4ed7b1d66f39de4617534736ff (diff)
downloadtremor-c7d9d26f14aa5f0ac9f0e52fa602e0314f0cf317.tar.gz
Add ifdefs for conditional compilation of code (regarding MIPS optimization).
Add small optimization in case 3 of decode_map function.
-rw-r--r--codebook.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/codebook.c b/codebook.c
index 8b8dbca..f01f558 100644
--- a/codebook.c
+++ b/codebook.c
@@ -605,8 +605,13 @@ int vorbis_book_unpack(oggpack_buffer *opb,codebook *s){
#ifdef _ARM_ASSEM_
ogg_uint32_t decode_packed_entry_number(codebook *book, oggpack_buffer *b);
#else
+#ifdef MIPS_ASM
+ogg_uint32_t decode_packed_entry_number(codebook *book,
+ oggpack_buffer *b){
+#else
static inline ogg_uint32_t decode_packed_entry_number(codebook *book,
oggpack_buffer *b){
+#endif // MIPS_ASM
ogg_uint32_t chase=0;
int read=book->dec_maxlength;
long lok = oggpack_look(b,read),i;
@@ -706,10 +711,10 @@ long vorbis_book_decode(codebook *book, oggpack_buffer *b){
return decode_packed_entry_number(book,b);
}
-#ifdef _ARM_ASSEM_
+#if defined(_ARM_ASSEM_) || defined(MIPS_ASM)
int decode_map(codebook *s, oggpack_buffer *b, ogg_int32_t *v, int point);
#else
-int decode_map(codebook *s, oggpack_buffer *b, ogg_int32_t *v, int point){
+static int decode_map(codebook *s, oggpack_buffer *b, ogg_int32_t *v, int point){
ogg_uint32_t entry = decode_packed_entry_number(s,b);
int i;
if(oggpack_eop(b))return(-1);
@@ -738,18 +743,15 @@ int decode_map(codebook *s, oggpack_buffer *b, ogg_int32_t *v, int point){
break;
}
case 3:{
+ /* offset into array */
+ void *ptr=s->q_val+entry*s->q_pack;
+
if(s->q_bits<=8){
- for(i=0;i<s->dim;i++) {
- /* offset into array */
- unsigned char *ptr=(unsigned char *)s->q_val+entry*s->q_pack;
- v[i]=ptr[i];
- }
+ for(i=0;i<s->dim;i++)
+ v[i]=((unsigned char *)ptr)[i];
}else{
- for(i=0;i<s->dim;i++) {
- /* offset into array */
- ogg_uint16_t *ptr=(ogg_uint16_t *)s->q_val+entry*s->q_pack;
- v[i]=ptr[i];
- }
+ for(i=0;i<s->dim;i++)
+ v[i]=((ogg_uint16_t *)ptr)[i];
}
break;
}
@@ -848,6 +850,7 @@ long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,
long offset,int ch,
oggpack_buffer *b,int n,int point);
#else
+#ifndef MIPS_ASM
long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,
long offset,int ch,
oggpack_buffer *b,int n,int point){
@@ -872,4 +875,5 @@ long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,
return 0;
}
+#endif //MIPS_ASM
#endif