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

Side by Side Diff: webrtc/modules/video_processing/test/denoiser_test.cc

Issue 1738863002: Replace scoped_ptr with unique_ptr in webrtc/modules/video_*/ (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@up4
Patch Set: Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC 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 <string.h> 11 #include <string.h>
12 12
13 #include <memory>
14
13 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" 15 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
14 #include "webrtc/modules/video_processing/include/video_processing.h" 16 #include "webrtc/modules/video_processing/include/video_processing.h"
15 #include "webrtc/modules/video_processing/test/video_processing_unittest.h" 17 #include "webrtc/modules/video_processing/test/video_processing_unittest.h"
16 #include "webrtc/modules/video_processing/video_denoiser.h" 18 #include "webrtc/modules/video_processing/video_denoiser.h"
17 19
18 namespace webrtc { 20 namespace webrtc {
19 21
20 TEST_F(VideoProcessingTest, CopyMem) { 22 TEST_F(VideoProcessingTest, CopyMem) {
21 rtc::scoped_ptr<DenoiserFilter> df_c(DenoiserFilter::Create(false)); 23 std::unique_ptr<DenoiserFilter> df_c(DenoiserFilter::Create(false));
22 rtc::scoped_ptr<DenoiserFilter> df_sse_neon(DenoiserFilter::Create(true)); 24 std::unique_ptr<DenoiserFilter> df_sse_neon(DenoiserFilter::Create(true));
23 uint8_t src[16 * 16], dst[16 * 16]; 25 uint8_t src[16 * 16], dst[16 * 16];
24 for (int i = 0; i < 16; ++i) { 26 for (int i = 0; i < 16; ++i) {
25 for (int j = 0; j < 16; ++j) { 27 for (int j = 0; j < 16; ++j) {
26 src[i * 16 + j] = i * 16 + j; 28 src[i * 16 + j] = i * 16 + j;
27 } 29 }
28 } 30 }
29 31
30 memset(dst, 0, 8 * 8); 32 memset(dst, 0, 8 * 8);
31 df_c->CopyMem8x8(src, 8, dst, 8); 33 df_c->CopyMem8x8(src, 8, dst, 8);
32 EXPECT_EQ(0, memcmp(src, dst, 8 * 8)); 34 EXPECT_EQ(0, memcmp(src, dst, 8 * 8));
33 35
34 memset(dst, 0, 16 * 16); 36 memset(dst, 0, 16 * 16);
35 df_c->CopyMem16x16(src, 16, dst, 16); 37 df_c->CopyMem16x16(src, 16, dst, 16);
36 EXPECT_EQ(0, memcmp(src, dst, 16 * 16)); 38 EXPECT_EQ(0, memcmp(src, dst, 16 * 16));
37 39
38 memset(dst, 0, 8 * 8); 40 memset(dst, 0, 8 * 8);
39 df_sse_neon->CopyMem16x16(src, 8, dst, 8); 41 df_sse_neon->CopyMem16x16(src, 8, dst, 8);
40 EXPECT_EQ(0, memcmp(src, dst, 8 * 8)); 42 EXPECT_EQ(0, memcmp(src, dst, 8 * 8));
41 43
42 memset(dst, 0, 16 * 16); 44 memset(dst, 0, 16 * 16);
43 df_sse_neon->CopyMem16x16(src, 16, dst, 16); 45 df_sse_neon->CopyMem16x16(src, 16, dst, 16);
44 EXPECT_EQ(0, memcmp(src, dst, 16 * 16)); 46 EXPECT_EQ(0, memcmp(src, dst, 16 * 16));
45 } 47 }
46 48
47 TEST_F(VideoProcessingTest, Variance) { 49 TEST_F(VideoProcessingTest, Variance) {
48 rtc::scoped_ptr<DenoiserFilter> df_c(DenoiserFilter::Create(false)); 50 std::unique_ptr<DenoiserFilter> df_c(DenoiserFilter::Create(false));
49 rtc::scoped_ptr<DenoiserFilter> df_sse_neon(DenoiserFilter::Create(true)); 51 std::unique_ptr<DenoiserFilter> df_sse_neon(DenoiserFilter::Create(true));
50 uint8_t src[16 * 16], dst[16 * 16]; 52 uint8_t src[16 * 16], dst[16 * 16];
51 uint32_t sum = 0, sse = 0, var; 53 uint32_t sum = 0, sse = 0, var;
52 for (int i = 0; i < 16; ++i) { 54 for (int i = 0; i < 16; ++i) {
53 for (int j = 0; j < 16; ++j) { 55 for (int j = 0; j < 16; ++j) {
54 src[i * 16 + j] = i * 16 + j; 56 src[i * 16 + j] = i * 16 + j;
55 } 57 }
56 } 58 }
57 // Compute the 16x8 variance of the 16x16 block. 59 // Compute the 16x8 variance of the 16x16 block.
58 for (int i = 0; i < 8; ++i) { 60 for (int i = 0; i < 8; ++i) {
59 for (int j = 0; j < 16; ++j) { 61 for (int j = 0; j < 16; ++j) {
60 sum += (i * 32 + j); 62 sum += (i * 32 + j);
61 sse += (i * 32 + j) * (i * 32 + j); 63 sse += (i * 32 + j) * (i * 32 + j);
62 } 64 }
63 } 65 }
64 var = sse - ((sum * sum) >> 7); 66 var = sse - ((sum * sum) >> 7);
65 memset(dst, 0, 16 * 16); 67 memset(dst, 0, 16 * 16);
66 EXPECT_EQ(var, df_c->Variance16x8(src, 16, dst, 16, &sse)); 68 EXPECT_EQ(var, df_c->Variance16x8(src, 16, dst, 16, &sse));
67 EXPECT_EQ(var, df_sse_neon->Variance16x8(src, 16, dst, 16, &sse)); 69 EXPECT_EQ(var, df_sse_neon->Variance16x8(src, 16, dst, 16, &sse));
68 } 70 }
69 71
70 TEST_F(VideoProcessingTest, MbDenoise) { 72 TEST_F(VideoProcessingTest, MbDenoise) {
71 rtc::scoped_ptr<DenoiserFilter> df_c(DenoiserFilter::Create(false)); 73 std::unique_ptr<DenoiserFilter> df_c(DenoiserFilter::Create(false));
72 rtc::scoped_ptr<DenoiserFilter> df_sse_neon(DenoiserFilter::Create(true)); 74 std::unique_ptr<DenoiserFilter> df_sse_neon(DenoiserFilter::Create(true));
73 uint8_t running_src[16 * 16], src[16 * 16], dst[16 * 16], dst_ref[16 * 16]; 75 uint8_t running_src[16 * 16], src[16 * 16], dst[16 * 16], dst_ref[16 * 16];
74 76
75 // Test case: |diff| <= |3 + shift_inc1| 77 // Test case: |diff| <= |3 + shift_inc1|
76 for (int i = 0; i < 16; ++i) { 78 for (int i = 0; i < 16; ++i) {
77 for (int j = 0; j < 16; ++j) { 79 for (int j = 0; j < 16; ++j) {
78 running_src[i * 16 + j] = i * 11 + j; 80 running_src[i * 16 + j] = i * 11 + j;
79 src[i * 16 + j] = i * 11 + j + 2; 81 src[i * 16 + j] = i * 11 + j + 2;
80 dst_ref[i * 16 + j] = running_src[i * 16 + j]; 82 dst_ref[i * 16 + j] = running_src[i * 16 + j];
81 } 83 }
82 } 84 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 } 132 }
131 133
132 TEST_F(VideoProcessingTest, Denoiser) { 134 TEST_F(VideoProcessingTest, Denoiser) {
133 // Create pure C denoiser. 135 // Create pure C denoiser.
134 VideoDenoiser denoiser_c(false); 136 VideoDenoiser denoiser_c(false);
135 // Create SSE or NEON denoiser. 137 // Create SSE or NEON denoiser.
136 VideoDenoiser denoiser_sse_neon(true); 138 VideoDenoiser denoiser_sse_neon(true);
137 VideoFrame denoised_frame_c; 139 VideoFrame denoised_frame_c;
138 VideoFrame denoised_frame_sse_neon; 140 VideoFrame denoised_frame_sse_neon;
139 141
140 rtc::scoped_ptr<uint8_t[]> video_buffer(new uint8_t[frame_length_]); 142 std::unique_ptr<uint8_t[]> video_buffer(new uint8_t[frame_length_]);
141 while (fread(video_buffer.get(), 1, frame_length_, source_file_) == 143 while (fread(video_buffer.get(), 1, frame_length_, source_file_) ==
142 frame_length_) { 144 frame_length_) {
143 // Using ConvertToI420 to add stride to the image. 145 // Using ConvertToI420 to add stride to the image.
144 EXPECT_EQ(0, ConvertToI420(kI420, video_buffer.get(), 0, 0, width_, height_, 146 EXPECT_EQ(0, ConvertToI420(kI420, video_buffer.get(), 0, 0, width_, height_,
145 0, kVideoRotation_0, &video_frame_)); 147 0, kVideoRotation_0, &video_frame_));
146 148
147 denoiser_c.DenoiseFrame(video_frame_, &denoised_frame_c); 149 denoiser_c.DenoiseFrame(video_frame_, &denoised_frame_c);
148 denoiser_sse_neon.DenoiseFrame(video_frame_, &denoised_frame_sse_neon); 150 denoiser_sse_neon.DenoiseFrame(video_frame_, &denoised_frame_sse_neon);
149 151
150 // Denoising results should be the same for C and SSE/NEON denoiser. 152 // Denoising results should be the same for C and SSE/NEON denoiser.
151 ASSERT_EQ(true, denoised_frame_c.EqualsFrame(denoised_frame_sse_neon)); 153 ASSERT_EQ(true, denoised_frame_c.EqualsFrame(denoised_frame_sse_neon));
152 } 154 }
153 ASSERT_NE(0, feof(source_file_)) << "Error reading source file"; 155 ASSERT_NE(0, feof(source_file_)) << "Error reading source file";
154 } 156 }
155 157
156 } // namespace webrtc 158 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698