Index: source/libvpx/vp9/encoder/vp9_rd.c |
=================================================================== |
--- source/libvpx/vp9/encoder/vp9_rd.c (revision 290053) |
+++ source/libvpx/vp9/encoder/vp9_rd.c (working copy) |
@@ -121,7 +121,7 @@ |
const int q = vp9_dc_quant(qindex, 0); |
int rdmult = 88 * q * q / 24; |
- if (cpi->pass == 2 && (cpi->common.frame_type != KEY_FRAME)) { |
+ if (cpi->oxcf.pass == 2 && (cpi->common.frame_type != KEY_FRAME)) { |
const GF_GROUP *const gf_group = &cpi->twopass.gf_group; |
const FRAME_UPDATE_TYPE frame_type = gf_group->update_type[gf_group->index]; |
const int boost_index = MIN(15, (cpi->rc.gfu_boost / 100)); |
@@ -220,8 +220,6 @@ |
} |
} |
-static const int MAX_XSQ_Q10 = 245727; |
- |
static void model_rd_norm(int xsq_q10, int *r_q10, int *d_q10) { |
// NOTE: The tables below must be of the same size. |
@@ -311,10 +309,10 @@ |
*dist = 0; |
} else { |
int d_q10, r_q10; |
+ static const uint32_t MAX_XSQ_Q10 = 245727; |
const uint64_t xsq_q10_64 = |
((((uint64_t)qstep * qstep * n) << 10) + (var >> 1)) / var; |
- const int xsq_q10 = xsq_q10_64 > MAX_XSQ_Q10 ? |
- MAX_XSQ_Q10 : (int)xsq_q10_64; |
+ const int xsq_q10 = (int)MIN(xsq_q10_64, MAX_XSQ_Q10); |
model_rd_norm(xsq_q10, &r_q10, &d_q10); |
*rate = (n * r_q10 + 2) >> 2; |
*dist = (var * (int64_t)d_q10 + 512) >> 10; |
@@ -357,6 +355,7 @@ |
break; |
default: |
assert(0 && "Invalid transform size."); |
+ break; |
} |
} |