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

Unified Diff: third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp

Issue 2750543003: Support AudioContextOptions latencyHint as double. (Closed)
Patch Set: Fixes based on reviewer comments. Created 3 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp b/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
index a76bd7beb6c200d93fd7d62602ea9445a5f9a5b9..c77c42d90fbbe305b38752bb70831b6b54d12878 100644
--- a/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
+++ b/third_party/WebKit/Source/modules/webaudio/AudioContextTest.cpp
@@ -40,15 +40,23 @@ class AudioContextTestPlatform : public TestingPlatformSupport {
const WebString& deviceId,
const WebSecurityOrigin&) override {
double bufferSize = 0;
+ const double interactiveSize = audioHardwareBufferSize();
+ const double balancedSize = audioHardwareBufferSize() * 2;
+ const double playbackSize = audioHardwareBufferSize() * 4;
switch (latencyHint.category()) {
case WebAudioLatencyHint::kCategoryInteractive:
- bufferSize = audioHardwareBufferSize();
+ bufferSize = interactiveSize;
break;
case WebAudioLatencyHint::kCategoryBalanced:
- bufferSize = audioHardwareBufferSize() * 2;
+ bufferSize = balancedSize;
break;
case WebAudioLatencyHint::kCategoryPlayback:
- bufferSize = audioHardwareBufferSize() * 4;
+ bufferSize = playbackSize;
+ break;
+ case WebAudioLatencyHint::kCategoryExact:
+ bufferSize = clampTo(latencyHint.seconds() * audioHardwareSampleRate(),
+ static_cast<double>(audioHardwareBufferSize()),
+ static_cast<double>(playbackSize));
break;
default:
NOTREACHED();
@@ -99,6 +107,32 @@ TEST_F(AudioContextTest, AudioContextOptions_WebAudioLatencyHint) {
AudioContext* playbackContext =
AudioContext::create(document(), playbackOptions, ASSERT_NO_EXCEPTION);
EXPECT_GT(playbackContext->baseLatency(), balancedContext->baseLatency());
+
+ AudioContextOptions exactTooSmallOptions;
+ exactTooSmallOptions.setLatencyHint(
+ AudioContextLatencyCategoryOrDouble::fromDouble(
+ interactiveContext->baseLatency() / 4));
+ AudioContext* exactTooSmallContext = AudioContext::create(
+ document(), exactTooSmallOptions, ASSERT_NO_EXCEPTION);
+ EXPECT_EQ(exactTooSmallContext->baseLatency(),
+ interactiveContext->baseLatency());
+
+ const double exactLatencySec =
+ (interactiveContext->baseLatency() + playbackContext->baseLatency()) / 4;
+ AudioContextOptions exactOkOptions;
+ exactOkOptions.setLatencyHint(
+ AudioContextLatencyCategoryOrDouble::fromDouble(exactLatencySec));
+ AudioContext* exactOkContext =
+ AudioContext::create(document(), exactOkOptions, ASSERT_NO_EXCEPTION);
+ EXPECT_EQ(exactOkContext->baseLatency(), exactLatencySec * 2);
+
+ AudioContextOptions exactTooBigOptions;
+ exactTooBigOptions.setLatencyHint(
+ AudioContextLatencyCategoryOrDouble::fromDouble(
+ playbackContext->baseLatency() * 2));
+ AudioContext* exactTooBigContext =
+ AudioContext::create(document(), exactTooBigOptions, ASSERT_NO_EXCEPTION);
+ EXPECT_EQ(exactTooBigContext->baseLatency(), playbackContext->baseLatency());
}
} // namespace blink
« media/base/audio_latency.cc ('K') | « third_party/WebKit/Source/modules/webaudio/AudioContext.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698