MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / put_symbol_inline

Function put_symbol_inline

libavcodec/ffv1.c:279–314  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

277}
278
279static inline void put_symbol_inline(RangeCoder *c, uint8_t *state, int v, int is_signed){
280 int i;
281
282 if(v){
283 const int a= FFABS(v);
284 const int e= av_log2(a);
285 put_rac(c, state+0, 0);
286 if(e<=9){
287 for(i=0; i<e; i++){
288 put_rac(c, state+1+i, 1); //1..10
289 }
290 put_rac(c, state+1+i, 0);
291
292 for(i=e-1; i>=0; i--){
293 put_rac(c, state+22+i, (a>>i)&1); //22..31
294 }
295
296 if(is_signed)
297 put_rac(c, state+11 + e, v < 0); //11..21
298 }else{
299 for(i=0; i<e; i++){
300 put_rac(c, state+1+FFMIN(i,9), 1); //1..10
301 }
302 put_rac(c, state+1+9, 0);
303
304 for(i=e-1; i>=0; i--){
305 put_rac(c, state+22+FFMIN(i,9), (a>>i)&1); //22..31
306 }
307
308 if(is_signed)
309 put_rac(c, state+11 + 10, v < 0); //11..21
310 }
311 }else{
312 put_rac(c, state+0, 1);
313 }
314}
315
316static void av_noinline put_symbol(RangeCoder *c, uint8_t *state, int v, int is_signed){
317 put_symbol_inline(c, state, v, is_signed);

Callers 2

put_symbolFunction · 0.85
encode_lineFunction · 0.85

Calls 1

put_racFunction · 0.85

Tested by

no test coverage detected