comparison common.c @ 1257:6defe392d5d2 libavcodec

libmpeg2 style bitstream reader fixes
author michaelni
date Wed, 14 May 2003 10:55:59 +0000
parents 604661d34c68
children 9fce515e9894
comparison
equal deleted inserted replaced
1256:b8e1c17b8d7d 1257:6defe392d5d2
138 s->size_in_bits= bit_size; 138 s->size_in_bits= bit_size;
139 s->buffer_end= buffer + buffer_size; 139 s->buffer_end= buffer + buffer_size;
140 #ifdef ALT_BITSTREAM_READER 140 #ifdef ALT_BITSTREAM_READER
141 s->index=0; 141 s->index=0;
142 #elif defined LIBMPEG2_BITSTREAM_READER 142 #elif defined LIBMPEG2_BITSTREAM_READER
143 #ifdef LIBMPEG2_BITSTREAM_HACK 143 #ifdef LIBMPEG2_BITSTREAM_READER_HACK
144 if ((int)buffer&1) { 144 if ((int)buffer&1) {
145 /* word alignment */ 145 /* word alignment */
146 s->cache = (*buffer++)<<24; 146 s->cache = (*buffer++)<<24;
147 s->buffer_ptr = buffer; 147 s->buffer_ptr = buffer;
148 s->bit_count = 16-8; 148 s->bit_count = 16-8;
166 CLOSE_READER(re, s) 166 CLOSE_READER(re, s)
167 } 167 }
168 #ifdef A32_BITSTREAM_READER 168 #ifdef A32_BITSTREAM_READER
169 s->cache1 = 0; 169 s->cache1 = 0;
170 #endif 170 #endif
171 }
172
173 /**
174 * reads 0-32 bits.
175 */
176 unsigned int get_bits_long(GetBitContext *s, int n){
177 if(n<=17) return get_bits(s, n);
178 else{
179 int ret= get_bits(s, 16) << (n-16);
180 return ret | get_bits(s, n-16);
181 }
182 }
183
184 /**
185 * shows 0-32 bits.
186 */
187 unsigned int show_bits_long(GetBitContext *s, int n){
188 if(n<=17) return show_bits(s, n);
189 else{
190 GetBitContext gb= *s;
191 int ret= get_bits_long(s, n);
192 *s= gb;
193 return ret;
194 }
171 } 195 }
172 196
173 void align_get_bits(GetBitContext *s) 197 void align_get_bits(GetBitContext *s)
174 { 198 {
175 int n= (-get_bits_count(s)) & 7; 199 int n= (-get_bits_count(s)) & 7;