36 9,8,7,7,6,6,6,6,5,5,5,5,5,5,5,5,
37 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
38 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
39 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
40 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
41 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
42 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
43 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
44 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
45 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
46 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
47 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
48 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
49 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
50 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
51 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
52 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
53 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
54 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
55 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
57 -128, -128, -128, -128, -128, -128, 123, 123,
58 116, 116, 111, 111, 105, 105, 100, 100,
59 95, 95, 90, 90, 85, 85, 81, 81,
60 77, 77, 73, 73, 69, 69, 66, 66,
61 62, 62, 59, 59, 56, 56, 53, 53,
62 51, 51, 48, 48, 46, 46, 43, 43,
63 41, 41, 39, 39, 37, 37, 35, 35,
64 33, 33, 32, 32, 30, 30, 29, 29,
65 27, 27, 26, 26, 24, 24, 23, 23,
66 22, 22, 21, 21, 20, 20, 19, 19,
67 18, 18, 17, 17, 16, 16, 15, 15,
68 14, 14, 14, 14, 13, 13, 12, 12,
69 12, 12, 11, 11, 11, 11, 10, 10,
70 10, 10, 9, 9, 9, 9, 8, 8,
71 8, 8, 7, 7, 7, 7, 7, 7,
72 6, 6, 6, 6, 6, 6, 2, 2,
73 -80, -80, -89, -89, -98, -98, -106, -106,
74 -114, -114, -121, -121, -128, -128, 122, 122,
75 116, 116, 110, 110, 104, 104, 99, 99,
76 94, 94, 89, 89, 85, 85, 80, 80,
77 76, 76, 72, 72, 69, 69, 65, 65,
78 62, 62, 59, 59, 56, 56, 53, 53,
79 50, 50, 48, 48, 45, 45, 43, 43,
80 41, 41, 39, 39, 37, 37, 35, 35,
81 33, 33, 31, 31, 30, 30, 28, 28,
82 27, 27, 26, 26, 24, 24, 23, 23,
83 22, 22, 21, 21, 20, 20, 19, 19,
84 18, 18, 17, 17, 16, 16, 15, 15,
85 14, 14, 14, 14, 13, 13, 12, 12,
86 12, 12, 11, 11, 11, 11, 10, 10,
87 9, 9, 9, 9, 9, 9, 8, 8,
88 8, 8, 7, 7, 7, 7, 2, 2,
89 -48, -48, -59, -59, -69, -69, -78, -78,
90 -87, -87, -96, -96, -104, -104, -112, -112,
91 -119, -119, -126, -126, 123, 123, 117, 117,
92 111, 111, 105, 105, 100, 100, 95, 95,
93 90, 90, 86, 86, 81, 81, 77, 77,
94 73, 73, 69, 69, 66, 66, 63, 63,
95 59, 59, 56, 56, 54, 54, 51, 51,
96 48, 48, 46, 46, 43, 43, 41, 41,
97 39, 39, 37, 37, 35, 35, 33, 33,
98 32, 32, 30, 30, 29, 29, 27, 27,
99 26, 26, 25, 25, 23, 23, 22, 22,
100 21, 21, 20, 20, 19, 19, 18, 18,
101 17, 17, 16, 16, 15, 15, 15, 15,
102 14, 14, 13, 13, 12, 12, 12, 12,
103 11, 11, 11, 11, 10, 10, 10, 10,
104 9, 9, 9, 9, 8, 8, 2, 2,
105 -16, -16, -29, -29, -40, -40, -51, -51,
106 -61, -61, -71, -71, -81, -81, -90, -90,
107 -98, -98, -106, -106, -114, -114, -121, -121,
108 -128, -128, 122, 122, 116, 116, 110, 110,
109 104, 104, 99, 99, 94, 94, 89, 89,
110 85, 85, 80, 80, 76, 76, 72, 72,
111 69, 69, 65, 65, 62, 62, 59, 59,
112 56, 56, 53, 53, 50, 50, 48, 48,
113 45, 45, 43, 43, 41, 41, 39, 39,
114 37, 37, 35, 35, 33, 33, 31, 31,
115 30, 30, 28, 28, 27, 27, 25, 25,
116 24, 24, 23, 23, 22, 22, 21, 21,
117 20, 20, 19, 19, 18, 18, 17, 17,
118 16, 16, 15, 15, 14, 14, 14, 14,
119 13, 13, 12, 12, 12, 12, 11, 11,
120 11, 11, 10, 10, 9, 9, 2, 2,
122 127, 126, 77, 76, 77, 76, 75, 74,
123 75, 74, 75, 74, 73, 72, 73, 72,
124 73, 72, 71, 70, 71, 70, 71, 70,
125 69, 68, 69, 68, 67, 66, 67, 66,
126 67, 66, 65, 64, 65, 64, 63, 62,
127 61, 60, 61, 60, 61, 60, 59, 58,
128 59, 58, 57, 56, 55, 54, 55, 54,
129 53, 52, 53, 52, 51, 50, 49, 48,
130 49, 48, 47, 46, 45, 44, 45, 44,
131 43, 42, 43, 42, 39, 38, 39, 38,
132 37, 36, 37, 36, 33, 32, 33, 32,
133 31, 30, 31, 30, 27, 26, 27, 26,
134 25, 24, 23, 22, 23, 22, 19, 18,
135 19, 18, 17, 16, 15, 14, 13, 12,
136 11, 10, 9, 8, 9, 8, 5, 4,
137 5, 4, 3, 2, 1, 0, 0, 1,
138 2, 3, 4, 5, 6, 7, 8, 9,
139 10, 11, 12, 13, 14, 15, 16, 17,
140 18, 19, 20, 21, 22, 23, 24, 25,
141 26, 27, 28, 29, 30, 31, 32, 33,
142 34, 35, 36, 37, 38, 39, 40, 41,
143 42, 43, 44, 45, 46, 47, 48, 49,
144 50, 51, 52, 53, 54, 55, 56, 57,
145 58, 59, 60, 61, 62, 63, 64, 65,
146 66, 67, 68, 69, 70, 71, 72, 73,
147 74, 75, 76, 77, 78, 79, 80, 81,
148 82, 83, 84, 85, 86, 87, 88, 89,
149 90, 91, 92, 93, 94, 95, 96, 97,
150 98, 99, 100, 101, 102, 103, 104, 105,
151 106, 107, 108, 109, 110, 111, 112, 113,
152 114, 115, 116, 117, 118, 119, 120, 121,
153 122, 123, 124, 125, 124, 125, 126, 127,
155 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
156 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
157 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
158 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8
218 static inline void renorm_cabac_encoder(
CABACContext *c){
219 while(c->
range < 0x100){
223 }
else if(c->
low<0x200){
239 if(bit == ((*state)&1)){
240 c->
range -= RangeLPS;
248 renorm_cabac_encoder(c);
263 }
else if(c->
low<0x400){
276 static int put_cabac_terminate(
CABACContext *c,
int bit){
280 renorm_cabac_encoder(c);
285 renorm_cabac_encoder(c);
288 put_cabac_bit(c, c->
low>>9);
308 for(i=0; i<
SIZE; i++){
310 else r[i] = (i>>8)&1;
313 for(i=0; i<
SIZE; i++){
314 put_cabac_bypass(&c, r[i]&1);
317 for(i=0; i<
SIZE; i++){
318 put_cabac(&c, state, r[i]&1);
321 i= put_cabac_terminate(&c, 1);
327 memset(state, 0,
sizeof(state));
329 for(i=0; i<
SIZE; i++){
336 for(i=0; i<
SIZE; i++){
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
const uint8_t * bytestream_end
static int av_noinline av_unused get_cabac_noinline(CABACContext *c, uint8_t *const state)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
const uint8_t * bytestream
bitstream reader API header.
high precision timer, useful to profile code
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static int put_bits_count(PutBitContext *s)
const uint8_t * bytestream_start
int ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size)
Context Adaptive Binary Arithmetic Coder inline functions.
void ff_init_cabac_encoder(CABACContext *c, uint8_t *buf, int buf_size)
static int av_unused get_cabac_terminate(CABACContext *c)
Libavcodec external API header.
static unsigned int av_lfg_get(AVLFG *c)
Get the next random unsigned 32-bit number using an ALFG.
const uint8_t ff_h264_cabac_tables[512+4 *2 *64+4 *64+63]
av_cold void av_lfg_init(AVLFG *c, unsigned int seed)
static int av_unused get_cabac_bypass(CABACContext *c)
static void flush_put_bits(PutBitContext *s)
Pad the end of the output stream with zeros.
common internal and external API header
static void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_size)
Initialize the PutBitContext s.
static const uint8_t *const ff_h264_lps_range
int main(int argc, char **argv)
static const uint8_t *const ff_h264_mlps_state
Context Adaptive Binary Arithmetic Coder.