Commit ca4df948 authored by Yaowu Xu's avatar Yaowu Xu Committed by Gerrit Code Review

Merge "Fix encoder crashes and enc/dec mismatches"

parents ea48370a d803e8a2
...@@ -51,7 +51,7 @@ void vp10_setup_in_frame_q_adj(VP10_COMP *cpi) { ...@@ -51,7 +51,7 @@ void vp10_setup_in_frame_q_adj(VP10_COMP *cpi) {
// Make SURE use of floating point in this function is safe. // Make SURE use of floating point in this function is safe.
vpx_clear_system_state(); vpx_clear_system_state();
if (cm->frame_type == KEY_FRAME || if (frame_is_intra_only(cm) || cm->error_resilient_mode ||
cpi->refresh_alt_ref_frame || cpi->refresh_alt_ref_frame ||
(cpi->refresh_golden_frame && !cpi->rc.is_src_frame_alt_ref)) { (cpi->refresh_golden_frame && !cpi->rc.is_src_frame_alt_ref)) {
int segment; int segment;
......
...@@ -47,7 +47,7 @@ void vp10_vaq_frame_setup(VP10_COMP *cpi) { ...@@ -47,7 +47,7 @@ void vp10_vaq_frame_setup(VP10_COMP *cpi) {
struct segmentation *seg = &cm->seg; struct segmentation *seg = &cm->seg;
int i; int i;
if (cm->frame_type == KEY_FRAME || if (frame_is_intra_only(cm) || cm->error_resilient_mode ||
cpi->refresh_alt_ref_frame || cpi->refresh_alt_ref_frame ||
(cpi->refresh_golden_frame && !cpi->rc.is_src_frame_alt_ref)) { (cpi->refresh_golden_frame && !cpi->rc.is_src_frame_alt_ref)) {
vp10_enable_segmentation(seg); vp10_enable_segmentation(seg);
......
...@@ -273,7 +273,7 @@ void vp10_choose_segmap_coding_method(VP10_COMMON *cm, MACROBLOCKD *xd) { ...@@ -273,7 +273,7 @@ void vp10_choose_segmap_coding_method(VP10_COMMON *cm, MACROBLOCKD *xd) {
no_pred_cost = cost_segmap(no_pred_segcounts, no_pred_tree); no_pred_cost = cost_segmap(no_pred_segcounts, no_pred_tree);
// Key frames cannot use temporal prediction // Key frames cannot use temporal prediction
if (!frame_is_intra_only(cm)) { if (!frame_is_intra_only(cm) && !cm->error_resilient_mode) {
// Work out probability tree for coding those segments not // Work out probability tree for coding those segments not
// predicted using the temporal method and the cost. // predicted using the temporal method and the cost.
calc_segtree_probs(t_unpred_seg_counts, t_pred_tree, segp->tree_probs); calc_segtree_probs(t_unpred_seg_counts, t_pred_tree, segp->tree_probs);
...@@ -300,6 +300,7 @@ void vp10_choose_segmap_coding_method(VP10_COMMON *cm, MACROBLOCKD *xd) { ...@@ -300,6 +300,7 @@ void vp10_choose_segmap_coding_method(VP10_COMMON *cm, MACROBLOCKD *xd) {
// Now choose which coding method to use. // Now choose which coding method to use.
if (t_pred_cost < no_pred_cost) { if (t_pred_cost < no_pred_cost) {
assert(!cm->error_resilient_mode);
seg->temporal_update = 1; seg->temporal_update = 1;
#if !CONFIG_MISC_FIXES #if !CONFIG_MISC_FIXES
memcpy(segp->tree_probs, t_pred_tree, sizeof(t_pred_tree)); memcpy(segp->tree_probs, t_pred_tree, sizeof(t_pred_tree));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment