Mercurial > mplayer.hg
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; |