/src/aom/aom_dsp/bitreader.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2016, Alliance for Open Media. All rights reserved. |
3 | | * |
4 | | * This source code is subject to the terms of the BSD 2 Clause License and |
5 | | * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
6 | | * was not distributed with this source code in the LICENSE file, you can |
7 | | * obtain it at www.aomedia.org/license/software. If the Alliance for Open |
8 | | * Media Patent License 1.0 was not distributed with this source code in the |
9 | | * PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
10 | | */ |
11 | | |
12 | | #ifndef AOM_AOM_DSP_BITREADER_H_ |
13 | | #define AOM_AOM_DSP_BITREADER_H_ |
14 | | |
15 | | #include <assert.h> |
16 | | #include <limits.h> |
17 | | |
18 | | #include "config/aom_config.h" |
19 | | |
20 | | #include "aom/aomdx.h" |
21 | | #include "aom/aom_integer.h" |
22 | | #include "aom_dsp/entdec.h" |
23 | | #include "aom_dsp/odintrin.h" |
24 | | #include "aom_dsp/prob.h" |
25 | | |
26 | | #if CONFIG_BITSTREAM_DEBUG |
27 | | #include "aom_util/debug_util.h" |
28 | | #endif // CONFIG_BITSTREAM_DEBUG |
29 | | |
30 | | #if CONFIG_ACCOUNTING |
31 | | #include "av1/decoder/accounting.h" |
32 | | #define ACCT_STR_NAME acct_str |
33 | | #define ACCT_STR_PARAM , const char *ACCT_STR_NAME |
34 | | #define ACCT_STR_ARG(s) , s |
35 | | #else |
36 | | #define ACCT_STR_PARAM |
37 | | #define ACCT_STR_ARG(s) |
38 | | #endif |
39 | | |
40 | | #define aom_read(r, prob, ACCT_STR_NAME) \ |
41 | 122M | aom_read_(r, prob ACCT_STR_ARG(ACCT_STR_NAME)) |
42 | | #define aom_read_bit(r, ACCT_STR_NAME) \ |
43 | 123M | aom_read_bit_(r ACCT_STR_ARG(ACCT_STR_NAME)) |
44 | | #define aom_read_tree(r, tree, probs, ACCT_STR_NAME) \ |
45 | | aom_read_tree_(r, tree, probs ACCT_STR_ARG(ACCT_STR_NAME)) |
46 | | #define aom_read_literal(r, bits, ACCT_STR_NAME) \ |
47 | 2.72M | aom_read_literal_(r, bits ACCT_STR_ARG(ACCT_STR_NAME)) |
48 | | #define aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME) \ |
49 | 524M | aom_read_cdf_(r, cdf, nsymbs ACCT_STR_ARG(ACCT_STR_NAME)) |
50 | | #define aom_read_symbol(r, cdf, nsymbs, ACCT_STR_NAME) \ |
51 | 543M | aom_read_symbol_(r, cdf, nsymbs ACCT_STR_ARG(ACCT_STR_NAME)) |
52 | | |
53 | | #ifdef __cplusplus |
54 | | extern "C" { |
55 | | #endif |
56 | | |
57 | | struct aom_reader { |
58 | | const uint8_t *buffer; |
59 | | const uint8_t *buffer_end; |
60 | | od_ec_dec ec; |
61 | | #if CONFIG_ACCOUNTING |
62 | | Accounting *accounting; |
63 | | #endif |
64 | | uint8_t allow_update_cdf; |
65 | | }; |
66 | | |
67 | | typedef struct aom_reader aom_reader; |
68 | | |
69 | | int aom_reader_init(aom_reader *r, const uint8_t *buffer, size_t size); |
70 | | |
71 | | const uint8_t *aom_reader_find_begin(aom_reader *r); |
72 | | |
73 | | const uint8_t *aom_reader_find_end(aom_reader *r); |
74 | | |
75 | | // Returns true if the bit reader has tried to decode more data from the buffer |
76 | | // than was actually provided. |
77 | | int aom_reader_has_overflowed(const aom_reader *r); |
78 | | |
79 | | // Returns the position in the bit reader in bits. |
80 | | uint32_t aom_reader_tell(const aom_reader *r); |
81 | | |
82 | | // Returns the position in the bit reader in 1/8th bits. |
83 | | uint32_t aom_reader_tell_frac(const aom_reader *r); |
84 | | |
85 | | #if CONFIG_ACCOUNTING |
86 | | static inline void aom_process_accounting(const aom_reader *r ACCT_STR_PARAM) { |
87 | | if (r->accounting != NULL) { |
88 | | uint32_t tell_frac; |
89 | | tell_frac = aom_reader_tell_frac(r); |
90 | | aom_accounting_record(r->accounting, ACCT_STR_NAME, |
91 | | tell_frac - r->accounting->last_tell_frac); |
92 | | r->accounting->last_tell_frac = tell_frac; |
93 | | } |
94 | | } |
95 | | |
96 | | static inline void aom_update_symb_counts(const aom_reader *r, int is_binary) { |
97 | | if (r->accounting != NULL) { |
98 | | r->accounting->syms.num_multi_syms += !is_binary; |
99 | | r->accounting->syms.num_binary_syms += !!is_binary; |
100 | | } |
101 | | } |
102 | | #endif |
103 | | |
104 | 122M | static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) { |
105 | 122M | int p = (0x7FFFFF - (prob << 15) + prob) >> 8; |
106 | 122M | int bit = od_ec_decode_bool_q15(&r->ec, p); |
107 | | |
108 | | #if CONFIG_BITSTREAM_DEBUG |
109 | | { |
110 | | int i; |
111 | | int ref_bit, ref_nsymbs; |
112 | | aom_cdf_prob ref_cdf[16]; |
113 | | const int queue_r = bitstream_queue_get_read(); |
114 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); |
115 | | bitstream_queue_pop(&ref_bit, ref_cdf, &ref_nsymbs); |
116 | | if (ref_nsymbs != 2) { |
117 | | fprintf(stderr, |
118 | | "\n *** [bit] nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs " |
119 | | "%d queue_r %d\n", |
120 | | frame_idx, 2, ref_nsymbs, queue_r); |
121 | | assert(0); |
122 | | } |
123 | | if ((ref_nsymbs != 2) || (ref_cdf[0] != (aom_cdf_prob)p) || |
124 | | (ref_cdf[1] != 32767)) { |
125 | | fprintf(stderr, |
126 | | "\n *** [bit] cdf error, frame_idx_r %d cdf {%d, %d} ref_cdf {%d", |
127 | | frame_idx, p, 32767, ref_cdf[0]); |
128 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); |
129 | | fprintf(stderr, "} queue_r %d\n", queue_r); |
130 | | assert(0); |
131 | | } |
132 | | if (bit != ref_bit) { |
133 | | fprintf(stderr, |
134 | | "\n *** [bit] symb error, frame_idx_r %d symb %d ref_symb %d " |
135 | | "queue_r %d\n", |
136 | | frame_idx, bit, ref_bit, queue_r); |
137 | | assert(0); |
138 | | } |
139 | | } |
140 | | #endif |
141 | | |
142 | | #if CONFIG_ACCOUNTING |
143 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); |
144 | | aom_update_symb_counts(r, 1); |
145 | | #endif |
146 | 122M | return bit; |
147 | 122M | } Unexecuted instantiation: av1_dx_iface.c:aom_read_ Line | Count | Source | 104 | 423k | static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) { | 105 | 423k | int p = (0x7FFFFF - (prob << 15) + prob) >> 8; | 106 | 423k | int bit = od_ec_decode_bool_q15(&r->ec, p); | 107 | | | 108 | | #if CONFIG_BITSTREAM_DEBUG | 109 | | { | 110 | | int i; | 111 | | int ref_bit, ref_nsymbs; | 112 | | aom_cdf_prob ref_cdf[16]; | 113 | | const int queue_r = bitstream_queue_get_read(); | 114 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 115 | | bitstream_queue_pop(&ref_bit, ref_cdf, &ref_nsymbs); | 116 | | if (ref_nsymbs != 2) { | 117 | | fprintf(stderr, | 118 | | "\n *** [bit] nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs " | 119 | | "%d queue_r %d\n", | 120 | | frame_idx, 2, ref_nsymbs, queue_r); | 121 | | assert(0); | 122 | | } | 123 | | if ((ref_nsymbs != 2) || (ref_cdf[0] != (aom_cdf_prob)p) || | 124 | | (ref_cdf[1] != 32767)) { | 125 | | fprintf(stderr, | 126 | | "\n *** [bit] cdf error, frame_idx_r %d cdf {%d, %d} ref_cdf {%d", | 127 | | frame_idx, p, 32767, ref_cdf[0]); | 128 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 129 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 130 | | assert(0); | 131 | | } | 132 | | if (bit != ref_bit) { | 133 | | fprintf(stderr, | 134 | | "\n *** [bit] symb error, frame_idx_r %d symb %d ref_symb %d " | 135 | | "queue_r %d\n", | 136 | | frame_idx, bit, ref_bit, queue_r); | 137 | | assert(0); | 138 | | } | 139 | | } | 140 | | #endif | 141 | | | 142 | | #if CONFIG_ACCOUNTING | 143 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 144 | | aom_update_symb_counts(r, 1); | 145 | | #endif | 146 | 423k | return bit; | 147 | 423k | } |
Line | Count | Source | 104 | 9.64M | static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) { | 105 | 9.64M | int p = (0x7FFFFF - (prob << 15) + prob) >> 8; | 106 | 9.64M | int bit = od_ec_decode_bool_q15(&r->ec, p); | 107 | | | 108 | | #if CONFIG_BITSTREAM_DEBUG | 109 | | { | 110 | | int i; | 111 | | int ref_bit, ref_nsymbs; | 112 | | aom_cdf_prob ref_cdf[16]; | 113 | | const int queue_r = bitstream_queue_get_read(); | 114 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 115 | | bitstream_queue_pop(&ref_bit, ref_cdf, &ref_nsymbs); | 116 | | if (ref_nsymbs != 2) { | 117 | | fprintf(stderr, | 118 | | "\n *** [bit] nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs " | 119 | | "%d queue_r %d\n", | 120 | | frame_idx, 2, ref_nsymbs, queue_r); | 121 | | assert(0); | 122 | | } | 123 | | if ((ref_nsymbs != 2) || (ref_cdf[0] != (aom_cdf_prob)p) || | 124 | | (ref_cdf[1] != 32767)) { | 125 | | fprintf(stderr, | 126 | | "\n *** [bit] cdf error, frame_idx_r %d cdf {%d, %d} ref_cdf {%d", | 127 | | frame_idx, p, 32767, ref_cdf[0]); | 128 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 129 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 130 | | assert(0); | 131 | | } | 132 | | if (bit != ref_bit) { | 133 | | fprintf(stderr, | 134 | | "\n *** [bit] symb error, frame_idx_r %d symb %d ref_symb %d " | 135 | | "queue_r %d\n", | 136 | | frame_idx, bit, ref_bit, queue_r); | 137 | | assert(0); | 138 | | } | 139 | | } | 140 | | #endif | 141 | | | 142 | | #if CONFIG_ACCOUNTING | 143 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 144 | | aom_update_symb_counts(r, 1); | 145 | | #endif | 146 | 9.64M | return bit; | 147 | 9.64M | } |
Unexecuted instantiation: decoder.c:aom_read_ Line | Count | Source | 104 | 110M | static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) { | 105 | 110M | int p = (0x7FFFFF - (prob << 15) + prob) >> 8; | 106 | 110M | int bit = od_ec_decode_bool_q15(&r->ec, p); | 107 | | | 108 | | #if CONFIG_BITSTREAM_DEBUG | 109 | | { | 110 | | int i; | 111 | | int ref_bit, ref_nsymbs; | 112 | | aom_cdf_prob ref_cdf[16]; | 113 | | const int queue_r = bitstream_queue_get_read(); | 114 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 115 | | bitstream_queue_pop(&ref_bit, ref_cdf, &ref_nsymbs); | 116 | | if (ref_nsymbs != 2) { | 117 | | fprintf(stderr, | 118 | | "\n *** [bit] nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs " | 119 | | "%d queue_r %d\n", | 120 | | frame_idx, 2, ref_nsymbs, queue_r); | 121 | | assert(0); | 122 | | } | 123 | | if ((ref_nsymbs != 2) || (ref_cdf[0] != (aom_cdf_prob)p) || | 124 | | (ref_cdf[1] != 32767)) { | 125 | | fprintf(stderr, | 126 | | "\n *** [bit] cdf error, frame_idx_r %d cdf {%d, %d} ref_cdf {%d", | 127 | | frame_idx, p, 32767, ref_cdf[0]); | 128 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 129 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 130 | | assert(0); | 131 | | } | 132 | | if (bit != ref_bit) { | 133 | | fprintf(stderr, | 134 | | "\n *** [bit] symb error, frame_idx_r %d symb %d ref_symb %d " | 135 | | "queue_r %d\n", | 136 | | frame_idx, bit, ref_bit, queue_r); | 137 | | assert(0); | 138 | | } | 139 | | } | 140 | | #endif | 141 | | | 142 | | #if CONFIG_ACCOUNTING | 143 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 144 | | aom_update_symb_counts(r, 1); | 145 | | #endif | 146 | 110M | return bit; | 147 | 110M | } |
Line | Count | Source | 104 | 317k | static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) { | 105 | 317k | int p = (0x7FFFFF - (prob << 15) + prob) >> 8; | 106 | 317k | int bit = od_ec_decode_bool_q15(&r->ec, p); | 107 | | | 108 | | #if CONFIG_BITSTREAM_DEBUG | 109 | | { | 110 | | int i; | 111 | | int ref_bit, ref_nsymbs; | 112 | | aom_cdf_prob ref_cdf[16]; | 113 | | const int queue_r = bitstream_queue_get_read(); | 114 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 115 | | bitstream_queue_pop(&ref_bit, ref_cdf, &ref_nsymbs); | 116 | | if (ref_nsymbs != 2) { | 117 | | fprintf(stderr, | 118 | | "\n *** [bit] nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs " | 119 | | "%d queue_r %d\n", | 120 | | frame_idx, 2, ref_nsymbs, queue_r); | 121 | | assert(0); | 122 | | } | 123 | | if ((ref_nsymbs != 2) || (ref_cdf[0] != (aom_cdf_prob)p) || | 124 | | (ref_cdf[1] != 32767)) { | 125 | | fprintf(stderr, | 126 | | "\n *** [bit] cdf error, frame_idx_r %d cdf {%d, %d} ref_cdf {%d", | 127 | | frame_idx, p, 32767, ref_cdf[0]); | 128 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 129 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 130 | | assert(0); | 131 | | } | 132 | | if (bit != ref_bit) { | 133 | | fprintf(stderr, | 134 | | "\n *** [bit] symb error, frame_idx_r %d symb %d ref_symb %d " | 135 | | "queue_r %d\n", | 136 | | frame_idx, bit, ref_bit, queue_r); | 137 | | assert(0); | 138 | | } | 139 | | } | 140 | | #endif | 141 | | | 142 | | #if CONFIG_ACCOUNTING | 143 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 144 | | aom_update_symb_counts(r, 1); | 145 | | #endif | 146 | 317k | return bit; | 147 | 317k | } |
Unexecuted instantiation: obu.c:aom_read_ binary_codes_reader.c:aom_read_ Line | Count | Source | 104 | 2.00M | static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) { | 105 | 2.00M | int p = (0x7FFFFF - (prob << 15) + prob) >> 8; | 106 | 2.00M | int bit = od_ec_decode_bool_q15(&r->ec, p); | 107 | | | 108 | | #if CONFIG_BITSTREAM_DEBUG | 109 | | { | 110 | | int i; | 111 | | int ref_bit, ref_nsymbs; | 112 | | aom_cdf_prob ref_cdf[16]; | 113 | | const int queue_r = bitstream_queue_get_read(); | 114 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 115 | | bitstream_queue_pop(&ref_bit, ref_cdf, &ref_nsymbs); | 116 | | if (ref_nsymbs != 2) { | 117 | | fprintf(stderr, | 118 | | "\n *** [bit] nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs " | 119 | | "%d queue_r %d\n", | 120 | | frame_idx, 2, ref_nsymbs, queue_r); | 121 | | assert(0); | 122 | | } | 123 | | if ((ref_nsymbs != 2) || (ref_cdf[0] != (aom_cdf_prob)p) || | 124 | | (ref_cdf[1] != 32767)) { | 125 | | fprintf(stderr, | 126 | | "\n *** [bit] cdf error, frame_idx_r %d cdf {%d, %d} ref_cdf {%d", | 127 | | frame_idx, p, 32767, ref_cdf[0]); | 128 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 129 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 130 | | assert(0); | 131 | | } | 132 | | if (bit != ref_bit) { | 133 | | fprintf(stderr, | 134 | | "\n *** [bit] symb error, frame_idx_r %d symb %d ref_symb %d " | 135 | | "queue_r %d\n", | 136 | | frame_idx, bit, ref_bit, queue_r); | 137 | | assert(0); | 138 | | } | 139 | | } | 140 | | #endif | 141 | | | 142 | | #if CONFIG_ACCOUNTING | 143 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 144 | | aom_update_symb_counts(r, 1); | 145 | | #endif | 146 | 2.00M | return bit; | 147 | 2.00M | } |
Unexecuted instantiation: bitreader.c:aom_read_ |
148 | | |
149 | 122M | static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) { |
150 | 122M | int ret; |
151 | 122M | ret = aom_read(r, 128, NULL); // aom_prob_half |
152 | | #if CONFIG_ACCOUNTING |
153 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); |
154 | | #endif |
155 | 122M | return ret; |
156 | 122M | } Unexecuted instantiation: av1_dx_iface.c:aom_read_bit_ decodeframe.c:aom_read_bit_ Line | Count | Source | 149 | 423k | static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) { | 150 | 423k | int ret; | 151 | 423k | ret = aom_read(r, 128, NULL); // aom_prob_half | 152 | | #if CONFIG_ACCOUNTING | 153 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 154 | | #endif | 155 | 423k | return ret; | 156 | 423k | } |
Line | Count | Source | 149 | 9.64M | static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) { | 150 | 9.64M | int ret; | 151 | 9.64M | ret = aom_read(r, 128, NULL); // aom_prob_half | 152 | | #if CONFIG_ACCOUNTING | 153 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 154 | | #endif | 155 | 9.64M | return ret; | 156 | 9.64M | } |
Unexecuted instantiation: decoder.c:aom_read_bit_ decodetxb.c:aom_read_bit_ Line | Count | Source | 149 | 110M | static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) { | 150 | 110M | int ret; | 151 | 110M | ret = aom_read(r, 128, NULL); // aom_prob_half | 152 | | #if CONFIG_ACCOUNTING | 153 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 154 | | #endif | 155 | 110M | return ret; | 156 | 110M | } |
detokenize.c:aom_read_bit_ Line | Count | Source | 149 | 317k | static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) { | 150 | 317k | int ret; | 151 | 317k | ret = aom_read(r, 128, NULL); // aom_prob_half | 152 | | #if CONFIG_ACCOUNTING | 153 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 154 | | #endif | 155 | 317k | return ret; | 156 | 317k | } |
Unexecuted instantiation: obu.c:aom_read_bit_ binary_codes_reader.c:aom_read_bit_ Line | Count | Source | 149 | 2.00M | static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) { | 150 | 2.00M | int ret; | 151 | 2.00M | ret = aom_read(r, 128, NULL); // aom_prob_half | 152 | | #if CONFIG_ACCOUNTING | 153 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 154 | | #endif | 155 | 2.00M | return ret; | 156 | 2.00M | } |
Unexecuted instantiation: bitreader.c:aom_read_bit_ |
157 | | |
158 | 2.71M | static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) { |
159 | 2.71M | int literal = 0, bit; |
160 | | |
161 | 13.8M | for (bit = bits - 1; bit >= 0; bit--) literal |= aom_read_bit(r, NULL) << bit; |
162 | | #if CONFIG_ACCOUNTING |
163 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); |
164 | | #endif |
165 | 2.71M | return literal; |
166 | 2.71M | } Unexecuted instantiation: av1_dx_iface.c:aom_read_literal_ decodeframe.c:aom_read_literal_ Line | Count | Source | 158 | 106k | static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) { | 159 | 106k | int literal = 0, bit; | 160 | | | 161 | 530k | for (bit = bits - 1; bit >= 0; bit--) literal |= aom_read_bit(r, NULL) << bit; | 162 | | #if CONFIG_ACCOUNTING | 163 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 164 | | #endif | 165 | 106k | return literal; | 166 | 106k | } |
decodemv.c:aom_read_literal_ Line | Count | Source | 158 | 2.03M | static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) { | 159 | 2.03M | int literal = 0, bit; | 160 | | | 161 | 11.0M | for (bit = bits - 1; bit >= 0; bit--) literal |= aom_read_bit(r, NULL) << bit; | 162 | | #if CONFIG_ACCOUNTING | 163 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 164 | | #endif | 165 | 2.03M | return literal; | 166 | 2.03M | } |
Unexecuted instantiation: decoder.c:aom_read_literal_ Unexecuted instantiation: decodetxb.c:aom_read_literal_ detokenize.c:aom_read_literal_ Line | Count | Source | 158 | 196k | static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) { | 159 | 196k | int literal = 0, bit; | 160 | | | 161 | 513k | for (bit = bits - 1; bit >= 0; bit--) literal |= aom_read_bit(r, NULL) << bit; | 162 | | #if CONFIG_ACCOUNTING | 163 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 164 | | #endif | 165 | 196k | return literal; | 166 | 196k | } |
Unexecuted instantiation: obu.c:aom_read_literal_ binary_codes_reader.c:aom_read_literal_ Line | Count | Source | 158 | 384k | static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) { | 159 | 384k | int literal = 0, bit; | 160 | | | 161 | 1.76M | for (bit = bits - 1; bit >= 0; bit--) literal |= aom_read_bit(r, NULL) << bit; | 162 | | #if CONFIG_ACCOUNTING | 163 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 164 | | #endif | 165 | 384k | return literal; | 166 | 384k | } |
Unexecuted instantiation: bitreader.c:aom_read_literal_ |
167 | | |
168 | | static inline int aom_read_cdf_(aom_reader *r, const aom_cdf_prob *cdf, |
169 | 522M | int nsymbs ACCT_STR_PARAM) { |
170 | 522M | int symb; |
171 | 522M | assert(cdf != NULL); |
172 | 522M | symb = od_ec_decode_cdf_q15(&r->ec, cdf, nsymbs); |
173 | | |
174 | | #if CONFIG_BITSTREAM_DEBUG |
175 | | { |
176 | | int i; |
177 | | int cdf_error = 0; |
178 | | int ref_symb, ref_nsymbs; |
179 | | aom_cdf_prob ref_cdf[16]; |
180 | | const int queue_r = bitstream_queue_get_read(); |
181 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); |
182 | | bitstream_queue_pop(&ref_symb, ref_cdf, &ref_nsymbs); |
183 | | if (nsymbs != ref_nsymbs) { |
184 | | fprintf(stderr, |
185 | | "\n *** nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs %d " |
186 | | "queue_r %d\n", |
187 | | frame_idx, nsymbs, ref_nsymbs, queue_r); |
188 | | cdf_error = 0; |
189 | | assert(0); |
190 | | } else { |
191 | | for (i = 0; i < nsymbs; ++i) |
192 | | if (cdf[i] != ref_cdf[i]) cdf_error = 1; |
193 | | } |
194 | | if (cdf_error) { |
195 | | fprintf(stderr, "\n *** cdf error, frame_idx_r %d cdf {%d", frame_idx, |
196 | | cdf[0]); |
197 | | for (i = 1; i < nsymbs; ++i) fprintf(stderr, ", %d", cdf[i]); |
198 | | fprintf(stderr, "} ref_cdf {%d", ref_cdf[0]); |
199 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); |
200 | | fprintf(stderr, "} queue_r %d\n", queue_r); |
201 | | assert(0); |
202 | | } |
203 | | if (symb != ref_symb) { |
204 | | fprintf( |
205 | | stderr, |
206 | | "\n *** symb error, frame_idx_r %d symb %d ref_symb %d queue_r %d\n", |
207 | | frame_idx, symb, ref_symb, queue_r); |
208 | | assert(0); |
209 | | } |
210 | | } |
211 | | #endif |
212 | | |
213 | | #if CONFIG_ACCOUNTING |
214 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); |
215 | | aom_update_symb_counts(r, (nsymbs == 2)); |
216 | | #endif |
217 | 522M | return symb; |
218 | 522M | } Unexecuted instantiation: av1_dx_iface.c:aom_read_cdf_ decodeframe.c:aom_read_cdf_ Line | Count | Source | 169 | 13.8M | int nsymbs ACCT_STR_PARAM) { | 170 | 13.8M | int symb; | 171 | 13.8M | assert(cdf != NULL); | 172 | 13.8M | symb = od_ec_decode_cdf_q15(&r->ec, cdf, nsymbs); | 173 | | | 174 | | #if CONFIG_BITSTREAM_DEBUG | 175 | | { | 176 | | int i; | 177 | | int cdf_error = 0; | 178 | | int ref_symb, ref_nsymbs; | 179 | | aom_cdf_prob ref_cdf[16]; | 180 | | const int queue_r = bitstream_queue_get_read(); | 181 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 182 | | bitstream_queue_pop(&ref_symb, ref_cdf, &ref_nsymbs); | 183 | | if (nsymbs != ref_nsymbs) { | 184 | | fprintf(stderr, | 185 | | "\n *** nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs %d " | 186 | | "queue_r %d\n", | 187 | | frame_idx, nsymbs, ref_nsymbs, queue_r); | 188 | | cdf_error = 0; | 189 | | assert(0); | 190 | | } else { | 191 | | for (i = 0; i < nsymbs; ++i) | 192 | | if (cdf[i] != ref_cdf[i]) cdf_error = 1; | 193 | | } | 194 | | if (cdf_error) { | 195 | | fprintf(stderr, "\n *** cdf error, frame_idx_r %d cdf {%d", frame_idx, | 196 | | cdf[0]); | 197 | | for (i = 1; i < nsymbs; ++i) fprintf(stderr, ", %d", cdf[i]); | 198 | | fprintf(stderr, "} ref_cdf {%d", ref_cdf[0]); | 199 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 200 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 201 | | assert(0); | 202 | | } | 203 | | if (symb != ref_symb) { | 204 | | fprintf( | 205 | | stderr, | 206 | | "\n *** symb error, frame_idx_r %d symb %d ref_symb %d queue_r %d\n", | 207 | | frame_idx, symb, ref_symb, queue_r); | 208 | | assert(0); | 209 | | } | 210 | | } | 211 | | #endif | 212 | | | 213 | | #if CONFIG_ACCOUNTING | 214 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 215 | | aom_update_symb_counts(r, (nsymbs == 2)); | 216 | | #endif | 217 | 13.8M | return symb; | 218 | 13.8M | } |
Line | Count | Source | 169 | 110M | int nsymbs ACCT_STR_PARAM) { | 170 | 110M | int symb; | 171 | 110M | assert(cdf != NULL); | 172 | 110M | symb = od_ec_decode_cdf_q15(&r->ec, cdf, nsymbs); | 173 | | | 174 | | #if CONFIG_BITSTREAM_DEBUG | 175 | | { | 176 | | int i; | 177 | | int cdf_error = 0; | 178 | | int ref_symb, ref_nsymbs; | 179 | | aom_cdf_prob ref_cdf[16]; | 180 | | const int queue_r = bitstream_queue_get_read(); | 181 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 182 | | bitstream_queue_pop(&ref_symb, ref_cdf, &ref_nsymbs); | 183 | | if (nsymbs != ref_nsymbs) { | 184 | | fprintf(stderr, | 185 | | "\n *** nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs %d " | 186 | | "queue_r %d\n", | 187 | | frame_idx, nsymbs, ref_nsymbs, queue_r); | 188 | | cdf_error = 0; | 189 | | assert(0); | 190 | | } else { | 191 | | for (i = 0; i < nsymbs; ++i) | 192 | | if (cdf[i] != ref_cdf[i]) cdf_error = 1; | 193 | | } | 194 | | if (cdf_error) { | 195 | | fprintf(stderr, "\n *** cdf error, frame_idx_r %d cdf {%d", frame_idx, | 196 | | cdf[0]); | 197 | | for (i = 1; i < nsymbs; ++i) fprintf(stderr, ", %d", cdf[i]); | 198 | | fprintf(stderr, "} ref_cdf {%d", ref_cdf[0]); | 199 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 200 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 201 | | assert(0); | 202 | | } | 203 | | if (symb != ref_symb) { | 204 | | fprintf( | 205 | | stderr, | 206 | | "\n *** symb error, frame_idx_r %d symb %d ref_symb %d queue_r %d\n", | 207 | | frame_idx, symb, ref_symb, queue_r); | 208 | | assert(0); | 209 | | } | 210 | | } | 211 | | #endif | 212 | | | 213 | | #if CONFIG_ACCOUNTING | 214 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 215 | | aom_update_symb_counts(r, (nsymbs == 2)); | 216 | | #endif | 217 | 110M | return symb; | 218 | 110M | } |
Unexecuted instantiation: decoder.c:aom_read_cdf_ decodetxb.c:aom_read_cdf_ Line | Count | Source | 169 | 372M | int nsymbs ACCT_STR_PARAM) { | 170 | 372M | int symb; | 171 | 372M | assert(cdf != NULL); | 172 | 372M | symb = od_ec_decode_cdf_q15(&r->ec, cdf, nsymbs); | 173 | | | 174 | | #if CONFIG_BITSTREAM_DEBUG | 175 | | { | 176 | | int i; | 177 | | int cdf_error = 0; | 178 | | int ref_symb, ref_nsymbs; | 179 | | aom_cdf_prob ref_cdf[16]; | 180 | | const int queue_r = bitstream_queue_get_read(); | 181 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 182 | | bitstream_queue_pop(&ref_symb, ref_cdf, &ref_nsymbs); | 183 | | if (nsymbs != ref_nsymbs) { | 184 | | fprintf(stderr, | 185 | | "\n *** nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs %d " | 186 | | "queue_r %d\n", | 187 | | frame_idx, nsymbs, ref_nsymbs, queue_r); | 188 | | cdf_error = 0; | 189 | | assert(0); | 190 | | } else { | 191 | | for (i = 0; i < nsymbs; ++i) | 192 | | if (cdf[i] != ref_cdf[i]) cdf_error = 1; | 193 | | } | 194 | | if (cdf_error) { | 195 | | fprintf(stderr, "\n *** cdf error, frame_idx_r %d cdf {%d", frame_idx, | 196 | | cdf[0]); | 197 | | for (i = 1; i < nsymbs; ++i) fprintf(stderr, ", %d", cdf[i]); | 198 | | fprintf(stderr, "} ref_cdf {%d", ref_cdf[0]); | 199 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 200 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 201 | | assert(0); | 202 | | } | 203 | | if (symb != ref_symb) { | 204 | | fprintf( | 205 | | stderr, | 206 | | "\n *** symb error, frame_idx_r %d symb %d ref_symb %d queue_r %d\n", | 207 | | frame_idx, symb, ref_symb, queue_r); | 208 | | assert(0); | 209 | | } | 210 | | } | 211 | | #endif | 212 | | | 213 | | #if CONFIG_ACCOUNTING | 214 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 215 | | aom_update_symb_counts(r, (nsymbs == 2)); | 216 | | #endif | 217 | 372M | return symb; | 218 | 372M | } |
detokenize.c:aom_read_cdf_ Line | Count | Source | 169 | 26.1M | int nsymbs ACCT_STR_PARAM) { | 170 | 26.1M | int symb; | 171 | 26.1M | assert(cdf != NULL); | 172 | 26.1M | symb = od_ec_decode_cdf_q15(&r->ec, cdf, nsymbs); | 173 | | | 174 | | #if CONFIG_BITSTREAM_DEBUG | 175 | | { | 176 | | int i; | 177 | | int cdf_error = 0; | 178 | | int ref_symb, ref_nsymbs; | 179 | | aom_cdf_prob ref_cdf[16]; | 180 | | const int queue_r = bitstream_queue_get_read(); | 181 | | const int frame_idx = aom_bitstream_queue_get_frame_read(); | 182 | | bitstream_queue_pop(&ref_symb, ref_cdf, &ref_nsymbs); | 183 | | if (nsymbs != ref_nsymbs) { | 184 | | fprintf(stderr, | 185 | | "\n *** nsymbs error, frame_idx_r %d nsymbs %d ref_nsymbs %d " | 186 | | "queue_r %d\n", | 187 | | frame_idx, nsymbs, ref_nsymbs, queue_r); | 188 | | cdf_error = 0; | 189 | | assert(0); | 190 | | } else { | 191 | | for (i = 0; i < nsymbs; ++i) | 192 | | if (cdf[i] != ref_cdf[i]) cdf_error = 1; | 193 | | } | 194 | | if (cdf_error) { | 195 | | fprintf(stderr, "\n *** cdf error, frame_idx_r %d cdf {%d", frame_idx, | 196 | | cdf[0]); | 197 | | for (i = 1; i < nsymbs; ++i) fprintf(stderr, ", %d", cdf[i]); | 198 | | fprintf(stderr, "} ref_cdf {%d", ref_cdf[0]); | 199 | | for (i = 1; i < ref_nsymbs; ++i) fprintf(stderr, ", %d", ref_cdf[i]); | 200 | | fprintf(stderr, "} queue_r %d\n", queue_r); | 201 | | assert(0); | 202 | | } | 203 | | if (symb != ref_symb) { | 204 | | fprintf( | 205 | | stderr, | 206 | | "\n *** symb error, frame_idx_r %d symb %d ref_symb %d queue_r %d\n", | 207 | | frame_idx, symb, ref_symb, queue_r); | 208 | | assert(0); | 209 | | } | 210 | | } | 211 | | #endif | 212 | | | 213 | | #if CONFIG_ACCOUNTING | 214 | | if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME); | 215 | | aom_update_symb_counts(r, (nsymbs == 2)); | 216 | | #endif | 217 | 26.1M | return symb; | 218 | 26.1M | } |
Unexecuted instantiation: obu.c:aom_read_cdf_ Unexecuted instantiation: binary_codes_reader.c:aom_read_cdf_ Unexecuted instantiation: bitreader.c:aom_read_cdf_ |
219 | | |
220 | | static inline int aom_read_symbol_(aom_reader *r, aom_cdf_prob *cdf, |
221 | 523M | int nsymbs ACCT_STR_PARAM) { |
222 | 523M | int ret; |
223 | 523M | ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME); |
224 | 523M | if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs); |
225 | 523M | return ret; |
226 | 523M | } Unexecuted instantiation: av1_dx_iface.c:aom_read_symbol_ decodeframe.c:aom_read_symbol_ Line | Count | Source | 221 | 13.5M | int nsymbs ACCT_STR_PARAM) { | 222 | 13.5M | int ret; | 223 | 13.5M | ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME); | 224 | 13.5M | if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs); | 225 | 13.5M | return ret; | 226 | 13.5M | } |
decodemv.c:aom_read_symbol_ Line | Count | Source | 221 | 110M | int nsymbs ACCT_STR_PARAM) { | 222 | 110M | int ret; | 223 | 110M | ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME); | 224 | 110M | if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs); | 225 | 110M | return ret; | 226 | 110M | } |
Unexecuted instantiation: decoder.c:aom_read_symbol_ decodetxb.c:aom_read_symbol_ Line | Count | Source | 221 | 374M | int nsymbs ACCT_STR_PARAM) { | 222 | 374M | int ret; | 223 | 374M | ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME); | 224 | 374M | if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs); | 225 | 374M | return ret; | 226 | 374M | } |
detokenize.c:aom_read_symbol_ Line | Count | Source | 221 | 26.1M | int nsymbs ACCT_STR_PARAM) { | 222 | 26.1M | int ret; | 223 | 26.1M | ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME); | 224 | 26.1M | if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs); | 225 | 26.1M | return ret; | 226 | 26.1M | } |
Unexecuted instantiation: obu.c:aom_read_symbol_ Unexecuted instantiation: binary_codes_reader.c:aom_read_symbol_ Unexecuted instantiation: bitreader.c:aom_read_symbol_ |
227 | | |
228 | | #ifdef __cplusplus |
229 | | } // extern "C" |
230 | | #endif |
231 | | |
232 | | #endif // AOM_AOM_DSP_BITREADER_H_ |