Merge "Add an active map test."
diff --git a/build/make/gen_msvs_vcxproj.sh b/build/make/gen_msvs_vcxproj.sh
index 4558aa1..7c8871b 100755
--- a/build/make/gen_msvs_vcxproj.sh
+++ b/build/make/gen_msvs_vcxproj.sh
@@ -28,6 +28,7 @@
--lib Generate a project for creating a static library
--dll Generate a project for creating a dll
--static-crt Use the static C runtime (/MT)
+ --enable-werror Treat warnings as errors (/WX)
--target=isa-os-cc Target specifier (required)
--out=filename Write output to a file [stdout]
--name=project_name Name of the project (required)
@@ -233,6 +234,8 @@
;;
--static-crt) use_static_runtime=true
;;
+ --enable-werror) werror=true
+ ;;
--ver=*)
vs_ver="$optval"
case "$optval" in
@@ -492,7 +495,9 @@
tag_content PreprocessorDefinitions "WIN32;$debug;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE$extradefines;%(PreprocessorDefinitions)"
tag_content RuntimeLibrary $runtime
tag_content WarningLevel Level3
- # DebugInformationFormat
+ if ${werror:-false}; then
+ tag_content TreatWarningAsError true
+ fi
close_tag ClCompile
case "$proj_kind" in
exe)
diff --git a/configure b/configure
index d2f17b0..170bd8d 100755
--- a/configure
+++ b/configure
@@ -689,6 +689,7 @@
10|11|12)
VCPROJ_SFX=vcxproj
gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh
+ enabled werror && gen_vcproj_cmd="${gen_vcproj_cmd} --enable-werror"
;;
esac
all_targets="${all_targets} solution"
diff --git a/vp9/common/vp9_alloccommon.c b/vp9/common/vp9_alloccommon.c
index a72821b..cddac01 100644
--- a/vp9/common/vp9_alloccommon.c
+++ b/vp9/common/vp9_alloccommon.c
@@ -101,22 +101,24 @@
mi_size = cm->mode_info_stride * (cm->mi_rows + MI_BLOCK_SIZE);
vpx_free(cm->mip);
- cm->mip = vpx_calloc(mi_size, sizeof(MODE_INFO));
+ cm->mip = (MODE_INFO *)vpx_calloc(mi_size, sizeof(MODE_INFO));
if (!cm->mip)
goto fail;
vpx_free(cm->prev_mip);
- cm->prev_mip = vpx_calloc(mi_size, sizeof(MODE_INFO));
+ cm->prev_mip = (MODE_INFO *)vpx_calloc(mi_size, sizeof(MODE_INFO));
if (!cm->prev_mip)
goto fail;
vpx_free(cm->mi_grid_base);
- cm->mi_grid_base = vpx_calloc(mi_size, sizeof(*cm->mi_grid_base));
+ cm->mi_grid_base =
+ (MODE_INFO **)vpx_calloc(mi_size, sizeof(*cm->mi_grid_base));
if (!cm->mi_grid_base)
goto fail;
vpx_free(cm->prev_mi_grid_base);
- cm->prev_mi_grid_base = vpx_calloc(mi_size, sizeof(*cm->prev_mi_grid_base));
+ cm->prev_mi_grid_base =
+ (MODE_INFO **)vpx_calloc(mi_size, sizeof(*cm->prev_mi_grid_base));
if (!cm->prev_mi_grid_base)
goto fail;
@@ -124,7 +126,7 @@
// Create the segmentation map structure and set to 0.
vpx_free(cm->last_frame_seg_map);
- cm->last_frame_seg_map = vpx_calloc(cm->mi_rows * cm->mi_cols, 1);
+ cm->last_frame_seg_map = (uint8_t *)vpx_calloc(cm->mi_rows * cm->mi_cols, 1);
if (!cm->last_frame_seg_map)
goto fail;
@@ -170,26 +172,28 @@
// Allocation
mi_size = cm->mode_info_stride * (cm->mi_rows + MI_BLOCK_SIZE);
- cm->mip = vpx_calloc(mi_size, sizeof(MODE_INFO));
+ cm->mip = (MODE_INFO *)vpx_calloc(mi_size, sizeof(MODE_INFO));
if (!cm->mip)
goto fail;
- cm->prev_mip = vpx_calloc(mi_size, sizeof(MODE_INFO));
+ cm->prev_mip = (MODE_INFO *)vpx_calloc(mi_size, sizeof(MODE_INFO));
if (!cm->prev_mip)
goto fail;
- cm->mi_grid_base = vpx_calloc(mi_size, sizeof(*cm->mi_grid_base));
+ cm->mi_grid_base =
+ (MODE_INFO **)vpx_calloc(mi_size, sizeof(*cm->mi_grid_base));
if (!cm->mi_grid_base)
goto fail;
- cm->prev_mi_grid_base = vpx_calloc(mi_size, sizeof(*cm->prev_mi_grid_base));
+ cm->prev_mi_grid_base =
+ (MODE_INFO **)vpx_calloc(mi_size, sizeof(*cm->prev_mi_grid_base));
if (!cm->prev_mi_grid_base)
goto fail;
setup_mi(cm);
// Create the segmentation map structure and set to 0.
- cm->last_frame_seg_map = vpx_calloc(cm->mi_rows * cm->mi_cols, 1);
+ cm->last_frame_seg_map = (uint8_t *)vpx_calloc(cm->mi_rows * cm->mi_cols, 1);
if (!cm->last_frame_seg_map)
goto fail;
diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h
index 84403ae..b7fadcd 100644
--- a/vp9/common/vp9_blockd.h
+++ b/vp9/common/vp9_blockd.h
@@ -204,7 +204,6 @@
typedef struct macroblockd {
struct macroblockd_plane plane[MAX_MB_PLANE];
- MODE_INFO *last_mi;
int mode_info_stride;
// A NULL indicates that the 8x8 is not part of the image
diff --git a/vp9/common/vp9_frame_buffers.c b/vp9/common/vp9_frame_buffers.c
index dffeb8a..a0b1e03 100644
--- a/vp9/common/vp9_frame_buffers.c
+++ b/vp9/common/vp9_frame_buffers.c
@@ -19,8 +19,9 @@
list->num_internal_frame_buffers =
VP9_MAXIMUM_REF_BUFFERS + VPX_MAXIMUM_WORK_BUFFERS;
- list->int_fb = vpx_calloc(list->num_internal_frame_buffers,
- sizeof(*list->int_fb));
+ list->int_fb =
+ (InternalFrameBuffer *)vpx_calloc(list->num_internal_frame_buffers,
+ sizeof(*list->int_fb));
return (list->int_fb == NULL);
}
diff --git a/vp9/common/vp9_mvref_common.c b/vp9/common/vp9_mvref_common.c
index d179f42..9f2c2df 100644
--- a/vp9/common/vp9_mvref_common.c
+++ b/vp9/common/vp9_mvref_common.c
@@ -188,12 +188,13 @@
// to try and find candidate reference vectors.
static void find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const TileInfo *const tile,
- MODE_INFO *mi, const MODE_INFO *prev_mi,
- MV_REFERENCE_FRAME ref_frame,
+ MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame,
int_mv *mv_ref_list,
int block, int mi_row, int mi_col) {
const int *ref_sign_bias = cm->ref_frame_sign_bias;
int i, refmv_count = 0;
+ const MODE_INFO *prev_mi = cm->coding_use_prev_mi && cm->prev_mi ?
+ xd->prev_mi_8x8[0] : NULL;
const POSITION *const mv_ref_search = mv_ref_blocks[mi->mbmi.sb_type];
const MB_MODE_INFO *const prev_mbmi = cm->coding_use_prev_mi && prev_mi ?
&prev_mi->mbmi : NULL;
@@ -282,11 +283,10 @@
void vp9_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const TileInfo *const tile,
- MODE_INFO *mi, const MODE_INFO *prev_mi,
- MV_REFERENCE_FRAME ref_frame,
+ MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame,
int_mv *mv_ref_list,
int mi_row, int mi_col) {
- find_mv_refs_idx(cm, xd, tile, mi, prev_mi, ref_frame, mv_ref_list, -1,
+ find_mv_refs_idx(cm, xd, tile, mi, ref_frame, mv_ref_list, -1,
mi_row, mi_col);
}
@@ -324,8 +324,8 @@
assert(MAX_MV_REF_CANDIDATES == 2);
- find_mv_refs_idx(cm, xd, tile, mi, xd->last_mi, mi->mbmi.ref_frame[ref],
- mv_list, block, mi_row, mi_col);
+ find_mv_refs_idx(cm, xd, tile, mi, mi->mbmi.ref_frame[ref], mv_list, block,
+ mi_row, mi_col);
near->as_int = 0;
switch (block) {
diff --git a/vp9/common/vp9_mvref_common.h b/vp9/common/vp9_mvref_common.h
index 04cb000..903ac02 100644
--- a/vp9/common/vp9_mvref_common.h
+++ b/vp9/common/vp9_mvref_common.h
@@ -31,10 +31,8 @@
void vp9_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const TileInfo *const tile,
- MODE_INFO *mi, const MODE_INFO *prev_mi,
- MV_REFERENCE_FRAME ref_frame,
- int_mv *mv_ref_list,
- int mi_row, int mi_col);
+ MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame,
+ int_mv *mv_ref_list, int mi_row, int mi_col);
// check a list of motion vectors by sad score using a number rows of pixels
// above and a number cols of pixels in the left to select the one with best
diff --git a/vp9/common/vp9_onyxc_int.h b/vp9/common/vp9_onyxc_int.h
index 52889f7..024b197 100644
--- a/vp9/common/vp9_onyxc_int.h
+++ b/vp9/common/vp9_onyxc_int.h
@@ -153,6 +153,10 @@
MODE_INFO **prev_mi_grid_base;
MODE_INFO **prev_mi_grid_visible;
+ // Each tile column has its own MODE_INFO stream. This array indexes them by
+ // tile column index.
+ MODE_INFO **mi_streams;
+
// Persistent mb segment id map used in prediction.
unsigned char *last_frame_seg_map;
diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c
index 1e203b1..0761160 100644
--- a/vp9/decoder/vp9_decodeframe.c
+++ b/vp9/decoder/vp9_decodeframe.c
@@ -195,16 +195,15 @@
const int aligned_mi_cols = mi_cols_aligned_to_sb(cm->mi_cols);
int i, tile_row, tile_col;
- CHECK_MEM_ERROR(cm, pbi->mi_streams,
- vpx_realloc(pbi->mi_streams, tile_rows * tile_cols *
- sizeof(*pbi->mi_streams)));
+ CHECK_MEM_ERROR(cm, cm->mi_streams,
+ vpx_realloc(cm->mi_streams, tile_rows * tile_cols *
+ sizeof(*cm->mi_streams)));
for (tile_row = 0; tile_row < tile_rows; ++tile_row) {
for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
TileInfo tile;
vp9_tile_init(&tile, cm, tile_row, tile_col);
- pbi->mi_streams[tile_row * tile_cols + tile_col] =
- &cm->mi[tile.mi_row_start * cm->mode_info_stride
- + tile.mi_col_start];
+ cm->mi_streams[tile_row * tile_cols + tile_col] =
+ &cm->mi[tile.mi_row_start * cm->mode_info_stride + tile.mi_col_start];
}
}
@@ -346,10 +345,6 @@
xd->mi_8x8 = cm->mi_grid_visible + offset;
xd->prev_mi_8x8 = cm->prev_mi_grid_visible + offset;
-
- xd->last_mi = cm->coding_use_prev_mi && cm->prev_mi ?
- xd->prev_mi_8x8[0] : NULL;
-
xd->mi_8x8[0] = xd->mi_stream + offset - tile_offset;
xd->mi_8x8[0]->mbmi.sb_type = bsize;
for (y = 0; y < y_mis; ++y)
@@ -735,9 +730,11 @@
static void setup_tile_context(VP9D_COMP *const pbi, MACROBLOCKD *const xd,
int tile_row, int tile_col) {
+ VP9_COMMON *const cm = &pbi->common;
+ const int tile_cols = 1 << cm->log2_tile_cols;
int i;
- const int tile_cols = 1 << pbi->common.log2_tile_cols;
- xd->mi_stream = pbi->mi_streams[tile_row * tile_cols + tile_col];
+
+ xd->mi_stream = cm->mi_streams[tile_row * tile_cols + tile_col];
for (i = 0; i < MAX_MB_PLANE; ++i) {
xd->above_context[i] = pbi->above_context[i];
diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c
index 799a82a..82f74ae 100644
--- a/vp9/decoder/vp9_decodemv.c
+++ b/vp9/decoder/vp9_decodemv.c
@@ -432,7 +432,7 @@
for (ref = 0; ref < 1 + is_compound; ++ref) {
const MV_REFERENCE_FRAME frame = mbmi->ref_frame[ref];
- vp9_find_mv_refs(cm, xd, tile, mi, xd->last_mi, frame, mbmi->ref_mvs[frame],
+ vp9_find_mv_refs(cm, xd, tile, mi, frame, mbmi->ref_mvs[frame],
mi_row, mi_col);
}
diff --git a/vp9/decoder/vp9_decoder.c b/vp9/decoder/vp9_decoder.c
index 77985c9..a50f5be 100644
--- a/vp9/decoder/vp9_decoder.c
+++ b/vp9/decoder/vp9_decoder.c
@@ -189,7 +189,7 @@
vp9_loop_filter_dealloc(lf_sync, sb_rows);
}
- vpx_free(pbi->mi_streams);
+ vpx_free(pbi->common.mi_streams);
vpx_free(pbi->above_context[0]);
vpx_free(pbi->above_seg_context);
vpx_free(pbi);
diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h
index e6edaf9..4cbff45 100644
--- a/vp9/decoder/vp9_decoder.h
+++ b/vp9/decoder/vp9_decoder.h
@@ -73,10 +73,6 @@
VP9LfSync lf_row_sync;
- /* Each tile column has its own MODE_INFO stream. This array indexes them by
- tile column index. */
- MODE_INFO **mi_streams;
-
ENTROPY_CONTEXT *above_context[MAX_MB_PLANE];
PARTITION_CONTEXT *above_seg_context;
} VP9D_COMP;
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index cdaed53..0a723d78 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -624,9 +624,6 @@
xd->mi_8x8 = cm->mi_grid_visible + idx_str;
xd->prev_mi_8x8 = cm->prev_mi_grid_visible + idx_str;
-
- xd->last_mi = cm->prev_mi ? xd->prev_mi_8x8[0] : NULL;
-
xd->mi_8x8[0] = cm->mi + idx_str;
mbmi = &xd->mi_8x8[0]->mbmi;
@@ -1675,8 +1672,8 @@
// partition is allowed by selecting the next smaller square size as
// *min_block_size.
if (cpi->sf.use_square_partition_only &&
- (*max_block_size - *min_block_size) < 2) {
- *min_block_size = next_square_size[*min_block_size];
+ next_square_size[*max_block_size] < *min_block_size) {
+ *min_block_size = next_square_size[*max_block_size];
}
}
@@ -1701,6 +1698,7 @@
ENTROPY_CONTEXT l[16 * MAX_MB_PLANE], a[16 * MAX_MB_PLANE];
PARTITION_CONTEXT sl[8], sa[8];
TOKENEXTRA *tp_orig = *tp;
+ PICK_MODE_CONTEXT *ctx = get_block_context(x, bsize);
int i, pl;
BLOCK_SIZE subsize;
int this_rate, sum_rate = 0, best_rate = INT_MAX;
@@ -1774,7 +1772,7 @@
// PARTITION_NONE
if (partition_none_allowed) {
rd_pick_sb_modes(cpi, tile, mi_row, mi_col, &this_rate, &this_dist, bsize,
- get_block_context(x, bsize), best_rd);
+ ctx, best_rd);
if (this_rate != INT_MAX) {
if (bsize >= BLOCK_8X8) {
pl = partition_plane_context(cpi->above_seg_context,
@@ -1815,7 +1813,7 @@
// store estimated motion vector
if (cpi->sf.adaptive_motion_search)
- store_pred_mv(x, get_block_context(x, bsize));
+ store_pred_mv(x, ctx);
// PARTITION_SPLIT
sum_rd = 0;
@@ -1832,11 +1830,11 @@
*get_sb_index(x, subsize) = i;
if (cpi->sf.adaptive_motion_search)
- load_pred_mv(x, get_block_context(x, bsize));
+ load_pred_mv(x, ctx);
if (cpi->sf.adaptive_pred_interp_filter && bsize == BLOCK_8X8 &&
partition_none_allowed)
get_block_context(x, subsize)->pred_interp_filter =
- get_block_context(x, bsize)->mic.mbmi.interp_filter;
+ ctx->mic.mbmi.interp_filter;
rd_pick_partition(cpi, tile, tp, mi_row + y_idx, mi_col + x_idx, subsize,
&this_rate, &this_dist, i != 3, best_rd - sum_rd);
@@ -1874,11 +1872,11 @@
subsize = get_subsize(bsize, PARTITION_HORZ);
*get_sb_index(x, subsize) = 0;
if (cpi->sf.adaptive_motion_search)
- load_pred_mv(x, get_block_context(x, bsize));
+ load_pred_mv(x, ctx);
if (cpi->sf.adaptive_pred_interp_filter && bsize == BLOCK_8X8 &&
partition_none_allowed)
get_block_context(x, subsize)->pred_interp_filter =
- get_block_context(x, bsize)->mic.mbmi.interp_filter;
+ ctx->mic.mbmi.interp_filter;
rd_pick_sb_modes(cpi, tile, mi_row, mi_col, &sum_rate, &sum_dist, subsize,
get_block_context(x, subsize), best_rd);
sum_rd = RDCOST(x->rdmult, x->rddiv, sum_rate, sum_dist);
@@ -1889,11 +1887,11 @@
*get_sb_index(x, subsize) = 1;
if (cpi->sf.adaptive_motion_search)
- load_pred_mv(x, get_block_context(x, bsize));
+ load_pred_mv(x, ctx);
if (cpi->sf.adaptive_pred_interp_filter && bsize == BLOCK_8X8 &&
partition_none_allowed)
get_block_context(x, subsize)->pred_interp_filter =
- get_block_context(x, bsize)->mic.mbmi.interp_filter;
+ ctx->mic.mbmi.interp_filter;
rd_pick_sb_modes(cpi, tile, mi_row + ms, mi_col, &this_rate,
&this_dist, subsize, get_block_context(x, subsize),
best_rd - sum_rd);
@@ -1927,11 +1925,11 @@
*get_sb_index(x, subsize) = 0;
if (cpi->sf.adaptive_motion_search)
- load_pred_mv(x, get_block_context(x, bsize));
+ load_pred_mv(x, ctx);
if (cpi->sf.adaptive_pred_interp_filter && bsize == BLOCK_8X8 &&
partition_none_allowed)
get_block_context(x, subsize)->pred_interp_filter =
- get_block_context(x, bsize)->mic.mbmi.interp_filter;
+ ctx->mic.mbmi.interp_filter;
rd_pick_sb_modes(cpi, tile, mi_row, mi_col, &sum_rate, &sum_dist, subsize,
get_block_context(x, subsize), best_rd);
sum_rd = RDCOST(x->rdmult, x->rddiv, sum_rate, sum_dist);
@@ -1941,11 +1939,11 @@
*get_sb_index(x, subsize) = 1;
if (cpi->sf.adaptive_motion_search)
- load_pred_mv(x, get_block_context(x, bsize));
+ load_pred_mv(x, ctx);
if (cpi->sf.adaptive_pred_interp_filter && bsize == BLOCK_8X8 &&
partition_none_allowed)
get_block_context(x, subsize)->pred_interp_filter =
- get_block_context(x, bsize)->mic.mbmi.interp_filter;
+ ctx->mic.mbmi.interp_filter;
rd_pick_sb_modes(cpi, tile, mi_row, mi_col + ms, &this_rate,
&this_dist, subsize, get_block_context(x, subsize),
best_rd - sum_rd);
@@ -2433,8 +2431,6 @@
// required for vp9_frame_init_quantizer
xd->mi_8x8[0] = cm->mi;
- xd->last_mi = cm->prev_mi;
-
vp9_zero(cm->counts.mv);
vp9_zero(cpi->coef_counts);
vp9_zero(cm->counts.eob_branch);
diff --git a/vp9/encoder/vp9_firstpass.c b/vp9/encoder/vp9_firstpass.c
index acb5a09..e017947 100644
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -199,7 +199,8 @@
section->duration = 1.0;
}
-static void accumulate_stats(FIRSTPASS_STATS *section, FIRSTPASS_STATS *frame) {
+static void accumulate_stats(FIRSTPASS_STATS *section,
+ const FIRSTPASS_STATS *frame) {
section->frame += frame->frame;
section->intra_error += frame->intra_error;
section->coded_error += frame->coded_error;
@@ -221,7 +222,8 @@
section->duration += frame->duration;
}
-static void subtract_stats(FIRSTPASS_STATS *section, FIRSTPASS_STATS *frame) {
+static void subtract_stats(FIRSTPASS_STATS *section,
+ const FIRSTPASS_STATS *frame) {
section->frame -= frame->frame;
section->intra_error -= frame->intra_error;
section->coded_error -= frame->coded_error;
@@ -1851,10 +1853,12 @@
static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
int i, j;
+ RATE_CONTROL *const rc = &cpi->rc;
+ struct twopass_rc *const twopass = &cpi->twopass;
FIRSTPASS_STATS last_frame;
- FIRSTPASS_STATS first_frame;
+ const FIRSTPASS_STATS first_frame = *this_frame;
FIRSTPASS_STATS next_frame;
- const FIRSTPASS_STATS *start_position;
+ const FIRSTPASS_STATS *start_position = twopass->stats_in;
double decay_accumulator = 1.0;
double zero_motion_accumulator = 1.0;
@@ -1865,14 +1869,8 @@
double kf_group_err = 0.0;
double recent_loop_decay[8] = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
- RATE_CONTROL *const rc = &cpi->rc;
- struct twopass_rc *const twopass = &cpi->twopass;
-
vp9_zero(next_frame);
- vp9_clear_system_state();
-
- start_position = twopass->stats_in;
cpi->common.frame_type = KEY_FRAME;
// Is this a forced key frame by interval.
@@ -1886,9 +1884,6 @@
rc->frames_to_key = 1;
- // Take a copy of the initial frame details.
- first_frame = *this_frame;
-
twopass->kf_group_bits = 0; // Total bits available to kf group
twopass->kf_group_error_left = 0; // Group modified error score.
@@ -1947,13 +1942,10 @@
// is between 1x and 2x.
if (cpi->oxcf.auto_key &&
rc->frames_to_key > (int)cpi->key_frame_frequency) {
- FIRSTPASS_STATS tmp_frame;
+ FIRSTPASS_STATS tmp_frame = first_frame;
rc->frames_to_key /= 2;
- // Copy first frame details.
- tmp_frame = first_frame;
-
// Reset to the start of the group.
reset_fpf_position(twopass, start_position);
@@ -1961,10 +1953,7 @@
// Rescan to get the correct error data for the forced kf group.
for (i = 0; i < rc->frames_to_key; ++i) {
- // Accumulate kf group errors.
kf_group_err += calculate_modified_err(cpi, &tmp_frame);
-
- // Load the next frame's stats.
input_stats(twopass, &tmp_frame);
}
rc->next_key_frame_forced = 1;
@@ -1983,7 +1972,7 @@
// Calculate the number of bits that should be assigned to the kf group.
if (twopass->bits_left > 0 && twopass->modified_error_left > 0.0) {
// Maximum number of bits for a single normal frame (not key frame).
- int max_bits = frame_max_bits(cpi);
+ const int max_bits = frame_max_bits(cpi);
// Maximum number of bits allocated to the key frame group.
int64_t max_grp_bits;
@@ -2010,20 +1999,19 @@
// Scan through the kf group collating various stats.
for (i = 0; i < rc->frames_to_key; ++i) {
- double r;
-
if (EOF == input_stats(twopass, &next_frame))
break;
// Monitor for static sections.
if ((next_frame.pcnt_inter - next_frame.pcnt_motion) <
- zero_motion_accumulator) {
- zero_motion_accumulator =
- (next_frame.pcnt_inter - next_frame.pcnt_motion);
+ zero_motion_accumulator) {
+ zero_motion_accumulator = (next_frame.pcnt_inter -
+ next_frame.pcnt_motion);
}
// For the first few frames collect data to decide kf boost.
if (i <= (rc->max_gf_interval * 2)) {
+ double r;
if (next_frame.intra_error > twopass->kf_intra_err_min)
r = (IIKFACTOR2 * next_frame.intra_error /
DOUBLE_DIVIDE_CHECK(next_frame.coded_error));
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c
index 0a5033f..3775a42 100644
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -840,14 +840,12 @@
}
if (speed >= 5) {
int i;
- sf->mode_search_skip_flags |= FLAG_SKIP_COMP_REFMISMATCH |
- FLAG_EARLY_TERMINATE;
- sf->use_fast_coef_costing = 0;
+ sf->last_partitioning_redo_frequency = 4;
sf->adaptive_rd_thresh = 5;
- sf->auto_min_max_partition_size = frame_is_intra_only(cm) ?
- RELAXED_NEIGHBORING_MIN_MAX : STRICT_NEIGHBORING_MIN_MAX;
+ sf->use_fast_coef_costing = 0;
+ sf->auto_min_max_partition_size = STRICT_NEIGHBORING_MIN_MAX;
sf->adjust_partitioning_from_last_frame =
- cm->last_frame_type == KEY_FRAME || (0 ==
+ cm->last_frame_type != cm->frame_type || (0 ==
(cm->current_video_frame + 1) % sf->last_partitioning_redo_frequency);
sf->subpel_force_stop = 1;
for (i = 0; i < TX_SIZES; i++) {
diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h
index 8c6b48c..9b2e499 100644
--- a/vp9/encoder/vp9_onyx_int.h
+++ b/vp9/encoder/vp9_onyx_int.h
@@ -726,9 +726,6 @@
int cpu_used;
int pass;
- vp9_prob last_skip_false_probs[3][SKIP_CONTEXTS];
- int last_skip_probs_q[3];
-
int ref_frame_flags;
SPEED_FEATURES sf;
diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c
index 5fc8672..d003775 100644
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -2332,8 +2332,7 @@
setup_pred_block(xd, yv12_mb[ref_frame], yv12, mi_row, mi_col, sf, sf);
// Gets an initial list of candidate vectors from neighbours and orders them
- vp9_find_mv_refs(cm, xd, tile, mi, xd->last_mi, ref_frame, candidates,
- mi_row, mi_col);
+ vp9_find_mv_refs(cm, xd, tile, mi, ref_frame, candidates, mi_row, mi_col);
// Candidate refinement carried out at encoder and decoder
vp9_find_best_ref_mvs(xd, cm->allow_high_precision_mv, candidates,
diff --git a/vpx/src/vpx_encoder.c b/vpx/src/vpx_encoder.c
index e69d96e..ece2d0b 100644
--- a/vpx/src/vpx_encoder.c
+++ b/vpx/src/vpx_encoder.c
@@ -394,7 +394,7 @@
*iter = list->pkts;
}
- pkt = (const void *) * iter;
+ pkt = (const vpx_codec_cx_pkt_t *)*iter;
if ((size_t)(pkt - list->pkts) < list->cnt)
*iter = pkt + 1;