Title: [125456] trunk/Source/WebCore
- Revision
- 125456
- Author
- [email protected]
- Date
- 2012-08-13 15:03:38 -0700 (Mon, 13 Aug 2012)
Log Message
AudioContext::createMediaStreamSource() must create a provider for local MediaStreams
https://bugs.webkit.org/show_bug.cgi?id=93756
Reviewed by Eric Carlson.
There are two main kinds of MediaStreams (local and from remote peers).
Internally we need to know the difference so a MediaStreamAudioSourceNode will "just work".
Tested by existing test: mediastreamaudiosourcenode.html
Full testing can only be verified by manual tests.
* Modules/mediastream/LocalMediaStream.h:
(LocalMediaStream):
* Modules/mediastream/MediaStream.h:
(WebCore::MediaStream::isLocal):
(MediaStream):
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::createMediaStreamSource):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (125455 => 125456)
--- trunk/Source/WebCore/ChangeLog 2012-08-13 21:51:52 UTC (rev 125455)
+++ trunk/Source/WebCore/ChangeLog 2012-08-13 22:03:38 UTC (rev 125456)
@@ -1,3 +1,24 @@
+2012-08-13 Chris Rogers <[email protected]>
+
+ AudioContext::createMediaStreamSource() must create a provider for local MediaStreams
+ https://bugs.webkit.org/show_bug.cgi?id=93756
+
+ Reviewed by Eric Carlson.
+
+ There are two main kinds of MediaStreams (local and from remote peers).
+ Internally we need to know the difference so a MediaStreamAudioSourceNode will "just work".
+
+ Tested by existing test: mediastreamaudiosourcenode.html
+ Full testing can only be verified by manual tests.
+
+ * Modules/mediastream/LocalMediaStream.h:
+ (LocalMediaStream):
+ * Modules/mediastream/MediaStream.h:
+ (WebCore::MediaStream::isLocal):
+ (MediaStream):
+ * Modules/webaudio/AudioContext.cpp:
+ (WebCore::AudioContext::createMediaStreamSource):
+
2012-08-13 Simon Hausmann <[email protected]>
Unreviewed, rolling out r125444.
Modified: trunk/Source/WebCore/Modules/mediastream/LocalMediaStream.h (125455 => 125456)
--- trunk/Source/WebCore/Modules/mediastream/LocalMediaStream.h 2012-08-13 21:51:52 UTC (rev 125455)
+++ trunk/Source/WebCore/Modules/mediastream/LocalMediaStream.h 2012-08-13 22:03:38 UTC (rev 125456)
@@ -40,6 +40,9 @@
void stop();
+ // MediaStream
+ virtual bool isLocal() const OVERRIDE { return true; }
+
// EventTarget
virtual const AtomicString& interfaceName() const OVERRIDE;
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.h (125455 => 125456)
--- trunk/Source/WebCore/Modules/mediastream/MediaStream.h 2012-08-13 21:51:52 UTC (rev 125455)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.h 2012-08-13 22:03:38 UTC (rev 125456)
@@ -56,6 +56,8 @@
MediaStreamTrackList* audioTracks() { return m_audioTracks.get(); }
MediaStreamTrackList* videoTracks() { return m_videoTracks.get(); }
+ virtual bool isLocal() const { return false; }
+
// MediaStreamDescriptorOwner
virtual void streamEnded() OVERRIDE;
Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp (125455 => 125456)
--- trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp 2012-08-13 21:51:52 UTC (rev 125455)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp 2012-08-13 22:03:38 UTC (rev 125456)
@@ -401,9 +401,20 @@
ASSERT(isMainThread());
lazyInitialize();
- // FIXME: For now we don't give it an AudioSourceProvider, so it will output silence.
- RefPtr<MediaStreamAudioSourceNode> node = MediaStreamAudioSourceNode::create(this, mediaStream, 0);
+ AudioSourceProvider* provider = 0;
+ if (mediaStream->isLocal() && mediaStream->audioTracks()->length())
+ provider = destination()->localAudioInputProvider();
+ else {
+ // FIXME: get a provider for non-local MediaStreams (like from a remote peer).
+ provider = 0;
+ }
+
+ RefPtr<MediaStreamAudioSourceNode> node = MediaStreamAudioSourceNode::create(this, mediaStream, provider);
+
+ // FIXME: Only stereo streams are supported right now. We should be able to accept multi-channel streams.
+ node->setFormat(2, sampleRate());
+
refNode(node.get()); // context keeps reference until node is disconnected
return node;
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes