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
This commit is contained in:
Nathan E. Egge 2016-10-05 19:33:48 -04:00 коммит произвёл Yaowu Xu
Родитель c9862e05f5
Коммит eb64fc28b6
3 изменённых файлов: 14 добавлений и 4 удалений

Просмотреть файл

@ -2774,7 +2774,9 @@ static const uint8_t *decode_tiles(AV1Decoder *pbi, const uint8_t *data,
pbi->allocated_tiles = n_tiles;
}
#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 = tile_rows_start; tile_row < tile_rows_end; ++tile_row) {
@ -2799,7 +2801,11 @@ static const uint8_t *decode_tiles(AV1Decoder *pbi, const uint8_t *data,
&td->bit_reader, pbi->decrypt_cb, pbi->decrypt_state);
#endif
#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, &td->xd, td->dqcoeff);
#if CONFIG_PALETTE
@ -2820,8 +2826,10 @@ static const uint8_t *decode_tiles(AV1Decoder *pbi, const uint8_t *data,
const int col = inv_col_order ? tile_cols - 1 - tile_col : tile_col;
TileData *const td = pbi->tile_data + tile_cols * 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_info, cm, col);

Просмотреть файл

@ -127,6 +127,7 @@ AV1Decoder *av1_decoder_create(BufferPool *const pool) {
av1_loop_restoration_precal();
#endif // CONFIG_LOOP_RESTORATION
#if CONFIG_ACCOUNTING
pbi->acct_enabled = 1;
aom_accounting_init(&pbi->accounting);
#endif

Просмотреть файл

@ -104,6 +104,7 @@ typedef struct AV1Decoder {
int dec_tile_row, dec_tile_col;
#endif // CONFIG_EXT_TILE
#if CONFIG_ACCOUNTING
int acct_enabled;
Accounting accounting;
#endif