Mercurial > libavcodec.hg
comparison cabac.h @ 3984:bb186452e7da libavcodec
BRANCHLESS_CABAD --> BRANCHLESS_CABAC_DECODER
author | diego |
---|---|
date | Tue, 10 Oct 2006 08:16:41 +0000 |
parents | af16271634c2 |
children | 746a60ba3177 |
comparison
equal
deleted
inserted
replaced
3983:fec25fd9febf | 3984:bb186452e7da |
---|---|
29 //#undef NDEBUG | 29 //#undef NDEBUG |
30 #include <assert.h> | 30 #include <assert.h> |
31 | 31 |
32 #define CABAC_BITS 16 | 32 #define CABAC_BITS 16 |
33 #define CABAC_MASK ((1<<CABAC_BITS)-1) | 33 #define CABAC_MASK ((1<<CABAC_BITS)-1) |
34 #define BRANCHLESS_CABAD 1 | 34 #define BRANCHLESS_CABAC_DECODER 1 |
35 | 35 |
36 typedef struct CABACContext{ | 36 typedef struct CABACContext{ |
37 int low; | 37 int low; |
38 int range; | 38 int range; |
39 int outstanding_count; | 39 int outstanding_count; |
373 #define LPS_STATE "12+2*65*4" | 373 #define LPS_STATE "12+2*65*4" |
374 #define MPS_STATE "12+2*65*4+2*64" | 374 #define MPS_STATE "12+2*65*4+2*64" |
375 #define BYTESTART "12+2*65*4+4*64" | 375 #define BYTESTART "12+2*65*4+4*64" |
376 #define BYTE "16+2*65*4+4*64" | 376 #define BYTE "16+2*65*4+4*64" |
377 #define BYTEEND "20+2*65*4+4*64" | 377 #define BYTEEND "20+2*65*4+4*64" |
378 #ifndef BRANCHLESS_CABAD | 378 #ifndef BRANCHLESS_CABAC_DECODER |
379 asm volatile( | 379 asm volatile( |
380 "movzbl (%1), %%eax \n\t" | 380 "movzbl (%1), %%eax \n\t" |
381 "movl "RANGE "(%2), %%ebx \n\t" | 381 "movl "RANGE "(%2), %%ebx \n\t" |
382 "movl "RANGE "(%2), %%edx \n\t" | 382 "movl "RANGE "(%2), %%edx \n\t" |
383 "shrl $23, %%ebx \n\t" | 383 "shrl $23, %%ebx \n\t" |
521 int s = *state; | 521 int s = *state; |
522 int RangeLPS= c->lps_range[s][c->range>>(CABAC_BITS+7)]<<(CABAC_BITS+1); | 522 int RangeLPS= c->lps_range[s][c->range>>(CABAC_BITS+7)]<<(CABAC_BITS+1); |
523 int bit, lps_mask attribute_unused; | 523 int bit, lps_mask attribute_unused; |
524 | 524 |
525 c->range -= RangeLPS; | 525 c->range -= RangeLPS; |
526 #ifndef BRANCHLESS_CABAD | 526 #ifndef BRANCHLESS_CABAC_DECODER |
527 if(c->low < c->range){ | 527 if(c->low < c->range){ |
528 bit= s&1; | 528 bit= s&1; |
529 *state= c->mps_state[s]; | 529 *state= c->mps_state[s]; |
530 renorm_cabac_decoder_once(c); | 530 renorm_cabac_decoder_once(c); |
531 }else{ | 531 }else{ |