Unified · Split
| @@ -1327,8 +1327,7 @@ static int set_segment_rdmult(VP9_COMP *const cpi, · 1326 unmodified lines | |||
| 1327 | VP9_COMMON *const cm = &cpi->common; | 1327 | VP9_COMMON *const cm = &cpi->common; |
| 1328 | vp9_init_plane_quantizers(cpi, x); | 1328 | vp9_init_plane_quantizers(cpi, x); |
| 1329 | vpx_clear_system_state(); | 1329 | vpx_clear_system_state(); |
| 1330 | segment_qindex = vp9_get_qindex(&cm->seg, segment_id, | 1330 | segment_qindex = vp9_get_qindex(&cm->seg, segment_id, cm->base_qindex); |
| 1331 | cm->base_qindex); | ||
| 1332 | return vp9_compute_rd_mult(cpi, segment_qindex + cm->y_dc_delta_q); | 1331 | return vp9_compute_rd_mult(cpi, segment_qindex + cm->y_dc_delta_q); |
| 1333 | } | 1332 | } |
| 1334 | 1333 | ||
| @@ -2727,6 +2726,7 @@ static void rd_pick_partition(VP9_COMP *cpi, ThreadData *td, · 1392 unmodified lines | |||
| 2727 | break; | 2726 | break; |
| 2728 | } | 2727 | } |
| 2729 | } | 2728 | } |
| 2729 | |||
| 2730 | if (skip) { | 2730 | if (skip) { |
| 2731 | if (src_diff_var == UINT_MAX) { | 2731 | if (src_diff_var == UINT_MAX) { |
| 2732 | set_offsets(cpi, tile_info, x, mi_row, mi_col, bsize); | 2732 | set_offsets(cpi, tile_info, x, mi_row, mi_col, bsize); |
| @@ -2761,12 +2761,13 @@ static void rd_pick_partition(VP9_COMP *cpi, ThreadData *td, · 28 unmodified lines | |||
| 2761 | ctx->mic.interp_filter; | 2761 | ctx->mic.interp_filter; |
| 2762 | rd_pick_sb_modes(cpi, tile_data, x, mi_row, mi_col, &sum_rdc, subsize, | 2762 | rd_pick_sb_modes(cpi, tile_data, x, mi_row, mi_col, &sum_rdc, subsize, |
| 2763 | pc_tree->leaf_split[0], best_rdc.rdcost); | 2763 | pc_tree->leaf_split[0], best_rdc.rdcost); |
| 2764 | |||
| 2764 | if (sum_rdc.rate == INT_MAX) | 2765 | if (sum_rdc.rate == INT_MAX) |
| 2765 | sum_rdc.rdcost = INT64_MAX; | 2766 | sum_rdc.rdcost = INT64_MAX; |
| 2766 | } else { | 2767 | } else { |
| 2767 | for (i = 0; i < 4 && sum_rdc.rdcost < best_rdc.rdcost; ++i) { | 2768 | for (i = 0; i < 4 && sum_rdc.rdcost < best_rdc.rdcost; ++i) { |
| 2768 | const int x_idx = (i & 1) * mi_step; | 2769 | const int x_idx = (i & 1) * mi_step; |
| 2769 | const int y_idx = (i >> 1) * mi_step; | 2770 | const int y_idx = (i >> 1) * mi_step; |
| 2770 | 2771 | ||
| 2771 | if (mi_row + y_idx >= cm->mi_rows || mi_col + x_idx >= cm->mi_cols) | 2772 | if (mi_row + y_idx >= cm->mi_rows || mi_col + x_idx >= cm->mi_cols) |
| 2772 | continue; | 2773 | continue; |
| @@ -2870,6 +2871,7 @@ static void rd_pick_partition(VP9_COMP *cpi, ThreadData *td, · 97 unmodified lines | |||
| 2870 | } | 2871 | } |
| 2871 | restore_context(x, mi_row, mi_col, a, l, sa, sl, bsize); | 2872 | restore_context(x, mi_row, mi_col, a, l, sa, sl, bsize); |
| 2872 | } | 2873 | } |
| 2874 | |||
| 2873 | // PARTITION_VERT | 2875 | // PARTITION_VERT |
| 2874 | if (partition_vert_allowed && | 2876 | if (partition_vert_allowed && |
| 2875 | (do_rect || vp9_active_v_edge(cpi, mi_col, mi_step))) { | 2877 | (do_rect || vp9_active_v_edge(cpi, mi_col, mi_step))) { |
| @@ -2952,6 +2954,8 @@ static void encode_rd_sb_row(VP9_COMP *cpi, · 76 unmodified lines | |||
| 2952 | MACROBLOCK *const x = &td->mb; | 2954 | MACROBLOCK *const x = &td->mb; |
| 2953 | MACROBLOCKD *const xd = &x->e_mbd; | 2955 | MACROBLOCKD *const xd = &x->e_mbd; |
| 2954 | SPEED_FEATURES *const sf = &cpi->sf; | 2956 | SPEED_FEATURES *const sf = &cpi->sf; |
| 2957 | const int mi_col_start = tile_info->mi_col_start; | ||
| 2958 | const int mi_col_end = tile_info->mi_col_end; | ||
| 2955 | int mi_col; | 2959 | int mi_col; |
| 2956 | 2960 | ||
| 2957 | // Initialize the left context for the new SB row | 2961 | // Initialize the left context for the new SB row |
| @@ -2959,8 +2963,7 @@ static void encode_rd_sb_row(VP9_COMP *cpi, · 1 unmodified line | |||
| 2959 | memset(xd->left_seg_context, 0, sizeof(xd->left_seg_context)); | 2963 | memset(xd->left_seg_context, 0, sizeof(xd->left_seg_context)); |
| 2960 | 2964 | ||
| 2961 | // Code each SB in the row | 2965 | // Code each SB in the row |
| 2962 | for (mi_col = tile_info->mi_col_start; mi_col < tile_info->mi_col_end; | 2966 | for (mi_col = mi_col_start; mi_col < mi_col_end; mi_col += MI_BLOCK_SIZE) { |
| 2963 | mi_col += MI_BLOCK_SIZE) { | ||
| 2964 | const struct segmentation *const seg = &cm->seg; | 2967 | const struct segmentation *const seg = &cm->seg; |
| 2965 | int dummy_rate; | 2968 | int dummy_rate; |
| 2966 | int64_t dummy_dist; | 2969 | int64_t dummy_dist; |
| @@ -3760,6 +3763,8 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, · 793 unmodified lines | |||
| 3760 | TileInfo *const tile_info = &tile_data->tile_info; | 3763 | TileInfo *const tile_info = &tile_data->tile_info; |
| 3761 | MACROBLOCK *const x = &td->mb; | 3764 | MACROBLOCK *const x = &td->mb; |
| 3762 | MACROBLOCKD *const xd = &x->e_mbd; | 3765 | MACROBLOCKD *const xd = &x->e_mbd; |
| 3766 | const int mi_col_start = tile_info->mi_col_start; | ||
| 3767 | const int mi_col_end = tile_info->mi_col_end; | ||
| 3763 | int mi_col; | 3768 | int mi_col; |
| 3764 | 3769 | ||
| 3765 | // Initialize the left context for the new SB row | 3770 | // Initialize the left context for the new SB row |
| @@ -3767,8 +3772,7 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, · 1 unmodified line | |||
| 3767 | memset(xd->left_seg_context, 0, sizeof(xd->left_seg_context)); | 3772 | memset(xd->left_seg_context, 0, sizeof(xd->left_seg_context)); |
| 3768 | 3773 | ||
| 3769 | // Code each SB in the row | 3774 | // Code each SB in the row |
| 3770 | for (mi_col = tile_info->mi_col_start; mi_col < tile_info->mi_col_end; | 3775 | for (mi_col = mi_col_start; mi_col < mi_col_end; mi_col += MI_BLOCK_SIZE) { |
| 3771 | mi_col += MI_BLOCK_SIZE) { | ||
| 3772 | const struct segmentation *const seg = &cm->seg; | 3776 | const struct segmentation *const seg = &cm->seg; |
| 3773 | RD_COST dummy_rdc; | 3777 | RD_COST dummy_rdc; |
| 3774 | const int idx_str = cm->mi_stride * mi_row + mi_col; | 3778 | const int idx_str = cm->mi_stride * mi_row + mi_col; |
| @@ -3979,8 +3983,7 @@ static int get_skip_encode_frame(const VP9_COMMON *cm, ThreadData *const td) { · 204 unmodified lines | |||
| 3979 | } | 3983 | } |
| 3980 | 3984 | ||
| 3981 | return (intra_count << 2) < inter_count && | 3985 | return (intra_count << 2) < inter_count && |
| 3982 | cm->frame_type != KEY_FRAME && | 3986 | cm->frame_type != KEY_FRAME && cm->show_frame; |
| 3983 | cm->show_frame; | ||
| 3984 | } | 3987 | } |
| 3985 | 3988 | ||
| 3986 | void vp9_init_tile_data(VP9_COMP *cpi) { | 3989 | void vp9_init_tile_data(VP9_COMP *cpi) { |
| @@ -4033,14 +4036,15 @@ void vp9_encode_tile(VP9_COMP *cpi, ThreadData *td, · 46 unmodified lines | |||
| 4033 | &cpi->tile_data[tile_row * tile_cols + tile_col]; | 4036 | &cpi->tile_data[tile_row * tile_cols + tile_col]; |
| 4034 | const TileInfo * const tile_info = &this_tile->tile_info; | 4037 | const TileInfo * const tile_info = &this_tile->tile_info; |
| 4035 | TOKENEXTRA *tok = cpi->tile_tok[tile_row][tile_col]; | 4038 | TOKENEXTRA *tok = cpi->tile_tok[tile_row][tile_col]; |
| 4039 | const int mi_row_start = tile_info->mi_row_start; | ||
| 4040 | const int mi_row_end = tile_info->mi_row_end; | ||
| 4036 | int mi_row; | 4041 | int mi_row; |
| 4037 | 4042 | ||
| 4038 | // Set up pointers to per thread motion search counters. | 4043 | // Set up pointers to per thread motion search counters. |
| 4039 | td->mb.m_search_count_ptr = &td->rd_counts.m_search_count; | 4044 | td->mb.m_search_count_ptr = &td->rd_counts.m_search_count; |
| 4040 | td->mb.ex_search_count_ptr = &td->rd_counts.ex_search_count; | 4045 | td->mb.ex_search_count_ptr = &td->rd_counts.ex_search_count; |
| 4041 | 4046 | ||
| 4042 | for (mi_row = tile_info->mi_row_start; mi_row < tile_info->mi_row_end; | 4047 | for (mi_row = mi_row_start; mi_row < mi_row_end; mi_row += MI_BLOCK_SIZE) { |
| 4043 | mi_row += MI_BLOCK_SIZE) { | ||
| 4044 | if (cpi->sf.use_nonrd_pick_mode) | 4048 | if (cpi->sf.use_nonrd_pick_mode) |
| 4045 | encode_nonrd_sb_row(cpi, td, this_tile, mi_row, &tok); | 4049 | encode_nonrd_sb_row(cpi, td, this_tile, mi_row, &tok); |
| 4046 | else | 4050 | else |
| @@ -4167,10 +4171,10 @@ static void encode_frame_internal(VP9_COMP *cpi) { · 120 unmodified lines | |||
| 4167 | vpx_usec_timer_start(&emr_timer); | 4171 | vpx_usec_timer_start(&emr_timer); |
| 4168 | 4172 | ||
| 4169 | #if CONFIG_FP_MB_STATS | 4173 | #if CONFIG_FP_MB_STATS |
| 4170 | if (cpi->use_fp_mb_stats) { | 4174 | if (cpi->use_fp_mb_stats) { |
| 4171 | input_fpmb_stats(&cpi->twopass.firstpass_mb_stats, cm, | 4175 | input_fpmb_stats(&cpi->twopass.firstpass_mb_stats, cm, |
| 4172 | &cpi->twopass.this_frame_mb_stats); | 4176 | &cpi->twopass.this_frame_mb_stats); |
| 4173 | } | 4177 | } |
| 4174 | #endif | 4178 | #endif |
| 4175 | 4179 | ||
| 4176 | // If allowed, encoding tiles in parallel with one thread handling one tile. | 4180 | // If allowed, encoding tiles in parallel with one thread handling one tile. |
| @@ -4488,8 +4492,8 @@ static void encode_superblock(VP9_COMP *cpi, ThreadData *td, · 311 unmodified lines | |||
| 4488 | } else { | 4492 | } else { |
| 4489 | mi->tx_size = (bsize >= BLOCK_8X8) ? mi->tx_size : TX_4X4; | 4493 | mi->tx_size = (bsize >= BLOCK_8X8) ? mi->tx_size : TX_4X4; |
| 4490 | } | 4494 | } |
| 4491 | |||
| 4492 | } | 4495 | } |
| 4496 | |||
| 4493 | ++td->counts->tx.tx_totals[mi->tx_size]; | 4497 | ++td->counts->tx.tx_totals[mi->tx_size]; |
| 4494 | ++td->counts->tx.tx_totals[get_uv_tx_size(mi, &xd->plane[1])]; | 4498 | ++td->counts->tx.tx_totals[get_uv_tx_size(mi, &xd->plane[1])]; |
| 4495 | if (cm->seg.enabled && cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) | 4499 | if (cm->seg.enabled && cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) |
| @@ -135,11 +135,16 @@ static INLINE void Scale2Ratio(VPX_SCALING mode, int *hr, int *hs) { · 134 unmodified lines | |||
| 135 | // so memset cannot be used, instead only inactive blocks should be reset. | 135 | // so memset cannot be used, instead only inactive blocks should be reset. |
| 136 | static void suppress_active_map(VP9_COMP *cpi) { | 136 | static void suppress_active_map(VP9_COMP *cpi) { |
| 137 | unsigned char *const seg_map = cpi->segmentation_map; | 137 | unsigned char *const seg_map = cpi->segmentation_map; |
| 138 | int i; | 138 | |
| 139 | if (cpi->active_map.enabled || cpi->active_map.update) | 139 | if (cpi->active_map.enabled || cpi->active_map.update) { |
| 140 | for (i = 0; i < cpi->common.mi_rows * cpi->common.mi_cols; ++i) | 140 | const int rows = cpi->common.mi_rows; |
| 141 | const int cols = cpi->common.mi_cols; | ||
| 142 | int i; | ||
| 143 | |||
| 144 | for (i = 0; i < rows * cols; ++i) | ||
| 141 | if (seg_map[i] == AM_SEGMENT_ID_INACTIVE) | 145 | if (seg_map[i] == AM_SEGMENT_ID_INACTIVE) |
| 142 | seg_map[i] = AM_SEGMENT_ID_ACTIVE; | 146 | seg_map[i] = AM_SEGMENT_ID_ACTIVE; |
| 147 | } | ||
| 143 | } | 148 | } |
| 144 | 149 | ||
| 145 | static void apply_active_map(VP9_COMP *cpi) { | 150 | static void apply_active_map(VP9_COMP *cpi) { |
| @@ -455,7 +455,7 @@ typedef struct VP9_COMP { · 454 unmodified lines | |||
| 455 | uint8_t *segmentation_map; | 455 | uint8_t *segmentation_map; |
| 456 | 456 | ||
| 457 | // segment threashold for encode breakout | 457 | // segment threashold for encode breakout |
| 458 | int segment_encode_breakout[MAX_SEGMENTS]; | 458 | int segment_encode_breakout[MAX_SEGMENTS]; |
| 459 | 459 | ||
| 460 | CYCLIC_REFRESH *cyclic_refresh; | 460 | CYCLIC_REFRESH *cyclic_refresh; |
| 461 | ActiveMap active_map; | 461 | ActiveMap active_map; |
| @@ -477,11 +477,10 @@ typedef struct VP9_COMP { · 15 unmodified lines | |||
| 477 | 477 | ||
| 478 | YV12_BUFFER_CONFIG alt_ref_buffer; | 478 | YV12_BUFFER_CONFIG alt_ref_buffer; |
| 479 | 479 | ||
| 480 | |||
| 481 | #if CONFIG_INTERNAL_STATS | 480 | #if CONFIG_INTERNAL_STATS |
| 482 | unsigned int mode_chosen_counts[MAX_MODES]; | 481 | unsigned int mode_chosen_counts[MAX_MODES]; |
| 483 | 482 | ||
| 484 | int count; | 483 | int count; |
| 485 | uint64_t total_sq_error; | 484 | uint64_t total_sq_error; |
| 486 | uint64_t total_samples; | 485 | uint64_t total_samples; |
| 487 | ImageStat psnr; | 486 | ImageStat psnr; |
| @@ -153,85 +153,85 @@ static void output_fpmb_stats(uint8_t *this_frame_mb_stats, VP9_COMMON *cm, · 152 unmodified lines | |||
| 153 | #endif | 153 | #endif |
| 154 | 154 | ||
| 155 | static void zero_stats(FIRSTPASS_STATS *section) { | 155 | static void zero_stats(FIRSTPASS_STATS *section) { |
| 156 | section->frame = 0.0; | 156 | section->frame = 0.0; |
| 157 | section->weight = 0.0; | 157 | section->weight = 0.0; |
| 158 | section->intra_error = 0.0; | 158 | section->intra_error = 0.0; |
| 159 | section->coded_error = 0.0; | 159 | section->coded_error = 0.0; |
| 160 | section->sr_coded_error = 0.0; | 160 | section->sr_coded_error = 0.0; |
| 161 | section->pcnt_inter = 0.0; | 161 | section->pcnt_inter = 0.0; |
| 162 | section->pcnt_motion = 0.0; | 162 | section->pcnt_motion = 0.0; |
| 163 | section->pcnt_second_ref = 0.0; | 163 | section->pcnt_second_ref = 0.0; |
| 164 | section->pcnt_neutral = 0.0; | 164 | section->pcnt_neutral = 0.0; |
| 165 | section->intra_skip_pct = 0.0; | 165 | section->intra_skip_pct = 0.0; |
| 166 | section->intra_smooth_pct = 0.0; | 166 | section->intra_smooth_pct = 0.0; |
| 167 | section->inactive_zone_rows = 0.0; | 167 | section->inactive_zone_rows = 0.0; |
| 168 | section->inactive_zone_cols = 0.0; | 168 | section->inactive_zone_cols = 0.0; |
| 169 | section->MVr = 0.0; | 169 | section->MVr = 0.0; |
| 170 | section->mvr_abs = 0.0; | 170 | section->mvr_abs = 0.0; |
| 171 | section->MVc = 0.0; | 171 | section->MVc = 0.0; |
| 172 | section->mvc_abs = 0.0; | 172 | section->mvc_abs = 0.0; |
| 173 | section->MVrv = 0.0; | 173 | section->MVrv = 0.0; |
| 174 | section->MVcv = 0.0; | 174 | section->MVcv = 0.0; |
| 175 | section->mv_in_out_count = 0.0; | 175 | section->mv_in_out_count = 0.0; |
| 176 | section->new_mv_count = 0.0; | 176 | section->new_mv_count = 0.0; |
| 177 | section->count = 0.0; | 177 | section->count = 0.0; |
| 178 | section->duration = 1.0; | 178 | section->duration = 1.0; |
| 179 | section->spatial_layer_id = 0; | 179 | section->spatial_layer_id = 0; |
| 180 | } | 180 | } |
| 181 | 181 | ||
| 182 | static void accumulate_stats(FIRSTPASS_STATS *section, | 182 | static void accumulate_stats(FIRSTPASS_STATS *section, |
| 183 | const FIRSTPASS_STATS *frame) { | 183 | const FIRSTPASS_STATS *frame) { |
| 184 | section->frame += frame->frame; | 184 | section->frame += frame->frame; |
| 185 | section->weight += frame->weight; | 185 | section->weight += frame->weight; |
| 186 | section->spatial_layer_id = frame->spatial_layer_id; | 186 | section->spatial_layer_id = frame->spatial_layer_id; |
| 187 | section->intra_error += frame->intra_error; | 187 | section->intra_error += frame->intra_error; |
| 188 | section->coded_error += frame->coded_error; | 188 | section->coded_error += frame->coded_error; |
| 189 | section->sr_coded_error += frame->sr_coded_error; | 189 | section->sr_coded_error += frame->sr_coded_error; |
| 190 | section->pcnt_inter += frame->pcnt_inter; | 190 | section->pcnt_inter += frame->pcnt_inter; |
| 191 | section->pcnt_motion += frame->pcnt_motion; | 191 | section->pcnt_motion += frame->pcnt_motion; |
| 192 | section->pcnt_second_ref += frame->pcnt_second_ref; | 192 | section->pcnt_second_ref += frame->pcnt_second_ref; |
| 193 | section->pcnt_neutral += frame->pcnt_neutral; | 193 | section->pcnt_neutral += frame->pcnt_neutral; |
| 194 | section->intra_skip_pct += frame->intra_skip_pct; | 194 | section->intra_skip_pct += frame->intra_skip_pct; |
| 195 | section->intra_smooth_pct += frame->intra_smooth_pct; | 195 | section->intra_smooth_pct += frame->intra_smooth_pct; |
| 196 | section->inactive_zone_rows += frame->inactive_zone_rows; | 196 | section->inactive_zone_rows += frame->inactive_zone_rows; |
| 197 | section->inactive_zone_cols += frame->inactive_zone_cols; | 197 | section->inactive_zone_cols += frame->inactive_zone_cols; |
| 198 | section->MVr += frame->MVr; | 198 | section->MVr += frame->MVr; |
| 199 | section->mvr_abs += frame->mvr_abs; | 199 | section->mvr_abs += frame->mvr_abs; |
| 200 | section->MVc += frame->MVc; | 200 | section->MVc += frame->MVc; |
| 201 | section->mvc_abs += frame->mvc_abs; | 201 | section->mvc_abs += frame->mvc_abs; |
| 202 | section->MVrv += frame->MVrv; | 202 | section->MVrv += frame->MVrv; |
| 203 | section->MVcv += frame->MVcv; | 203 | section->MVcv += frame->MVcv; |
| 204 | section->mv_in_out_count += frame->mv_in_out_count; | 204 | section->mv_in_out_count += frame->mv_in_out_count; |
| 205 | section->new_mv_count += frame->new_mv_count; | 205 | section->new_mv_count += frame->new_mv_count; |
| 206 | section->count += frame->count; | 206 | section->count += frame->count; |
| 207 | section->duration += frame->duration; | 207 | section->duration += frame->duration; |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | static void subtract_stats(FIRSTPASS_STATS *section, | 210 | static void subtract_stats(FIRSTPASS_STATS *section, |
| 211 | const FIRSTPASS_STATS *frame) { | 211 | const FIRSTPASS_STATS *frame) { |
| 212 | section->frame -= frame->frame; | 212 | section->frame -= frame->frame; |
| 213 | section->weight -= frame->weight; | 213 | section->weight -= frame->weight; |
| 214 | section->intra_error -= frame->intra_error; | 214 | section->intra_error -= frame->intra_error; |
| 215 | section->coded_error -= frame->coded_error; | 215 | section->coded_error -= frame->coded_error; |
| 216 | section->sr_coded_error -= frame->sr_coded_error; | 216 | section->sr_coded_error -= frame->sr_coded_error; |
| 217 | section->pcnt_inter -= frame->pcnt_inter; | 217 | section->pcnt_inter -= frame->pcnt_inter; |
| 218 | section->pcnt_motion -= frame->pcnt_motion; | 218 | section->pcnt_motion -= frame->pcnt_motion; |
| 219 | section->pcnt_second_ref -= frame->pcnt_second_ref; | 219 | section->pcnt_second_ref -= frame->pcnt_second_ref; |
| 220 | section->pcnt_neutral -= frame->pcnt_neutral; | 220 | section->pcnt_neutral -= frame->pcnt_neutral; |
| 221 | section->intra_skip_pct -= frame->intra_skip_pct; | 221 | section->intra_skip_pct -= frame->intra_skip_pct; |
| 222 | section->intra_smooth_pct -= frame->intra_smooth_pct; | 222 | section->intra_smooth_pct -= frame->intra_smooth_pct; |
| 223 | section->inactive_zone_rows -= frame->inactive_zone_rows; | 223 | section->inactive_zone_rows -= frame->inactive_zone_rows; |
| 224 | section->inactive_zone_cols -= frame->inactive_zone_cols; | 224 | section->inactive_zone_cols -= frame->inactive_zone_cols; |
| 225 | section->MVr -= frame->MVr; | 225 | section->MVr -= frame->MVr; |
| 226 | section->mvr_abs -= frame->mvr_abs; | 226 | section->mvr_abs -= frame->mvr_abs; |
| 227 | section->MVc -= frame->MVc; | 227 | section->MVc -= frame->MVc; |
| 228 | section->mvc_abs -= frame->mvc_abs; | 228 | section->mvc_abs -= frame->mvc_abs; |
| 229 | section->MVrv -= frame->MVrv; | 229 | section->MVrv -= frame->MVrv; |
| 230 | section->MVcv -= frame->MVcv; | 230 | section->MVcv -= frame->MVcv; |
| 231 | section->mv_in_out_count -= frame->mv_in_out_count; | 231 | section->mv_in_out_count -= frame->mv_in_out_count; |
| 232 | section->new_mv_count -= frame->new_mv_count; | 232 | section->new_mv_count -= frame->new_mv_count; |
| 233 | section->count -= frame->count; | 233 | section->count -= frame->count; |
| 234 | section->duration -= frame->duration; | 234 | section->duration -= frame->duration; |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | // Calculate an active area of the image that discounts formatting | 237 | // Calculate an active area of the image that discounts formatting |
| @@ -89,7 +89,7 @@ struct lookahead_ctx *vp9_lookahead_init(unsigned int width, · 88 unmodified lines | |||
| 89 | 89 | ||
| 90 | #define USE_PARTIAL_COPY 0 | 90 | #define USE_PARTIAL_COPY 0 |
| 91 | 91 | ||
| 92 | int vp9_lookahead_push(struct lookahead_ctx *ctx, YV12_BUFFER_CONFIG *src, | 92 | int vp9_lookahead_push(struct lookahead_ctx *ctx, YV12_BUFFER_CONFIG *src, |
| 93 | int64_t ts_start, int64_t ts_end, | 93 | int64_t ts_start, int64_t ts_end, |
| 94 | #if CONFIG_VP9_HIGHBITDEPTH | 94 | #if CONFIG_VP9_HIGHBITDEPTH |
| 95 | int use_highbitdepth, | 95 | int use_highbitdepth, |
| @@ -349,6 +349,7 @@ static void model_rd_norm(int xsq_q10, int *r_q10, int *d_q10) { · 348 unmodified lines | |||
| 349 | 38, 28, 21, 16, 12, 10, 8, 6, | 349 | 38, 28, 21, 16, 12, 10, 8, 6, |
| 350 | 5, 3, 2, 1, 1, 1, 0, 0, | 350 | 5, 3, 2, 1, 1, 1, 0, 0, |
| 351 | }; | 351 | }; |
| 352 | |||
| 352 | // Normalized distortion: | 353 | // Normalized distortion: |
| 353 | // This table models the normalized distortion for a Laplacian source | 354 | // This table models the normalized distortion for a Laplacian source |
| 354 | // with given variance when quantized with a uniform quantizer | 355 | // with given variance when quantized with a uniform quantizer |
| @@ -3400,9 +3400,10 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, · 3399 unmodified lines | |||
| 3400 | rate2 += skip_cost0; | 3400 | rate2 += skip_cost0; |
| 3401 | } else { | 3401 | } else { |
| 3402 | // FIXME(rbultje) make this work for splitmv also | 3402 | // FIXME(rbultje) make this work for splitmv also |
| 3403 | assert(total_sse >= 0); | ||
| 3404 | |||
| 3403 | rate2 += skip_cost1; | 3405 | rate2 += skip_cost1; |
| 3404 | distortion2 = total_sse; | 3406 | distortion2 = total_sse; |
| 3405 | assert(total_sse >= 0); | ||
| 3406 | rate2 -= (rate_y + rate_uv); | 3407 | rate2 -= (rate_y + rate_uv); |
| 3407 | this_skip2 = 1; | 3408 | this_skip2 = 1; |
| 3408 | } | 3409 | } |
| @@ -433,9 +433,8 @@ static void temporal_filter_iterate_c(VP9_COMP *cpi, · 432 unmodified lines | |||
| 433 | vp9_highbd_temporal_filter_apply_c(f->u_buffer + mb_uv_offset, | 433 | vp9_highbd_temporal_filter_apply_c(f->u_buffer + mb_uv_offset, |
| 434 | f->uv_stride, predictor + 256, | 434 | f->uv_stride, predictor + 256, |
| 435 | mb_uv_width, mb_uv_height, | 435 | mb_uv_width, mb_uv_height, |
| 436 | adj_strength, | 436 | adj_strength, filter_weight, |
| 437 | filter_weight, accumulator + 256, | 437 | accumulator + 256, count + 256); |
| 438 | count + 256); | ||
| 439 | vp9_highbd_temporal_filter_apply_c(f->v_buffer + mb_uv_offset, | 438 | vp9_highbd_temporal_filter_apply_c(f->v_buffer + mb_uv_offset, |
| 440 | f->uv_stride, predictor + 512, | 439 | f->uv_stride, predictor + 512, |
| 441 | mb_uv_width, mb_uv_height, | 440 | mb_uv_width, mb_uv_height, |