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

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

Issue 756673003: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years 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_pickmode.c ('k') | source/libvpx/vp9/encoder/vp9_ratectrl.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
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 if (!skip_block) { 50 if (!skip_block) {
51 const int rc = 0; 51 const int rc = 0;
52 const int coeff = coeff_ptr[rc]; 52 const int coeff = coeff_ptr[rc];
53 const int coeff_sign = (coeff >> 31); 53 const int coeff_sign = (coeff >> 31);
54 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign; 54 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
55 55
56 const int64_t tmp = 56 const int64_t tmp =
57 (clamp(abs_coeff + round_ptr[rc != 0], INT32_MIN, INT32_MAX) * 57 (clamp(abs_coeff + round_ptr[rc != 0], INT32_MIN, INT32_MAX) *
58 quant) >> 16; 58 quant) >> 16;
59 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; 59 qcoeff_ptr[rc] = (tran_low_t)((tmp ^ coeff_sign) - coeff_sign);
60 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr; 60 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr;
61 if (tmp) 61 if (tmp)
62 eob = 0; 62 eob = 0;
63 } 63 }
64 *eob_ptr = eob + 1; 64 *eob_ptr = eob + 1;
65 } 65 }
66 #endif 66 #endif
67 67
68 void vp9_quantize_dc_32x32(const tran_low_t *coeff_ptr, int skip_block, 68 void vp9_quantize_dc_32x32(const tran_low_t *coeff_ptr, int skip_block,
69 const int16_t *round_ptr, const int16_t quant, 69 const int16_t *round_ptr, const int16_t quant,
(...skipping 30 matching lines...) Expand all
100 100
101 if (!skip_block) { 101 if (!skip_block) {
102 const int rc = 0; 102 const int rc = 0;
103 const int coeff = coeff_ptr[rc]; 103 const int coeff = coeff_ptr[rc];
104 const int coeff_sign = (coeff >> 31); 104 const int coeff_sign = (coeff >> 31);
105 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign; 105 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
106 106
107 const int64_t tmp = 107 const int64_t tmp =
108 (clamp(abs_coeff + round_ptr[rc != 0], INT32_MIN, INT32_MAX) * 108 (clamp(abs_coeff + round_ptr[rc != 0], INT32_MIN, INT32_MAX) *
109 quant) >> 15; 109 quant) >> 15;
110 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; 110 qcoeff_ptr[rc] = (tran_low_t)((tmp ^ coeff_sign) - coeff_sign);
111 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr / 2; 111 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr / 2;
112 if (tmp) 112 if (tmp)
113 eob = 0; 113 eob = 0;
114 } 114 }
115 *eob_ptr = eob + 1; 115 *eob_ptr = eob + 1;
116 } 116 }
117 #endif 117 #endif
118 118
119 void vp9_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, 119 void vp9_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
120 int skip_block, 120 int skip_block,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 for (i = 0; i < count; i++) { 190 for (i = 0; i < count; i++) {
191 const int rc = scan[i]; 191 const int rc = scan[i];
192 const int coeff = coeff_ptr[rc]; 192 const int coeff = coeff_ptr[rc];
193 const int coeff_sign = (coeff >> 31); 193 const int coeff_sign = (coeff >> 31);
194 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign; 194 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
195 195
196 const int64_t tmp = 196 const int64_t tmp =
197 (clamp(abs_coeff + round_ptr[rc != 0], INT32_MIN, INT32_MAX) * 197 (clamp(abs_coeff + round_ptr[rc != 0], INT32_MIN, INT32_MAX) *
198 quant_ptr[rc != 0]) >> 16; 198 quant_ptr[rc != 0]) >> 16;
199 199
200 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; 200 qcoeff_ptr[rc] = (tran_low_t)((tmp ^ coeff_sign) - coeff_sign);
201 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0]; 201 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0];
202 202
203 if (tmp) 203 if (tmp)
204 eob = i; 204 eob = i;
205 } 205 }
206 } 206 }
207 *eob_ptr = eob + 1; 207 *eob_ptr = eob + 1;
208 } 208 }
209 #endif 209 #endif
210 210
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 const int rc = scan[i]; 277 const int rc = scan[i];
278 const int coeff = coeff_ptr[rc]; 278 const int coeff = coeff_ptr[rc];
279 const int coeff_sign = (coeff >> 31); 279 const int coeff_sign = (coeff >> 31);
280 int64_t tmp = 0; 280 int64_t tmp = 0;
281 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign; 281 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
282 282
283 if (abs_coeff >= (dequant_ptr[rc != 0] >> 2)) { 283 if (abs_coeff >= (dequant_ptr[rc != 0] >> 2)) {
284 tmp = clamp(abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1), 284 tmp = clamp(abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1),
285 INT32_MIN, INT32_MAX); 285 INT32_MIN, INT32_MAX);
286 tmp = (tmp * quant_ptr[rc != 0]) >> 15; 286 tmp = (tmp * quant_ptr[rc != 0]) >> 15;
287 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; 287 qcoeff_ptr[rc] = (tran_low_t)((tmp ^ coeff_sign) - coeff_sign);
288 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 2; 288 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 2;
289 } 289 }
290 290
291 if (tmp) 291 if (tmp)
292 eob = i; 292 eob = i;
293 } 293 }
294 } 294 }
295 *eob_ptr = eob + 1; 295 *eob_ptr = eob + 1;
296 } 296 }
297 #endif 297 #endif
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 const int rc = scan[i]; 386 const int rc = scan[i];
387 const int coeff = coeff_ptr[rc]; 387 const int coeff = coeff_ptr[rc];
388 const int coeff_sign = (coeff >> 31); 388 const int coeff_sign = (coeff >> 31);
389 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign; 389 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
390 390
391 if (abs_coeff >= zbins[rc != 0]) { 391 if (abs_coeff >= zbins[rc != 0]) {
392 int64_t tmp = clamp(abs_coeff + round_ptr[rc != 0], 392 int64_t tmp = clamp(abs_coeff + round_ptr[rc != 0],
393 INT32_MIN, INT32_MAX); 393 INT32_MIN, INT32_MAX);
394 tmp = ((((tmp * quant_ptr[rc != 0]) >> 16) + tmp) * 394 tmp = ((((tmp * quant_ptr[rc != 0]) >> 16) + tmp) *
395 quant_shift_ptr[rc != 0]) >> 16; // quantization 395 quant_shift_ptr[rc != 0]) >> 16; // quantization
396 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; 396 qcoeff_ptr[rc] = (tran_low_t)((tmp ^ coeff_sign) - coeff_sign);
397 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0]; 397 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0];
398 398
399 if (tmp) 399 if (tmp)
400 eob = i; 400 eob = i;
401 } 401 }
402 } 402 }
403 } 403 }
404 *eob_ptr = eob + 1; 404 *eob_ptr = eob + 1;
405 } 405 }
406 #endif 406 #endif
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 const int rc = scan[idx_arr[i]]; 503 const int rc = scan[idx_arr[i]];
504 const int coeff = coeff_ptr[rc]; 504 const int coeff = coeff_ptr[rc];
505 const int coeff_sign = (coeff >> 31); 505 const int coeff_sign = (coeff >> 31);
506 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign; 506 const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
507 int64_t tmp = clamp(abs_coeff + 507 int64_t tmp = clamp(abs_coeff +
508 ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1), 508 ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1),
509 INT32_MIN, INT32_MAX); 509 INT32_MIN, INT32_MAX);
510 tmp = ((((tmp * quant_ptr[rc != 0]) >> 16) + tmp) * 510 tmp = ((((tmp * quant_ptr[rc != 0]) >> 16) + tmp) *
511 quant_shift_ptr[rc != 0]) >> 15; 511 quant_shift_ptr[rc != 0]) >> 15;
512 512
513 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; 513 qcoeff_ptr[rc] = (tran_low_t)((tmp ^ coeff_sign) - coeff_sign);
514 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 2; 514 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 2;
515 515
516 if (tmp) 516 if (tmp)
517 eob = idx_arr[i]; 517 eob = idx_arr[i];
518 } 518 }
519 } 519 }
520 *eob_ptr = eob + 1; 520 *eob_ptr = eob + 1;
521 } 521 }
522 #endif 522 #endif
523 523
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 732
733 int vp9_qindex_to_quantizer(int qindex) { 733 int vp9_qindex_to_quantizer(int qindex) {
734 int quantizer; 734 int quantizer;
735 735
736 for (quantizer = 0; quantizer < 64; ++quantizer) 736 for (quantizer = 0; quantizer < 64; ++quantizer)
737 if (quantizer_to_qindex[quantizer] >= qindex) 737 if (quantizer_to_qindex[quantizer] >= qindex)
738 return quantizer; 738 return quantizer;
739 739
740 return 63; 740 return 63;
741 } 741 }
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_pickmode.c ('k') | source/libvpx/vp9/encoder/vp9_ratectrl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698