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

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

Issue 958693004: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: Created 5 years, 9 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.c ('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) 2014 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2014 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 "vp9/encoder/vp9_encodeframe.h" 11 #include "vp9/encoder/vp9_encodeframe.h"
12 #include "vp9/encoder/vp9_encoder.h" 12 #include "vp9/encoder/vp9_encoder.h"
13 #include "vp9/encoder/vp9_ethread.h" 13 #include "vp9/encoder/vp9_ethread.h"
14 14
15 static void accumulate_frame_counts(VP9_COMMON *cm, ThreadData *td) {
16 int i, j, k, l, m;
17
18 for (i = 0; i < BLOCK_SIZE_GROUPS; i++)
19 for (j = 0; j < INTRA_MODES; j++)
20 cm->counts.y_mode[i][j] += td->counts->y_mode[i][j];
21
22 for (i = 0; i < INTRA_MODES; i++)
23 for (j = 0; j < INTRA_MODES; j++)
24 cm->counts.uv_mode[i][j] += td->counts->uv_mode[i][j];
25
26 for (i = 0; i < PARTITION_CONTEXTS; i++)
27 for (j = 0; j < PARTITION_TYPES; j++)
28 cm->counts.partition[i][j] += td->counts->partition[i][j];
29
30 for (i = 0; i < TX_SIZES; i++)
31 for (j = 0; j < PLANE_TYPES; j++)
32 for (k = 0; k < REF_TYPES; k++)
33 for (l = 0; l < COEF_BANDS; l++)
34 for (m = 0; m < COEFF_CONTEXTS; m++)
35 cm->counts.eob_branch[i][j][k][l][m] +=
36 td->counts->eob_branch[i][j][k][l][m];
37 // cm->counts.coef is only updated at frame level, so not need
38 // to accumulate it here.
39 // for (n = 0; n < UNCONSTRAINED_NODES + 1; n++)
40 // cm->counts.coef[i][j][k][l][m][n] +=
41 // td->counts->coef[i][j][k][l][m][n];
42
43 for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; i++)
44 for (j = 0; j < SWITCHABLE_FILTERS; j++)
45 cm->counts.switchable_interp[i][j] += td->counts->switchable_interp[i][j];
46
47 for (i = 0; i < INTER_MODE_CONTEXTS; i++)
48 for (j = 0; j < INTER_MODES; j++)
49 cm->counts.inter_mode[i][j] += td->counts->inter_mode[i][j];
50
51 for (i = 0; i < INTRA_INTER_CONTEXTS; i++)
52 for (j = 0; j < 2; j++)
53 cm->counts.intra_inter[i][j] += td->counts->intra_inter[i][j];
54
55 for (i = 0; i < COMP_INTER_CONTEXTS; i++)
56 for (j = 0; j < 2; j++)
57 cm->counts.comp_inter[i][j] += td->counts->comp_inter[i][j];
58
59 for (i = 0; i < REF_CONTEXTS; i++)
60 for (j = 0; j < 2; j++)
61 for (k = 0; k < 2; k++)
62 cm->counts.single_ref[i][j][k] += td->counts->single_ref[i][j][k];
63
64 for (i = 0; i < REF_CONTEXTS; i++)
65 for (j = 0; j < 2; j++)
66 cm->counts.comp_ref[i][j] += td->counts->comp_ref[i][j];
67
68 for (i = 0; i < TX_SIZE_CONTEXTS; i++) {
69 for (j = 0; j < TX_SIZES; j++)
70 cm->counts.tx.p32x32[i][j] += td->counts->tx.p32x32[i][j];
71
72 for (j = 0; j < TX_SIZES - 1; j++)
73 cm->counts.tx.p16x16[i][j] += td->counts->tx.p16x16[i][j];
74
75 for (j = 0; j < TX_SIZES - 2; j++)
76 cm->counts.tx.p8x8[i][j] += td->counts->tx.p8x8[i][j];
77 }
78
79 for (i = 0; i < SKIP_CONTEXTS; i++)
80 for (j = 0; j < 2; j++)
81 cm->counts.skip[i][j] += td->counts->skip[i][j];
82
83 for (i = 0; i < MV_JOINTS; i++)
84 cm->counts.mv.joints[i] += td->counts->mv.joints[i];
85
86 for (k = 0; k < 2; k++) {
87 nmv_component_counts *comps = &cm->counts.mv.comps[k];
88 nmv_component_counts *comps_t = &td->counts->mv.comps[k];
89
90 for (i = 0; i < 2; i++) {
91 comps->sign[i] += comps_t->sign[i];
92 comps->class0_hp[i] += comps_t->class0_hp[i];
93 comps->hp[i] += comps_t->hp[i];
94 }
95
96 for (i = 0; i < MV_CLASSES; i++)
97 comps->classes[i] += comps_t->classes[i];
98
99 for (i = 0; i < CLASS0_SIZE; i++) {
100 comps->class0[i] += comps_t->class0[i];
101 for (j = 0; j < MV_FP_SIZE; j++)
102 comps->class0_fp[i][j] += comps_t->class0_fp[i][j];
103 }
104
105 for (i = 0; i < MV_OFFSET_BITS; i++)
106 for (j = 0; j < 2; j++)
107 comps->bits[i][j] += comps_t->bits[i][j];
108
109 for (i = 0; i < MV_FP_SIZE; i++)
110 comps->fp[i] += comps_t->fp[i];
111 }
112 }
113
114 static void accumulate_rd_opt(ThreadData *td, ThreadData *td_t) { 15 static void accumulate_rd_opt(ThreadData *td, ThreadData *td_t) {
115 int i, j, k, l, m, n; 16 int i, j, k, l, m, n;
116 17
117 for (i = 0; i < REFERENCE_MODES; i++) 18 for (i = 0; i < REFERENCE_MODES; i++)
118 td->rd_counts.comp_pred_diff[i] += td_t->rd_counts.comp_pred_diff[i]; 19 td->rd_counts.comp_pred_diff[i] += td_t->rd_counts.comp_pred_diff[i];
119 20
120 for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; i++) 21 for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; i++)
121 td->rd_counts.filter_diff[i] += td_t->rd_counts.filter_diff[i]; 22 td->rd_counts.filter_diff[i] += td_t->rd_counts.filter_diff[i];
122 23
123 for (i = 0; i < TX_MODES; i++) 24 for (i = 0; i < TX_MODES; i++)
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 VP9Worker *const worker = &cpi->workers[i]; 161 VP9Worker *const worker = &cpi->workers[i];
261 winterface->sync(worker); 162 winterface->sync(worker);
262 } 163 }
263 164
264 for (i = 0; i < num_workers; i++) { 165 for (i = 0; i < num_workers; i++) {
265 VP9Worker *const worker = &cpi->workers[i]; 166 VP9Worker *const worker = &cpi->workers[i];
266 EncWorkerData *const thread_data = (EncWorkerData*)worker->data1; 167 EncWorkerData *const thread_data = (EncWorkerData*)worker->data1;
267 168
268 // Accumulate counters. 169 // Accumulate counters.
269 if (i < num_workers - 1) { 170 if (i < num_workers - 1) {
270 accumulate_frame_counts(&cpi->common, thread_data->td); 171 vp9_accumulate_frame_counts(cm, thread_data->td->counts, 0);
271 accumulate_rd_opt(&cpi->td, thread_data->td); 172 accumulate_rd_opt(&cpi->td, thread_data->td);
272 } 173 }
273 } 174 }
274 } 175 }
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_encoder.c ('k') | source/libvpx/vp9/encoder/vp9_firstpass.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698