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

Side by Side Diff: source/libvpx/vp8/encoder/x86/denoising_sse2.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/vp8/encoder/vp8_asm_enc_offsets.c ('k') | source/libvpx/vp8/vp8cx.mk » ('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) 2012 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 running_avg_y += avg_y_stride; 114 running_avg_y += avg_y_stride;
115 } 115 }
116 116
117 { 117 {
118 /* Compute the sum of all pixel differences of this MB. */ 118 /* Compute the sum of all pixel differences of this MB. */
119 unsigned int abs_sum_diff = abs_sum_diff_16x1(acc_diff); 119 unsigned int abs_sum_diff = abs_sum_diff_16x1(acc_diff);
120 sum_diff_thresh = SUM_DIFF_THRESHOLD; 120 sum_diff_thresh = SUM_DIFF_THRESHOLD;
121 if (increase_denoising) sum_diff_thresh = SUM_DIFF_THRESHOLD_HIGH; 121 if (increase_denoising) sum_diff_thresh = SUM_DIFF_THRESHOLD_HIGH;
122 if (abs_sum_diff > sum_diff_thresh) { 122 if (abs_sum_diff > sum_diff_thresh) {
123 // Before returning to copy the block (i.e., apply no denoising), 123 // Before returning to copy the block (i.e., apply no denoising),
124 // checK if we can still apply some (weaker) temporal filtering to 124 // check if we can still apply some (weaker) temporal filtering to
125 // this block, that would otherwise not be denoised at all. Simplest 125 // this block, that would otherwise not be denoised at all. Simplest
126 // is to apply an additional adjustment to running_avg_y to bring it 126 // is to apply an additional adjustment to running_avg_y to bring it
127 // closer to sig. The adjustment is capped by a maximum delta, and 127 // closer to sig. The adjustment is capped by a maximum delta, and
128 // chosen such that in most cases the resulting sum_diff will be 128 // chosen such that in most cases the resulting sum_diff will be
129 // within the accceptable range given by sum_diff_thresh. 129 // within the acceptable range given by sum_diff_thresh.
130 130
131 // The delta is set by the excess of absolute pixel diff over the 131 // The delta is set by the excess of absolute pixel diff over the
132 // threshold. 132 // threshold.
133 int delta = ((abs_sum_diff - sum_diff_thresh) >> 8) + 1; 133 int delta = ((abs_sum_diff - sum_diff_thresh) >> 8) + 1;
134 // Only apply the adjustment for max delta up to 3. 134 // Only apply the adjustment for max delta up to 3.
135 if (delta < 4) { 135 if (delta < 4) {
136 const __m128i k_delta = _mm_set1_epi8(delta); 136 const __m128i k_delta = _mm_set1_epi8(delta);
137 sig -= sig_stride * 16; 137 sig -= sig_stride * 16;
138 mc_running_avg_y -= mc_avg_y_stride * 16; 138 mc_running_avg_y -= mc_avg_y_stride * 16;
139 running_avg_y -= avg_y_stride * 16; 139 running_avg_y -= avg_y_stride * 16;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 mc_running_avg += mc_avg_stride * 2; 295 mc_running_avg += mc_avg_stride * 2;
296 running_avg += avg_stride * 2; 296 running_avg += avg_stride * 2;
297 } 297 }
298 298
299 { 299 {
300 unsigned int abs_sum_diff = abs_sum_diff_16x1(acc_diff); 300 unsigned int abs_sum_diff = abs_sum_diff_16x1(acc_diff);
301 sum_diff_thresh = SUM_DIFF_THRESHOLD_UV; 301 sum_diff_thresh = SUM_DIFF_THRESHOLD_UV;
302 if (increase_denoising) sum_diff_thresh = SUM_DIFF_THRESHOLD_HIGH_UV; 302 if (increase_denoising) sum_diff_thresh = SUM_DIFF_THRESHOLD_HIGH_UV;
303 if (abs_sum_diff > sum_diff_thresh) { 303 if (abs_sum_diff > sum_diff_thresh) {
304 // Before returning to copy the block (i.e., apply no denoising), 304 // Before returning to copy the block (i.e., apply no denoising),
305 // checK if we can still apply some (weaker) temporal filtering to 305 // check if we can still apply some (weaker) temporal filtering to
306 // this block, that would otherwise not be denoised at all. Simplest 306 // this block, that would otherwise not be denoised at all. Simplest
307 // is to apply an additional adjustment to running_avg_y to bring it 307 // is to apply an additional adjustment to running_avg_y to bring it
308 // closer to sig. The adjustment is capped by a maximum delta, and 308 // closer to sig. The adjustment is capped by a maximum delta, and
309 // chosen such that in most cases the resulting sum_diff will be 309 // chosen such that in most cases the resulting sum_diff will be
310 // within the accceptable range given by sum_diff_thresh. 310 // within the acceptable range given by sum_diff_thresh.
311 311
312 // The delta is set by the excess of absolute pixel diff over the 312 // The delta is set by the excess of absolute pixel diff over the
313 // threshold. 313 // threshold.
314 int delta = ((abs_sum_diff - sum_diff_thresh) >> 8) + 1; 314 int delta = ((abs_sum_diff - sum_diff_thresh) >> 8) + 1;
315 // Only apply the adjustment for max delta up to 3. 315 // Only apply the adjustment for max delta up to 3.
316 if (delta < 4) { 316 if (delta < 4) {
317 const __m128i k_delta = _mm_set1_epi8(delta); 317 const __m128i k_delta = _mm_set1_epi8(delta);
318 sig -= sig_stride * 8; 318 sig -= sig_stride * 8;
319 mc_running_avg -= mc_avg_stride * 8; 319 mc_running_avg -= mc_avg_stride * 8;
320 running_avg -= avg_stride * 8; 320 running_avg -= avg_stride * 8;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 } 370 }
371 } else { 371 } else {
372 return COPY_BLOCK; 372 return COPY_BLOCK;
373 } 373 }
374 } 374 }
375 } 375 }
376 376
377 vp8_copy_mem8x8(running_avg_start, avg_stride, sig_start, sig_stride); 377 vp8_copy_mem8x8(running_avg_start, avg_stride, sig_start, sig_stride);
378 return FILTER_BLOCK; 378 return FILTER_BLOCK;
379 } 379 }
OLDNEW
« no previous file with comments | « source/libvpx/vp8/encoder/vp8_asm_enc_offsets.c ('k') | source/libvpx/vp8/vp8cx.mk » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698