| Index: source/libvpx/vp8/encoder/onyx_if.c
|
| ===================================================================
|
| --- source/libvpx/vp8/encoder/onyx_if.c (revision 172621)
|
| +++ source/libvpx/vp8/encoder/onyx_if.c (working copy)
|
| @@ -10,6 +10,7 @@
|
|
|
|
|
| #include "vpx_config.h"
|
| +#include "./vpx_scale_rtcd.h"
|
| #include "vp8/common/onyxc_int.h"
|
| #include "vp8/common/blockd.h"
|
| #include "onyx_int.h"
|
| @@ -355,6 +356,8 @@
|
| /* Activity mask based per mb zbin adjustments */
|
| vpx_free(cpi->mb_activity_map);
|
| cpi->mb_activity_map = 0;
|
| + vpx_free(cpi->mb_norm_activity_map);
|
| + cpi->mb_norm_activity_map = 0;
|
|
|
| vpx_free(cpi->mb.pip);
|
| cpi->mb.pip = 0;
|
| @@ -1095,6 +1098,11 @@
|
| vpx_calloc(sizeof(*cpi->mb_activity_map),
|
| cm->mb_rows * cm->mb_cols));
|
|
|
| + vpx_free(cpi->mb_norm_activity_map);
|
| + CHECK_MEM_ERROR(cpi->mb_norm_activity_map,
|
| + vpx_calloc(sizeof(*cpi->mb_norm_activity_map),
|
| + cm->mb_rows * cm->mb_cols));
|
| +
|
| /* allocate memory for storing last frame's MVs for MV prediction. */
|
| vpx_free(cpi->lfmv);
|
| CHECK_MEM_ERROR(cpi->lfmv, vpx_calloc((cm->mb_rows+2) * (cm->mb_cols+2),
|
| @@ -2857,19 +2865,40 @@
|
|
|
| if ((cpi->compressor_speed == 2) && (cpi->Speed >= 5) && (cpi->sf.RD == 0))
|
| {
|
| - double change = 1.0 * abs((int)(cpi->mb.intra_error -
|
| - cpi->last_intra_error)) / (1 + cpi->last_intra_error);
|
| - double change2 = 1.0 * abs((int)(cpi->mb.prediction_error -
|
| - cpi->last_prediction_error)) / (1 + cpi->last_prediction_error);
|
| + double change = 1.0 * abs((int)(cpi->intra_error - cpi->last_intra_error)) / (1 + cpi->last_intra_error);
|
| + double change2 = 1.0 * abs((int)(cpi->prediction_error - cpi->last_prediction_error)) / (1 + cpi->last_prediction_error);
|
| double minerror = cm->MBs * 256;
|
|
|
| - cpi->last_intra_error = cpi->mb.intra_error;
|
| - cpi->last_prediction_error = cpi->mb.prediction_error;
|
| +#if 0
|
|
|
| - if (10 * cpi->mb.intra_error / (1 + cpi->mb.prediction_error) < 15
|
| - && cpi->mb.prediction_error > minerror
|
| + if (10 * cpi->intra_error / (1 + cpi->prediction_error) < 15
|
| + && cpi->prediction_error > minerror
|
| && (change > .25 || change2 > .25))
|
| {
|
| + FILE *f = fopen("intra_inter.stt", "a");
|
| +
|
| + if (cpi->prediction_error <= 0)
|
| + cpi->prediction_error = 1;
|
| +
|
| + fprintf(f, "%d %d %d %d %14.4f\n",
|
| + cm->current_video_frame,
|
| + (int) cpi->prediction_error,
|
| + (int) cpi->intra_error,
|
| + (int)((10 * cpi->intra_error) / cpi->prediction_error),
|
| + change);
|
| +
|
| + fclose(f);
|
| + }
|
| +
|
| +#endif
|
| +
|
| + cpi->last_intra_error = cpi->intra_error;
|
| + cpi->last_prediction_error = cpi->prediction_error;
|
| +
|
| + if (10 * cpi->intra_error / (1 + cpi->prediction_error) < 15
|
| + && cpi->prediction_error > minerror
|
| + && (change > .25 || change2 > .25))
|
| + {
|
| /*(change > 1.4 || change < .75)&& cpi->this_frame_percent_intra > cpi->last_frame_percent_intra + 3*/
|
| return 1;
|
| }
|
|
|