comparison mp3lib/sr1.c @ 1309:598e3047ce13

Add some preliminary support for non-x86 architectures to mplayer
author jkeil
date Thu, 12 Jul 2001 15:35:52 +0000
parents ae943748e0d9
children 5eef9e69b145
comparison
equal deleted inserted replaced
1308:ffd63a75700c 1309:598e3047ce13
121 { 121 {
122 unsigned long rval; 122 unsigned long rval;
123 // if(MP3_frames>=7741) printf("getbits_fast: bits=%d bitsleft=%d wordptr=%x\n",number_of_bits,bitsleft,wordpointer); 123 // if(MP3_frames>=7741) printf("getbits_fast: bits=%d bitsleft=%d wordptr=%x\n",number_of_bits,bitsleft,wordpointer);
124 if((bitsleft-=number_of_bits)<0) return 0; 124 if((bitsleft-=number_of_bits)<0) return 0;
125 if(!number_of_bits) return 0; 125 if(!number_of_bits) return 0;
126 #if ARCH_X86
126 rval = bswap_16(*((unsigned short *)wordpointer)); 127 rval = bswap_16(*((unsigned short *)wordpointer));
128 #else
129 /*
130 * we may not be able to address unaligned 16-bit data on non-x86 cpus.
131 * Fall back to some portable code.
132 */
133 rval = wordpointer[0] << 8 | wordpointer[1];
134 #endif
127 rval <<= bitindex; 135 rval <<= bitindex;
128 rval &= 0xffff; 136 rval &= 0xffff;
129 bitindex += number_of_bits; 137 bitindex += number_of_bits;
130 rval >>= (16-number_of_bits); 138 rval >>= (16-number_of_bits);
131 wordpointer += (bitindex>>3); 139 wordpointer += (bitindex>>3);
156 // printf("Backstep %d (bitsleft=%d)\n",backstep,bitsleft); 164 // printf("Backstep %d (bitsleft=%d)\n",backstep,bitsleft);
157 } 165 }
158 166
159 LOCAL int stream_head_read(unsigned char *hbuf,unsigned long *newhead){ 167 LOCAL int stream_head_read(unsigned char *hbuf,unsigned long *newhead){
160 if(mp3_read(hbuf,4) != 4) return FALSE; 168 if(mp3_read(hbuf,4) != 4) return FALSE;
169 #if ARCH_X86
161 *newhead = bswap_32(*((unsigned long *)hbuf)); 170 *newhead = bswap_32(*((unsigned long *)hbuf));
171 #else
172 /*
173 * we may not be able to address unaligned 32-bit data on non-x86 cpus.
174 * Fall back to some portable code.
175 */
176 *newhead =
177 hbuf[0] << 24 |
178 hbuf[1] << 16 |
179 hbuf[2] << 8 |
180 hbuf[3];
181 #endif
162 return TRUE; 182 return TRUE;
163 } 183 }
164 184
165 LOCAL int stream_head_shift(unsigned char *hbuf,unsigned long *head){ 185 LOCAL int stream_head_shift(unsigned char *hbuf,unsigned long *head){
166 *((unsigned long *)hbuf) >>= 8; 186 *((unsigned long *)hbuf) >>= 8;