Coverage Report

Created: 2026-01-18 06:45

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libavif/ext/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
942M
  aom_read_(r, prob ACCT_STR_ARG(ACCT_STR_NAME))
42
#define aom_read_bit(r, ACCT_STR_NAME) \
43
1.03G
  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
793k
  aom_read_literal_(r, bits ACCT_STR_ARG(ACCT_STR_NAME))
48
#define aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME) \
49
1.05G
  aom_read_cdf_(r, cdf, nsymbs ACCT_STR_ARG(ACCT_STR_NAME))
50
#define aom_read_symbol(r, cdf, nsymbs, ACCT_STR_NAME) \
51
1.17G
  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
942M
static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) {
105
942M
  int p = (0x7FFFFF - (prob << 15) + prob) >> 8;
106
942M
  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
942M
  return bit;
147
942M
}
Unexecuted instantiation: av1_dx_iface.c:aom_read_
decodeframe.c:aom_read_
Line
Count
Source
104
57.0k
static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) {
105
57.0k
  int p = (0x7FFFFF - (prob << 15) + prob) >> 8;
106
57.0k
  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
57.0k
  return bit;
147
57.0k
}
decodemv.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: decoder.c:aom_read_
decodetxb.c:aom_read_
Line
Count
Source
104
940M
static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) {
105
940M
  int p = (0x7FFFFF - (prob << 15) + prob) >> 8;
106
940M
  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
940M
  return bit;
147
940M
}
detokenize.c:aom_read_
Line
Count
Source
104
108k
static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) {
105
108k
  int p = (0x7FFFFF - (prob << 15) + prob) >> 8;
106
108k
  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
108k
  return bit;
147
108k
}
Unexecuted instantiation: obu.c:aom_read_
binary_codes_reader.c:aom_read_
Line
Count
Source
104
383k
static inline int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) {
105
383k
  int p = (0x7FFFFF - (prob << 15) + prob) >> 8;
106
383k
  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
383k
  return bit;
147
383k
}
Unexecuted instantiation: bitreader.c:aom_read_
148
149
942M
static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) {
150
942M
  int ret;
151
942M
  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
942M
  return ret;
156
942M
}
Unexecuted instantiation: av1_dx_iface.c:aom_read_bit_
decodeframe.c:aom_read_bit_
Line
Count
Source
149
57.0k
static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) {
150
57.0k
  int ret;
151
57.0k
  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
57.0k
  return ret;
156
57.0k
}
decodemv.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: decoder.c:aom_read_bit_
decodetxb.c:aom_read_bit_
Line
Count
Source
149
939M
static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) {
150
939M
  int ret;
151
939M
  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
939M
  return ret;
156
939M
}
detokenize.c:aom_read_bit_
Line
Count
Source
149
108k
static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) {
150
108k
  int ret;
151
108k
  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
108k
  return ret;
156
108k
}
Unexecuted instantiation: obu.c:aom_read_bit_
binary_codes_reader.c:aom_read_bit_
Line
Count
Source
149
383k
static inline int aom_read_bit_(aom_reader *r ACCT_STR_PARAM) {
150
383k
  int ret;
151
383k
  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
383k
  return ret;
156
383k
}
Unexecuted instantiation: bitreader.c:aom_read_bit_
157
158
793k
static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) {
159
793k
  int literal = 0, bit;
160
161
3.01M
  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
793k
  return literal;
166
793k
}
Unexecuted instantiation: av1_dx_iface.c:aom_read_literal_
decodeframe.c:aom_read_literal_
Line
Count
Source
158
14.2k
static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) {
159
14.2k
  int literal = 0, bit;
160
161
71.2k
  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
14.2k
  return literal;
166
14.2k
}
decodemv.c:aom_read_literal_
Line
Count
Source
158
628k
static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) {
159
628k
  int literal = 0, bit;
160
161
2.43M
  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
628k
  return literal;
166
628k
}
Unexecuted instantiation: decoder.c:aom_read_literal_
Unexecuted instantiation: decodetxb.c:aom_read_literal_
detokenize.c:aom_read_literal_
Line
Count
Source
158
74.8k
static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) {
159
74.8k
  int literal = 0, bit;
160
161
182k
  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
74.8k
  return literal;
166
74.8k
}
Unexecuted instantiation: obu.c:aom_read_literal_
binary_codes_reader.c:aom_read_literal_
Line
Count
Source
158
75.7k
static inline int aom_read_literal_(aom_reader *r, int bits ACCT_STR_PARAM) {
159
75.7k
  int literal = 0, bit;
160
161
331k
  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
75.7k
  return literal;
166
75.7k
}
Unexecuted instantiation: bitreader.c:aom_read_literal_
167
168
static inline int aom_read_cdf_(aom_reader *r, const aom_cdf_prob *cdf,
169
1.05G
                                int nsymbs ACCT_STR_PARAM) {
170
1.05G
  int symb;
171
1.05G
  assert(cdf != NULL);
172
1.05G
  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
1.05G
  return symb;
218
1.05G
}
Unexecuted instantiation: av1_dx_iface.c:aom_read_cdf_
decodeframe.c:aom_read_cdf_
Line
Count
Source
169
10.2M
                                int nsymbs ACCT_STR_PARAM) {
170
10.2M
  int symb;
171
10.2M
  assert(cdf != NULL);
172
10.2M
  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
10.2M
  return symb;
218
10.2M
}
decodemv.c:aom_read_cdf_
Line
Count
Source
169
32.6M
                                int nsymbs ACCT_STR_PARAM) {
170
32.6M
  int symb;
171
32.6M
  assert(cdf != NULL);
172
32.6M
  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
32.6M
  return symb;
218
32.6M
}
Unexecuted instantiation: decoder.c:aom_read_cdf_
decodetxb.c:aom_read_cdf_
Line
Count
Source
169
1.00G
                                int nsymbs ACCT_STR_PARAM) {
170
1.00G
  int symb;
171
1.00G
  assert(cdf != NULL);
172
1.00G
  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
1.00G
  return symb;
218
1.00G
}
detokenize.c:aom_read_cdf_
Line
Count
Source
169
10.5M
                                int nsymbs ACCT_STR_PARAM) {
170
10.5M
  int symb;
171
10.5M
  assert(cdf != NULL);
172
10.5M
  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
10.5M
  return symb;
218
10.5M
}
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
1.05G
                                   int nsymbs ACCT_STR_PARAM) {
222
1.05G
  int ret;
223
1.05G
  ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME);
224
1.05G
  if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs);
225
1.05G
  return ret;
226
1.05G
}
Unexecuted instantiation: av1_dx_iface.c:aom_read_symbol_
decodeframe.c:aom_read_symbol_
Line
Count
Source
221
9.51M
                                   int nsymbs ACCT_STR_PARAM) {
222
9.51M
  int ret;
223
9.51M
  ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME);
224
9.51M
  if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs);
225
9.51M
  return ret;
226
9.51M
}
decodemv.c:aom_read_symbol_
Line
Count
Source
221
32.6M
                                   int nsymbs ACCT_STR_PARAM) {
222
32.6M
  int ret;
223
32.6M
  ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME);
224
32.6M
  if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs);
225
32.6M
  return ret;
226
32.6M
}
Unexecuted instantiation: decoder.c:aom_read_symbol_
decodetxb.c:aom_read_symbol_
Line
Count
Source
221
999M
                                   int nsymbs ACCT_STR_PARAM) {
222
999M
  int ret;
223
999M
  ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME);
224
999M
  if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs);
225
999M
  return ret;
226
999M
}
detokenize.c:aom_read_symbol_
Line
Count
Source
221
10.5M
                                   int nsymbs ACCT_STR_PARAM) {
222
10.5M
  int ret;
223
10.5M
  ret = aom_read_cdf(r, cdf, nsymbs, ACCT_STR_NAME);
224
10.5M
  if (r->allow_update_cdf) update_cdf(cdf, ret, nsymbs);
225
10.5M
  return ret;
226
10.5M
}
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_