diff options
author | Paul Wilkins <paulwilkins@google.com> | 2013-08-30 08:56:01 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2013-08-30 08:56:01 -0700 |
commit | 2b9baca4f00a417eef615aedcaec1e6befdbeb1c (patch) | |
tree | a567a7b3646a0ec0388e6d63a5492b63fc2cacf2 /vp9 | |
parent | e22bb0dc8e50a43dc5fdeef0a39258cbf2a78370 (diff) | |
parent | 1f4bf79d6598f3e4f786d524867058cd59d997d3 (diff) | |
download | libvpx-2b9baca4f00a417eef615aedcaec1e6befdbeb1c.tar libvpx-2b9baca4f00a417eef615aedcaec1e6befdbeb1c.tar.gz libvpx-2b9baca4f00a417eef615aedcaec1e6befdbeb1c.tar.bz2 libvpx-2b9baca4f00a417eef615aedcaec1e6befdbeb1c.zip |
Merge "Added per pixel inter rd hit count stats"
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_onyx_if.c | 32 | ||||
-rw-r--r-- | vp9/encoder/vp9_onyx_int.h | 8 | ||||
-rw-r--r-- | vp9/encoder/vp9_rdopt.c | 6 |
3 files changed, 46 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index 22ad682ae..e9c214ff8 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -1725,6 +1725,10 @@ VP9_PTR vp9_create_compressor(VP9_CONFIG *oxcf) { vp9_zero(cpi->y_uv_mode_count) +#ifdef MODE_TEST_HIT_STATS + vp9_zero(cpi->mode_test_hits) +#endif + return (VP9_PTR) cpi; } @@ -1806,6 +1810,34 @@ void vp9_remove_compressor(VP9_PTR *ptr) { #endif +#ifdef MODE_TEST_HIT_STATS + if (cpi->pass != 1) { + double norm_per_pixel_mode_tests = 0; + double norm_counts[BLOCK_SIZES]; + int i; + int sb64_per_frame; + int norm_factors[BLOCK_SIZES] = + {256, 128, 128, 64, 32, 32, 16, 8, 8, 4, 2, 2, 1}; + FILE *f = fopen("mode_hit_stats.stt", "a"); + + // On average, how many mode tests do we do + for (i = 0; i < BLOCK_SIZES; ++i) { + norm_counts[i] = (double)cpi->mode_test_hits[i] / + (double)norm_factors[i]; + norm_per_pixel_mode_tests += norm_counts[i]; + } + // Convert to a number per 64x64 and per frame + sb64_per_frame = ((cpi->common.height + 63) / 64) * + ((cpi->common.width + 63) / 64); + norm_per_pixel_mode_tests = + norm_per_pixel_mode_tests / + (double)(cpi->common.current_video_frame * sb64_per_frame); + + fprintf(f, "%6.4f\n", norm_per_pixel_mode_tests); + fclose(f); + } +#endif + #ifdef ENTROPY_STATS { int i, j, k; diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h index 0933185b9..252e98251 100644 --- a/vp9/encoder/vp9_onyx_int.h +++ b/vp9/encoder/vp9_onyx_int.h @@ -36,6 +36,8 @@ #define DISABLE_RC_LONG_TERM_MEM 0 #endif +// #define MODE_TEST_HIT_STATS + // #define SPEEDSTATS 1 #if CONFIG_MULTIPLE_ARF // Set MIN_GF_INTERVAL to 1 for the full decomposition. @@ -664,6 +666,12 @@ typedef struct VP9_COMP { #ifdef ENTROPY_STATS int64_t mv_ref_stats[INTER_MODE_CONTEXTS][INTER_MODES - 1][2]; #endif + + +#ifdef MODE_TEST_HIT_STATS + // Debug / test stats + int64_t mode_test_hits[BLOCK_SIZES]; +#endif } VP9_COMP; static int get_ref_frame_idx(VP9_COMP *cpi, MV_REFERENCE_FRAME ref_frame) { diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 00bff0e9f..39b6544f6 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -3341,6 +3341,12 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, continue; } +#ifdef MODE_TEST_HIT_STATS + // TEST/DEBUG CODE + // Keep a rcord of the number of test hits at each size + cpi->mode_test_hits[bsize]++; +#endif + if (this_mode == I4X4_PRED) { int rate; |