| 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;
|
|
|
|
|