Add a runtime flag to enable bit accounting.
By default, when building with --enable-accounting the bit accounting
code will collect statistics for every frame while decoding.
Collecting statistics can slow down decode time and we would eventually
like to enable the CONFIG_ACCOUNTING flag by default.
This patch adds a runtime flag so that bit accounting statistics are
only collected when actually needed.
Change-Id: I25d9eaf26ea132d61ace95b952872158c9ac29e7
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index c701557..2e0887e 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -1341,7 +1341,9 @@
pbi->total_tiles = tile_rows * tile_cols;
}
#if CONFIG_ACCOUNTING
- aom_accounting_reset(&pbi->accounting);
+ if (pbi->acct_enabled) {
+ aom_accounting_reset(&pbi->accounting);
+ }
#endif
// Load all tile information into tile_data.
for (tile_row = 0; tile_row < tile_rows; ++tile_row) {
@@ -1361,7 +1363,11 @@
&tile_data->bit_reader, pbi->decrypt_cb,
pbi->decrypt_state);
#if CONFIG_ACCOUNTING
- tile_data->bit_reader.accounting = &pbi->accounting;
+ if (pbi->acct_enabled) {
+ tile_data->bit_reader.accounting = &pbi->accounting;
+ } else {
+ tile_data->bit_reader.accounting = NULL;
+ }
#endif
av1_init_macroblockd(cm, &tile_data->xd, tile_data->dqcoeff);
#if CONFIG_PALETTE
@@ -1381,8 +1387,10 @@
pbi->inv_tile_order ? tile_cols - tile_col - 1 : tile_col;
tile_data = pbi->tile_data + tile_cols * tile_row + col;
#if CONFIG_ACCOUNTING
- tile_data->bit_reader.accounting->last_tell_frac =
- aom_reader_tell_frac(&tile_data->bit_reader);
+ if (pbi->acct_enabled) {
+ tile_data->bit_reader.accounting->last_tell_frac =
+ aom_reader_tell_frac(&tile_data->bit_reader);
+ }
#endif
av1_tile_set_col(&tile, tile_data->cm, col);
av1_zero(tile_data->xd.left_context);
diff --git a/av1/decoder/decoder.c b/av1/decoder/decoder.c
index e536169..fa2d061 100644
--- a/av1/decoder/decoder.c
+++ b/av1/decoder/decoder.c
@@ -127,6 +127,7 @@
aom_qm_init(cm);
#endif
#if CONFIG_ACCOUNTING
+ pbi->acct_enabled = 1;
aom_accounting_init(&pbi->accounting);
#endif
cm->error.setjmp = 0;
diff --git a/av1/decoder/decoder.h b/av1/decoder/decoder.h
index 3f8ffdf..d19909e 100644
--- a/av1/decoder/decoder.h
+++ b/av1/decoder/decoder.h
@@ -88,6 +88,7 @@
int need_resync; // wait for key/intra-only frame.
int hold_ref_buf; // hold the reference buffer.
#if CONFIG_ACCOUNTING
+ int acct_enabled;
Accounting accounting;
#endif
size_t uncomp_hdr_size; // Size of the uncompressed header