Title: [212846] trunk
- Revision
- 212846
- Author
- jer.no...@apple.com
- Date
- 2017-02-22 12:46:32 -0800 (Wed, 22 Feb 2017)
Log Message
Source/WebCore:
MediaStreamSourceNode never receives audio from MockRealtimeAudioSourceMac.
https://bugs.webkit.org/show_bug.cgi?id=168731
Reviewed by Eric Carlson.
Test: fast/mediastream/mock-media-source-webaudio.html
Because the audioSourceProvider can be created before the mock source is configured, explicitly configure the
source if necessary after creating the audioSourceProvider.
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::audioSourceProvider):
LayoutTests:
MediaStreamSourceNode never receives audio from a getUserMedia() created stream
https://bugs.webkit.org/show_bug.cgi?id=168731
Reviewed by Eric Carlson.
* fast/mediastream/mock-media-source-webaudio-expected.txt: Added.
* fast/mediastream/mock-media-source-webaudio.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (212845 => 212846)
--- trunk/LayoutTests/ChangeLog 2017-02-22 20:44:30 UTC (rev 212845)
+++ trunk/LayoutTests/ChangeLog 2017-02-22 20:46:32 UTC (rev 212846)
@@ -1,3 +1,13 @@
+2017-02-22 Jer Noble <jer.no...@apple.com>
+
+ MediaStreamSourceNode never receives audio from a getUserMedia() created stream
+ https://bugs.webkit.org/show_bug.cgi?id=168731
+
+ Reviewed by Eric Carlson.
+
+ * fast/mediastream/mock-media-source-webaudio-expected.txt: Added.
+ * fast/mediastream/mock-media-source-webaudio.html: Added.
+
2017-02-22 Chris Dumez <cdu...@apple.com>
Do not aggressively throttle DOM timers until they've reached their max nesting level
Added: trunk/LayoutTests/fast/mediastream/mock-media-source-webaudio-expected.txt (0 => 212846)
--- trunk/LayoutTests/fast/mediastream/mock-media-source-webaudio-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/mediastream/mock-media-source-webaudio-expected.txt 2017-02-22 20:46:32 UTC (rev 212846)
@@ -0,0 +1,3 @@
+
+PASS Basic getUserMedia to Web Audio test
+
Added: trunk/LayoutTests/fast/mediastream/mock-media-source-webaudio.html (0 => 212846)
--- trunk/LayoutTests/fast/mediastream/mock-media-source-webaudio.html (rev 0)
+++ trunk/LayoutTests/fast/mediastream/mock-media-source-webaudio.html 2017-02-22 20:46:32 UTC (rev 212846)
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Testing local audio capture playback causes "playing" event to fire</title>
+ <script src=""
+ <script src=""
+</head>
+<body>
+ <script>
+ if (window.testRunner)
+ testRunner.setUserMediaPermission(true);
+
+ var heardHum = false;
+ var heardBop = false;
+ var heardBip = false;
+
+ var test = async_test(() => {
+ navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {
+ var context = new webkitAudioContext();
+ var sourceNode = context.createMediaStreamSource(stream);
+ var analyser = context.createAnalyser();
+ var gain = context.createGain();
+
+ analyser.fftSize = 2048;
+ analyser.smoothingTimeConstant = 0;
+ analyser.minDecibels = -100;
+ analyser.maxDecibels = 0;
+ gain.gain.value = 0;
+
+ sourceNode.connect(analyser);
+ analyser.connect(gain);
+ gain.connect(context.destination);
+
+ function analyse() {
+ var freqDomain = new Uint8Array(analyser.frequencyBinCount);
+ analyser.getByteFrequencyData(freqDomain);
+
+ var hasFrequency = expectedFrequency => {
+ var bin = Math.floor(expectedFrequency * analyser.fftSize / context.sampleRate);
+ return bin < freqDomain.length && freqDomain[bin] >= 150;
+ };
+
+ if (!heardHum)
+ heardHum = hasFrequency(150);
+
+ if (!heardBip)
+ heardBip = hasFrequency(1500);
+
+ if (!heardBop)
+ heardBop = hasFrequency(500);
+
+ if (heardHum && heardBip && heardBop)
+ done();
+ };
+
+ var done = () => {
+ clearTimeout(timeout);
+ clearInterval(interval);
+
+ assert_true(heardHum);
+ assert_true(heardBip);
+ assert_true(heardBop);
+ test.done();
+ };
+
+ var timeout = setTimeout(done, 3000);
+ var interval = setInterval(analyse, 1000 / 30);
+ analyse();
+ });
+ }, "Basic getUserMedia to Web Audio test");
+ </script>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (212845 => 212846)
--- trunk/Source/WebCore/ChangeLog 2017-02-22 20:44:30 UTC (rev 212845)
+++ trunk/Source/WebCore/ChangeLog 2017-02-22 20:46:32 UTC (rev 212846)
@@ -1,3 +1,18 @@
+2017-02-22 Jer Noble <jer.no...@apple.com>
+
+ MediaStreamSourceNode never receives audio from MockRealtimeAudioSourceMac.
+ https://bugs.webkit.org/show_bug.cgi?id=168731
+
+ Reviewed by Eric Carlson.
+
+ Test: fast/mediastream/mock-media-source-webaudio.html
+
+ Because the audioSourceProvider can be created before the mock source is configured, explicitly configure the
+ source if necessary after creating the audioSourceProvider.
+
+ * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
+ (WebCore::MockRealtimeAudioSourceMac::audioSourceProvider):
+
2017-02-22 Chris Dumez <cdu...@apple.com>
Do not aggressively throttle DOM timers until they've reached their max nesting level
Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm (212845 => 212846)
--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm 2017-02-22 20:44:30 UTC (rev 212845)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm 2017-02-22 20:46:32 UTC (rev 212846)
@@ -203,6 +203,9 @@
AudioSourceProvider* MockRealtimeAudioSourceMac::audioSourceProvider()
{
if (!m_audioSourceProvider) {
+ if (!m_audioBufferList)
+ reconfigure();
+
m_audioSourceProvider = WebAudioSourceProviderAVFObjC::create(*this);
m_audioSourceProvider->prepare(&m_streamFormat);
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes