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

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

Issue 54923004: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_encodemv.h ('k') | source/libvpx/vp9/encoder/vp9_firstpass.h » ('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 12
12 #include "vp9/common/vp9_common.h" 13 #include "vp9/common/vp9_common.h"
13 #include "vp9/encoder/vp9_encodemv.h"
14 #include "vp9/common/vp9_entropymode.h" 14 #include "vp9/common/vp9_entropymode.h"
15 #include "vp9/common/vp9_systemdependent.h" 15 #include "vp9/common/vp9_systemdependent.h"
16 #include "vp9/encoder/vp9_encodemv.h"
16 17
17 #include <math.h>
18 18
19 #ifdef ENTROPY_STATS 19 #ifdef ENTROPY_STATS
20 extern unsigned int active_section; 20 extern unsigned int active_section;
21 #endif 21 #endif
22 22
23 static void encode_mv_component(vp9_writer* w, int comp, 23 static void encode_mv_component(vp9_writer* w, int comp,
24 const nmv_component* mvcomp, int usehp) { 24 const nmv_component* mvcomp, int usehp) {
25 int offset; 25 int offset;
26 const int sign = comp < 0; 26 const int sign = comp < 0;
27 const int mag = sign ? -comp : comp; 27 const int mag = sign ? -comp : comp;
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 int mvc_flag_v, 307 int mvc_flag_v,
308 int mvc_flag_h) { 308 int mvc_flag_h) {
309 vp9_clear_system_state(); 309 vp9_clear_system_state();
310 vp9_cost_tokens(mvjoint, mvctx->joints, vp9_mv_joint_tree); 310 vp9_cost_tokens(mvjoint, mvctx->joints, vp9_mv_joint_tree);
311 if (mvc_flag_v) 311 if (mvc_flag_v)
312 build_nmv_component_cost_table(mvcost[0], &mvctx->comps[0], usehp); 312 build_nmv_component_cost_table(mvcost[0], &mvctx->comps[0], usehp);
313 if (mvc_flag_h) 313 if (mvc_flag_h)
314 build_nmv_component_cost_table(mvcost[1], &mvctx->comps[1], usehp); 314 build_nmv_component_cost_table(mvcost[1], &mvctx->comps[1], usehp);
315 } 315 }
316 316
317 void vp9_update_nmv_count(VP9_COMP *cpi, MACROBLOCK *x, 317 static void inc_mvs(int_mv mv[2], int_mv ref[2], int is_compound,
318 int_mv *best_ref_mv, int_mv *second_best_ref_mv) { 318 nmv_context_counts *counts) {
319 int i;
320 for (i = 0; i < 1 + is_compound; ++i) {
321 const MV diff = { mv[i].as_mv.row - ref[i].as_mv.row,
322 mv[i].as_mv.col - ref[i].as_mv.col };
323 vp9_inc_mv(&diff, counts);
324 }
325 }
326
327 void vp9_update_mv_count(VP9_COMP *cpi, MACROBLOCK *x, int_mv best_ref_mv[2]) {
319 MODE_INFO *mi = x->e_mbd.mi_8x8[0]; 328 MODE_INFO *mi = x->e_mbd.mi_8x8[0];
320 MB_MODE_INFO *const mbmi = &mi->mbmi; 329 MB_MODE_INFO *const mbmi = &mi->mbmi;
321 MV diff; 330 const int is_compound = has_second_ref(mbmi);
322 const int num_4x4_blocks_wide = num_4x4_blocks_wide_lookup[mbmi->sb_type];
323 const int num_4x4_blocks_high = num_4x4_blocks_high_lookup[mbmi->sb_type];
324 int idx, idy;
325 331
326 if (mbmi->sb_type < BLOCK_8X8) { 332 if (mbmi->sb_type < BLOCK_8X8) {
327 PARTITION_INFO *pi = x->partition_info; 333 const int num_4x4_w = num_4x4_blocks_wide_lookup[mbmi->sb_type];
328 for (idy = 0; idy < 2; idy += num_4x4_blocks_high) { 334 const int num_4x4_h = num_4x4_blocks_high_lookup[mbmi->sb_type];
329 for (idx = 0; idx < 2; idx += num_4x4_blocks_wide) { 335 int idx, idy;
336
337 for (idy = 0; idy < 2; idy += num_4x4_h) {
338 for (idx = 0; idx < 2; idx += num_4x4_w) {
330 const int i = idy * 2 + idx; 339 const int i = idy * 2 + idx;
331 if (pi->bmi[i].mode == NEWMV) { 340 if (mi->bmi[i].as_mode == NEWMV)
332 diff.row = mi->bmi[i].as_mv[0].as_mv.row - best_ref_mv->as_mv.row; 341 inc_mvs(mi->bmi[i].as_mv, best_ref_mv, is_compound, &cpi->NMVcount);
333 diff.col = mi->bmi[i].as_mv[0].as_mv.col - best_ref_mv->as_mv.col;
334 vp9_inc_mv(&diff, &cpi->NMVcount);
335
336 if (mi->mbmi.ref_frame[1] > INTRA_FRAME) {
337 diff.row = mi->bmi[i].as_mv[1].as_mv.row -
338 second_best_ref_mv->as_mv.row;
339 diff.col = mi->bmi[i].as_mv[1].as_mv.col -
340 second_best_ref_mv->as_mv.col;
341 vp9_inc_mv(&diff, &cpi->NMVcount);
342 }
343 }
344 } 342 }
345 } 343 }
346 } else if (mbmi->mode == NEWMV) { 344 } else if (mbmi->mode == NEWMV) {
347 diff.row = mbmi->mv[0].as_mv.row - best_ref_mv->as_mv.row; 345 inc_mvs(mbmi->mv, best_ref_mv, is_compound, &cpi->NMVcount);
348 diff.col = mbmi->mv[0].as_mv.col - best_ref_mv->as_mv.col;
349 vp9_inc_mv(&diff, &cpi->NMVcount);
350
351 if (mbmi->ref_frame[1] > INTRA_FRAME) {
352 diff.row = mbmi->mv[1].as_mv.row - second_best_ref_mv->as_mv.row;
353 diff.col = mbmi->mv[1].as_mv.col - second_best_ref_mv->as_mv.col;
354 vp9_inc_mv(&diff, &cpi->NMVcount);
355 }
356 } 346 }
357 } 347 }
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_encodemv.h ('k') | source/libvpx/vp9/encoder/vp9_firstpass.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698