| Index: source/libvpx/vp9/encoder/vp9_rd.c
|
| ===================================================================
|
| --- source/libvpx/vp9/encoder/vp9_rd.c (revision 293588)
|
| +++ source/libvpx/vp9/encoder/vp9_rd.c (working copy)
|
| @@ -379,7 +379,7 @@
|
| *d_q10 = (dist_tab_q10[xq] * b_q10 + dist_tab_q10[xq + 1] * a_q10) >> 10;
|
| }
|
|
|
| -void vp9_model_rd_from_var_lapndz(unsigned int var, unsigned int n,
|
| +void vp9_model_rd_from_var_lapndz(unsigned int var, unsigned int n_log2,
|
| unsigned int qstep, int *rate,
|
| int64_t *dist) {
|
| // This function models the rate and distortion for a Laplacian
|
| @@ -395,10 +395,10 @@
|
| 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;
|
| + (((uint64_t)qstep * qstep << (n_log2 + 10)) + (var >> 1)) / var;
|
| 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;
|
| + *rate = ((r_q10 << n_log2) + 2) >> 2;
|
| *dist = (var * (int64_t)d_q10 + 512) >> 10;
|
| }
|
| }
|
| @@ -516,6 +516,20 @@
|
| }
|
| }
|
|
|
| +int vp9_raster_block_offset(BLOCK_SIZE plane_bsize,
|
| + int raster_block, int stride) {
|
| + const int bw = b_width_log2_lookup[plane_bsize];
|
| + const int y = 4 * (raster_block >> bw);
|
| + const int x = 4 * (raster_block & ((1 << bw) - 1));
|
| + return y * stride + x;
|
| +}
|
| +
|
| +int16_t* vp9_raster_block_offset_int16(BLOCK_SIZE plane_bsize,
|
| + int raster_block, int16_t *base) {
|
| + const int stride = 4 * num_4x4_blocks_wide_lookup[plane_bsize];
|
| + return base + vp9_raster_block_offset(plane_bsize, raster_block, stride);
|
| +}
|
| +
|
| const YV12_BUFFER_CONFIG *vp9_get_scaled_ref_frame(const VP9_COMP *cpi,
|
| int ref_frame) {
|
| const VP9_COMMON *const cm = &cpi->common;
|
|
|