Add a symbol decode call count to accounting.
This keeps track of how many calls have been made
to read symbols or bits. A given syntax element
may make multiple calls to symbol decoding functions,
and these variables keep track of the entropy
decoding engine throughput.
Change-Id: Iab3a720cbfe68f8d5ca3e4c415f7baa683b24268
diff --git a/aom_dsp/bitreader.h b/aom_dsp/bitreader.h
index b6bf06c..aefa01d 100644
--- a/aom_dsp/bitreader.h
+++ b/aom_dsp/bitreader.h
@@ -144,6 +144,14 @@
r->accounting->last_tell_frac = tell_frac;
}
}
+
+static INLINE void aom_update_symb_counts(const aom_reader *r,
+ const int is_binary) {
+ if (r->accounting != NULL) {
+ r->accounting->syms.num_multi_syms += !is_binary;
+ r->accounting->syms.num_binary_syms += !!is_binary;
+ }
+}
#endif
static INLINE int aom_read_(aom_reader *r, int prob ACCT_STR_PARAM) {
@@ -157,6 +165,7 @@
#endif
#if CONFIG_ACCOUNTING
if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME);
+ aom_update_symb_counts(r, 1);
#endif
return ret;
}
@@ -167,6 +176,7 @@
ret = rabs_read_bit(r); // Non trivial optimization at half probability
#elif CONFIG_DAALA_EC && CONFIG_RAWBITS
// Note this uses raw bits and is not the same as aom_daala_read(r, 128);
+ // Calls to this function are omitted from raw symbol accounting.
ret = aom_daala_read_bit(r);
#else
ret = aom_read(r, 128, NULL); // aom_prob_half
@@ -213,6 +223,7 @@
#if CONFIG_ACCOUNTING
if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME);
+ aom_update_symb_counts(r, (nsymbs == 2));
#endif
return ret;
}
@@ -239,6 +250,7 @@
#if CONFIG_ACCOUNTING
if (ACCT_STR_NAME) aom_process_accounting(r, ACCT_STR_NAME);
+ aom_update_raw_counts(r, (nsymbs == 2));
#endif
return ret;
}