Unified · Split
| @@ -493,7 +493,7 @@ static void write_mb_features(vp8_writer *w, const MB_MODE_INFO *mi, const MACRO · 492 unmodified lines | ||
| 493 | 493 | } |
| 494 | 494 | void vp8_convert_rfct_to_prob(VP8_COMP *const cpi) |
| 495 | 495 | { |
| 496 | − const int *const rfct = cpi->count_mb_ref_frame_usage; | |
| 496 | + const int *const rfct = cpi->mb.count_mb_ref_frame_usage; | |
| 497 | 497 | const int rf_intra = rfct[INTRA_FRAME]; |
| 498 | 498 | const int rf_inter = rfct[LAST_FRAME] + rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME]; |
| 499 | 499 | |
| @@ -996,7 +996,7 @@ int vp8_estimate_entropy_savings(VP8_COMP *cpi) · 496 unmodified lines | ||
| 996 | 996 | { |
| 997 | 997 | int savings = 0; |
| 998 | 998 | |
| 999 | − const int *const rfct = cpi->count_mb_ref_frame_usage; | |
| 999 | + const int *const rfct = cpi->mb.count_mb_ref_frame_usage; | |
| 1000 | 1000 | const int rf_intra = rfct[INTRA_FRAME]; |
| 1001 | 1001 | const int rf_inter = rfct[LAST_FRAME] + rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME]; |
| 1002 | 1002 | int new_intra, new_last, new_garf, oldtotal, newtotal; |
| @@ -134,6 +134,7 @@ typedef struct macroblock · 133 unmodified lines | ||
| 134 | 134 | int uv_mode_count[VP8_UV_MODES]; /* intra MB type cts this frame */ |
| 135 | 135 | int64_t prediction_error; |
| 136 | 136 | int64_t intra_error; |
| 137 | + int count_mb_ref_frame_usage[MAX_REF_FRAMES]; | |
| 137 | 138 | |
| 138 | 139 | |
| 139 | 140 | void (*short_fdct4x4)(short *input, short *output, int pitch); |
| @@ -642,8 +642,6 @@ static void init_encode_frame_mb_context(VP8_COMP *cpi) · 641 unmodified lines | ||
| 642 | 642 | |
| 643 | 643 | xd->left_context = &cm->left_context; |
| 644 | 644 | |
| 645 | − vp8_zero(cpi->count_mb_ref_frame_usage) | |
| 646 | − | |
| 647 | 645 | x->mvc = cm->fc.mvc; |
| 648 | 646 | |
| 649 | 647 | vpx_memset(cm->above_context, 0, |
| @@ -678,6 +676,7 @@ static void init_encode_frame_mb_context(VP8_COMP *cpi) · 28 unmodified lines | ||
| 678 | 676 | vp8_zero(x->uv_mode_count) |
| 679 | 677 | x->prediction_error = 0; |
| 680 | 678 | x->intra_error = 0; |
| 679 | + vp8_zero(x->count_mb_ref_frame_usage); | |
| 681 | 680 | } |
| 682 | 681 | |
| 683 | 682 | static void sum_coef_counts(MACROBLOCK *x, MACROBLOCK *x_thread) |
| @@ -868,7 +867,7 @@ void vp8_encode_frame(VP8_COMP *cpi) · 184 unmodified lines | ||
| 868 | 867 | for (i = 0; i < cpi->encoding_thread_count; i++) |
| 869 | 868 | { |
| 870 | 869 | int mode_count; |
| 871 | − int mv_vals; | |
| 870 | + int c_idx; | |
| 872 | 871 | totalrate += cpi->mb_row_ei[i].totalrate; |
| 873 | 872 | |
| 874 | 873 | cpi->mb.skip_true_count += cpi->mb_row_ei[i].mb.skip_true_count; |
| @@ -881,18 +880,22 @@ void vp8_encode_frame(VP8_COMP *cpi) · 6 unmodified lines | ||
| 881 | 880 | cpi->mb.uv_mode_count[mode_count] += |
| 882 | 881 | cpi->mb_row_ei[i].mb.uv_mode_count[mode_count]; |
| 883 | 882 | |
| 884 | − for(mv_vals = 0; mv_vals < MVvals; mv_vals++) | |
| 883 | + for(c_idx = 0; c_idx < MVvals; c_idx++) | |
| 885 | 884 | { |
| 886 | − cpi->mb.MVcount[0][mv_vals] += | |
| 887 | − cpi->mb_row_ei[i].mb.MVcount[0][mv_vals]; | |
| 888 | − cpi->mb.MVcount[1][mv_vals] += | |
| 889 | − cpi->mb_row_ei[i].mb.MVcount[1][mv_vals]; | |
| 885 | + cpi->mb.MVcount[0][c_idx] += | |
| 886 | + cpi->mb_row_ei[i].mb.MVcount[0][c_idx]; | |
| 887 | + cpi->mb.MVcount[1][c_idx] += | |
| 888 | + cpi->mb_row_ei[i].mb.MVcount[1][c_idx]; | |
| 890 | 889 | } |
| 891 | 890 | |
| 892 | 891 | cpi->mb.prediction_error += |
| 893 | 892 | cpi->mb_row_ei[i].mb.prediction_error; |
| 894 | 893 | cpi->mb.intra_error += cpi->mb_row_ei[i].mb.intra_error; |
| 895 | 894 | |
| 895 | + for(c_idx = 0; c_idx < MAX_REF_FRAMES; c_idx++) | |
| 896 | + cpi->mb.count_mb_ref_frame_usage[c_idx] += | |
| 897 | + x->count_mb_ref_frame_usage[c_idx]; | |
| 898 | + | |
| 896 | 899 | /* add up counts for each thread */ |
| 897 | 900 | sum_coef_counts(x, &cpi->mb_row_ei[i].mb); |
| 898 | 901 | } |
| @@ -987,13 +990,14 @@ void vp8_encode_frame(VP8_COMP *cpi) · 88 unmodified lines | ||
| 987 | 990 | { |
| 988 | 991 | int tot_modes; |
| 989 | 992 | |
| 990 | − tot_modes = cpi->count_mb_ref_frame_usage[INTRA_FRAME] | |
| 991 | − + cpi->count_mb_ref_frame_usage[LAST_FRAME] | |
| 992 | − + cpi->count_mb_ref_frame_usage[GOLDEN_FRAME] | |
| 993 | − + cpi->count_mb_ref_frame_usage[ALTREF_FRAME]; | |
| 993 | + tot_modes = cpi->mb.count_mb_ref_frame_usage[INTRA_FRAME] | |
| 994 | + + cpi->mb.count_mb_ref_frame_usage[LAST_FRAME] | |
| 995 | + + cpi->mb.count_mb_ref_frame_usage[GOLDEN_FRAME] | |
| 996 | + + cpi->mb.count_mb_ref_frame_usage[ALTREF_FRAME]; | |
| 994 | 997 | |
| 995 | 998 | if (tot_modes) |
| 996 | − cpi->this_frame_percent_intra = cpi->count_mb_ref_frame_usage[INTRA_FRAME] * 100 / tot_modes; | |
| 999 | + cpi->this_frame_percent_intra = | |
| 1000 | + cpi->mb.count_mb_ref_frame_usage[INTRA_FRAME] * 100 / tot_modes; | |
| 997 | 1001 | |
| 998 | 1002 | } |
| 999 | 1003 | |
| @@ -1318,7 +1322,7 @@ int vp8cx_encode_inter_macroblock · 318 unmodified lines | ||
| 1318 | 1322 | vp8_update_zbin_extra(cpi, x); |
| 1319 | 1323 | } |
| 1320 | 1324 | |
| 1321 | − cpi->count_mb_ref_frame_usage[xd->mode_info_context->mbmi.ref_frame] ++; | |
| 1325 | + x->count_mb_ref_frame_usage[xd->mode_info_context->mbmi.ref_frame] ++; | |
| 1322 | 1326 | |
| 1323 | 1327 | if (xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) |
| 1324 | 1328 | { |
| @@ -478,6 +478,8 @@ void vp8cx_init_mbrthread_data(VP8_COMP *cpi, · 477 unmodified lines | ||
| 478 | 478 | vp8_zero(mb->MVcount); |
| 479 | 479 | mb->prediction_error = 0; |
| 480 | 480 | mb->intra_error = 0; |
| 481 | + vp8_zero(mb->count_mb_ref_frame_usage); | |
| 482 | + | |
| 481 | 483 | } |
| 482 | 484 | } |
| 483 | 485 | |
| @@ -246,8 +246,8 @@ static void save_layer_context(VP8_COMP *cpi) · 245 unmodified lines | ||
| 246 | 246 | lc->last_frame_percent_intra = cpi->last_frame_percent_intra; |
| 247 | 247 | |
| 248 | 248 | memcpy (lc->count_mb_ref_frame_usage, |
| 249 | − cpi->count_mb_ref_frame_usage, | |
| 250 | − sizeof(cpi->count_mb_ref_frame_usage)); | |
| 249 | + cpi->mb.count_mb_ref_frame_usage, | |
| 250 | + sizeof(cpi->mb.count_mb_ref_frame_usage)); | |
| 251 | 251 | } |
| 252 | 252 | |
| 253 | 253 | static void restore_layer_context(VP8_COMP *cpi, const int layer) |
| @@ -283,9 +283,9 @@ static void restore_layer_context(VP8_COMP *cpi, const int layer) · 29 unmodified lines | ||
| 283 | 283 | |
| 284 | 284 | cpi->last_frame_percent_intra = lc->last_frame_percent_intra; |
| 285 | 285 | |
| 286 | − memcpy (cpi->count_mb_ref_frame_usage, | |
| 286 | + memcpy (cpi->mb.count_mb_ref_frame_usage, | |
| 287 | 287 | lc->count_mb_ref_frame_usage, |
| 288 | − sizeof(cpi->count_mb_ref_frame_usage)); | |
| 288 | + sizeof(cpi->mb.count_mb_ref_frame_usage)); | |
| 289 | 289 | } |
| 290 | 290 | |
| 291 | 291 | static void setup_features(VP8_COMP *cpi) |
| @@ -2775,10 +2775,14 @@ static void update_golden_frame_stats(VP8_COMP *cpi) · 2483 unmodified lines | ||
| 2775 | 2775 | |
| 2776 | 2776 | if (cpi->common.frames_since_golden > 1) |
| 2777 | 2777 | { |
| 2778 | − cpi->recent_ref_frame_usage[INTRA_FRAME] += cpi->count_mb_ref_frame_usage[INTRA_FRAME]; | |
| 2779 | − cpi->recent_ref_frame_usage[LAST_FRAME] += cpi->count_mb_ref_frame_usage[LAST_FRAME]; | |
| 2780 | − cpi->recent_ref_frame_usage[GOLDEN_FRAME] += cpi->count_mb_ref_frame_usage[GOLDEN_FRAME]; | |
| 2781 | − cpi->recent_ref_frame_usage[ALTREF_FRAME] += cpi->count_mb_ref_frame_usage[ALTREF_FRAME]; | |
| 2778 | + cpi->recent_ref_frame_usage[INTRA_FRAME] += | |
| 2779 | + cpi->mb.count_mb_ref_frame_usage[INTRA_FRAME]; | |
| 2780 | + cpi->recent_ref_frame_usage[LAST_FRAME] += | |
| 2781 | + cpi->mb.count_mb_ref_frame_usage[LAST_FRAME]; | |
| 2782 | + cpi->recent_ref_frame_usage[GOLDEN_FRAME] += | |
| 2783 | + cpi->mb.count_mb_ref_frame_usage[GOLDEN_FRAME]; | |
| 2784 | + cpi->recent_ref_frame_usage[ALTREF_FRAME] += | |
| 2785 | + cpi->mb.count_mb_ref_frame_usage[ALTREF_FRAME]; | |
| 2782 | 2786 | } |
| 2783 | 2787 | } |
| 2784 | 2788 | } |
| @@ -2790,7 +2794,7 @@ static void update_rd_ref_frame_probs(VP8_COMP *cpi) · 5 unmodified lines | ||
| 2790 | 2794 | { |
| 2791 | 2795 | VP8_COMMON *cm = &cpi->common; |
| 2792 | 2796 | |
| 2793 | − const int *const rfct = cpi->count_mb_ref_frame_usage; | |
| 2797 | + const int *const rfct = cpi->mb.count_mb_ref_frame_usage; | |
| 2794 | 2798 | const int rf_intra = rfct[INTRA_FRAME]; |
| 2795 | 2799 | const int rf_inter = rfct[LAST_FRAME] + rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME]; |
| 2796 | 2800 | |
| @@ -4709,7 +4713,9 @@ static void check_gf_quality(VP8_COMP *cpi) · 1912 unmodified lines | ||
| 4709 | 4713 | { |
| 4710 | 4714 | VP8_COMMON *cm = &cpi->common; |
| 4711 | 4715 | int gf_active_pct = (100 * cpi->gf_active_count) / (cm->mb_rows * cm->mb_cols); |
| 4712 | − int gf_ref_usage_pct = (cpi->count_mb_ref_frame_usage[GOLDEN_FRAME] * 100) / (cm->mb_rows * cm->mb_cols); | |
| 4716 | + int gf_ref_usage_pct = | |
| 4717 | + (cpi->mb.count_mb_ref_frame_usage[GOLDEN_FRAME] * 100) / | |
| 4718 | + (cm->mb_rows * cm->mb_cols); | |
| 4713 | 4719 | int last_ref_zz_useage = (cpi->inter_zz_count * 100) / (cm->mb_rows * cm->mb_cols); |
| 4714 | 4720 | |
| 4715 | 4721 | /* Gf refresh is not currently being signalled */ |
| @@ -493,7 +493,6 @@ typedef struct VP8_COMP · 492 unmodified lines | ||
| 493 | 493 | int last_skip_probs_q[3]; |
| 494 | 494 | int recent_ref_frame_usage[MAX_REF_FRAMES]; |
| 495 | 495 | |
| 496 | − int count_mb_ref_frame_usage[MAX_REF_FRAMES]; | |
| 497 | 496 | int this_frame_percent_intra; |
| 498 | 497 | int last_frame_percent_intra; |
| 499 | 498 | |