Merge "Added per pixel inter rd hit count stats"
This commit is contained in:
commit
2b9baca4f0
@ -1725,6 +1725,10 @@ VP9_PTR vp9_create_compressor(VP9_CONFIG *oxcf) {
|
|||||||
|
|
||||||
vp9_zero(cpi->y_uv_mode_count)
|
vp9_zero(cpi->y_uv_mode_count)
|
||||||
|
|
||||||
|
#ifdef MODE_TEST_HIT_STATS
|
||||||
|
vp9_zero(cpi->mode_test_hits)
|
||||||
|
#endif
|
||||||
|
|
||||||
return (VP9_PTR) cpi;
|
return (VP9_PTR) cpi;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1806,6 +1810,34 @@ void vp9_remove_compressor(VP9_PTR *ptr) {
|
|||||||
|
|
||||||
#endif
|
#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
|
#ifdef ENTROPY_STATS
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
|
@ -36,6 +36,8 @@
|
|||||||
#define DISABLE_RC_LONG_TERM_MEM 0
|
#define DISABLE_RC_LONG_TERM_MEM 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// #define MODE_TEST_HIT_STATS
|
||||||
|
|
||||||
// #define SPEEDSTATS 1
|
// #define SPEEDSTATS 1
|
||||||
#if CONFIG_MULTIPLE_ARF
|
#if CONFIG_MULTIPLE_ARF
|
||||||
// Set MIN_GF_INTERVAL to 1 for the full decomposition.
|
// Set MIN_GF_INTERVAL to 1 for the full decomposition.
|
||||||
@ -664,6 +666,12 @@ typedef struct VP9_COMP {
|
|||||||
#ifdef ENTROPY_STATS
|
#ifdef ENTROPY_STATS
|
||||||
int64_t mv_ref_stats[INTER_MODE_CONTEXTS][INTER_MODES - 1][2];
|
int64_t mv_ref_stats[INTER_MODE_CONTEXTS][INTER_MODES - 1][2];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef MODE_TEST_HIT_STATS
|
||||||
|
// Debug / test stats
|
||||||
|
int64_t mode_test_hits[BLOCK_SIZES];
|
||||||
|
#endif
|
||||||
} VP9_COMP;
|
} VP9_COMP;
|
||||||
|
|
||||||
static int get_ref_frame_idx(VP9_COMP *cpi, MV_REFERENCE_FRAME ref_frame) {
|
static int get_ref_frame_idx(VP9_COMP *cpi, MV_REFERENCE_FRAME ref_frame) {
|
||||||
|
@ -3341,6 +3341,12 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
continue;
|
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) {
|
if (this_mode == I4X4_PRED) {
|
||||||
int rate;
|
int rate;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user