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

Side by Side Diff: media/filters/wsola_internals.cc

Issue 1904213003: Convert //media/filters from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove include Created 4 years, 8 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 | « media/filters/vp9_raw_bits_reader.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // MSVC++ requires this to be set before any other includes to get M_PI. 5 // MSVC++ requires this to be set before any other includes to get M_PI.
6 #define _USE_MATH_DEFINES 6 #define _USE_MATH_DEFINES
7 7
8 #include "media/filters/wsola_internals.h" 8 #include "media/filters/wsola_internals.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <cmath> 11 #include <cmath>
12 #include <limits> 12 #include <limits>
13 #include <memory>
13 14
14 #include "base/logging.h" 15 #include "base/logging.h"
15 #include "base/memory/scoped_ptr.h"
16 #include "media/base/audio_bus.h" 16 #include "media/base/audio_bus.h"
17 17
18 namespace media { 18 namespace media {
19 19
20 namespace internal { 20 namespace internal {
21 21
22 bool InInterval(int n, Interval q) { 22 bool InInterval(int n, Interval q) {
23 return n >= q.first && n <= q.second; 23 return n >= q.first && n <= q.second;
24 } 24 }
25 25
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 107
108 int DecimatedSearch(int decimation, 108 int DecimatedSearch(int decimation,
109 Interval exclude_interval, 109 Interval exclude_interval,
110 const AudioBus* target_block, 110 const AudioBus* target_block,
111 const AudioBus* search_segment, 111 const AudioBus* search_segment,
112 const float* energy_target_block, 112 const float* energy_target_block,
113 const float* energy_candidate_blocks) { 113 const float* energy_candidate_blocks) {
114 int channels = search_segment->channels(); 114 int channels = search_segment->channels();
115 int block_size = target_block->frames(); 115 int block_size = target_block->frames();
116 int num_candidate_blocks = search_segment->frames() - (block_size - 1); 116 int num_candidate_blocks = search_segment->frames() - (block_size - 1);
117 scoped_ptr<float[]> dot_prod(new float[channels]); 117 std::unique_ptr<float[]> dot_prod(new float[channels]);
118 float similarity[3]; // Three elements for cubic interpolation. 118 float similarity[3]; // Three elements for cubic interpolation.
119 119
120 int n = 0; 120 int n = 0;
121 MultiChannelDotProduct(target_block, 0, search_segment, n, block_size, 121 MultiChannelDotProduct(target_block, 0, search_segment, n, block_size,
122 dot_prod.get()); 122 dot_prod.get());
123 similarity[0] = MultiChannelSimilarityMeasure( 123 similarity[0] = MultiChannelSimilarityMeasure(
124 dot_prod.get(), energy_target_block, 124 dot_prod.get(), energy_target_block,
125 &energy_candidate_blocks[n * channels], channels); 125 &energy_candidate_blocks[n * channels], channels);
126 126
127 // Set the starting point as optimal point. 127 // Set the starting point as optimal point.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 185
186 int FullSearch(int low_limit, 186 int FullSearch(int low_limit,
187 int high_limit, 187 int high_limit,
188 Interval exclude_interval, 188 Interval exclude_interval,
189 const AudioBus* target_block, 189 const AudioBus* target_block,
190 const AudioBus* search_block, 190 const AudioBus* search_block,
191 const float* energy_target_block, 191 const float* energy_target_block,
192 const float* energy_candidate_blocks) { 192 const float* energy_candidate_blocks) {
193 int channels = search_block->channels(); 193 int channels = search_block->channels();
194 int block_size = target_block->frames(); 194 int block_size = target_block->frames();
195 scoped_ptr<float[]> dot_prod(new float[channels]); 195 std::unique_ptr<float[]> dot_prod(new float[channels]);
196 196
197 float best_similarity = std::numeric_limits<float>::min(); 197 float best_similarity = std::numeric_limits<float>::min();
198 int optimal_index = 0; 198 int optimal_index = 0;
199 199
200 for (int n = low_limit; n <= high_limit; ++n) { 200 for (int n = low_limit; n <= high_limit; ++n) {
201 if (InInterval(n, exclude_interval)) { 201 if (InInterval(n, exclude_interval)) {
202 continue; 202 continue;
203 } 203 }
204 MultiChannelDotProduct(target_block, 0, search_block, n, block_size, 204 MultiChannelDotProduct(target_block, 0, search_block, n, block_size,
205 dot_prod.get()); 205 dot_prod.get());
(...skipping 20 matching lines...) Expand all
226 int num_candidate_blocks = search_block->frames() - (target_size - 1); 226 int num_candidate_blocks = search_block->frames() - (target_size - 1);
227 227
228 // This is a compromise between complexity reduction and search accuracy. I 228 // This is a compromise between complexity reduction and search accuracy. I
229 // don't have a proof that down sample of order 5 is optimal. One can compute 229 // don't have a proof that down sample of order 5 is optimal. One can compute
230 // a decimation factor that minimizes complexity given the size of 230 // a decimation factor that minimizes complexity given the size of
231 // |search_block| and |target_block|. However, my experiments show the rate of 231 // |search_block| and |target_block|. However, my experiments show the rate of
232 // missing the optimal index is significant. This value is chosen 232 // missing the optimal index is significant. This value is chosen
233 // heuristically based on experiments. 233 // heuristically based on experiments.
234 const int kSearchDecimation = 5; 234 const int kSearchDecimation = 5;
235 235
236 scoped_ptr<float[]> energy_target_block(new float[channels]); 236 std::unique_ptr<float[]> energy_target_block(new float[channels]);
237 scoped_ptr<float[]> energy_candidate_blocks( 237 std::unique_ptr<float[]> energy_candidate_blocks(
238 new float[channels * num_candidate_blocks]); 238 new float[channels * num_candidate_blocks]);
239 239
240 // Energy of all candid frames. 240 // Energy of all candid frames.
241 MultiChannelMovingBlockEnergies(search_block, target_size, 241 MultiChannelMovingBlockEnergies(search_block, target_size,
242 energy_candidate_blocks.get()); 242 energy_candidate_blocks.get());
243 243
244 // Energy of target frame. 244 // Energy of target frame.
245 MultiChannelDotProduct(target_block, 0, target_block, 0, 245 MultiChannelDotProduct(target_block, 0, target_block, 0,
246 target_size, energy_target_block.get()); 246 target_size, energy_target_block.get());
247 247
(...skipping 13 matching lines...) Expand all
261 void GetSymmetricHanningWindow(int window_length, float* window) { 261 void GetSymmetricHanningWindow(int window_length, float* window) {
262 const float scale = 2.0f * M_PI / window_length; 262 const float scale = 2.0f * M_PI / window_length;
263 for (int n = 0; n < window_length; ++n) 263 for (int n = 0; n < window_length; ++n)
264 window[n] = 0.5f * (1.0f - cosf(n * scale)); 264 window[n] = 0.5f * (1.0f - cosf(n * scale));
265 } 265 }
266 266
267 } // namespace internal 267 } // namespace internal
268 268
269 } // namespace media 269 } // namespace media
270 270
OLDNEW
« no previous file with comments | « media/filters/vp9_raw_bits_reader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698