| Index: source/libvpx/vp9/encoder/vp9_firstpass.c
|
| ===================================================================
|
| --- source/libvpx/vp9/encoder/vp9_firstpass.c (revision 177019)
|
| +++ source/libvpx/vp9/encoder/vp9_firstpass.c (working copy)
|
| @@ -17,7 +17,7 @@
|
| #include "vp9/common/vp9_setupintrarecon.h"
|
| #include "vp9/encoder/vp9_mcomp.h"
|
| #include "vp9/encoder/vp9_firstpass.h"
|
| -#include "vpx_scale/vpxscale.h"
|
| +#include "vpx_scale/vpx_scale.h"
|
| #include "vp9/encoder/vp9_encodeframe.h"
|
| #include "vp9/encoder/vp9_encodemb.h"
|
| #include "vp9/common/vp9_extend.h"
|
| @@ -296,7 +296,7 @@
|
| static double simple_weight(YV12_BUFFER_CONFIG *source) {
|
| int i, j;
|
|
|
| - unsigned char *src = source->y_buffer;
|
| + uint8_t *src = source->y_buffer;
|
| double sum_weights = 0.0;
|
|
|
| // Loop throught the Y plane raw examining levels and creating a weight for the image
|
| @@ -345,15 +345,15 @@
|
| BLOCK *b = &x->block[0];
|
| BLOCKD *d = &x->e_mbd.block[0];
|
|
|
| - unsigned char *src_ptr = (*(b->base_src) + b->src);
|
| + uint8_t *src_ptr = (*(b->base_src) + b->src);
|
| int src_stride = b->src_stride;
|
| - unsigned char *ref_ptr;
|
| + uint8_t *ref_ptr;
|
| int ref_stride = d->pre_stride;
|
|
|
| // Set up pointers for this macro block recon buffer
|
| xd->pre.y_buffer = recon_buffer->y_buffer + recon_yoffset;
|
|
|
| - ref_ptr = (unsigned char *)(*(d->base_pre) + d->pre);
|
| + ref_ptr = (uint8_t *)(*(d->base_pre) + d->pre);
|
|
|
| vp9_mse16x16(src_ptr, src_stride, ref_ptr, ref_stride,
|
| (unsigned int *)(best_motion_err));
|
| @@ -516,11 +516,6 @@
|
| xd->dst.v_buffer = new_yv12->v_buffer + recon_uvoffset;
|
| xd->left_available = (mb_col != 0);
|
|
|
| -#if !CONFIG_SUPERBLOCKS
|
| - // Copy current mb to a buffer
|
| - vp9_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16);
|
| -#endif
|
| -
|
| // do intra 16x16 prediction
|
| this_error = vp9_encode_intra(cpi, x, use_dc_pred);
|
|
|
| @@ -799,8 +794,9 @@
|
| return -(log(prob) / log(2.0));
|
| }
|
|
|
| -static long long estimate_modemvcost(VP9_COMP *cpi,
|
| +static int64_t estimate_modemvcost(VP9_COMP *cpi,
|
| FIRSTPASS_STATS *fpstats) {
|
| +#if 0
|
| int mv_cost;
|
| int mode_cost;
|
|
|
| @@ -829,6 +825,7 @@
|
|
|
| // return mv_cost + mode_cost;
|
| // TODO PGW Fix overhead costs for extended Q range
|
| +#endif
|
| return 0;
|
| }
|
|
|
| @@ -1233,7 +1230,7 @@
|
| int still_interval,
|
| double loop_decay_rate,
|
| double last_decay_rate) {
|
| - BOOL trans_to_still = FALSE;
|
| + int trans_to_still = FALSE;
|
|
|
| // Break clause to detect very still sections after motion
|
| // For example a static image after a fade or other transition
|
| @@ -1271,10 +1268,10 @@
|
| // This function detects a flash through the high relative pcnt_second_ref
|
| // score in the frame following a flash frame. The offset passed in should
|
| // reflect this
|
| -static BOOL detect_flash(VP9_COMP *cpi, int offset) {
|
| +static int detect_flash(VP9_COMP *cpi, int offset) {
|
| FIRSTPASS_STATS next_frame;
|
|
|
| - BOOL flash_detected = FALSE;
|
| + int flash_detected = FALSE;
|
|
|
| // Read the frame data.
|
| // The return is FALSE (no flash detected) if not a valid frame
|
| @@ -1386,7 +1383,7 @@
|
| double mv_in_out_accumulator = 0.0;
|
| double abs_mv_in_out_accumulator = 0.0;
|
| int arf_boost;
|
| - BOOL flash_detected = FALSE;
|
| + int flash_detected = FALSE;
|
|
|
| // Search forward from the proposed arf/next gf position
|
| for (i = 0; i < f_frames; i++) {
|
| @@ -1541,7 +1538,7 @@
|
|
|
| int f_boost = 0;
|
| int b_boost = 0;
|
| - BOOL flash_detected;
|
| + int flash_detected;
|
|
|
| cpi->twopass.gf_group_bits = 0;
|
|
|
| @@ -1951,12 +1948,9 @@
|
| FIRSTPASS_STATS this_frame;
|
| FIRSTPASS_STATS this_frame_copy;
|
|
|
| - double this_frame_error;
|
| double this_frame_intra_error;
|
| double this_frame_coded_error;
|
|
|
| - FIRSTPASS_STATS *start_pos;
|
| -
|
| int overhead_bits;
|
|
|
| if (!cpi->twopass.stats_in) {
|
| @@ -1970,12 +1964,9 @@
|
| if (EOF == input_stats(cpi, &this_frame))
|
| return;
|
|
|
| - this_frame_error = this_frame.ssim_weighted_pred_err;
|
| this_frame_intra_error = this_frame.intra_error;
|
| this_frame_coded_error = this_frame.coded_error;
|
|
|
| - start_pos = cpi->twopass.stats_in;
|
| -
|
| // keyframe and section processing !
|
| if (cpi->twopass.frames_to_key == 0) {
|
| // Define next KF group and assign bits to it
|
| @@ -2100,8 +2091,11 @@
|
| }
|
|
|
|
|
| -static BOOL test_candidate_kf(VP9_COMP *cpi, FIRSTPASS_STATS *last_frame, FIRSTPASS_STATS *this_frame, FIRSTPASS_STATS *next_frame) {
|
| - BOOL is_viable_kf = FALSE;
|
| +static int test_candidate_kf(VP9_COMP *cpi,
|
| + FIRSTPASS_STATS *last_frame,
|
| + FIRSTPASS_STATS *this_frame,
|
| + FIRSTPASS_STATS *next_frame) {
|
| + int is_viable_kf = FALSE;
|
|
|
| // Does the frame satisfy the primary criteria of a key frame
|
| // If so, then examine how well it predicts subsequent frames
|
|
|