Mercurial > libavcodec.hg
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 } |