comparison golomb.h @ 1169:4e891257d3e2 libavcodec

multiple reference frames support
author michaelni
date Fri, 04 Apr 2003 20:59:50 +0000
parents 5af9aeadbdc3
children fc2a7eefa9cc
comparison
equal deleted inserted replaced
1168:5af9aeadbdc3 1169:4e891257d3e2
64 */ 64 */
65 static inline int get_te0_golomb(GetBitContext *gb, int range){ 65 static inline int get_te0_golomb(GetBitContext *gb, int range){
66 assert(range >= 1); 66 assert(range >= 1);
67 67
68 if(range==1) return 0; 68 if(range==1) return 0;
69 else if(range==2) return get_bits1(gb); 69 else if(range==2) return get_bits1(gb)^1;
70 else return get_ue_golomb(gb); 70 else return get_ue_golomb(gb);
71 } 71 }
72 72
73 /** 73 /**
74 * read unsigned truncated exp golomb code. 74 * read unsigned truncated exp golomb code.
75 */ 75 */
76 static inline int get_te_golomb(GetBitContext *gb, int range){ 76 static inline int get_te_golomb(GetBitContext *gb, int range){
77 assert(range >= 1); 77 assert(range >= 1);
78 78
79 if(range==2) return get_bits1(gb); 79 if(range==2) return get_bits1(gb)^1;
80 else return get_ue_golomb(gb); 80 else return get_ue_golomb(gb);
81 } 81 }
82 82
83 83
84 /** 84 /**
191 */ 191 */
192 static inline void set_te_golomb(PutBitContext *pb, int i, int range){ 192 static inline void set_te_golomb(PutBitContext *pb, int i, int range){
193 assert(range >= 1); 193 assert(range >= 1);
194 assert(i<=range); 194 assert(i<=range);
195 195
196 if(range==2) put_bits(pb, 1, i); 196 if(range==2) put_bits(pb, 1, i^1);
197 else set_ue_golomb(pb, i); 197 else set_ue_golomb(pb, i);
198 } 198 }
199 199
200 /** 200 /**
201 * write signed exp golomb code. 201 * write signed exp golomb code.