| Index: source/libvpx/vp8/encoder/encodeframe.c
|
| ===================================================================
|
| --- source/libvpx/vp8/encoder/encodeframe.c (revision 172621)
|
| +++ source/libvpx/vp8/encoder/encodeframe.c (working copy)
|
| @@ -33,7 +33,7 @@
|
| #endif
|
| #include "encodeframe.h"
|
|
|
| -extern void vp8_stuff_mb(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t) ;
|
| +extern void vp8_stuff_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t) ;
|
| extern void vp8_calc_ref_frame_costs(int *ref_frame_cost,
|
| int prob_intra,
|
| int prob_last,
|
| @@ -643,6 +643,8 @@
|
| xd->left_context = &cm->left_context;
|
|
|
| vp8_zero(cpi->count_mb_ref_frame_usage)
|
| + vp8_zero(cpi->ymode_count)
|
| + vp8_zero(cpi->uv_mode_count)
|
|
|
| x->mvc = cm->fc.mvc;
|
|
|
| @@ -672,44 +674,8 @@
|
| xd->fullpixel_mask = 0xffffffff;
|
| if(cm->full_pixel)
|
| xd->fullpixel_mask = 0xfffffff8;
|
| -
|
| - vp8_zero(x->coef_counts);
|
| - vp8_zero(x->ymode_count);
|
| - vp8_zero(x->uv_mode_count)
|
| - x->prediction_error = 0;
|
| - x->intra_error = 0;
|
| }
|
|
|
| -static void sum_coef_counts(MACROBLOCK *x, MACROBLOCK *x_thread)
|
| -{
|
| - int i = 0;
|
| - do
|
| - {
|
| - int j = 0;
|
| - do
|
| - {
|
| - int k = 0;
|
| - do
|
| - {
|
| - /* at every context */
|
| -
|
| - /* calc probs and branch cts for this frame only */
|
| - int t = 0; /* token/prob index */
|
| -
|
| - do
|
| - {
|
| - x->coef_counts [i][j][k][t] +=
|
| - x_thread->coef_counts [i][j][k][t];
|
| - }
|
| - while (++t < ENTROPY_NODES);
|
| - }
|
| - while (++k < PREV_COEF_CONTEXTS);
|
| - }
|
| - while (++j < COEF_BANDS);
|
| - }
|
| - while (++i < BLOCK_TYPES);
|
| -}
|
| -
|
| void vp8_encode_frame(VP8_COMP *cpi)
|
| {
|
| int mb_row;
|
| @@ -751,7 +717,9 @@
|
| xd->subpixel_predict16x16 = vp8_bilinear_predict16x16;
|
| }
|
|
|
| - cpi->mb.skip_true_count = 0;
|
| + cpi->prediction_error = 0;
|
| + cpi->intra_error = 0;
|
| + cpi->skip_true_count = 0;
|
| cpi->tok_count = 0;
|
|
|
| #if 0
|
| @@ -762,8 +730,10 @@
|
|
|
| xd->mode_info_context = cm->mi;
|
|
|
| - vp8_zero(cpi->mb.MVcount);
|
| + vp8_zero(cpi->MVcount);
|
|
|
| + vp8_zero(cpi->coef_counts);
|
| +
|
| vp8cx_frame_init_quantizer(cpi);
|
|
|
| vp8_initialize_rd_consts(cpi,
|
| @@ -867,41 +837,13 @@
|
|
|
| for (i = 0; i < cpi->encoding_thread_count; i++)
|
| {
|
| - int mode_count;
|
| - int mv_vals;
|
| totalrate += cpi->mb_row_ei[i].totalrate;
|
| -
|
| - cpi->mb.skip_true_count += cpi->mb_row_ei[i].mb.skip_true_count;
|
| -
|
| - for(mode_count = 0; mode_count < VP8_YMODES; mode_count++)
|
| - cpi->mb.ymode_count[mode_count] +=
|
| - cpi->mb_row_ei[i].mb.ymode_count[mode_count];
|
| -
|
| - for(mode_count = 0; mode_count < VP8_UV_MODES; mode_count++)
|
| - cpi->mb.uv_mode_count[mode_count] +=
|
| - cpi->mb_row_ei[i].mb.uv_mode_count[mode_count];
|
| -
|
| - for(mv_vals = 0; mv_vals < MVvals; mv_vals++)
|
| - {
|
| - cpi->mb.MVcount[0][mv_vals] +=
|
| - cpi->mb_row_ei[i].mb.MVcount[0][mv_vals];
|
| - cpi->mb.MVcount[1][mv_vals] +=
|
| - cpi->mb_row_ei[i].mb.MVcount[1][mv_vals];
|
| - }
|
| -
|
| - cpi->mb.prediction_error +=
|
| - cpi->mb_row_ei[i].mb.prediction_error;
|
| - cpi->mb.intra_error += cpi->mb_row_ei[i].mb.intra_error;
|
| -
|
| - /* add up counts for each thread */
|
| - sum_coef_counts(x, &cpi->mb_row_ei[i].mb);
|
| }
|
|
|
| }
|
| else
|
| #endif
|
| {
|
| -
|
| /* for each macroblock row in image */
|
| for (mb_row = 0; mb_row < cm->mb_rows; mb_row++)
|
| {
|
| @@ -1123,8 +1065,8 @@
|
|
|
| #endif
|
|
|
| - ++x->ymode_count[m];
|
| - ++x->uv_mode_count[uvm];
|
| + ++cpi->ymode_count[m];
|
| + ++cpi->uv_mode_count[uvm];
|
|
|
| }
|
|
|
| @@ -1151,16 +1093,15 @@
|
| #endif
|
| }
|
|
|
| -int vp8cx_encode_intra_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
|
| - TOKENEXTRA **t)
|
| +int vp8cx_encode_intra_macroblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t)
|
| {
|
| MACROBLOCKD *xd = &x->e_mbd;
|
| int rate;
|
|
|
| if (cpi->sf.RD && cpi->compressor_speed != 2)
|
| - vp8_rd_pick_intra_mode(x, &rate);
|
| + vp8_rd_pick_intra_mode(cpi, x, &rate);
|
| else
|
| - vp8_pick_intra_mode(x, &rate);
|
| + vp8_pick_intra_mode(cpi, x, &rate);
|
|
|
| if(cpi->oxcf.tuning == VP8_TUNE_SSIM)
|
| {
|
| @@ -1177,7 +1118,7 @@
|
|
|
| sum_intra_stats(cpi, x);
|
|
|
| - vp8_tokenize_mb(cpi, x, t);
|
| + vp8_tokenize_mb(cpi, &x->e_mbd, t);
|
|
|
| if (xd->mode_info_context->mbmi.mode != B_PRED)
|
| vp8_inverse_transform_mby(xd);
|
| @@ -1256,8 +1197,8 @@
|
| &distortion, &intra_error, mb_row, mb_col);
|
| }
|
|
|
| - x->prediction_error += distortion;
|
| - x->intra_error += intra_error;
|
| + cpi->prediction_error += distortion;
|
| + cpi->intra_error += intra_error;
|
|
|
| if(cpi->oxcf.tuning == VP8_TUNE_SSIM)
|
| {
|
| @@ -1363,7 +1304,7 @@
|
|
|
| if (!x->skip)
|
| {
|
| - vp8_tokenize_mb(cpi, x, t);
|
| + vp8_tokenize_mb(cpi, xd, t);
|
|
|
| if (xd->mode_info_context->mbmi.mode != B_PRED)
|
| vp8_inverse_transform_mby(xd);
|
| @@ -1380,12 +1321,12 @@
|
|
|
| if (cpi->common.mb_no_coeff_skip)
|
| {
|
| - x->skip_true_count ++;
|
| + cpi->skip_true_count ++;
|
| vp8_fix_contexts(xd);
|
| }
|
| else
|
| {
|
| - vp8_stuff_mb(cpi, x, t);
|
| + vp8_stuff_mb(cpi, xd, t);
|
| }
|
| }
|
|
|
|
|