Index: source/libvpx/vp9/common/vp9_pred_common.c |
=================================================================== |
--- source/libvpx/vp9/common/vp9_pred_common.c (revision 251189) |
+++ source/libvpx/vp9/common/vp9_pred_common.c (working copy) |
@@ -218,27 +218,25 @@ |
} else { // inter/inter |
const int above_has_second = has_second_ref(above_mbmi); |
const int left_has_second = has_second_ref(left_mbmi); |
+ const MV_REFERENCE_FRAME above0 = above_mbmi->ref_frame[0]; |
+ const MV_REFERENCE_FRAME above1 = above_mbmi->ref_frame[1]; |
+ const MV_REFERENCE_FRAME left0 = left_mbmi->ref_frame[0]; |
+ const MV_REFERENCE_FRAME left1 = left_mbmi->ref_frame[1]; |
if (above_has_second && left_has_second) { |
- pred_context = 1 + (above_mbmi->ref_frame[0] == LAST_FRAME || |
- above_mbmi->ref_frame[1] == LAST_FRAME || |
- left_mbmi->ref_frame[0] == LAST_FRAME || |
- left_mbmi->ref_frame[1] == LAST_FRAME); |
+ pred_context = 1 + (above0 == LAST_FRAME || above1 == LAST_FRAME || |
+ left0 == LAST_FRAME || left1 == LAST_FRAME); |
} else if (above_has_second || left_has_second) { |
- const MV_REFERENCE_FRAME rfs = !above_has_second ? |
- above_mbmi->ref_frame[0] : left_mbmi->ref_frame[0]; |
- const MV_REFERENCE_FRAME crf1 = above_has_second ? |
- above_mbmi->ref_frame[0] : left_mbmi->ref_frame[0]; |
- const MV_REFERENCE_FRAME crf2 = above_has_second ? |
- above_mbmi->ref_frame[1] : left_mbmi->ref_frame[1]; |
+ const MV_REFERENCE_FRAME rfs = !above_has_second ? above0 : left0; |
+ const MV_REFERENCE_FRAME crf1 = above_has_second ? above0 : left0; |
+ const MV_REFERENCE_FRAME crf2 = above_has_second ? above1 : left1; |
if (rfs == LAST_FRAME) |
pred_context = 3 + (crf1 == LAST_FRAME || crf2 == LAST_FRAME); |
else |
pred_context = (crf1 == LAST_FRAME || crf2 == LAST_FRAME); |
} else { |
- pred_context = 2 * (above_mbmi->ref_frame[0] == LAST_FRAME) + |
- 2 * (left_mbmi->ref_frame[0] == LAST_FRAME); |
+ pred_context = 2 * (above0 == LAST_FRAME) + 2 * (left0 == LAST_FRAME); |
} |
} |
} else if (has_above || has_left) { // one edge available |
@@ -291,23 +289,23 @@ |
} else { // inter/inter |
const int above_has_second = has_second_ref(above_mbmi); |
const int left_has_second = has_second_ref(left_mbmi); |
+ const MV_REFERENCE_FRAME above0 = above_mbmi->ref_frame[0]; |
+ const MV_REFERENCE_FRAME above1 = above_mbmi->ref_frame[1]; |
+ const MV_REFERENCE_FRAME left0 = left_mbmi->ref_frame[0]; |
+ const MV_REFERENCE_FRAME left1 = left_mbmi->ref_frame[1]; |
if (above_has_second && left_has_second) { |
- if (above_mbmi->ref_frame[0] == left_mbmi->ref_frame[0] && |
- above_mbmi->ref_frame[1] == left_mbmi->ref_frame[1]) |
- pred_context = 3 * (above_mbmi->ref_frame[0] == GOLDEN_FRAME || |
- above_mbmi->ref_frame[1] == GOLDEN_FRAME || |
- left_mbmi->ref_frame[0] == GOLDEN_FRAME || |
- left_mbmi->ref_frame[1] == GOLDEN_FRAME); |
+ if (above0 == left0 && above1 == left1) |
+ pred_context = 3 * (above0 == GOLDEN_FRAME || |
+ above1 == GOLDEN_FRAME || |
+ left0 == GOLDEN_FRAME || |
+ left1 == GOLDEN_FRAME); |
else |
pred_context = 2; |
} else if (above_has_second || left_has_second) { |
- const MV_REFERENCE_FRAME rfs = !above_has_second ? |
- above_mbmi->ref_frame[0] : left_mbmi->ref_frame[0]; |
- const MV_REFERENCE_FRAME crf1 = above_has_second ? |
- above_mbmi->ref_frame[0] : left_mbmi->ref_frame[0]; |
- const MV_REFERENCE_FRAME crf2 = above_has_second ? |
- above_mbmi->ref_frame[1] : left_mbmi->ref_frame[1]; |
+ const MV_REFERENCE_FRAME rfs = !above_has_second ? above0 : left0; |
+ const MV_REFERENCE_FRAME crf1 = above_has_second ? above0 : left0; |
+ const MV_REFERENCE_FRAME crf2 = above_has_second ? above1 : left1; |
if (rfs == GOLDEN_FRAME) |
pred_context = 3 + (crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME); |
@@ -316,17 +314,15 @@ |
else |
pred_context = 1 + 2 * (crf1 == GOLDEN_FRAME || crf2 == GOLDEN_FRAME); |
} else { |
- if (above_mbmi->ref_frame[0] == LAST_FRAME && |
- left_mbmi->ref_frame[0] == LAST_FRAME) { |
+ if (above0 == LAST_FRAME && left0 == LAST_FRAME) { |
pred_context = 3; |
- } else if (above_mbmi->ref_frame[0] == LAST_FRAME || |
- left_mbmi->ref_frame[0] == LAST_FRAME) { |
- const MB_MODE_INFO *edge_mbmi = |
- above_mbmi->ref_frame[0] == LAST_FRAME ? left_mbmi : above_mbmi; |
- pred_context = 4 * (edge_mbmi->ref_frame[0] == GOLDEN_FRAME); |
+ } else if (above0 == LAST_FRAME || left0 == LAST_FRAME) { |
+ const MV_REFERENCE_FRAME edge0 = (above0 == LAST_FRAME) ? left0 |
+ : above0; |
+ pred_context = 4 * (edge0 == GOLDEN_FRAME); |
} else { |
- pred_context = 2 * (above_mbmi->ref_frame[0] == GOLDEN_FRAME) + |
- 2 * (left_mbmi->ref_frame[0] == GOLDEN_FRAME); |
+ pred_context = 2 * (above0 == GOLDEN_FRAME) + |
+ 2 * (left0 == GOLDEN_FRAME); |
} |
} |
} |
@@ -357,10 +353,10 @@ |
const MB_MODE_INFO *const left_mbmi = get_mbmi(get_left_mi(xd)); |
const int has_above = above_mbmi != NULL; |
const int has_left = left_mbmi != NULL; |
- int above_ctx = (has_above && !above_mbmi->skip_coeff) ? above_mbmi->tx_size |
- : max_tx_size; |
- int left_ctx = (has_left && !left_mbmi->skip_coeff) ? left_mbmi->tx_size |
- : max_tx_size; |
+ int above_ctx = (has_above && !above_mbmi->skip) ? above_mbmi->tx_size |
+ : max_tx_size; |
+ int left_ctx = (has_left && !left_mbmi->skip) ? left_mbmi->tx_size |
+ : max_tx_size; |
if (!has_left) |
left_ctx = above_ctx; |