comparison golomb.h @ 2220:21947e176d4d libavcodec

get/set_sr_golomb() cleanup
author michael
date Fri, 10 Sep 2004 19:40:55 +0000
parents 2a767157935e
children e98b5e0de86b
comparison
equal deleted inserted replaced
2219:9b6eb06cc184 2220:21947e176d4d
261 } 261 }
262 262
263 /** 263 /**
264 * read signed golomb rice code (ffv1). 264 * read signed golomb rice code (ffv1).
265 */ 265 */
266 static inline int get_sr_golomb_ffv1(GetBitContext *gb, int k, int limit, int esc_len){ 266 static inline int get_sr_golomb(GetBitContext *gb, int k, int limit, int esc_len){
267 int v= get_ur_golomb(gb, k, limit, esc_len); 267 int v= get_ur_golomb(gb, k, limit, esc_len);
268 268
269 v++; 269 v++;
270 if (v&1) return v>>1; 270 if (v&1) return v>>1;
271 else return -(v>>1); 271 else return -(v>>1);
272 272
273 // return (v>>1) ^ -(v&1); 273 // return (v>>1) ^ -(v&1);
274 } 274 }
275 /** 275
276 276 /**
277 * read signed golomb rice code (flac). 277 * read signed golomb rice code (flac).
278 */ 278 */
279 static inline int get_sr_golomb_flac(GetBitContext *gb, int k, int limit, int esc_len){ 279 static inline int get_sr_golomb_flac(GetBitContext *gb, int k, int limit, int esc_len){
280 int v= get_ur_golomb_jpegls(gb, k, limit, esc_len); 280 int v= get_ur_golomb_jpegls(gb, k, limit, esc_len);
281 return (v>>1) ^ -(v&1); 281 return (v>>1) ^ -(v&1);
282 }
283
284 /**
285 * read signed golomb rice code (sonic).
286 */
287 static inline int get_sr_golomb_sonic(GetBitContext *gb, int k, int limit, int esc_len){
288 int v= get_ur_golomb(gb, k, limit, esc_len);
289
290 v++;
291 if (v&1) return -(v>>1);
292 else return v>>1;
293 } 282 }
294 283
295 #ifdef TRACE 284 #ifdef TRACE
296 285
297 static inline int get_ue(GetBitContext *s, char *file, char *func, int line){ 286 static inline int get_ue(GetBitContext *s, char *file, char *func, int line){
430 } 419 }
431 420
432 /** 421 /**
433 * write signed golomb rice code (ffv1). 422 * write signed golomb rice code (ffv1).
434 */ 423 */
435 static inline void set_sr_golomb_ffv1(PutBitContext *pb, int i, int k, int limit, int esc_len){ 424 static inline void set_sr_golomb(PutBitContext *pb, int i, int k, int limit, int esc_len){
436 int v; 425 int v;
437 426
438 v = -2*i-1; 427 v = -2*i-1;
439 v ^= (v>>31); 428 v ^= (v>>31);
440 429
450 v = -2*i-1; 439 v = -2*i-1;
451 v ^= (v>>31); 440 v ^= (v>>31);
452 441
453 set_ur_golomb_jpegls(pb, v, k, limit, esc_len); 442 set_ur_golomb_jpegls(pb, v, k, limit, esc_len);
454 } 443 }
455
456 /**
457 * write signed golomb rice code (sonic).
458 */
459 static inline void set_sr_golomb_sonic(PutBitContext *pb, int i, int k, int limit, int esc_len){
460 int v;
461
462 v = 2*i-1;
463 if (v<0) v ^= -1;
464
465 set_ur_golomb(pb, v, k, limit, esc_len);
466 }