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

Side by Side Diff: third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp

Issue 2334773003: Support sample rates up to 384 kHz. (Closed)
Patch Set: Mark old histograms obsolete Created 4 years, 3 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) 2010, Google Inc. All rights reserved. 2 * Copyright (C) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 // Arbitrarly limit the maximum length to 1 million frames (about 20 sec 246 // Arbitrarly limit the maximum length to 1 million frames (about 20 sec
247 // at 48kHz). The number of buckets is fairly arbitrary. 247 // at 48kHz). The number of buckets is fairly arbitrary.
248 DEFINE_STATIC_LOCAL(CustomCountHistogram, audioBufferLengthHistogram, 248 DEFINE_STATIC_LOCAL(CustomCountHistogram, audioBufferLengthHistogram,
249 ("WebAudio.AudioBuffer.Length", 1, 1000000, 50)); 249 ("WebAudio.AudioBuffer.Length", 1, 1000000, 50));
250 // The limits are the min and max AudioBuffer sample rates currently 250 // The limits are the min and max AudioBuffer sample rates currently
251 // supported. We use explicit values here instead of 251 // supported. We use explicit values here instead of
252 // AudioUtilities::minAudioBufferSampleRate() and 252 // AudioUtilities::minAudioBufferSampleRate() and
253 // AudioUtilities::maxAudioBufferSampleRate(). The number of buckets is 253 // AudioUtilities::maxAudioBufferSampleRate(). The number of buckets is
254 // fairly arbitrary. 254 // fairly arbitrary.
255 DEFINE_STATIC_LOCAL(CustomCountHistogram, audioBufferSampleRateHistogram , 255 DEFINE_STATIC_LOCAL(CustomCountHistogram, audioBufferSampleRateHistogram ,
256 ("WebAudio.AudioBuffer.SampleRate", 3000, 192000, 60)); 256 ("WebAudio.AudioBuffer.SampleRate384k", 3000, 384000, 60));
257 257
258 audioBufferChannelsHistogram.sample(numberOfChannels); 258 audioBufferChannelsHistogram.sample(numberOfChannels);
259 audioBufferLengthHistogram.count(numberOfFrames); 259 audioBufferLengthHistogram.count(numberOfFrames);
260 audioBufferSampleRateHistogram.count(sampleRate); 260 audioBufferSampleRateHistogram.count(sampleRate);
261 261
262 // Compute the ratio of the buffer rate and the context rate so we know 262 // Compute the ratio of the buffer rate and the context rate so we know
263 // how often the buffer needs to be resampled to match the context. For 263 // how often the buffer needs to be resampled to match the context. For
264 // the histogram, we multiply the ratio by 100 and round to the nearest 264 // the histogram, we multiply the ratio by 100 and round to the nearest
265 // integer. If the context is closed, don't record this because we 265 // integer. If the context is closed, don't record this because we
266 // don't have a sample rate for closed context. 266 // don't have a sample rate for closed context.
267 if (!isContextClosed()) { 267 if (!isContextClosed()) {
268 // The limits are choosen from 100*(3000/192000) = 1.5625 and 268 // The limits are choosen from 100*(3000/384000) = 0.78125 and
269 // 100*(192000/3000) = 6400, where 3000 and 192000 are the current 269 // 100*(384000/3000) = 12800, where 3000 and 384000 are the current
270 // min and max sample rates possible for an AudioBuffer. The number 270 // min and max sample rates possible for an AudioBuffer. The number
271 // of buckets is fairly arbitrary. 271 // of buckets is fairly arbitrary.
272 DEFINE_STATIC_LOCAL(CustomCountHistogram, audioBufferSampleRateRatio Histogram, 272 DEFINE_STATIC_LOCAL(CustomCountHistogram, audioBufferSampleRateRatio Histogram,
273 ("WebAudio.AudioBuffer.SampleRateRatio", 1, 6400, 50)); 273 ("WebAudio.AudioBuffer.SampleRateRatio384K", 0, 12800, 50));
Mark P 2016/09/15 23:16:31 Min of histogram should always be "1". There will
Raymond Toy 2016/10/10 16:28:32 Done.
274 float ratio = 100 * sampleRate / this->sampleRate(); 274 float ratio = 100 * sampleRate / this->sampleRate();
275 audioBufferSampleRateRatioHistogram.count(static_cast<int>(0.5 + rat io)); 275 audioBufferSampleRateRatioHistogram.count(static_cast<int>(0.5 + rat io));
276 } 276 }
277 } 277 }
278 278
279 return buffer; 279 return buffer;
280 } 280 }
281 281
282 ScriptPromise BaseAudioContext::decodeAudioData(ScriptState* scriptState, DOMArr ayBuffer* audioData, AudioBufferCallback* successCallback, AudioBufferCallback* errorCallback, ExceptionState& exceptionState) 282 ScriptPromise BaseAudioContext::decodeAudioData(ScriptState* scriptState, DOMArr ayBuffer* audioData, AudioBufferCallback* successCallback, AudioBufferCallback* errorCallback, ExceptionState& exceptionState)
283 { 283 {
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
839 839
840 SecurityOrigin* BaseAudioContext::getSecurityOrigin() const 840 SecurityOrigin* BaseAudioContext::getSecurityOrigin() const
841 { 841 {
842 if (getExecutionContext()) 842 if (getExecutionContext())
843 return getExecutionContext()->getSecurityOrigin(); 843 return getExecutionContext()->getSecurityOrigin();
844 844
845 return nullptr; 845 return nullptr;
846 } 846 }
847 847
848 } // namespace blink 848 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698