Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: source/libvpx/vp9/encoder/vp9_encoder.c

Issue 1124333011: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: only update to last nights LKGR Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_encoder.h ('k') | source/libvpx/vp9/encoder/vp9_ethread.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include <math.h> 11 #include <math.h>
12 #include <stdio.h> 12 #include <stdio.h>
13 #include <limits.h> 13 #include <limits.h>
14 14
15 #include "./vpx_config.h" 15 #include "./vpx_config.h"
16 #include "./vp9_rtcd.h"
17 #include "./vpx_dsp_rtcd.h"
16 #include "./vpx_scale_rtcd.h" 18 #include "./vpx_scale_rtcd.h"
17 #include "vpx/internal/vpx_psnr.h" 19 #include "vpx/internal/vpx_psnr.h"
18 #include "vpx_ports/vpx_timer.h" 20 #include "vpx_ports/vpx_timer.h"
19 21
20 #include "vp9/common/vp9_alloccommon.h" 22 #include "vp9/common/vp9_alloccommon.h"
21 #include "vp9/common/vp9_filter.h" 23 #include "vp9/common/vp9_filter.h"
22 #include "vp9/common/vp9_idct.h" 24 #include "vp9/common/vp9_idct.h"
23 #if CONFIG_VP9_POSTPROC 25 #if CONFIG_VP9_POSTPROC
24 #include "vp9/common/vp9_postproc.h" 26 #include "vp9/common/vp9_postproc.h"
25 #endif 27 #endif
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 } 121 }
120 122
121 void vp9_apply_active_map(VP9_COMP *cpi) { 123 void vp9_apply_active_map(VP9_COMP *cpi) {
122 struct segmentation *const seg = &cpi->common.seg; 124 struct segmentation *const seg = &cpi->common.seg;
123 unsigned char *const seg_map = cpi->segmentation_map; 125 unsigned char *const seg_map = cpi->segmentation_map;
124 const unsigned char *const active_map = cpi->active_map.map; 126 const unsigned char *const active_map = cpi->active_map.map;
125 int i; 127 int i;
126 128
127 assert(AM_SEGMENT_ID_ACTIVE == CR_SEGMENT_ID_BASE); 129 assert(AM_SEGMENT_ID_ACTIVE == CR_SEGMENT_ID_BASE);
128 130
131 if (frame_is_intra_only(&cpi->common)) {
132 cpi->active_map.enabled = 0;
133 cpi->active_map.update = 1;
134 }
135
129 if (cpi->active_map.update) { 136 if (cpi->active_map.update) {
130 if (cpi->active_map.enabled) { 137 if (cpi->active_map.enabled) {
131 for (i = 0; i < cpi->common.mi_rows * cpi->common.mi_cols; ++i) 138 for (i = 0; i < cpi->common.mi_rows * cpi->common.mi_cols; ++i)
132 if (seg_map[i] == AM_SEGMENT_ID_ACTIVE) seg_map[i] = active_map[i]; 139 if (seg_map[i] == AM_SEGMENT_ID_ACTIVE) seg_map[i] = active_map[i];
133 vp9_enable_segmentation(seg); 140 vp9_enable_segmentation(seg);
134 vp9_enable_segfeature(seg, AM_SEGMENT_ID_INACTIVE, SEG_LVL_SKIP); 141 vp9_enable_segfeature(seg, AM_SEGMENT_ID_INACTIVE, SEG_LVL_SKIP);
142 vp9_enable_segfeature(seg, AM_SEGMENT_ID_INACTIVE, SEG_LVL_ALT_LF);
143 // Setting the data to -MAX_LOOP_FILTER will result in the computed loop
144 // filter level being zero regardless of the value of seg->abs_delta.
145 vp9_set_segdata(seg, AM_SEGMENT_ID_INACTIVE,
146 SEG_LVL_ALT_LF, -MAX_LOOP_FILTER);
135 } else { 147 } else {
136 vp9_disable_segfeature(seg, AM_SEGMENT_ID_INACTIVE, SEG_LVL_SKIP); 148 vp9_disable_segfeature(seg, AM_SEGMENT_ID_INACTIVE, SEG_LVL_SKIP);
149 vp9_disable_segfeature(seg, AM_SEGMENT_ID_INACTIVE, SEG_LVL_ALT_LF);
137 if (seg->enabled) { 150 if (seg->enabled) {
138 seg->update_data = 1; 151 seg->update_data = 1;
139 seg->update_map = 1; 152 seg->update_map = 1;
140 } 153 }
141 } 154 }
142 cpi->active_map.update = 0; 155 cpi->active_map.update = 0;
143 } 156 }
144 } 157 }
145 158
146 int vp9_set_active_map(VP9_COMP* cpi, 159 int vp9_set_active_map(VP9_COMP* cpi,
(...skipping 18 matching lines...) Expand all
165 cpi->active_map.enabled = 1; 178 cpi->active_map.enabled = 1;
166 } else { 179 } else {
167 cpi->active_map.enabled = 0; 180 cpi->active_map.enabled = 0;
168 } 181 }
169 return 0; 182 return 0;
170 } else { 183 } else {
171 return -1; 184 return -1;
172 } 185 }
173 } 186 }
174 187
188 int vp9_get_active_map(VP9_COMP* cpi,
189 unsigned char* new_map_16x16,
190 int rows,
191 int cols) {
192 if (rows == cpi->common.mb_rows && cols == cpi->common.mb_cols &&
193 new_map_16x16) {
194 unsigned char* const seg_map_8x8 = cpi->segmentation_map;
195 const int mi_rows = cpi->common.mi_rows;
196 const int mi_cols = cpi->common.mi_cols;
197 memset(new_map_16x16, !cpi->active_map.enabled, rows * cols);
198 if (cpi->active_map.enabled) {
199 int r, c;
200 for (r = 0; r < mi_rows; ++r) {
201 for (c = 0; c < mi_cols; ++c) {
202 // Cyclic refresh segments are considered active despite not having
203 // AM_SEGMENT_ID_ACTIVE
204 new_map_16x16[(r >> 1) * cols + (c >> 1)] |=
205 seg_map_8x8[r * mi_cols + c] != AM_SEGMENT_ID_INACTIVE;
206 }
207 }
208 }
209 return 0;
210 } else {
211 return -1;
212 }
213 }
214
175 void vp9_set_high_precision_mv(VP9_COMP *cpi, int allow_high_precision_mv) { 215 void vp9_set_high_precision_mv(VP9_COMP *cpi, int allow_high_precision_mv) {
176 MACROBLOCK *const mb = &cpi->td.mb; 216 MACROBLOCK *const mb = &cpi->td.mb;
177 cpi->common.allow_high_precision_mv = allow_high_precision_mv; 217 cpi->common.allow_high_precision_mv = allow_high_precision_mv;
178 if (cpi->common.allow_high_precision_mv) { 218 if (cpi->common.allow_high_precision_mv) {
179 mb->mvcost = mb->nmvcost_hp; 219 mb->mvcost = mb->nmvcost_hp;
180 mb->mvsadcost = mb->nmvsadcost_hp; 220 mb->mvsadcost = mb->nmvsadcost_hp;
181 } else { 221 } else {
182 mb->mvcost = mb->nmvcost; 222 mb->mvcost = mb->nmvcost;
183 mb->mvsadcost = mb->nmvsadcost; 223 mb->mvsadcost = mb->nmvsadcost;
184 } 224 }
(...skipping 20 matching lines...) Expand all
205 vp9_zero(cpi->interp_filter_selected); 245 vp9_zero(cpi->interp_filter_selected);
206 } else { 246 } else {
207 *cm->fc = cm->frame_contexts[cm->frame_context_idx]; 247 *cm->fc = cm->frame_contexts[cm->frame_context_idx];
208 vp9_zero(cpi->interp_filter_selected[0]); 248 vp9_zero(cpi->interp_filter_selected[0]);
209 } 249 }
210 } 250 }
211 251
212 static void vp9_enc_setup_mi(VP9_COMMON *cm) { 252 static void vp9_enc_setup_mi(VP9_COMMON *cm) {
213 int i; 253 int i;
214 cm->mi = cm->mip + cm->mi_stride + 1; 254 cm->mi = cm->mip + cm->mi_stride + 1;
215 vpx_memset(cm->mip, 0, cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mip)); 255 memset(cm->mip, 0, cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mip));
216 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1; 256 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1;
217 // Clear top border row 257 // Clear top border row
218 vpx_memset(cm->prev_mip, 0, sizeof(*cm->prev_mip) * cm->mi_stride); 258 memset(cm->prev_mip, 0, sizeof(*cm->prev_mip) * cm->mi_stride);
219 // Clear left border column 259 // Clear left border column
220 for (i = 1; i < cm->mi_rows + 1; ++i) 260 for (i = 1; i < cm->mi_rows + 1; ++i)
221 vpx_memset(&cm->prev_mip[i * cm->mi_stride], 0, sizeof(*cm->prev_mip)); 261 memset(&cm->prev_mip[i * cm->mi_stride], 0, sizeof(*cm->prev_mip));
262
263 cm->mi_grid_visible = cm->mi_grid_base + cm->mi_stride + 1;
264 cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mi_stride + 1;
265
266 memset(cm->mi_grid_base, 0,
267 cm->mi_stride * (cm->mi_rows + 1) * sizeof(*cm->mi_grid_base));
222 } 268 }
223 269
224 static int vp9_enc_alloc_mi(VP9_COMMON *cm, int mi_size) { 270 static int vp9_enc_alloc_mi(VP9_COMMON *cm, int mi_size) {
225 cm->mip = vpx_calloc(mi_size, sizeof(*cm->mip)); 271 cm->mip = vpx_calloc(mi_size, sizeof(*cm->mip));
226 if (!cm->mip) 272 if (!cm->mip)
227 return 1; 273 return 1;
228 cm->prev_mip = vpx_calloc(mi_size, sizeof(*cm->prev_mip)); 274 cm->prev_mip = vpx_calloc(mi_size, sizeof(*cm->prev_mip));
229 if (!cm->prev_mip) 275 if (!cm->prev_mip)
230 return 1; 276 return 1;
231 cm->mi_alloc_size = mi_size; 277 cm->mi_alloc_size = mi_size;
278
279 cm->mi_grid_base = (MODE_INFO **)vpx_calloc(mi_size, sizeof(MODE_INFO*));
280 if (!cm->mi_grid_base)
281 return 1;
282 cm->prev_mi_grid_base = (MODE_INFO **)vpx_calloc(mi_size, sizeof(MODE_INFO*));
283 if (!cm->prev_mi_grid_base)
284 return 1;
285
232 return 0; 286 return 0;
233 } 287 }
234 288
235 static void vp9_enc_free_mi(VP9_COMMON *cm) { 289 static void vp9_enc_free_mi(VP9_COMMON *cm) {
236 vpx_free(cm->mip); 290 vpx_free(cm->mip);
237 cm->mip = NULL; 291 cm->mip = NULL;
238 vpx_free(cm->prev_mip); 292 vpx_free(cm->prev_mip);
239 cm->prev_mip = NULL; 293 cm->prev_mip = NULL;
294 vpx_free(cm->mi_grid_base);
295 cm->mi_grid_base = NULL;
296 vpx_free(cm->prev_mi_grid_base);
297 cm->prev_mi_grid_base = NULL;
240 } 298 }
241 299
242 static void vp9_swap_mi_and_prev_mi(VP9_COMMON *cm) { 300 static void vp9_swap_mi_and_prev_mi(VP9_COMMON *cm) {
243 // Current mip will be the prev_mip for the next frame. 301 // Current mip will be the prev_mip for the next frame.
302 MODE_INFO **temp_base = cm->prev_mi_grid_base;
244 MODE_INFO *temp = cm->prev_mip; 303 MODE_INFO *temp = cm->prev_mip;
245 cm->prev_mip = cm->mip; 304 cm->prev_mip = cm->mip;
246 cm->mip = temp; 305 cm->mip = temp;
247 306
248 // Update the upper left visible macroblock ptrs. 307 // Update the upper left visible macroblock ptrs.
249 cm->mi = cm->mip + cm->mi_stride + 1; 308 cm->mi = cm->mip + cm->mi_stride + 1;
250 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1; 309 cm->prev_mi = cm->prev_mip + cm->mi_stride + 1;
310
311 cm->prev_mi_grid_base = cm->mi_grid_base;
312 cm->mi_grid_base = temp_base;
313 cm->mi_grid_visible = cm->mi_grid_base + cm->mi_stride + 1;
314 cm->prev_mi_grid_visible = cm->prev_mi_grid_base + cm->mi_stride + 1;
251 } 315 }
252 316
253 void vp9_initialize_enc(void) { 317 void vp9_initialize_enc(void) {
254 static volatile int init_done = 0; 318 static volatile int init_done = 0;
255 319
256 if (!init_done) { 320 if (!init_done) {
257 vp9_rtcd(); 321 vp9_rtcd();
322 vpx_dsp_rtcd();
323 vpx_scale_rtcd();
258 vp9_init_intra_predictors(); 324 vp9_init_intra_predictors();
259 vp9_init_me_luts(); 325 vp9_init_me_luts();
260 vp9_rc_init_minq_luts(); 326 vp9_rc_init_minq_luts();
261 vp9_entropy_mv_init(); 327 vp9_entropy_mv_init();
262 vp9_temporal_filter_init(); 328 vp9_temporal_filter_init();
263 init_done = 1; 329 init_done = 1;
264 } 330 }
265 } 331 }
266 332
267 static void dealloc_compressor_data(VP9_COMP *cpi) { 333 static void dealloc_compressor_data(VP9_COMP *cpi) {
(...skipping 28 matching lines...) Expand all
296 vpx_free(cpi->nmvsadcosts_hp[1]); 362 vpx_free(cpi->nmvsadcosts_hp[1]);
297 cpi->nmvsadcosts_hp[0] = NULL; 363 cpi->nmvsadcosts_hp[0] = NULL;
298 cpi->nmvsadcosts_hp[1] = NULL; 364 cpi->nmvsadcosts_hp[1] = NULL;
299 365
300 vp9_cyclic_refresh_free(cpi->cyclic_refresh); 366 vp9_cyclic_refresh_free(cpi->cyclic_refresh);
301 cpi->cyclic_refresh = NULL; 367 cpi->cyclic_refresh = NULL;
302 368
303 vpx_free(cpi->active_map.map); 369 vpx_free(cpi->active_map.map);
304 cpi->active_map.map = NULL; 370 cpi->active_map.map = NULL;
305 371
306 vp9_free_ref_frame_buffers(cm); 372 vp9_free_ref_frame_buffers(cm->buffer_pool);
373 #if CONFIG_VP9_POSTPROC
374 vp9_free_postproc_buffers(cm);
375 #endif
307 vp9_free_context_buffers(cm); 376 vp9_free_context_buffers(cm);
308 377
309 vp9_free_frame_buffer(&cpi->last_frame_uf); 378 vp9_free_frame_buffer(&cpi->last_frame_uf);
310 vp9_free_frame_buffer(&cpi->scaled_source); 379 vp9_free_frame_buffer(&cpi->scaled_source);
311 vp9_free_frame_buffer(&cpi->scaled_last_source); 380 vp9_free_frame_buffer(&cpi->scaled_last_source);
312 vp9_free_frame_buffer(&cpi->alt_ref_buffer); 381 vp9_free_frame_buffer(&cpi->alt_ref_buffer);
313 vp9_lookahead_destroy(cpi->lookahead); 382 vp9_lookahead_destroy(cpi->lookahead);
314 383
315 vpx_free(cpi->tile_tok[0][0]); 384 vpx_free(cpi->tile_tok[0][0]);
316 cpi->tile_tok[0][0] = 0; 385 cpi->tile_tok[0][0] = 0;
317 386
318 vp9_free_pc_tree(&cpi->td); 387 vp9_free_pc_tree(&cpi->td);
319 388
320 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) { 389 for (i = 0; i < cpi->svc.number_spatial_layers; ++i) {
321 LAYER_CONTEXT *const lc = &cpi->svc.layer_context[i]; 390 LAYER_CONTEXT *const lc = &cpi->svc.layer_context[i];
322 vpx_free(lc->rc_twopass_stats_in.buf); 391 vpx_free(lc->rc_twopass_stats_in.buf);
323 lc->rc_twopass_stats_in.buf = NULL; 392 lc->rc_twopass_stats_in.buf = NULL;
324 lc->rc_twopass_stats_in.sz = 0; 393 lc->rc_twopass_stats_in.sz = 0;
325 } 394 }
326 395
327 if (cpi->source_diff_var != NULL) { 396 if (cpi->source_diff_var != NULL) {
328 vpx_free(cpi->source_diff_var); 397 vpx_free(cpi->source_diff_var);
329 cpi->source_diff_var = NULL; 398 cpi->source_diff_var = NULL;
330 } 399 }
331 400
332 for (i = 0; i < MAX_LAG_BUFFERS; ++i) { 401 for (i = 0; i < MAX_LAG_BUFFERS; ++i) {
333 vp9_free_frame_buffer(&cpi->svc.scaled_frames[i]); 402 vp9_free_frame_buffer(&cpi->svc.scaled_frames[i]);
334 } 403 }
335 vpx_memset(&cpi->svc.scaled_frames[0], 0, 404 memset(&cpi->svc.scaled_frames[0], 0,
336 MAX_LAG_BUFFERS * sizeof(cpi->svc.scaled_frames[0])); 405 MAX_LAG_BUFFERS * sizeof(cpi->svc.scaled_frames[0]));
337 406
338 vp9_free_frame_buffer(&cpi->svc.empty_frame.img); 407 vp9_free_frame_buffer(&cpi->svc.empty_frame.img);
339 vpx_memset(&cpi->svc.empty_frame, 0, sizeof(cpi->svc.empty_frame)); 408 memset(&cpi->svc.empty_frame, 0, sizeof(cpi->svc.empty_frame));
340 } 409 }
341 410
342 static void save_coding_context(VP9_COMP *cpi) { 411 static void save_coding_context(VP9_COMP *cpi) {
343 CODING_CONTEXT *const cc = &cpi->coding_context; 412 CODING_CONTEXT *const cc = &cpi->coding_context;
344 VP9_COMMON *cm = &cpi->common; 413 VP9_COMMON *cm = &cpi->common;
345 414
346 // Stores a snapshot of key state variables which can subsequently be 415 // Stores a snapshot of key state variables which can subsequently be
347 // restored with a call to vp9_restore_coding_context. These functions are 416 // restored with a call to vp9_restore_coding_context. These functions are
348 // intended for use in a re-code loop in vp9_compress_frame where the 417 // intended for use in a re-code loop in vp9_compress_frame where the
349 // quantizer value is adjusted between loop iterations. 418 // quantizer value is adjusted between loop iterations.
350 vp9_copy(cc->nmvjointcost, cpi->td.mb.nmvjointcost); 419 vp9_copy(cc->nmvjointcost, cpi->td.mb.nmvjointcost);
351 420
352 vpx_memcpy(cc->nmvcosts[0], cpi->nmvcosts[0], 421 memcpy(cc->nmvcosts[0], cpi->nmvcosts[0],
353 MV_VALS * sizeof(*cpi->nmvcosts[0])); 422 MV_VALS * sizeof(*cpi->nmvcosts[0]));
354 vpx_memcpy(cc->nmvcosts[1], cpi->nmvcosts[1], 423 memcpy(cc->nmvcosts[1], cpi->nmvcosts[1],
355 MV_VALS * sizeof(*cpi->nmvcosts[1])); 424 MV_VALS * sizeof(*cpi->nmvcosts[1]));
356 vpx_memcpy(cc->nmvcosts_hp[0], cpi->nmvcosts_hp[0], 425 memcpy(cc->nmvcosts_hp[0], cpi->nmvcosts_hp[0],
357 MV_VALS * sizeof(*cpi->nmvcosts_hp[0])); 426 MV_VALS * sizeof(*cpi->nmvcosts_hp[0]));
358 vpx_memcpy(cc->nmvcosts_hp[1], cpi->nmvcosts_hp[1], 427 memcpy(cc->nmvcosts_hp[1], cpi->nmvcosts_hp[1],
359 MV_VALS * sizeof(*cpi->nmvcosts_hp[1])); 428 MV_VALS * sizeof(*cpi->nmvcosts_hp[1]));
360 429
361 vp9_copy(cc->segment_pred_probs, cm->seg.pred_probs); 430 vp9_copy(cc->segment_pred_probs, cm->seg.pred_probs);
362 431
363 vpx_memcpy(cpi->coding_context.last_frame_seg_map_copy, 432 memcpy(cpi->coding_context.last_frame_seg_map_copy,
364 cm->last_frame_seg_map, (cm->mi_rows * cm->mi_cols)); 433 cm->last_frame_seg_map, (cm->mi_rows * cm->mi_cols));
365 434
366 vp9_copy(cc->last_ref_lf_deltas, cm->lf.last_ref_deltas); 435 vp9_copy(cc->last_ref_lf_deltas, cm->lf.last_ref_deltas);
367 vp9_copy(cc->last_mode_lf_deltas, cm->lf.last_mode_deltas); 436 vp9_copy(cc->last_mode_lf_deltas, cm->lf.last_mode_deltas);
368 437
369 cc->fc = *cm->fc; 438 cc->fc = *cm->fc;
370 } 439 }
371 440
372 static void restore_coding_context(VP9_COMP *cpi) { 441 static void restore_coding_context(VP9_COMP *cpi) {
373 CODING_CONTEXT *const cc = &cpi->coding_context; 442 CODING_CONTEXT *const cc = &cpi->coding_context;
374 VP9_COMMON *cm = &cpi->common; 443 VP9_COMMON *cm = &cpi->common;
375 444
376 // Restore key state variables to the snapshot state stored in the 445 // Restore key state variables to the snapshot state stored in the
377 // previous call to vp9_save_coding_context. 446 // previous call to vp9_save_coding_context.
378 vp9_copy(cpi->td.mb.nmvjointcost, cc->nmvjointcost); 447 vp9_copy(cpi->td.mb.nmvjointcost, cc->nmvjointcost);
379 448
380 vpx_memcpy(cpi->nmvcosts[0], cc->nmvcosts[0], 449 memcpy(cpi->nmvcosts[0], cc->nmvcosts[0], MV_VALS * sizeof(*cc->nmvcosts[0]));
381 MV_VALS * sizeof(*cc->nmvcosts[0])); 450 memcpy(cpi->nmvcosts[1], cc->nmvcosts[1], MV_VALS * sizeof(*cc->nmvcosts[1]));
382 vpx_memcpy(cpi->nmvcosts[1], cc->nmvcosts[1], 451 memcpy(cpi->nmvcosts_hp[0], cc->nmvcosts_hp[0],
383 MV_VALS * sizeof(*cc->nmvcosts[1])); 452 MV_VALS * sizeof(*cc->nmvcosts_hp[0]));
384 vpx_memcpy(cpi->nmvcosts_hp[0], cc->nmvcosts_hp[0], 453 memcpy(cpi->nmvcosts_hp[1], cc->nmvcosts_hp[1],
385 MV_VALS * sizeof(*cc->nmvcosts_hp[0])); 454 MV_VALS * sizeof(*cc->nmvcosts_hp[1]));
386 vpx_memcpy(cpi->nmvcosts_hp[1], cc->nmvcosts_hp[1],
387 MV_VALS * sizeof(*cc->nmvcosts_hp[1]));
388 455
389 vp9_copy(cm->seg.pred_probs, cc->segment_pred_probs); 456 vp9_copy(cm->seg.pred_probs, cc->segment_pred_probs);
390 457
391 vpx_memcpy(cm->last_frame_seg_map, 458 memcpy(cm->last_frame_seg_map,
392 cpi->coding_context.last_frame_seg_map_copy, 459 cpi->coding_context.last_frame_seg_map_copy,
393 (cm->mi_rows * cm->mi_cols)); 460 (cm->mi_rows * cm->mi_cols));
394 461
395 vp9_copy(cm->lf.last_ref_deltas, cc->last_ref_lf_deltas); 462 vp9_copy(cm->lf.last_ref_deltas, cc->last_ref_lf_deltas);
396 vp9_copy(cm->lf.last_mode_deltas, cc->last_mode_lf_deltas); 463 vp9_copy(cm->lf.last_mode_deltas, cc->last_mode_lf_deltas);
397 464
398 *cm->fc = cc->fc; 465 *cm->fc = cc->fc;
399 } 466 }
400 467
401 static void configure_static_seg_features(VP9_COMP *cpi) { 468 static void configure_static_seg_features(VP9_COMP *cpi) {
402 VP9_COMMON *const cm = &cpi->common; 469 VP9_COMMON *const cm = &cpi->common;
403 const RATE_CONTROL *const rc = &cpi->rc; 470 const RATE_CONTROL *const rc = &cpi->rc;
404 struct segmentation *const seg = &cm->seg; 471 struct segmentation *const seg = &cm->seg;
405 472
406 int high_q = (int)(rc->avg_q > 48.0); 473 int high_q = (int)(rc->avg_q > 48.0);
407 int qi_delta; 474 int qi_delta;
408 475
409 // Disable and clear down for KF 476 // Disable and clear down for KF
410 if (cm->frame_type == KEY_FRAME) { 477 if (cm->frame_type == KEY_FRAME) {
411 // Clear down the global segmentation map 478 // Clear down the global segmentation map
412 vpx_memset(cpi->segmentation_map, 0, cm->mi_rows * cm->mi_cols); 479 memset(cpi->segmentation_map, 0, cm->mi_rows * cm->mi_cols);
413 seg->update_map = 0; 480 seg->update_map = 0;
414 seg->update_data = 0; 481 seg->update_data = 0;
415 cpi->static_mb_pct = 0; 482 cpi->static_mb_pct = 0;
416 483
417 // Disable segmentation 484 // Disable segmentation
418 vp9_disable_segmentation(seg); 485 vp9_disable_segmentation(seg);
419 486
420 // Clear down the segment features. 487 // Clear down the segment features.
421 vp9_clearall_segfeatures(seg); 488 vp9_clearall_segfeatures(seg);
422 } else if (cpi->refresh_alt_ref_frame) { 489 } else if (cpi->refresh_alt_ref_frame) {
423 // If this is an alt ref frame 490 // If this is an alt ref frame
424 // Clear down the global segmentation map 491 // Clear down the global segmentation map
425 vpx_memset(cpi->segmentation_map, 0, cm->mi_rows * cm->mi_cols); 492 memset(cpi->segmentation_map, 0, cm->mi_rows * cm->mi_cols);
426 seg->update_map = 0; 493 seg->update_map = 0;
427 seg->update_data = 0; 494 seg->update_data = 0;
428 cpi->static_mb_pct = 0; 495 cpi->static_mb_pct = 0;
429 496
430 // Disable segmentation and individual segment features by default 497 // Disable segmentation and individual segment features by default
431 vp9_disable_segmentation(seg); 498 vp9_disable_segmentation(seg);
432 vp9_clearall_segfeatures(seg); 499 vp9_clearall_segfeatures(seg);
433 500
434 // Scan frames from current to arf frame. 501 // Scan frames from current to arf frame.
435 // This function re-enables segmentation if appropriate. 502 // This function re-enables segmentation if appropriate.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 vp9_set_segdata(seg, 1, SEG_LVL_REF_FRAME, ALTREF_FRAME); 543 vp9_set_segdata(seg, 1, SEG_LVL_REF_FRAME, ALTREF_FRAME);
477 vp9_enable_segfeature(seg, 1, SEG_LVL_REF_FRAME); 544 vp9_enable_segfeature(seg, 1, SEG_LVL_REF_FRAME);
478 vp9_enable_segfeature(seg, 1, SEG_LVL_SKIP); 545 vp9_enable_segfeature(seg, 1, SEG_LVL_SKIP);
479 } 546 }
480 } else { 547 } else {
481 // Disable segmentation and clear down features if alt ref 548 // Disable segmentation and clear down features if alt ref
482 // is not active for this group 549 // is not active for this group
483 550
484 vp9_disable_segmentation(seg); 551 vp9_disable_segmentation(seg);
485 552
486 vpx_memset(cpi->segmentation_map, 0, cm->mi_rows * cm->mi_cols); 553 memset(cpi->segmentation_map, 0, cm->mi_rows * cm->mi_cols);
487 554
488 seg->update_map = 0; 555 seg->update_map = 0;
489 seg->update_data = 0; 556 seg->update_data = 0;
490 557
491 vp9_clearall_segfeatures(seg); 558 vp9_clearall_segfeatures(seg);
492 } 559 }
493 } else if (rc->is_src_frame_alt_ref) { 560 } else if (rc->is_src_frame_alt_ref) {
494 // Special case where we are coding over the top of a previous 561 // Special case where we are coding over the top of a previous
495 // alt ref frame. 562 // alt ref frame.
496 // Segment coding disabled for compred testing 563 // Segment coding disabled for compred testing
(...skipping 20 matching lines...) Expand all
517 584
518 // No updates.. leave things as they are. 585 // No updates.. leave things as they are.
519 seg->update_map = 0; 586 seg->update_map = 0;
520 seg->update_data = 0; 587 seg->update_data = 0;
521 } 588 }
522 } 589 }
523 } 590 }
524 591
525 static void update_reference_segmentation_map(VP9_COMP *cpi) { 592 static void update_reference_segmentation_map(VP9_COMP *cpi) {
526 VP9_COMMON *const cm = &cpi->common; 593 VP9_COMMON *const cm = &cpi->common;
527 MODE_INFO *mi_8x8_ptr = cm->mi; 594 MODE_INFO **mi_8x8_ptr = cm->mi_grid_visible;
528 uint8_t *cache_ptr = cm->last_frame_seg_map; 595 uint8_t *cache_ptr = cm->last_frame_seg_map;
529 int row, col; 596 int row, col;
530 597
531 for (row = 0; row < cm->mi_rows; row++) { 598 for (row = 0; row < cm->mi_rows; row++) {
532 MODE_INFO *mi_8x8 = mi_8x8_ptr; 599 MODE_INFO **mi_8x8 = mi_8x8_ptr;
533 uint8_t *cache = cache_ptr; 600 uint8_t *cache = cache_ptr;
534 for (col = 0; col < cm->mi_cols; col++, mi_8x8++, cache++) 601 for (col = 0; col < cm->mi_cols; col++, mi_8x8++, cache++)
535 cache[0] = mi_8x8[0].src_mi->mbmi.segment_id; 602 cache[0] = mi_8x8[0]->mbmi.segment_id;
536 mi_8x8_ptr += cm->mi_stride; 603 mi_8x8_ptr += cm->mi_stride;
537 cache_ptr += cm->mi_cols; 604 cache_ptr += cm->mi_cols;
538 } 605 }
539 } 606 }
540 607
541 static void alloc_raw_frame_buffers(VP9_COMP *cpi) { 608 static void alloc_raw_frame_buffers(VP9_COMP *cpi) {
542 VP9_COMMON *cm = &cpi->common; 609 VP9_COMMON *cm = &cpi->common;
543 const VP9EncoderConfig *oxcf = &cpi->oxcf; 610 const VP9EncoderConfig *oxcf = &cpi->oxcf;
544 611
545 if (!cpi->lookahead) 612 if (!cpi->lookahead)
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 cpi->framerate = framerate < 0.1 ? 30 : framerate; 711 cpi->framerate = framerate < 0.1 ? 30 : framerate;
645 vp9_rc_update_framerate(cpi); 712 vp9_rc_update_framerate(cpi);
646 } 713 }
647 714
648 static void set_tile_limits(VP9_COMP *cpi) { 715 static void set_tile_limits(VP9_COMP *cpi) {
649 VP9_COMMON *const cm = &cpi->common; 716 VP9_COMMON *const cm = &cpi->common;
650 717
651 int min_log2_tile_cols, max_log2_tile_cols; 718 int min_log2_tile_cols, max_log2_tile_cols;
652 vp9_get_tile_n_bits(cm->mi_cols, &min_log2_tile_cols, &max_log2_tile_cols); 719 vp9_get_tile_n_bits(cm->mi_cols, &min_log2_tile_cols, &max_log2_tile_cols);
653 720
654 cm->log2_tile_cols = clamp(cpi->oxcf.tile_columns, 721 if (is_two_pass_svc(cpi) && cpi->svc.encode_empty_frame_state == ENCODING) {
655 min_log2_tile_cols, max_log2_tile_cols); 722 cm->log2_tile_cols = 0;
656 cm->log2_tile_rows = cpi->oxcf.tile_rows; 723 cm->log2_tile_rows = 0;
724 } else {
725 cm->log2_tile_cols = clamp(cpi->oxcf.tile_columns,
726 min_log2_tile_cols, max_log2_tile_cols);
727 cm->log2_tile_rows = cpi->oxcf.tile_rows;
728 }
657 } 729 }
658 730
659 static void init_buffer_indices(VP9_COMP *cpi) { 731 static void init_buffer_indices(VP9_COMP *cpi) {
660 cpi->lst_fb_idx = 0; 732 cpi->lst_fb_idx = 0;
661 cpi->gld_fb_idx = 1; 733 cpi->gld_fb_idx = 1;
662 cpi->alt_fb_idx = 2; 734 cpi->alt_fb_idx = 2;
663 } 735 }
664 736
665 static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) { 737 static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) {
666 VP9_COMMON *const cm = &cpi->common; 738 VP9_COMMON *const cm = &cpi->common;
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 int source_stride, \ 924 int source_stride, \
853 const uint8_t* const ref_ptr[], \ 925 const uint8_t* const ref_ptr[], \
854 int ref_stride, \ 926 int ref_stride, \
855 unsigned int *sad_array) { \ 927 unsigned int *sad_array) { \
856 int i; \ 928 int i; \
857 fnname(src_ptr, source_stride, ref_ptr, ref_stride, sad_array); \ 929 fnname(src_ptr, source_stride, ref_ptr, ref_stride, sad_array); \
858 for (i = 0; i < 4; i++) \ 930 for (i = 0; i < 4; i++) \
859 sad_array[i] >>= 4; \ 931 sad_array[i] >>= 4; \
860 } 932 }
861 933
862 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad32x16) 934 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad32x16)
863 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad32x16_avg) 935 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad32x16_avg)
864 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad32x16x4d) 936 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad32x16x4d)
865 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad16x32) 937 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad16x32)
866 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad16x32_avg) 938 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad16x32_avg)
867 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad16x32x4d) 939 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad16x32x4d)
868 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad64x32) 940 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad64x32)
869 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad64x32_avg) 941 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad64x32_avg)
870 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad64x32x4d) 942 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad64x32x4d)
871 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad32x64) 943 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad32x64)
872 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad32x64_avg) 944 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad32x64_avg)
873 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad32x64x4d) 945 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad32x64x4d)
874 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad32x32) 946 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad32x32)
875 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad32x32_avg) 947 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad32x32_avg)
876 MAKE_BFP_SAD3_WRAPPER(vp9_highbd_sad32x32x3) 948 MAKE_BFP_SAD3_WRAPPER(vpx_highbd_sad32x32x3)
877 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad32x32x8) 949 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad32x32x8)
878 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad32x32x4d) 950 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad32x32x4d)
879 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad64x64) 951 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad64x64)
880 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad64x64_avg) 952 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad64x64_avg)
881 MAKE_BFP_SAD3_WRAPPER(vp9_highbd_sad64x64x3) 953 MAKE_BFP_SAD3_WRAPPER(vpx_highbd_sad64x64x3)
882 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad64x64x8) 954 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad64x64x8)
883 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad64x64x4d) 955 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad64x64x4d)
884 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad16x16) 956 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad16x16)
885 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad16x16_avg) 957 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad16x16_avg)
886 MAKE_BFP_SAD3_WRAPPER(vp9_highbd_sad16x16x3) 958 MAKE_BFP_SAD3_WRAPPER(vpx_highbd_sad16x16x3)
887 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad16x16x8) 959 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad16x16x8)
888 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad16x16x4d) 960 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad16x16x4d)
889 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad16x8) 961 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad16x8)
890 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad16x8_avg) 962 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad16x8_avg)
891 MAKE_BFP_SAD3_WRAPPER(vp9_highbd_sad16x8x3) 963 MAKE_BFP_SAD3_WRAPPER(vpx_highbd_sad16x8x3)
892 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad16x8x8) 964 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad16x8x8)
893 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad16x8x4d) 965 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad16x8x4d)
894 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad8x16) 966 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad8x16)
895 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad8x16_avg) 967 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad8x16_avg)
896 MAKE_BFP_SAD3_WRAPPER(vp9_highbd_sad8x16x3) 968 MAKE_BFP_SAD3_WRAPPER(vpx_highbd_sad8x16x3)
897 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad8x16x8) 969 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad8x16x8)
898 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad8x16x4d) 970 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad8x16x4d)
899 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad8x8) 971 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad8x8)
900 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad8x8_avg) 972 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad8x8_avg)
901 MAKE_BFP_SAD3_WRAPPER(vp9_highbd_sad8x8x3) 973 MAKE_BFP_SAD3_WRAPPER(vpx_highbd_sad8x8x3)
902 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad8x8x8) 974 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad8x8x8)
903 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad8x8x4d) 975 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad8x8x4d)
904 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad8x4) 976 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad8x4)
905 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad8x4_avg) 977 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad8x4_avg)
906 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad8x4x8) 978 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad8x4x8)
907 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad8x4x4d) 979 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad8x4x4d)
908 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad4x8) 980 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad4x8)
909 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad4x8_avg) 981 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad4x8_avg)
910 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad4x8x8) 982 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad4x8x8)
911 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad4x8x4d) 983 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad4x8x4d)
912 MAKE_BFP_SAD_WRAPPER(vp9_highbd_sad4x4) 984 MAKE_BFP_SAD_WRAPPER(vpx_highbd_sad4x4)
913 MAKE_BFP_SADAVG_WRAPPER(vp9_highbd_sad4x4_avg) 985 MAKE_BFP_SADAVG_WRAPPER(vpx_highbd_sad4x4_avg)
914 MAKE_BFP_SAD3_WRAPPER(vp9_highbd_sad4x4x3) 986 MAKE_BFP_SAD3_WRAPPER(vpx_highbd_sad4x4x3)
915 MAKE_BFP_SAD8_WRAPPER(vp9_highbd_sad4x4x8) 987 MAKE_BFP_SAD8_WRAPPER(vpx_highbd_sad4x4x8)
916 MAKE_BFP_SAD4D_WRAPPER(vp9_highbd_sad4x4x4d) 988 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad4x4x4d)
917 989
918 static void highbd_set_var_fns(VP9_COMP *const cpi) { 990 static void highbd_set_var_fns(VP9_COMP *const cpi) {
919 VP9_COMMON *const cm = &cpi->common; 991 VP9_COMMON *const cm = &cpi->common;
920 if (cm->use_highbitdepth) { 992 if (cm->use_highbitdepth) {
921 switch (cm->bit_depth) { 993 switch (cm->bit_depth) {
922 case VPX_BITS_8: 994 case VPX_BITS_8:
923 HIGHBD_BFP(BLOCK_32X16, 995 HIGHBD_BFP(BLOCK_32X16,
924 vp9_highbd_sad32x16_bits8, 996 vpx_highbd_sad32x16_bits8,
925 vp9_highbd_sad32x16_avg_bits8, 997 vpx_highbd_sad32x16_avg_bits8,
926 vp9_highbd_variance32x16, 998 vp9_highbd_variance32x16,
927 vp9_highbd_sub_pixel_variance32x16, 999 vp9_highbd_sub_pixel_variance32x16,
928 vp9_highbd_sub_pixel_avg_variance32x16, 1000 vp9_highbd_sub_pixel_avg_variance32x16,
929 NULL, 1001 NULL,
930 NULL, 1002 NULL,
931 vp9_highbd_sad32x16x4d_bits8) 1003 vpx_highbd_sad32x16x4d_bits8)
932 1004
933 HIGHBD_BFP(BLOCK_16X32, 1005 HIGHBD_BFP(BLOCK_16X32,
934 vp9_highbd_sad16x32_bits8, 1006 vpx_highbd_sad16x32_bits8,
935 vp9_highbd_sad16x32_avg_bits8, 1007 vpx_highbd_sad16x32_avg_bits8,
936 vp9_highbd_variance16x32, 1008 vp9_highbd_variance16x32,
937 vp9_highbd_sub_pixel_variance16x32, 1009 vp9_highbd_sub_pixel_variance16x32,
938 vp9_highbd_sub_pixel_avg_variance16x32, 1010 vp9_highbd_sub_pixel_avg_variance16x32,
939 NULL, 1011 NULL,
940 NULL, 1012 NULL,
941 vp9_highbd_sad16x32x4d_bits8) 1013 vpx_highbd_sad16x32x4d_bits8)
942 1014
943 HIGHBD_BFP(BLOCK_64X32, 1015 HIGHBD_BFP(BLOCK_64X32,
944 vp9_highbd_sad64x32_bits8, 1016 vpx_highbd_sad64x32_bits8,
945 vp9_highbd_sad64x32_avg_bits8, 1017 vpx_highbd_sad64x32_avg_bits8,
946 vp9_highbd_variance64x32, 1018 vp9_highbd_variance64x32,
947 vp9_highbd_sub_pixel_variance64x32, 1019 vp9_highbd_sub_pixel_variance64x32,
948 vp9_highbd_sub_pixel_avg_variance64x32, 1020 vp9_highbd_sub_pixel_avg_variance64x32,
949 NULL, 1021 NULL,
950 NULL, 1022 NULL,
951 vp9_highbd_sad64x32x4d_bits8) 1023 vpx_highbd_sad64x32x4d_bits8)
952 1024
953 HIGHBD_BFP(BLOCK_32X64, 1025 HIGHBD_BFP(BLOCK_32X64,
954 vp9_highbd_sad32x64_bits8, 1026 vpx_highbd_sad32x64_bits8,
955 vp9_highbd_sad32x64_avg_bits8, 1027 vpx_highbd_sad32x64_avg_bits8,
956 vp9_highbd_variance32x64, 1028 vp9_highbd_variance32x64,
957 vp9_highbd_sub_pixel_variance32x64, 1029 vp9_highbd_sub_pixel_variance32x64,
958 vp9_highbd_sub_pixel_avg_variance32x64, 1030 vp9_highbd_sub_pixel_avg_variance32x64,
959 NULL, 1031 NULL,
960 NULL, 1032 NULL,
961 vp9_highbd_sad32x64x4d_bits8) 1033 vpx_highbd_sad32x64x4d_bits8)
962 1034
963 HIGHBD_BFP(BLOCK_32X32, 1035 HIGHBD_BFP(BLOCK_32X32,
964 vp9_highbd_sad32x32_bits8, 1036 vpx_highbd_sad32x32_bits8,
965 vp9_highbd_sad32x32_avg_bits8, 1037 vpx_highbd_sad32x32_avg_bits8,
966 vp9_highbd_variance32x32, 1038 vp9_highbd_variance32x32,
967 vp9_highbd_sub_pixel_variance32x32, 1039 vp9_highbd_sub_pixel_variance32x32,
968 vp9_highbd_sub_pixel_avg_variance32x32, 1040 vp9_highbd_sub_pixel_avg_variance32x32,
969 vp9_highbd_sad32x32x3_bits8, 1041 vpx_highbd_sad32x32x3_bits8,
970 vp9_highbd_sad32x32x8_bits8, 1042 vpx_highbd_sad32x32x8_bits8,
971 vp9_highbd_sad32x32x4d_bits8) 1043 vpx_highbd_sad32x32x4d_bits8)
972 1044
973 HIGHBD_BFP(BLOCK_64X64, 1045 HIGHBD_BFP(BLOCK_64X64,
974 vp9_highbd_sad64x64_bits8, 1046 vpx_highbd_sad64x64_bits8,
975 vp9_highbd_sad64x64_avg_bits8, 1047 vpx_highbd_sad64x64_avg_bits8,
976 vp9_highbd_variance64x64, 1048 vp9_highbd_variance64x64,
977 vp9_highbd_sub_pixel_variance64x64, 1049 vp9_highbd_sub_pixel_variance64x64,
978 vp9_highbd_sub_pixel_avg_variance64x64, 1050 vp9_highbd_sub_pixel_avg_variance64x64,
979 vp9_highbd_sad64x64x3_bits8, 1051 vpx_highbd_sad64x64x3_bits8,
980 vp9_highbd_sad64x64x8_bits8, 1052 vpx_highbd_sad64x64x8_bits8,
981 vp9_highbd_sad64x64x4d_bits8) 1053 vpx_highbd_sad64x64x4d_bits8)
982 1054
983 HIGHBD_BFP(BLOCK_16X16, 1055 HIGHBD_BFP(BLOCK_16X16,
984 vp9_highbd_sad16x16_bits8, 1056 vpx_highbd_sad16x16_bits8,
985 vp9_highbd_sad16x16_avg_bits8, 1057 vpx_highbd_sad16x16_avg_bits8,
986 vp9_highbd_variance16x16, 1058 vp9_highbd_variance16x16,
987 vp9_highbd_sub_pixel_variance16x16, 1059 vp9_highbd_sub_pixel_variance16x16,
988 vp9_highbd_sub_pixel_avg_variance16x16, 1060 vp9_highbd_sub_pixel_avg_variance16x16,
989 vp9_highbd_sad16x16x3_bits8, 1061 vpx_highbd_sad16x16x3_bits8,
990 vp9_highbd_sad16x16x8_bits8, 1062 vpx_highbd_sad16x16x8_bits8,
991 vp9_highbd_sad16x16x4d_bits8) 1063 vpx_highbd_sad16x16x4d_bits8)
992 1064
993 HIGHBD_BFP(BLOCK_16X8, 1065 HIGHBD_BFP(BLOCK_16X8,
994 vp9_highbd_sad16x8_bits8, 1066 vpx_highbd_sad16x8_bits8,
995 vp9_highbd_sad16x8_avg_bits8, 1067 vpx_highbd_sad16x8_avg_bits8,
996 vp9_highbd_variance16x8, 1068 vp9_highbd_variance16x8,
997 vp9_highbd_sub_pixel_variance16x8, 1069 vp9_highbd_sub_pixel_variance16x8,
998 vp9_highbd_sub_pixel_avg_variance16x8, 1070 vp9_highbd_sub_pixel_avg_variance16x8,
999 vp9_highbd_sad16x8x3_bits8, 1071 vpx_highbd_sad16x8x3_bits8,
1000 vp9_highbd_sad16x8x8_bits8, 1072 vpx_highbd_sad16x8x8_bits8,
1001 vp9_highbd_sad16x8x4d_bits8) 1073 vpx_highbd_sad16x8x4d_bits8)
1002 1074
1003 HIGHBD_BFP(BLOCK_8X16, 1075 HIGHBD_BFP(BLOCK_8X16,
1004 vp9_highbd_sad8x16_bits8, 1076 vpx_highbd_sad8x16_bits8,
1005 vp9_highbd_sad8x16_avg_bits8, 1077 vpx_highbd_sad8x16_avg_bits8,
1006 vp9_highbd_variance8x16, 1078 vp9_highbd_variance8x16,
1007 vp9_highbd_sub_pixel_variance8x16, 1079 vp9_highbd_sub_pixel_variance8x16,
1008 vp9_highbd_sub_pixel_avg_variance8x16, 1080 vp9_highbd_sub_pixel_avg_variance8x16,
1009 vp9_highbd_sad8x16x3_bits8, 1081 vpx_highbd_sad8x16x3_bits8,
1010 vp9_highbd_sad8x16x8_bits8, 1082 vpx_highbd_sad8x16x8_bits8,
1011 vp9_highbd_sad8x16x4d_bits8) 1083 vpx_highbd_sad8x16x4d_bits8)
1012 1084
1013 HIGHBD_BFP(BLOCK_8X8, 1085 HIGHBD_BFP(BLOCK_8X8,
1014 vp9_highbd_sad8x8_bits8, 1086 vpx_highbd_sad8x8_bits8,
1015 vp9_highbd_sad8x8_avg_bits8, 1087 vpx_highbd_sad8x8_avg_bits8,
1016 vp9_highbd_variance8x8, 1088 vp9_highbd_variance8x8,
1017 vp9_highbd_sub_pixel_variance8x8, 1089 vp9_highbd_sub_pixel_variance8x8,
1018 vp9_highbd_sub_pixel_avg_variance8x8, 1090 vp9_highbd_sub_pixel_avg_variance8x8,
1019 vp9_highbd_sad8x8x3_bits8, 1091 vpx_highbd_sad8x8x3_bits8,
1020 vp9_highbd_sad8x8x8_bits8, 1092 vpx_highbd_sad8x8x8_bits8,
1021 vp9_highbd_sad8x8x4d_bits8) 1093 vpx_highbd_sad8x8x4d_bits8)
1022 1094
1023 HIGHBD_BFP(BLOCK_8X4, 1095 HIGHBD_BFP(BLOCK_8X4,
1024 vp9_highbd_sad8x4_bits8, 1096 vpx_highbd_sad8x4_bits8,
1025 vp9_highbd_sad8x4_avg_bits8, 1097 vpx_highbd_sad8x4_avg_bits8,
1026 vp9_highbd_variance8x4, 1098 vp9_highbd_variance8x4,
1027 vp9_highbd_sub_pixel_variance8x4, 1099 vp9_highbd_sub_pixel_variance8x4,
1028 vp9_highbd_sub_pixel_avg_variance8x4, 1100 vp9_highbd_sub_pixel_avg_variance8x4,
1029 NULL, 1101 NULL,
1030 vp9_highbd_sad8x4x8_bits8, 1102 vpx_highbd_sad8x4x8_bits8,
1031 vp9_highbd_sad8x4x4d_bits8) 1103 vpx_highbd_sad8x4x4d_bits8)
1032 1104
1033 HIGHBD_BFP(BLOCK_4X8, 1105 HIGHBD_BFP(BLOCK_4X8,
1034 vp9_highbd_sad4x8_bits8, 1106 vpx_highbd_sad4x8_bits8,
1035 vp9_highbd_sad4x8_avg_bits8, 1107 vpx_highbd_sad4x8_avg_bits8,
1036 vp9_highbd_variance4x8, 1108 vp9_highbd_variance4x8,
1037 vp9_highbd_sub_pixel_variance4x8, 1109 vp9_highbd_sub_pixel_variance4x8,
1038 vp9_highbd_sub_pixel_avg_variance4x8, 1110 vp9_highbd_sub_pixel_avg_variance4x8,
1039 NULL, 1111 NULL,
1040 vp9_highbd_sad4x8x8_bits8, 1112 vpx_highbd_sad4x8x8_bits8,
1041 vp9_highbd_sad4x8x4d_bits8) 1113 vpx_highbd_sad4x8x4d_bits8)
1042 1114
1043 HIGHBD_BFP(BLOCK_4X4, 1115 HIGHBD_BFP(BLOCK_4X4,
1044 vp9_highbd_sad4x4_bits8, 1116 vpx_highbd_sad4x4_bits8,
1045 vp9_highbd_sad4x4_avg_bits8, 1117 vpx_highbd_sad4x4_avg_bits8,
1046 vp9_highbd_variance4x4, 1118 vp9_highbd_variance4x4,
1047 vp9_highbd_sub_pixel_variance4x4, 1119 vp9_highbd_sub_pixel_variance4x4,
1048 vp9_highbd_sub_pixel_avg_variance4x4, 1120 vp9_highbd_sub_pixel_avg_variance4x4,
1049 vp9_highbd_sad4x4x3_bits8, 1121 vpx_highbd_sad4x4x3_bits8,
1050 vp9_highbd_sad4x4x8_bits8, 1122 vpx_highbd_sad4x4x8_bits8,
1051 vp9_highbd_sad4x4x4d_bits8) 1123 vpx_highbd_sad4x4x4d_bits8)
1052 break; 1124 break;
1053 1125
1054 case VPX_BITS_10: 1126 case VPX_BITS_10:
1055 HIGHBD_BFP(BLOCK_32X16, 1127 HIGHBD_BFP(BLOCK_32X16,
1056 vp9_highbd_sad32x16_bits10, 1128 vpx_highbd_sad32x16_bits10,
1057 vp9_highbd_sad32x16_avg_bits10, 1129 vpx_highbd_sad32x16_avg_bits10,
1058 vp9_highbd_10_variance32x16, 1130 vp9_highbd_10_variance32x16,
1059 vp9_highbd_10_sub_pixel_variance32x16, 1131 vp9_highbd_10_sub_pixel_variance32x16,
1060 vp9_highbd_10_sub_pixel_avg_variance32x16, 1132 vp9_highbd_10_sub_pixel_avg_variance32x16,
1061 NULL, 1133 NULL,
1062 NULL, 1134 NULL,
1063 vp9_highbd_sad32x16x4d_bits10) 1135 vpx_highbd_sad32x16x4d_bits10)
1064 1136
1065 HIGHBD_BFP(BLOCK_16X32, 1137 HIGHBD_BFP(BLOCK_16X32,
1066 vp9_highbd_sad16x32_bits10, 1138 vpx_highbd_sad16x32_bits10,
1067 vp9_highbd_sad16x32_avg_bits10, 1139 vpx_highbd_sad16x32_avg_bits10,
1068 vp9_highbd_10_variance16x32, 1140 vp9_highbd_10_variance16x32,
1069 vp9_highbd_10_sub_pixel_variance16x32, 1141 vp9_highbd_10_sub_pixel_variance16x32,
1070 vp9_highbd_10_sub_pixel_avg_variance16x32, 1142 vp9_highbd_10_sub_pixel_avg_variance16x32,
1071 NULL, 1143 NULL,
1072 NULL, 1144 NULL,
1073 vp9_highbd_sad16x32x4d_bits10) 1145 vpx_highbd_sad16x32x4d_bits10)
1074 1146
1075 HIGHBD_BFP(BLOCK_64X32, 1147 HIGHBD_BFP(BLOCK_64X32,
1076 vp9_highbd_sad64x32_bits10, 1148 vpx_highbd_sad64x32_bits10,
1077 vp9_highbd_sad64x32_avg_bits10, 1149 vpx_highbd_sad64x32_avg_bits10,
1078 vp9_highbd_10_variance64x32, 1150 vp9_highbd_10_variance64x32,
1079 vp9_highbd_10_sub_pixel_variance64x32, 1151 vp9_highbd_10_sub_pixel_variance64x32,
1080 vp9_highbd_10_sub_pixel_avg_variance64x32, 1152 vp9_highbd_10_sub_pixel_avg_variance64x32,
1081 NULL, 1153 NULL,
1082 NULL, 1154 NULL,
1083 vp9_highbd_sad64x32x4d_bits10) 1155 vpx_highbd_sad64x32x4d_bits10)
1084 1156
1085 HIGHBD_BFP(BLOCK_32X64, 1157 HIGHBD_BFP(BLOCK_32X64,
1086 vp9_highbd_sad32x64_bits10, 1158 vpx_highbd_sad32x64_bits10,
1087 vp9_highbd_sad32x64_avg_bits10, 1159 vpx_highbd_sad32x64_avg_bits10,
1088 vp9_highbd_10_variance32x64, 1160 vp9_highbd_10_variance32x64,
1089 vp9_highbd_10_sub_pixel_variance32x64, 1161 vp9_highbd_10_sub_pixel_variance32x64,
1090 vp9_highbd_10_sub_pixel_avg_variance32x64, 1162 vp9_highbd_10_sub_pixel_avg_variance32x64,
1091 NULL, 1163 NULL,
1092 NULL, 1164 NULL,
1093 vp9_highbd_sad32x64x4d_bits10) 1165 vpx_highbd_sad32x64x4d_bits10)
1094 1166
1095 HIGHBD_BFP(BLOCK_32X32, 1167 HIGHBD_BFP(BLOCK_32X32,
1096 vp9_highbd_sad32x32_bits10, 1168 vpx_highbd_sad32x32_bits10,
1097 vp9_highbd_sad32x32_avg_bits10, 1169 vpx_highbd_sad32x32_avg_bits10,
1098 vp9_highbd_10_variance32x32, 1170 vp9_highbd_10_variance32x32,
1099 vp9_highbd_10_sub_pixel_variance32x32, 1171 vp9_highbd_10_sub_pixel_variance32x32,
1100 vp9_highbd_10_sub_pixel_avg_variance32x32, 1172 vp9_highbd_10_sub_pixel_avg_variance32x32,
1101 vp9_highbd_sad32x32x3_bits10, 1173 vpx_highbd_sad32x32x3_bits10,
1102 vp9_highbd_sad32x32x8_bits10, 1174 vpx_highbd_sad32x32x8_bits10,
1103 vp9_highbd_sad32x32x4d_bits10) 1175 vpx_highbd_sad32x32x4d_bits10)
1104 1176
1105 HIGHBD_BFP(BLOCK_64X64, 1177 HIGHBD_BFP(BLOCK_64X64,
1106 vp9_highbd_sad64x64_bits10, 1178 vpx_highbd_sad64x64_bits10,
1107 vp9_highbd_sad64x64_avg_bits10, 1179 vpx_highbd_sad64x64_avg_bits10,
1108 vp9_highbd_10_variance64x64, 1180 vp9_highbd_10_variance64x64,
1109 vp9_highbd_10_sub_pixel_variance64x64, 1181 vp9_highbd_10_sub_pixel_variance64x64,
1110 vp9_highbd_10_sub_pixel_avg_variance64x64, 1182 vp9_highbd_10_sub_pixel_avg_variance64x64,
1111 vp9_highbd_sad64x64x3_bits10, 1183 vpx_highbd_sad64x64x3_bits10,
1112 vp9_highbd_sad64x64x8_bits10, 1184 vpx_highbd_sad64x64x8_bits10,
1113 vp9_highbd_sad64x64x4d_bits10) 1185 vpx_highbd_sad64x64x4d_bits10)
1114 1186
1115 HIGHBD_BFP(BLOCK_16X16, 1187 HIGHBD_BFP(BLOCK_16X16,
1116 vp9_highbd_sad16x16_bits10, 1188 vpx_highbd_sad16x16_bits10,
1117 vp9_highbd_sad16x16_avg_bits10, 1189 vpx_highbd_sad16x16_avg_bits10,
1118 vp9_highbd_10_variance16x16, 1190 vp9_highbd_10_variance16x16,
1119 vp9_highbd_10_sub_pixel_variance16x16, 1191 vp9_highbd_10_sub_pixel_variance16x16,
1120 vp9_highbd_10_sub_pixel_avg_variance16x16, 1192 vp9_highbd_10_sub_pixel_avg_variance16x16,
1121 vp9_highbd_sad16x16x3_bits10, 1193 vpx_highbd_sad16x16x3_bits10,
1122 vp9_highbd_sad16x16x8_bits10, 1194 vpx_highbd_sad16x16x8_bits10,
1123 vp9_highbd_sad16x16x4d_bits10) 1195 vpx_highbd_sad16x16x4d_bits10)
1124 1196
1125 HIGHBD_BFP(BLOCK_16X8, 1197 HIGHBD_BFP(BLOCK_16X8,
1126 vp9_highbd_sad16x8_bits10, 1198 vpx_highbd_sad16x8_bits10,
1127 vp9_highbd_sad16x8_avg_bits10, 1199 vpx_highbd_sad16x8_avg_bits10,
1128 vp9_highbd_10_variance16x8, 1200 vp9_highbd_10_variance16x8,
1129 vp9_highbd_10_sub_pixel_variance16x8, 1201 vp9_highbd_10_sub_pixel_variance16x8,
1130 vp9_highbd_10_sub_pixel_avg_variance16x8, 1202 vp9_highbd_10_sub_pixel_avg_variance16x8,
1131 vp9_highbd_sad16x8x3_bits10, 1203 vpx_highbd_sad16x8x3_bits10,
1132 vp9_highbd_sad16x8x8_bits10, 1204 vpx_highbd_sad16x8x8_bits10,
1133 vp9_highbd_sad16x8x4d_bits10) 1205 vpx_highbd_sad16x8x4d_bits10)
1134 1206
1135 HIGHBD_BFP(BLOCK_8X16, 1207 HIGHBD_BFP(BLOCK_8X16,
1136 vp9_highbd_sad8x16_bits10, 1208 vpx_highbd_sad8x16_bits10,
1137 vp9_highbd_sad8x16_avg_bits10, 1209 vpx_highbd_sad8x16_avg_bits10,
1138 vp9_highbd_10_variance8x16, 1210 vp9_highbd_10_variance8x16,
1139 vp9_highbd_10_sub_pixel_variance8x16, 1211 vp9_highbd_10_sub_pixel_variance8x16,
1140 vp9_highbd_10_sub_pixel_avg_variance8x16, 1212 vp9_highbd_10_sub_pixel_avg_variance8x16,
1141 vp9_highbd_sad8x16x3_bits10, 1213 vpx_highbd_sad8x16x3_bits10,
1142 vp9_highbd_sad8x16x8_bits10, 1214 vpx_highbd_sad8x16x8_bits10,
1143 vp9_highbd_sad8x16x4d_bits10) 1215 vpx_highbd_sad8x16x4d_bits10)
1144 1216
1145 HIGHBD_BFP(BLOCK_8X8, 1217 HIGHBD_BFP(BLOCK_8X8,
1146 vp9_highbd_sad8x8_bits10, 1218 vpx_highbd_sad8x8_bits10,
1147 vp9_highbd_sad8x8_avg_bits10, 1219 vpx_highbd_sad8x8_avg_bits10,
1148 vp9_highbd_10_variance8x8, 1220 vp9_highbd_10_variance8x8,
1149 vp9_highbd_10_sub_pixel_variance8x8, 1221 vp9_highbd_10_sub_pixel_variance8x8,
1150 vp9_highbd_10_sub_pixel_avg_variance8x8, 1222 vp9_highbd_10_sub_pixel_avg_variance8x8,
1151 vp9_highbd_sad8x8x3_bits10, 1223 vpx_highbd_sad8x8x3_bits10,
1152 vp9_highbd_sad8x8x8_bits10, 1224 vpx_highbd_sad8x8x8_bits10,
1153 vp9_highbd_sad8x8x4d_bits10) 1225 vpx_highbd_sad8x8x4d_bits10)
1154 1226
1155 HIGHBD_BFP(BLOCK_8X4, 1227 HIGHBD_BFP(BLOCK_8X4,
1156 vp9_highbd_sad8x4_bits10, 1228 vpx_highbd_sad8x4_bits10,
1157 vp9_highbd_sad8x4_avg_bits10, 1229 vpx_highbd_sad8x4_avg_bits10,
1158 vp9_highbd_10_variance8x4, 1230 vp9_highbd_10_variance8x4,
1159 vp9_highbd_10_sub_pixel_variance8x4, 1231 vp9_highbd_10_sub_pixel_variance8x4,
1160 vp9_highbd_10_sub_pixel_avg_variance8x4, 1232 vp9_highbd_10_sub_pixel_avg_variance8x4,
1161 NULL, 1233 NULL,
1162 vp9_highbd_sad8x4x8_bits10, 1234 vpx_highbd_sad8x4x8_bits10,
1163 vp9_highbd_sad8x4x4d_bits10) 1235 vpx_highbd_sad8x4x4d_bits10)
1164 1236
1165 HIGHBD_BFP(BLOCK_4X8, 1237 HIGHBD_BFP(BLOCK_4X8,
1166 vp9_highbd_sad4x8_bits10, 1238 vpx_highbd_sad4x8_bits10,
1167 vp9_highbd_sad4x8_avg_bits10, 1239 vpx_highbd_sad4x8_avg_bits10,
1168 vp9_highbd_10_variance4x8, 1240 vp9_highbd_10_variance4x8,
1169 vp9_highbd_10_sub_pixel_variance4x8, 1241 vp9_highbd_10_sub_pixel_variance4x8,
1170 vp9_highbd_10_sub_pixel_avg_variance4x8, 1242 vp9_highbd_10_sub_pixel_avg_variance4x8,
1171 NULL, 1243 NULL,
1172 vp9_highbd_sad4x8x8_bits10, 1244 vpx_highbd_sad4x8x8_bits10,
1173 vp9_highbd_sad4x8x4d_bits10) 1245 vpx_highbd_sad4x8x4d_bits10)
1174 1246
1175 HIGHBD_BFP(BLOCK_4X4, 1247 HIGHBD_BFP(BLOCK_4X4,
1176 vp9_highbd_sad4x4_bits10, 1248 vpx_highbd_sad4x4_bits10,
1177 vp9_highbd_sad4x4_avg_bits10, 1249 vpx_highbd_sad4x4_avg_bits10,
1178 vp9_highbd_10_variance4x4, 1250 vp9_highbd_10_variance4x4,
1179 vp9_highbd_10_sub_pixel_variance4x4, 1251 vp9_highbd_10_sub_pixel_variance4x4,
1180 vp9_highbd_10_sub_pixel_avg_variance4x4, 1252 vp9_highbd_10_sub_pixel_avg_variance4x4,
1181 vp9_highbd_sad4x4x3_bits10, 1253 vpx_highbd_sad4x4x3_bits10,
1182 vp9_highbd_sad4x4x8_bits10, 1254 vpx_highbd_sad4x4x8_bits10,
1183 vp9_highbd_sad4x4x4d_bits10) 1255 vpx_highbd_sad4x4x4d_bits10)
1184 break; 1256 break;
1185 1257
1186 case VPX_BITS_12: 1258 case VPX_BITS_12:
1187 HIGHBD_BFP(BLOCK_32X16, 1259 HIGHBD_BFP(BLOCK_32X16,
1188 vp9_highbd_sad32x16_bits12, 1260 vpx_highbd_sad32x16_bits12,
1189 vp9_highbd_sad32x16_avg_bits12, 1261 vpx_highbd_sad32x16_avg_bits12,
1190 vp9_highbd_12_variance32x16, 1262 vp9_highbd_12_variance32x16,
1191 vp9_highbd_12_sub_pixel_variance32x16, 1263 vp9_highbd_12_sub_pixel_variance32x16,
1192 vp9_highbd_12_sub_pixel_avg_variance32x16, 1264 vp9_highbd_12_sub_pixel_avg_variance32x16,
1193 NULL, 1265 NULL,
1194 NULL, 1266 NULL,
1195 vp9_highbd_sad32x16x4d_bits12) 1267 vpx_highbd_sad32x16x4d_bits12)
1196 1268
1197 HIGHBD_BFP(BLOCK_16X32, 1269 HIGHBD_BFP(BLOCK_16X32,
1198 vp9_highbd_sad16x32_bits12, 1270 vpx_highbd_sad16x32_bits12,
1199 vp9_highbd_sad16x32_avg_bits12, 1271 vpx_highbd_sad16x32_avg_bits12,
1200 vp9_highbd_12_variance16x32, 1272 vp9_highbd_12_variance16x32,
1201 vp9_highbd_12_sub_pixel_variance16x32, 1273 vp9_highbd_12_sub_pixel_variance16x32,
1202 vp9_highbd_12_sub_pixel_avg_variance16x32, 1274 vp9_highbd_12_sub_pixel_avg_variance16x32,
1203 NULL, 1275 NULL,
1204 NULL, 1276 NULL,
1205 vp9_highbd_sad16x32x4d_bits12) 1277 vpx_highbd_sad16x32x4d_bits12)
1206 1278
1207 HIGHBD_BFP(BLOCK_64X32, 1279 HIGHBD_BFP(BLOCK_64X32,
1208 vp9_highbd_sad64x32_bits12, 1280 vpx_highbd_sad64x32_bits12,
1209 vp9_highbd_sad64x32_avg_bits12, 1281 vpx_highbd_sad64x32_avg_bits12,
1210 vp9_highbd_12_variance64x32, 1282 vp9_highbd_12_variance64x32,
1211 vp9_highbd_12_sub_pixel_variance64x32, 1283 vp9_highbd_12_sub_pixel_variance64x32,
1212 vp9_highbd_12_sub_pixel_avg_variance64x32, 1284 vp9_highbd_12_sub_pixel_avg_variance64x32,
1213 NULL, 1285 NULL,
1214 NULL, 1286 NULL,
1215 vp9_highbd_sad64x32x4d_bits12) 1287 vpx_highbd_sad64x32x4d_bits12)
1216 1288
1217 HIGHBD_BFP(BLOCK_32X64, 1289 HIGHBD_BFP(BLOCK_32X64,
1218 vp9_highbd_sad32x64_bits12, 1290 vpx_highbd_sad32x64_bits12,
1219 vp9_highbd_sad32x64_avg_bits12, 1291 vpx_highbd_sad32x64_avg_bits12,
1220 vp9_highbd_12_variance32x64, 1292 vp9_highbd_12_variance32x64,
1221 vp9_highbd_12_sub_pixel_variance32x64, 1293 vp9_highbd_12_sub_pixel_variance32x64,
1222 vp9_highbd_12_sub_pixel_avg_variance32x64, 1294 vp9_highbd_12_sub_pixel_avg_variance32x64,
1223 NULL, 1295 NULL,
1224 NULL, 1296 NULL,
1225 vp9_highbd_sad32x64x4d_bits12) 1297 vpx_highbd_sad32x64x4d_bits12)
1226 1298
1227 HIGHBD_BFP(BLOCK_32X32, 1299 HIGHBD_BFP(BLOCK_32X32,
1228 vp9_highbd_sad32x32_bits12, 1300 vpx_highbd_sad32x32_bits12,
1229 vp9_highbd_sad32x32_avg_bits12, 1301 vpx_highbd_sad32x32_avg_bits12,
1230 vp9_highbd_12_variance32x32, 1302 vp9_highbd_12_variance32x32,
1231 vp9_highbd_12_sub_pixel_variance32x32, 1303 vp9_highbd_12_sub_pixel_variance32x32,
1232 vp9_highbd_12_sub_pixel_avg_variance32x32, 1304 vp9_highbd_12_sub_pixel_avg_variance32x32,
1233 vp9_highbd_sad32x32x3_bits12, 1305 vpx_highbd_sad32x32x3_bits12,
1234 vp9_highbd_sad32x32x8_bits12, 1306 vpx_highbd_sad32x32x8_bits12,
1235 vp9_highbd_sad32x32x4d_bits12) 1307 vpx_highbd_sad32x32x4d_bits12)
1236 1308
1237 HIGHBD_BFP(BLOCK_64X64, 1309 HIGHBD_BFP(BLOCK_64X64,
1238 vp9_highbd_sad64x64_bits12, 1310 vpx_highbd_sad64x64_bits12,
1239 vp9_highbd_sad64x64_avg_bits12, 1311 vpx_highbd_sad64x64_avg_bits12,
1240 vp9_highbd_12_variance64x64, 1312 vp9_highbd_12_variance64x64,
1241 vp9_highbd_12_sub_pixel_variance64x64, 1313 vp9_highbd_12_sub_pixel_variance64x64,
1242 vp9_highbd_12_sub_pixel_avg_variance64x64, 1314 vp9_highbd_12_sub_pixel_avg_variance64x64,
1243 vp9_highbd_sad64x64x3_bits12, 1315 vpx_highbd_sad64x64x3_bits12,
1244 vp9_highbd_sad64x64x8_bits12, 1316 vpx_highbd_sad64x64x8_bits12,
1245 vp9_highbd_sad64x64x4d_bits12) 1317 vpx_highbd_sad64x64x4d_bits12)
1246 1318
1247 HIGHBD_BFP(BLOCK_16X16, 1319 HIGHBD_BFP(BLOCK_16X16,
1248 vp9_highbd_sad16x16_bits12, 1320 vpx_highbd_sad16x16_bits12,
1249 vp9_highbd_sad16x16_avg_bits12, 1321 vpx_highbd_sad16x16_avg_bits12,
1250 vp9_highbd_12_variance16x16, 1322 vp9_highbd_12_variance16x16,
1251 vp9_highbd_12_sub_pixel_variance16x16, 1323 vp9_highbd_12_sub_pixel_variance16x16,
1252 vp9_highbd_12_sub_pixel_avg_variance16x16, 1324 vp9_highbd_12_sub_pixel_avg_variance16x16,
1253 vp9_highbd_sad16x16x3_bits12, 1325 vpx_highbd_sad16x16x3_bits12,
1254 vp9_highbd_sad16x16x8_bits12, 1326 vpx_highbd_sad16x16x8_bits12,
1255 vp9_highbd_sad16x16x4d_bits12) 1327 vpx_highbd_sad16x16x4d_bits12)
1256 1328
1257 HIGHBD_BFP(BLOCK_16X8, 1329 HIGHBD_BFP(BLOCK_16X8,
1258 vp9_highbd_sad16x8_bits12, 1330 vpx_highbd_sad16x8_bits12,
1259 vp9_highbd_sad16x8_avg_bits12, 1331 vpx_highbd_sad16x8_avg_bits12,
1260 vp9_highbd_12_variance16x8, 1332 vp9_highbd_12_variance16x8,
1261 vp9_highbd_12_sub_pixel_variance16x8, 1333 vp9_highbd_12_sub_pixel_variance16x8,
1262 vp9_highbd_12_sub_pixel_avg_variance16x8, 1334 vp9_highbd_12_sub_pixel_avg_variance16x8,
1263 vp9_highbd_sad16x8x3_bits12, 1335 vpx_highbd_sad16x8x3_bits12,
1264 vp9_highbd_sad16x8x8_bits12, 1336 vpx_highbd_sad16x8x8_bits12,
1265 vp9_highbd_sad16x8x4d_bits12) 1337 vpx_highbd_sad16x8x4d_bits12)
1266 1338
1267 HIGHBD_BFP(BLOCK_8X16, 1339 HIGHBD_BFP(BLOCK_8X16,
1268 vp9_highbd_sad8x16_bits12, 1340 vpx_highbd_sad8x16_bits12,
1269 vp9_highbd_sad8x16_avg_bits12, 1341 vpx_highbd_sad8x16_avg_bits12,
1270 vp9_highbd_12_variance8x16, 1342 vp9_highbd_12_variance8x16,
1271 vp9_highbd_12_sub_pixel_variance8x16, 1343 vp9_highbd_12_sub_pixel_variance8x16,
1272 vp9_highbd_12_sub_pixel_avg_variance8x16, 1344 vp9_highbd_12_sub_pixel_avg_variance8x16,
1273 vp9_highbd_sad8x16x3_bits12, 1345 vpx_highbd_sad8x16x3_bits12,
1274 vp9_highbd_sad8x16x8_bits12, 1346 vpx_highbd_sad8x16x8_bits12,
1275 vp9_highbd_sad8x16x4d_bits12) 1347 vpx_highbd_sad8x16x4d_bits12)
1276 1348
1277 HIGHBD_BFP(BLOCK_8X8, 1349 HIGHBD_BFP(BLOCK_8X8,
1278 vp9_highbd_sad8x8_bits12, 1350 vpx_highbd_sad8x8_bits12,
1279 vp9_highbd_sad8x8_avg_bits12, 1351 vpx_highbd_sad8x8_avg_bits12,
1280 vp9_highbd_12_variance8x8, 1352 vp9_highbd_12_variance8x8,
1281 vp9_highbd_12_sub_pixel_variance8x8, 1353 vp9_highbd_12_sub_pixel_variance8x8,
1282 vp9_highbd_12_sub_pixel_avg_variance8x8, 1354 vp9_highbd_12_sub_pixel_avg_variance8x8,
1283 vp9_highbd_sad8x8x3_bits12, 1355 vpx_highbd_sad8x8x3_bits12,
1284 vp9_highbd_sad8x8x8_bits12, 1356 vpx_highbd_sad8x8x8_bits12,
1285 vp9_highbd_sad8x8x4d_bits12) 1357 vpx_highbd_sad8x8x4d_bits12)
1286 1358
1287 HIGHBD_BFP(BLOCK_8X4, 1359 HIGHBD_BFP(BLOCK_8X4,
1288 vp9_highbd_sad8x4_bits12, 1360 vpx_highbd_sad8x4_bits12,
1289 vp9_highbd_sad8x4_avg_bits12, 1361 vpx_highbd_sad8x4_avg_bits12,
1290 vp9_highbd_12_variance8x4, 1362 vp9_highbd_12_variance8x4,
1291 vp9_highbd_12_sub_pixel_variance8x4, 1363 vp9_highbd_12_sub_pixel_variance8x4,
1292 vp9_highbd_12_sub_pixel_avg_variance8x4, 1364 vp9_highbd_12_sub_pixel_avg_variance8x4,
1293 NULL, 1365 NULL,
1294 vp9_highbd_sad8x4x8_bits12, 1366 vpx_highbd_sad8x4x8_bits12,
1295 vp9_highbd_sad8x4x4d_bits12) 1367 vpx_highbd_sad8x4x4d_bits12)
1296 1368
1297 HIGHBD_BFP(BLOCK_4X8, 1369 HIGHBD_BFP(BLOCK_4X8,
1298 vp9_highbd_sad4x8_bits12, 1370 vpx_highbd_sad4x8_bits12,
1299 vp9_highbd_sad4x8_avg_bits12, 1371 vpx_highbd_sad4x8_avg_bits12,
1300 vp9_highbd_12_variance4x8, 1372 vp9_highbd_12_variance4x8,
1301 vp9_highbd_12_sub_pixel_variance4x8, 1373 vp9_highbd_12_sub_pixel_variance4x8,
1302 vp9_highbd_12_sub_pixel_avg_variance4x8, 1374 vp9_highbd_12_sub_pixel_avg_variance4x8,
1303 NULL, 1375 NULL,
1304 vp9_highbd_sad4x8x8_bits12, 1376 vpx_highbd_sad4x8x8_bits12,
1305 vp9_highbd_sad4x8x4d_bits12) 1377 vpx_highbd_sad4x8x4d_bits12)
1306 1378
1307 HIGHBD_BFP(BLOCK_4X4, 1379 HIGHBD_BFP(BLOCK_4X4,
1308 vp9_highbd_sad4x4_bits12, 1380 vpx_highbd_sad4x4_bits12,
1309 vp9_highbd_sad4x4_avg_bits12, 1381 vpx_highbd_sad4x4_avg_bits12,
1310 vp9_highbd_12_variance4x4, 1382 vp9_highbd_12_variance4x4,
1311 vp9_highbd_12_sub_pixel_variance4x4, 1383 vp9_highbd_12_sub_pixel_variance4x4,
1312 vp9_highbd_12_sub_pixel_avg_variance4x4, 1384 vp9_highbd_12_sub_pixel_avg_variance4x4,
1313 vp9_highbd_sad4x4x3_bits12, 1385 vpx_highbd_sad4x4x3_bits12,
1314 vp9_highbd_sad4x4x8_bits12, 1386 vpx_highbd_sad4x4x8_bits12,
1315 vp9_highbd_sad4x4x4d_bits12) 1387 vpx_highbd_sad4x4x4d_bits12)
1316 break; 1388 break;
1317 1389
1318 default: 1390 default:
1319 assert(0 && "cm->bit_depth should be VPX_BITS_8, " 1391 assert(0 && "cm->bit_depth should be VPX_BITS_8, "
1320 "VPX_BITS_10 or VPX_BITS_12"); 1392 "VPX_BITS_10 or VPX_BITS_12");
1321 } 1393 }
1322 } 1394 }
1323 } 1395 }
1324 #endif // CONFIG_VP9_HIGHBITDEPTH 1396 #endif // CONFIG_VP9_HIGHBITDEPTH
1325 1397
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1562 cpi->twopass.frame_mb_stats_buf = NULL; 1634 cpi->twopass.frame_mb_stats_buf = NULL;
1563 } 1635 }
1564 #endif 1636 #endif
1565 1637
1566 cpi->refresh_alt_ref_frame = 0; 1638 cpi->refresh_alt_ref_frame = 0;
1567 cpi->multi_arf_last_grp_enabled = 0; 1639 cpi->multi_arf_last_grp_enabled = 0;
1568 1640
1569 cpi->b_calculate_psnr = CONFIG_INTERNAL_STATS; 1641 cpi->b_calculate_psnr = CONFIG_INTERNAL_STATS;
1570 #if CONFIG_INTERNAL_STATS 1642 #if CONFIG_INTERNAL_STATS
1571 cpi->b_calculate_ssimg = 0; 1643 cpi->b_calculate_ssimg = 0;
1644 cpi->b_calculate_blockiness = 1;
1645 cpi->b_calculate_consistency = 1;
1646 cpi->total_inconsistency = 0;
1647 cpi->psnr.worst = 100.0;
1648 cpi->worst_ssim = 100.0;
1572 1649
1573 cpi->count = 0; 1650 cpi->count = 0;
1574 cpi->bytes = 0; 1651 cpi->bytes = 0;
1575 1652
1576 if (cpi->b_calculate_psnr) { 1653 if (cpi->b_calculate_psnr) {
1577 cpi->total_y = 0.0;
1578 cpi->total_u = 0.0;
1579 cpi->total_v = 0.0;
1580 cpi->total = 0.0;
1581 cpi->total_sq_error = 0; 1654 cpi->total_sq_error = 0;
1582 cpi->total_samples = 0; 1655 cpi->total_samples = 0;
1583 1656
1584 cpi->totalp_y = 0.0;
1585 cpi->totalp_u = 0.0;
1586 cpi->totalp_v = 0.0;
1587 cpi->totalp = 0.0;
1588 cpi->totalp_sq_error = 0; 1657 cpi->totalp_sq_error = 0;
1589 cpi->totalp_samples = 0; 1658 cpi->totalp_samples = 0;
1590 1659
1591 cpi->tot_recode_hits = 0; 1660 cpi->tot_recode_hits = 0;
1592 cpi->summed_quality = 0; 1661 cpi->summed_quality = 0;
1593 cpi->summed_weights = 0; 1662 cpi->summed_weights = 0;
1594 cpi->summedp_quality = 0; 1663 cpi->summedp_quality = 0;
1595 cpi->summedp_weights = 0; 1664 cpi->summedp_weights = 0;
1596 } 1665 }
1597 1666
1598 if (cpi->b_calculate_ssimg) { 1667 if (cpi->b_calculate_ssimg) {
1599 cpi->total_ssimg_y = 0; 1668 cpi->ssimg.worst= 100.0;
1600 cpi->total_ssimg_u = 0; 1669 }
1601 cpi->total_ssimg_v = 0; 1670 cpi->fastssim.worst = 100.0;
1602 cpi->total_ssimg_all = 0; 1671
1672 cpi->psnrhvs.worst = 100.0;
1673
1674 if (cpi->b_calculate_blockiness) {
1675 cpi->total_blockiness = 0;
1676 cpi->worst_blockiness = 0.0;
1677 }
1678
1679 if (cpi->b_calculate_consistency) {
1680 cpi->ssim_vars = vpx_malloc(sizeof(*cpi->ssim_vars)*720*480);
1681 cpi->worst_consistency = 100.0;
1603 } 1682 }
1604 1683
1605 #endif 1684 #endif
1606 1685
1607 cpi->first_time_stamp_ever = INT64_MAX; 1686 cpi->first_time_stamp_ever = INT64_MAX;
1608 1687
1609 cal_nmvjointsadcost(cpi->td.mb.nmvjointsadcost); 1688 cal_nmvjointsadcost(cpi->td.mb.nmvjointsadcost);
1610 cpi->td.mb.nmvcost[0] = &cpi->nmvcosts[0][MV_MAX]; 1689 cpi->td.mb.nmvcost[0] = &cpi->nmvcosts[0][MV_MAX];
1611 cpi->td.mb.nmvcost[1] = &cpi->nmvcosts[1][MV_MAX]; 1690 cpi->td.mb.nmvcost[1] = &cpi->nmvcosts[1][MV_MAX];
1612 cpi->td.mb.nmvsadcost[0] = &cpi->nmvsadcosts[0][MV_MAX]; 1691 cpi->td.mb.nmvsadcost[0] = &cpi->nmvsadcosts[0][MV_MAX];
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1715 #define BFP(BT, SDF, SDAF, VF, SVF, SVAF, SDX3F, SDX8F, SDX4DF)\ 1794 #define BFP(BT, SDF, SDAF, VF, SVF, SVAF, SDX3F, SDX8F, SDX4DF)\
1716 cpi->fn_ptr[BT].sdf = SDF; \ 1795 cpi->fn_ptr[BT].sdf = SDF; \
1717 cpi->fn_ptr[BT].sdaf = SDAF; \ 1796 cpi->fn_ptr[BT].sdaf = SDAF; \
1718 cpi->fn_ptr[BT].vf = VF; \ 1797 cpi->fn_ptr[BT].vf = VF; \
1719 cpi->fn_ptr[BT].svf = SVF; \ 1798 cpi->fn_ptr[BT].svf = SVF; \
1720 cpi->fn_ptr[BT].svaf = SVAF; \ 1799 cpi->fn_ptr[BT].svaf = SVAF; \
1721 cpi->fn_ptr[BT].sdx3f = SDX3F; \ 1800 cpi->fn_ptr[BT].sdx3f = SDX3F; \
1722 cpi->fn_ptr[BT].sdx8f = SDX8F; \ 1801 cpi->fn_ptr[BT].sdx8f = SDX8F; \
1723 cpi->fn_ptr[BT].sdx4df = SDX4DF; 1802 cpi->fn_ptr[BT].sdx4df = SDX4DF;
1724 1803
1725 BFP(BLOCK_32X16, vp9_sad32x16, vp9_sad32x16_avg, 1804 BFP(BLOCK_32X16, vpx_sad32x16, vpx_sad32x16_avg,
1726 vp9_variance32x16, vp9_sub_pixel_variance32x16, 1805 vp9_variance32x16, vp9_sub_pixel_variance32x16,
1727 vp9_sub_pixel_avg_variance32x16, NULL, NULL, vp9_sad32x16x4d) 1806 vp9_sub_pixel_avg_variance32x16, NULL, NULL, vpx_sad32x16x4d)
1728 1807
1729 BFP(BLOCK_16X32, vp9_sad16x32, vp9_sad16x32_avg, 1808 BFP(BLOCK_16X32, vpx_sad16x32, vpx_sad16x32_avg,
1730 vp9_variance16x32, vp9_sub_pixel_variance16x32, 1809 vp9_variance16x32, vp9_sub_pixel_variance16x32,
1731 vp9_sub_pixel_avg_variance16x32, NULL, NULL, vp9_sad16x32x4d) 1810 vp9_sub_pixel_avg_variance16x32, NULL, NULL, vpx_sad16x32x4d)
1732 1811
1733 BFP(BLOCK_64X32, vp9_sad64x32, vp9_sad64x32_avg, 1812 BFP(BLOCK_64X32, vpx_sad64x32, vpx_sad64x32_avg,
1734 vp9_variance64x32, vp9_sub_pixel_variance64x32, 1813 vp9_variance64x32, vp9_sub_pixel_variance64x32,
1735 vp9_sub_pixel_avg_variance64x32, NULL, NULL, vp9_sad64x32x4d) 1814 vp9_sub_pixel_avg_variance64x32, NULL, NULL, vpx_sad64x32x4d)
1736 1815
1737 BFP(BLOCK_32X64, vp9_sad32x64, vp9_sad32x64_avg, 1816 BFP(BLOCK_32X64, vpx_sad32x64, vpx_sad32x64_avg,
1738 vp9_variance32x64, vp9_sub_pixel_variance32x64, 1817 vp9_variance32x64, vp9_sub_pixel_variance32x64,
1739 vp9_sub_pixel_avg_variance32x64, NULL, NULL, vp9_sad32x64x4d) 1818 vp9_sub_pixel_avg_variance32x64, NULL, NULL, vpx_sad32x64x4d)
1740 1819
1741 BFP(BLOCK_32X32, vp9_sad32x32, vp9_sad32x32_avg, 1820 BFP(BLOCK_32X32, vpx_sad32x32, vpx_sad32x32_avg,
1742 vp9_variance32x32, vp9_sub_pixel_variance32x32, 1821 vp9_variance32x32, vp9_sub_pixel_variance32x32,
1743 vp9_sub_pixel_avg_variance32x32, vp9_sad32x32x3, vp9_sad32x32x8, 1822 vp9_sub_pixel_avg_variance32x32, vpx_sad32x32x3, vpx_sad32x32x8,
1744 vp9_sad32x32x4d) 1823 vpx_sad32x32x4d)
1745 1824
1746 BFP(BLOCK_64X64, vp9_sad64x64, vp9_sad64x64_avg, 1825 BFP(BLOCK_64X64, vpx_sad64x64, vpx_sad64x64_avg,
1747 vp9_variance64x64, vp9_sub_pixel_variance64x64, 1826 vp9_variance64x64, vp9_sub_pixel_variance64x64,
1748 vp9_sub_pixel_avg_variance64x64, vp9_sad64x64x3, vp9_sad64x64x8, 1827 vp9_sub_pixel_avg_variance64x64, vpx_sad64x64x3, vpx_sad64x64x8,
1749 vp9_sad64x64x4d) 1828 vpx_sad64x64x4d)
1750 1829
1751 BFP(BLOCK_16X16, vp9_sad16x16, vp9_sad16x16_avg, 1830 BFP(BLOCK_16X16, vpx_sad16x16, vpx_sad16x16_avg,
1752 vp9_variance16x16, vp9_sub_pixel_variance16x16, 1831 vp9_variance16x16, vp9_sub_pixel_variance16x16,
1753 vp9_sub_pixel_avg_variance16x16, vp9_sad16x16x3, vp9_sad16x16x8, 1832 vp9_sub_pixel_avg_variance16x16, vpx_sad16x16x3, vpx_sad16x16x8,
1754 vp9_sad16x16x4d) 1833 vpx_sad16x16x4d)
1755 1834
1756 BFP(BLOCK_16X8, vp9_sad16x8, vp9_sad16x8_avg, 1835 BFP(BLOCK_16X8, vpx_sad16x8, vpx_sad16x8_avg,
1757 vp9_variance16x8, vp9_sub_pixel_variance16x8, 1836 vp9_variance16x8, vp9_sub_pixel_variance16x8,
1758 vp9_sub_pixel_avg_variance16x8, 1837 vp9_sub_pixel_avg_variance16x8,
1759 vp9_sad16x8x3, vp9_sad16x8x8, vp9_sad16x8x4d) 1838 vpx_sad16x8x3, vpx_sad16x8x8, vpx_sad16x8x4d)
1760 1839
1761 BFP(BLOCK_8X16, vp9_sad8x16, vp9_sad8x16_avg, 1840 BFP(BLOCK_8X16, vpx_sad8x16, vpx_sad8x16_avg,
1762 vp9_variance8x16, vp9_sub_pixel_variance8x16, 1841 vp9_variance8x16, vp9_sub_pixel_variance8x16,
1763 vp9_sub_pixel_avg_variance8x16, 1842 vp9_sub_pixel_avg_variance8x16,
1764 vp9_sad8x16x3, vp9_sad8x16x8, vp9_sad8x16x4d) 1843 vpx_sad8x16x3, vpx_sad8x16x8, vpx_sad8x16x4d)
1765 1844
1766 BFP(BLOCK_8X8, vp9_sad8x8, vp9_sad8x8_avg, 1845 BFP(BLOCK_8X8, vpx_sad8x8, vpx_sad8x8_avg,
1767 vp9_variance8x8, vp9_sub_pixel_variance8x8, 1846 vp9_variance8x8, vp9_sub_pixel_variance8x8,
1768 vp9_sub_pixel_avg_variance8x8, 1847 vp9_sub_pixel_avg_variance8x8,
1769 vp9_sad8x8x3, vp9_sad8x8x8, vp9_sad8x8x4d) 1848 vpx_sad8x8x3, vpx_sad8x8x8, vpx_sad8x8x4d)
1770 1849
1771 BFP(BLOCK_8X4, vp9_sad8x4, vp9_sad8x4_avg, 1850 BFP(BLOCK_8X4, vpx_sad8x4, vpx_sad8x4_avg,
1772 vp9_variance8x4, vp9_sub_pixel_variance8x4, 1851 vp9_variance8x4, vp9_sub_pixel_variance8x4,
1773 vp9_sub_pixel_avg_variance8x4, NULL, vp9_sad8x4x8, vp9_sad8x4x4d) 1852 vp9_sub_pixel_avg_variance8x4, NULL, vpx_sad8x4x8, vpx_sad8x4x4d)
1774 1853
1775 BFP(BLOCK_4X8, vp9_sad4x8, vp9_sad4x8_avg, 1854 BFP(BLOCK_4X8, vpx_sad4x8, vpx_sad4x8_avg,
1776 vp9_variance4x8, vp9_sub_pixel_variance4x8, 1855 vp9_variance4x8, vp9_sub_pixel_variance4x8,
1777 vp9_sub_pixel_avg_variance4x8, NULL, vp9_sad4x8x8, vp9_sad4x8x4d) 1856 vp9_sub_pixel_avg_variance4x8, NULL, vpx_sad4x8x8, vpx_sad4x8x4d)
1778 1857
1779 BFP(BLOCK_4X4, vp9_sad4x4, vp9_sad4x4_avg, 1858 BFP(BLOCK_4X4, vpx_sad4x4, vpx_sad4x4_avg,
1780 vp9_variance4x4, vp9_sub_pixel_variance4x4, 1859 vp9_variance4x4, vp9_sub_pixel_variance4x4,
1781 vp9_sub_pixel_avg_variance4x4, 1860 vp9_sub_pixel_avg_variance4x4,
1782 vp9_sad4x4x3, vp9_sad4x4x8, vp9_sad4x4x4d) 1861 vpx_sad4x4x3, vpx_sad4x4x8, vpx_sad4x4x4d)
1783 1862
1784 #if CONFIG_VP9_HIGHBITDEPTH 1863 #if CONFIG_VP9_HIGHBITDEPTH
1785 highbd_set_var_fns(cpi); 1864 highbd_set_var_fns(cpi);
1786 #endif 1865 #endif
1787 1866
1788 /* vp9_init_quantizer() is first called here. Add check in 1867 /* vp9_init_quantizer() is first called here. Add check in
1789 * vp9_frame_init_quantizer() so that vp9_init_quantizer is only 1868 * vp9_frame_init_quantizer() so that vp9_init_quantizer is only
1790 * called later when needed. This will avoid unnecessary calls of 1869 * called later when needed. This will avoid unnecessary calls of
1791 * vp9_init_quantizer() for every frame. 1870 * vp9_init_quantizer() for every frame.
1792 */ 1871 */
1793 vp9_init_quantizer(cpi); 1872 vp9_init_quantizer(cpi);
1794 1873
1795 vp9_loop_filter_init(cm); 1874 vp9_loop_filter_init(cm);
1796 1875
1797 cm->error.setjmp = 0; 1876 cm->error.setjmp = 0;
1798 1877
1799 return cpi; 1878 return cpi;
1800 } 1879 }
1880 #define SNPRINT(H, T) \
1881 snprintf((H) + strlen(H), sizeof(H) - strlen(H), (T))
1882
1883 #define SNPRINT2(H, T, V) \
1884 snprintf((H) + strlen(H), sizeof(H) - strlen(H), (T), (V))
1801 1885
1802 void vp9_remove_compressor(VP9_COMP *cpi) { 1886 void vp9_remove_compressor(VP9_COMP *cpi) {
1803 VP9_COMMON *const cm = &cpi->common; 1887 VP9_COMMON *const cm = &cpi->common;
1804 unsigned int i; 1888 unsigned int i;
1805 int t; 1889 int t;
1806 1890
1807 if (!cpi) 1891 if (!cpi)
1808 return; 1892 return;
1809 1893
1810 if (cpi && (cm->current_video_frame > 0)) { 1894 if (cpi && (cm->current_video_frame > 0)) {
1811 #if CONFIG_INTERNAL_STATS 1895 #if CONFIG_INTERNAL_STATS
1812
1813 vp9_clear_system_state(); 1896 vp9_clear_system_state();
1814 1897
1815 // printf("\n8x8-4x4:%d-%d\n", cpi->t8x8_count, cpi->t4x4_count);
1816 if (cpi->oxcf.pass != 1) { 1898 if (cpi->oxcf.pass != 1) {
1899 char headings[512] = {0};
1900 char results[512] = {0};
1817 FILE *f = fopen("opsnr.stt", "a"); 1901 FILE *f = fopen("opsnr.stt", "a");
1818 double time_encoded = (cpi->last_end_time_stamp_seen 1902 double time_encoded = (cpi->last_end_time_stamp_seen
1819 - cpi->first_time_stamp_ever) / 10000000.000; 1903 - cpi->first_time_stamp_ever) / 10000000.000;
1820 double total_encode_time = (cpi->time_receive_data + 1904 double total_encode_time = (cpi->time_receive_data +
1821 cpi->time_compress_data) / 1000.000; 1905 cpi->time_compress_data) / 1000.000;
1822 const double dr = 1906 const double dr =
1823 (double)cpi->bytes * (double) 8 / (double)1000 / time_encoded; 1907 (double)cpi->bytes * (double) 8 / (double)1000 / time_encoded;
1824 const double peak = (double)((1 << cpi->oxcf.input_bit_depth) - 1); 1908 const double peak = (double)((1 << cpi->oxcf.input_bit_depth) - 1);
1825 1909
1826 if (cpi->b_calculate_psnr) { 1910 if (cpi->b_calculate_psnr) {
1827 const double total_psnr = 1911 const double total_psnr =
1828 vpx_sse_to_psnr((double)cpi->total_samples, peak, 1912 vpx_sse_to_psnr((double)cpi->total_samples, peak,
1829 (double)cpi->total_sq_error); 1913 (double)cpi->total_sq_error);
1830 const double totalp_psnr = 1914 const double totalp_psnr =
1831 vpx_sse_to_psnr((double)cpi->totalp_samples, peak, 1915 vpx_sse_to_psnr((double)cpi->totalp_samples, peak,
1832 (double)cpi->totalp_sq_error); 1916 (double)cpi->totalp_sq_error);
1833 const double total_ssim = 100 * pow(cpi->summed_quality / 1917 const double total_ssim = 100 * pow(cpi->summed_quality /
1834 cpi->summed_weights, 8.0); 1918 cpi->summed_weights, 8.0);
1835 const double totalp_ssim = 100 * pow(cpi->summedp_quality / 1919 const double totalp_ssim = 100 * pow(cpi->summedp_quality /
1836 cpi->summedp_weights, 8.0); 1920 cpi->summedp_weights, 8.0);
1837 1921
1838 fprintf(f, "Bitrate\tAVGPsnr\tGLBPsnr\tAVPsnrP\tGLPsnrP\t" 1922 snprintf(headings, sizeof(headings),
1839 "VPXSSIM\tVPSSIMP\t Time(ms)\n"); 1923 "Bitrate\tAVGPsnr\tGLBPsnr\tAVPsnrP\tGLPsnrP\t"
1840 fprintf(f, "%7.2f\t%7.3f\t%7.3f\t%7.3f\t%7.3f\t%7.3f\t%7.3f\t%8.0f\n", 1924 "VPXSSIM\tVPSSIMP\tFASTSIM\tPSNRHVS\t"
1841 dr, cpi->total / cpi->count, total_psnr, 1925 "WstPsnr\tWstSsim\tWstFast\tWstHVS");
1842 cpi->totalp / cpi->count, totalp_psnr, total_ssim, totalp_ssim, 1926 snprintf(results, sizeof(results),
1843 total_encode_time); 1927 "%7.2f\t%7.3f\t%7.3f\t%7.3f\t%7.3f\t"
1844 } 1928 "%7.3f\t%7.3f\t%7.3f\t%7.3f"
1929 "%7.3f\t%7.3f\t%7.3f\t%7.3f",
1930 dr, cpi->psnr.stat[ALL] / cpi->count, total_psnr,
1931 cpi->psnrp.stat[ALL] / cpi->count, totalp_psnr,
1932 total_ssim, totalp_ssim,
1933 cpi->fastssim.stat[ALL] / cpi->count,
1934 cpi->psnrhvs.stat[ALL] / cpi->count,
1935 cpi->psnr.worst, cpi->worst_ssim, cpi->fastssim.worst,
1936 cpi->psnrhvs.worst);
1845 1937
1846 if (cpi->b_calculate_ssimg) { 1938 if (cpi->b_calculate_blockiness) {
1847 fprintf(f, "BitRate\tSSIM_Y\tSSIM_U\tSSIM_V\tSSIM_A\t Time(ms)\n"); 1939 SNPRINT(headings, "\t Block\tWstBlck");
1848 fprintf(f, "%7.2f\t%6.4f\t%6.4f\t%6.4f\t%6.4f\t%8.0f\n", dr, 1940 SNPRINT2(results, "\t%7.3f", cpi->total_blockiness / cpi->count);
1849 cpi->total_ssimg_y / cpi->count, 1941 SNPRINT2(results, "\t%7.3f", cpi->worst_blockiness);
1850 cpi->total_ssimg_u / cpi->count, 1942 }
1851 cpi->total_ssimg_v / cpi->count, 1943
1852 cpi->total_ssimg_all / cpi->count, total_encode_time); 1944 if (cpi->b_calculate_consistency) {
1945 double consistency =
1946 vpx_sse_to_psnr((double)cpi->totalp_samples, peak,
1947 (double)cpi->total_inconsistency);
1948
1949 SNPRINT(headings, "\tConsist\tWstCons");
1950 SNPRINT2(results, "\t%7.3f", consistency);
1951 SNPRINT2(results, "\t%7.3f", cpi->worst_consistency);
1952 }
1953
1954 if (cpi->b_calculate_ssimg) {
1955 SNPRINT(headings, "\t SSIMG\tWtSSIMG");
1956 SNPRINT2(results, "\t%7.3f", cpi->ssimg.stat[ALL] / cpi->count);
1957 SNPRINT2(results, "\t%7.3f", cpi->ssimg.worst);
1958 }
1959
1960 fprintf(f, "%s\t Time\n", headings);
1961 fprintf(f, "%s\t%8.0f\n", results, total_encode_time);
1853 } 1962 }
1854 1963
1855 fclose(f); 1964 fclose(f);
1856 } 1965 }
1857 1966
1858 #endif 1967 #endif
1859 1968
1860 #if 0 1969 #if 0
1861 { 1970 {
1862 printf("\n_pick_loop_filter_level:%d\n", cpi->time_pick_lpf / 1000); 1971 printf("\n_pick_loop_filter_level:%d\n", cpi->time_pick_lpf / 1000);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1901 } 2010 }
1902 2011
1903 #if CONFIG_FP_MB_STATS 2012 #if CONFIG_FP_MB_STATS
1904 if (cpi->use_fp_mb_stats) { 2013 if (cpi->use_fp_mb_stats) {
1905 vpx_free(cpi->twopass.frame_mb_stats_buf); 2014 vpx_free(cpi->twopass.frame_mb_stats_buf);
1906 cpi->twopass.frame_mb_stats_buf = NULL; 2015 cpi->twopass.frame_mb_stats_buf = NULL;
1907 } 2016 }
1908 #endif 2017 #endif
1909 2018
1910 vp9_remove_common(cm); 2019 vp9_remove_common(cm);
2020 vp9_free_ref_frame_buffers(cm->buffer_pool);
2021 #if CONFIG_VP9_POSTPROC
2022 vp9_free_postproc_buffers(cm);
2023 #endif
1911 vpx_free(cpi); 2024 vpx_free(cpi);
1912 2025
1913 #if CONFIG_VP9_TEMPORAL_DENOISING 2026 #if CONFIG_VP9_TEMPORAL_DENOISING
1914 #ifdef OUTPUT_YUV_DENOISED 2027 #ifdef OUTPUT_YUV_DENOISED
1915 fclose(yuv_denoised_file); 2028 fclose(yuv_denoised_file);
1916 #endif 2029 #endif
1917 #endif 2030 #endif
1918 #ifdef OUTPUT_YUV_SKINMAP 2031 #ifdef OUTPUT_YUV_SKINMAP
1919 fclose(yuv_skinmap_file); 2032 fclose(yuv_skinmap_file);
1920 #endif 2033 #endif
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
2486 } else { /* For non key/golden frames */ 2599 } else { /* For non key/golden frames */
2487 if (cpi->refresh_alt_ref_frame) { 2600 if (cpi->refresh_alt_ref_frame) {
2488 int arf_idx = cpi->alt_fb_idx; 2601 int arf_idx = cpi->alt_fb_idx;
2489 if ((cpi->oxcf.pass == 2) && cpi->multi_arf_allowed) { 2602 if ((cpi->oxcf.pass == 2) && cpi->multi_arf_allowed) {
2490 const GF_GROUP *const gf_group = &cpi->twopass.gf_group; 2603 const GF_GROUP *const gf_group = &cpi->twopass.gf_group;
2491 arf_idx = gf_group->arf_update_idx[gf_group->index]; 2604 arf_idx = gf_group->arf_update_idx[gf_group->index];
2492 } 2605 }
2493 2606
2494 ref_cnt_fb(pool->frame_bufs, 2607 ref_cnt_fb(pool->frame_bufs,
2495 &cm->ref_frame_map[arf_idx], cm->new_fb_idx); 2608 &cm->ref_frame_map[arf_idx], cm->new_fb_idx);
2496 vpx_memcpy(cpi->interp_filter_selected[ALTREF_FRAME], 2609 memcpy(cpi->interp_filter_selected[ALTREF_FRAME],
2497 cpi->interp_filter_selected[0], 2610 cpi->interp_filter_selected[0],
2498 sizeof(cpi->interp_filter_selected[0])); 2611 sizeof(cpi->interp_filter_selected[0]));
2499 } 2612 }
2500 2613
2501 if (cpi->refresh_golden_frame) { 2614 if (cpi->refresh_golden_frame) {
2502 ref_cnt_fb(pool->frame_bufs, 2615 ref_cnt_fb(pool->frame_bufs,
2503 &cm->ref_frame_map[cpi->gld_fb_idx], cm->new_fb_idx); 2616 &cm->ref_frame_map[cpi->gld_fb_idx], cm->new_fb_idx);
2504 if (!cpi->rc.is_src_frame_alt_ref) 2617 if (!cpi->rc.is_src_frame_alt_ref)
2505 vpx_memcpy(cpi->interp_filter_selected[GOLDEN_FRAME], 2618 memcpy(cpi->interp_filter_selected[GOLDEN_FRAME],
2506 cpi->interp_filter_selected[0], 2619 cpi->interp_filter_selected[0],
2507 sizeof(cpi->interp_filter_selected[0])); 2620 sizeof(cpi->interp_filter_selected[0]));
2508 else 2621 else
2509 vpx_memcpy(cpi->interp_filter_selected[GOLDEN_FRAME], 2622 memcpy(cpi->interp_filter_selected[GOLDEN_FRAME],
2510 cpi->interp_filter_selected[ALTREF_FRAME], 2623 cpi->interp_filter_selected[ALTREF_FRAME],
2511 sizeof(cpi->interp_filter_selected[ALTREF_FRAME])); 2624 sizeof(cpi->interp_filter_selected[ALTREF_FRAME]));
2512 } 2625 }
2513 } 2626 }
2514 2627
2515 if (cpi->refresh_last_frame) { 2628 if (cpi->refresh_last_frame) {
2516 ref_cnt_fb(pool->frame_bufs, 2629 ref_cnt_fb(pool->frame_bufs,
2517 &cm->ref_frame_map[cpi->lst_fb_idx], cm->new_fb_idx); 2630 &cm->ref_frame_map[cpi->lst_fb_idx], cm->new_fb_idx);
2518 if (!cpi->rc.is_src_frame_alt_ref) 2631 if (!cpi->rc.is_src_frame_alt_ref)
2519 vpx_memcpy(cpi->interp_filter_selected[LAST_FRAME], 2632 memcpy(cpi->interp_filter_selected[LAST_FRAME],
2520 cpi->interp_filter_selected[0], 2633 cpi->interp_filter_selected[0],
2521 sizeof(cpi->interp_filter_selected[0])); 2634 sizeof(cpi->interp_filter_selected[0]));
2522 } 2635 }
2523 #if CONFIG_VP9_TEMPORAL_DENOISING 2636 #if CONFIG_VP9_TEMPORAL_DENOISING
2524 if (cpi->oxcf.noise_sensitivity > 0) { 2637 if (cpi->oxcf.noise_sensitivity > 0) {
2525 vp9_denoiser_update_frame_info(&cpi->denoiser, 2638 vp9_denoiser_update_frame_info(&cpi->denoiser,
2526 *cpi->Source, 2639 *cpi->Source,
2527 cpi->common.frame_type, 2640 cpi->common.frame_type,
2528 cpi->refresh_alt_ref_frame, 2641 cpi->refresh_alt_ref_frame,
2529 cpi->refresh_golden_frame, 2642 cpi->refresh_golden_frame,
2530 cpi->refresh_last_frame); 2643 cpi->refresh_last_frame);
2531 } 2644 }
(...skipping 865 matching lines...) Expand 10 before | Expand all | Expand 10 after
3397 if (vp9_rc_drop_frame(cpi)) { 3510 if (vp9_rc_drop_frame(cpi)) {
3398 vp9_rc_postencode_update_drop_frame(cpi); 3511 vp9_rc_postencode_update_drop_frame(cpi);
3399 ++cm->current_video_frame; 3512 ++cm->current_video_frame;
3400 return; 3513 return;
3401 } 3514 }
3402 } 3515 }
3403 3516
3404 vp9_clear_system_state(); 3517 vp9_clear_system_state();
3405 3518
3406 #if CONFIG_INTERNAL_STATS 3519 #if CONFIG_INTERNAL_STATS
3407 vpx_memset(cpi->mode_chosen_counts, 0, 3520 memset(cpi->mode_chosen_counts, 0,
3408 MAX_MODES * sizeof(*cpi->mode_chosen_counts)); 3521 MAX_MODES * sizeof(*cpi->mode_chosen_counts));
3409 #endif 3522 #endif
3410 3523
3411 if (cpi->sf.recode_loop == DISALLOW_RECODE) { 3524 if (cpi->sf.recode_loop == DISALLOW_RECODE) {
3412 encode_without_recode_loop(cpi); 3525 encode_without_recode_loop(cpi);
3413 } else { 3526 } else {
3414 encode_with_recode_loop(cpi, size, dest); 3527 encode_with_recode_loop(cpi, size, dest);
3415 } 3528 }
3416 3529
3417 #if CONFIG_VP9_TEMPORAL_DENOISING 3530 #if CONFIG_VP9_TEMPORAL_DENOISING
3418 #ifdef OUTPUT_YUV_DENOISED 3531 #ifdef OUTPUT_YUV_DENOISED
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
3748 if (rc->is_src_frame_alt_ref) { 3861 if (rc->is_src_frame_alt_ref) {
3749 // Current frame is an ARF overlay frame. 3862 // Current frame is an ARF overlay frame.
3750 cpi->alt_ref_source = NULL; 3863 cpi->alt_ref_source = NULL;
3751 3864
3752 // Don't refresh the last buffer for an ARF overlay frame. It will 3865 // Don't refresh the last buffer for an ARF overlay frame. It will
3753 // become the GF so preserve last as an alternative prediction option. 3866 // become the GF so preserve last as an alternative prediction option.
3754 cpi->refresh_last_frame = 0; 3867 cpi->refresh_last_frame = 0;
3755 } 3868 }
3756 } 3869 }
3757 3870
3871 #if CONFIG_INTERNAL_STATS
3872 extern double vp9_get_blockiness(const unsigned char *img1, int img1_pitch,
3873 const unsigned char *img2, int img2_pitch,
3874 int width, int height);
3875 #endif
3876
3877 void adjust_image_stat(double y, double u, double v, double all, ImageStat *s) {
3878 s->stat[Y] += y;
3879 s->stat[U] += u;
3880 s->stat[V] += v;
3881 s->stat[ALL] += all;
3882 s->worst = MIN(s->worst, all);
3883 }
3884
3758 int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags, 3885 int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags,
3759 size_t *size, uint8_t *dest, 3886 size_t *size, uint8_t *dest,
3760 int64_t *time_stamp, int64_t *time_end, int flush) { 3887 int64_t *time_stamp, int64_t *time_end, int flush) {
3761 const VP9EncoderConfig *const oxcf = &cpi->oxcf; 3888 const VP9EncoderConfig *const oxcf = &cpi->oxcf;
3762 VP9_COMMON *const cm = &cpi->common; 3889 VP9_COMMON *const cm = &cpi->common;
3763 BufferPool *const pool = cm->buffer_pool; 3890 BufferPool *const pool = cm->buffer_pool;
3764 RATE_CONTROL *const rc = &cpi->rc; 3891 RATE_CONTROL *const rc = &cpi->rc;
3765 struct vpx_usec_timer cmptimer; 3892 struct vpx_usec_timer cmptimer;
3766 YV12_BUFFER_CONFIG *force_src_buffer = NULL; 3893 YV12_BUFFER_CONFIG *force_src_buffer = NULL;
3767 struct lookahead_entry *last_source = NULL; 3894 struct lookahead_entry *last_source = NULL;
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
4000 4127
4001 vpx_usec_timer_mark(&cmptimer); 4128 vpx_usec_timer_mark(&cmptimer);
4002 cpi->time_compress_data += vpx_usec_timer_elapsed(&cmptimer); 4129 cpi->time_compress_data += vpx_usec_timer_elapsed(&cmptimer);
4003 4130
4004 if (cpi->b_calculate_psnr && oxcf->pass != 1 && cm->show_frame) 4131 if (cpi->b_calculate_psnr && oxcf->pass != 1 && cm->show_frame)
4005 generate_psnr_packet(cpi); 4132 generate_psnr_packet(cpi);
4006 4133
4007 #if CONFIG_INTERNAL_STATS 4134 #if CONFIG_INTERNAL_STATS
4008 4135
4009 if (oxcf->pass != 1) { 4136 if (oxcf->pass != 1) {
4137 double samples;
4010 cpi->bytes += (int)(*size); 4138 cpi->bytes += (int)(*size);
4011 4139
4012 if (cm->show_frame) { 4140 if (cm->show_frame) {
4013 cpi->count++; 4141 cpi->count++;
4014 4142
4015 if (cpi->b_calculate_psnr) { 4143 if (cpi->b_calculate_psnr) {
4016 YV12_BUFFER_CONFIG *orig = cpi->Source; 4144 YV12_BUFFER_CONFIG *orig = cpi->Source;
4017 YV12_BUFFER_CONFIG *recon = cpi->common.frame_to_show; 4145 YV12_BUFFER_CONFIG *recon = cpi->common.frame_to_show;
4018 YV12_BUFFER_CONFIG *pp = &cm->post_proc_buffer; 4146 YV12_BUFFER_CONFIG *pp = &cm->post_proc_buffer;
4019 PSNR_STATS psnr; 4147 PSNR_STATS psnr;
4020 #if CONFIG_VP9_HIGHBITDEPTH 4148 #if CONFIG_VP9_HIGHBITDEPTH
4021 calc_highbd_psnr(orig, recon, &psnr, cpi->td.mb.e_mbd.bd, 4149 calc_highbd_psnr(orig, recon, &psnr, cpi->td.mb.e_mbd.bd,
4022 cpi->oxcf.input_bit_depth); 4150 cpi->oxcf.input_bit_depth);
4023 #else 4151 #else
4024 calc_psnr(orig, recon, &psnr); 4152 calc_psnr(orig, recon, &psnr);
4025 #endif // CONFIG_VP9_HIGHBITDEPTH 4153 #endif // CONFIG_VP9_HIGHBITDEPTH
4026 4154
4027 cpi->total += psnr.psnr[0]; 4155 adjust_image_stat(psnr.psnr[1], psnr.psnr[2], psnr.psnr[3],
4028 cpi->total_y += psnr.psnr[1]; 4156 psnr.psnr[0], &cpi->psnr);
4029 cpi->total_u += psnr.psnr[2];
4030 cpi->total_v += psnr.psnr[3];
4031 cpi->total_sq_error += psnr.sse[0]; 4157 cpi->total_sq_error += psnr.sse[0];
4032 cpi->total_samples += psnr.samples[0]; 4158 cpi->total_samples += psnr.samples[0];
4159 samples = psnr.samples[0];
4033 4160
4034 { 4161 {
4035 PSNR_STATS psnr2; 4162 PSNR_STATS psnr2;
4036 double frame_ssim2 = 0, weight = 0; 4163 double frame_ssim2 = 0, weight = 0;
4037 #if CONFIG_VP9_POSTPROC 4164 #if CONFIG_VP9_POSTPROC
4038 if (vp9_alloc_frame_buffer(&cm->post_proc_buffer, 4165 if (vp9_alloc_frame_buffer(&cm->post_proc_buffer,
4039 recon->y_crop_width, recon->y_crop_height, 4166 recon->y_crop_width, recon->y_crop_height,
4040 cm->subsampling_x, cm->subsampling_y, 4167 cm->subsampling_x, cm->subsampling_y,
4041 #if CONFIG_VP9_HIGHBITDEPTH 4168 #if CONFIG_VP9_HIGHBITDEPTH
4042 cm->use_highbitdepth, 4169 cm->use_highbitdepth,
4043 #endif 4170 #endif
4044 VP9_ENC_BORDER_IN_PIXELS, 4171 VP9_ENC_BORDER_IN_PIXELS,
4045 cm->byte_alignment) < 0) { 4172 cm->byte_alignment) < 0) {
4046 vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, 4173 vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
4047 "Failed to allocate post processing buffer"); 4174 "Failed to allocate post processing buffer");
4048 } 4175 }
4049 4176
4050 vp9_deblock(cm->frame_to_show, &cm->post_proc_buffer, 4177 vp9_deblock(cm->frame_to_show, &cm->post_proc_buffer,
4051 cm->lf.filter_level * 10 / 6); 4178 cm->lf.filter_level * 10 / 6);
4052 #endif 4179 #endif
4053 vp9_clear_system_state(); 4180 vp9_clear_system_state();
4054 4181
4055 #if CONFIG_VP9_HIGHBITDEPTH 4182 #if CONFIG_VP9_HIGHBITDEPTH
4056 calc_highbd_psnr(orig, pp, &psnr, cpi->td.mb.e_mbd.bd, 4183 calc_highbd_psnr(orig, pp, &psnr, cpi->td.mb.e_mbd.bd,
4057 cpi->oxcf.input_bit_depth); 4184 cpi->oxcf.input_bit_depth);
4058 #else 4185 #else
4059 calc_psnr(orig, pp, &psnr2); 4186 calc_psnr(orig, pp, &psnr2);
4060 #endif // CONFIG_VP9_HIGHBITDEPTH 4187 #endif // CONFIG_VP9_HIGHBITDEPTH
4061 4188
4062 cpi->totalp += psnr2.psnr[0];
4063 cpi->totalp_y += psnr2.psnr[1];
4064 cpi->totalp_u += psnr2.psnr[2];
4065 cpi->totalp_v += psnr2.psnr[3];
4066 cpi->totalp_sq_error += psnr2.sse[0]; 4189 cpi->totalp_sq_error += psnr2.sse[0];
4067 cpi->totalp_samples += psnr2.samples[0]; 4190 cpi->totalp_samples += psnr2.samples[0];
4191 adjust_image_stat(psnr2.psnr[1], psnr2.psnr[2], psnr2.psnr[3],
4192 psnr2.psnr[0], &cpi->psnrp);
4068 4193
4069 #if CONFIG_VP9_HIGHBITDEPTH 4194 #if CONFIG_VP9_HIGHBITDEPTH
4070 if (cm->use_highbitdepth) { 4195 if (cm->use_highbitdepth) {
4071 frame_ssim2 = vp9_highbd_calc_ssim(orig, recon, &weight, 4196 frame_ssim2 = vp9_highbd_calc_ssim(orig, recon, &weight,
4072 (int)cm->bit_depth); 4197 (int)cm->bit_depth);
4073 } else { 4198 } else {
4074 frame_ssim2 = vp9_calc_ssim(orig, recon, &weight); 4199 frame_ssim2 = vp9_calc_ssim(orig, recon, &weight);
4075 } 4200 }
4076 #else 4201 #else
4077 frame_ssim2 = vp9_calc_ssim(orig, recon, &weight); 4202 frame_ssim2 = vp9_calc_ssim(orig, recon, &weight);
4078 #endif // CONFIG_VP9_HIGHBITDEPTH 4203 #endif // CONFIG_VP9_HIGHBITDEPTH
4079 4204
4205 cpi->worst_ssim= MIN(cpi->worst_ssim, frame_ssim2);
4080 cpi->summed_quality += frame_ssim2 * weight; 4206 cpi->summed_quality += frame_ssim2 * weight;
4081 cpi->summed_weights += weight; 4207 cpi->summed_weights += weight;
4082 4208
4083 #if CONFIG_VP9_HIGHBITDEPTH 4209 #if CONFIG_VP9_HIGHBITDEPTH
4084 if (cm->use_highbitdepth) { 4210 if (cm->use_highbitdepth) {
4085 frame_ssim2 = vp9_highbd_calc_ssim( 4211 frame_ssim2 = vp9_highbd_calc_ssim(
4086 orig, &cm->post_proc_buffer, &weight, (int)cm->bit_depth); 4212 orig, &cm->post_proc_buffer, &weight, (int)cm->bit_depth);
4087 } else { 4213 } else {
4088 frame_ssim2 = vp9_calc_ssim(orig, &cm->post_proc_buffer, &weight); 4214 frame_ssim2 = vp9_calc_ssim(orig, &cm->post_proc_buffer, &weight);
4089 } 4215 }
4090 #else 4216 #else
4091 frame_ssim2 = vp9_calc_ssim(orig, &cm->post_proc_buffer, &weight); 4217 frame_ssim2 = vp9_calc_ssim(orig, &cm->post_proc_buffer, &weight);
4092 #endif // CONFIG_VP9_HIGHBITDEPTH 4218 #endif // CONFIG_VP9_HIGHBITDEPTH
4093 4219
4094 cpi->summedp_quality += frame_ssim2 * weight; 4220 cpi->summedp_quality += frame_ssim2 * weight;
4095 cpi->summedp_weights += weight; 4221 cpi->summedp_weights += weight;
4096 #if 0 4222 #if 0
4097 { 4223 {
4098 FILE *f = fopen("q_used.stt", "a"); 4224 FILE *f = fopen("q_used.stt", "a");
4099 fprintf(f, "%5d : Y%f7.3:U%f7.3:V%f7.3:F%f7.3:S%7.3f\n", 4225 fprintf(f, "%5d : Y%f7.3:U%f7.3:V%f7.3:F%f7.3:S%7.3f\n",
4100 cpi->common.current_video_frame, y2, u2, v2, 4226 cpi->common.current_video_frame, y2, u2, v2,
4101 frame_psnr2, frame_ssim2); 4227 frame_psnr2, frame_ssim2);
4102 fclose(f); 4228 fclose(f);
4103 } 4229 }
4104 #endif 4230 #endif
4105 } 4231 }
4106 } 4232 }
4233 if (cpi->b_calculate_blockiness) {
4234 double frame_blockiness = vp9_get_blockiness(
4235 cpi->Source->y_buffer, cpi->Source->y_stride,
4236 cm->frame_to_show->y_buffer, cm->frame_to_show->y_stride,
4237 cpi->Source->y_width, cpi->Source->y_height);
4238 cpi->worst_blockiness = MAX(cpi->worst_blockiness, frame_blockiness);
4239 cpi->total_blockiness += frame_blockiness;
4240 }
4107 4241
4242 if (cpi->b_calculate_consistency) {
4243 double this_inconsistency = vp9_get_ssim_metrics(
4244 cpi->Source->y_buffer, cpi->Source->y_stride,
4245 cm->frame_to_show->y_buffer, cm->frame_to_show->y_stride,
4246 cpi->Source->y_width, cpi->Source->y_height, cpi->ssim_vars,
4247 &cpi->metrics, 1);
4248
4249 const double peak = (double)((1 << cpi->oxcf.input_bit_depth) - 1);
4250
4251
4252 double consistency = vpx_sse_to_psnr(samples, peak,
4253 (double)cpi->total_inconsistency);
4254
4255 if (consistency > 0.0)
4256 cpi->worst_consistency = MIN(cpi->worst_consistency,
4257 consistency);
4258 cpi->total_inconsistency += this_inconsistency;
4259 }
4108 4260
4109 if (cpi->b_calculate_ssimg) { 4261 if (cpi->b_calculate_ssimg) {
4110 double y, u, v, frame_all; 4262 double y, u, v, frame_all;
4111 #if CONFIG_VP9_HIGHBITDEPTH 4263 #if CONFIG_VP9_HIGHBITDEPTH
4112 if (cm->use_highbitdepth) { 4264 if (cm->use_highbitdepth) {
4113 frame_all = vp9_highbd_calc_ssimg(cpi->Source, cm->frame_to_show, &y, 4265 frame_all = vp9_highbd_calc_ssimg(cpi->Source, cm->frame_to_show, &y,
4114 &u, &v, (int)cm->bit_depth); 4266 &u, &v, (int)cm->bit_depth);
4115 } else { 4267 } else {
4116 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u, 4268 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u,
4117 &v); 4269 &v);
4118 } 4270 }
4119 #else 4271 #else
4120 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u, &v); 4272 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u, &v);
4121 #endif // CONFIG_VP9_HIGHBITDEPTH 4273 #endif // CONFIG_VP9_HIGHBITDEPTH
4122 cpi->total_ssimg_y += y; 4274 adjust_image_stat(y, u, v, frame_all, &cpi->ssimg);
4123 cpi->total_ssimg_u += u; 4275 }
4124 cpi->total_ssimg_v += v; 4276 {
4125 cpi->total_ssimg_all += frame_all; 4277 double y, u, v, frame_all;
4278 frame_all = vp9_calc_fastssim(cpi->Source, cm->frame_to_show, &y, &u,
4279 &v);
4280 adjust_image_stat(y, u, v, frame_all, &cpi->fastssim);
4281 /* TODO(JBB): add 10/12 bit support */
4282 }
4283 {
4284 double y, u, v, frame_all;
4285 frame_all = vp9_psnrhvs(cpi->Source, cm->frame_to_show, &y, &u, &v);
4286 adjust_image_stat(y, u, v, frame_all, &cpi->psnrhvs);
4126 } 4287 }
4127 } 4288 }
4128 } 4289 }
4129 4290
4130 #endif 4291 #endif
4131 4292
4132 if (is_two_pass_svc(cpi)) { 4293 if (is_two_pass_svc(cpi)) {
4133 if (cpi->svc.encode_empty_frame_state == ENCODING) 4294 if (cpi->svc.encode_empty_frame_state == ENCODING)
4134 cpi->svc.encode_empty_frame_state = ENCODED; 4295 cpi->svc.encode_empty_frame_state = ENCODED;
4135 4296
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
4295 if (flags & VP8_EFLAG_NO_UPD_ARF) 4456 if (flags & VP8_EFLAG_NO_UPD_ARF)
4296 upd ^= VP9_ALT_FLAG; 4457 upd ^= VP9_ALT_FLAG;
4297 4458
4298 vp9_update_reference(cpi, upd); 4459 vp9_update_reference(cpi, upd);
4299 } 4460 }
4300 4461
4301 if (flags & VP8_EFLAG_NO_UPD_ENTROPY) { 4462 if (flags & VP8_EFLAG_NO_UPD_ENTROPY) {
4302 vp9_update_entropy(cpi, 0); 4463 vp9_update_entropy(cpi, 0);
4303 } 4464 }
4304 } 4465 }
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_encoder.h ('k') | source/libvpx/vp9/encoder/vp9_ethread.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698