-
crogers@google.com authored
https://bugs.webkit.org/show_bug.cgi?id=66398 Reviewed by Eric Carlson. Source/WebCore: * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::HTMLMediaElement): (WebCore::HTMLMediaElement::prepareForLoad): (WebCore::HTMLMediaElement::loadNextSourceChild): (WebCore::HTMLMediaElement::ensureMediaPlayer): (WebCore::HTMLMediaElement::createMediaPlayer): MediaPlayer creation has now been put into createMediaPlayer() instead of it being created separately in these various methods. It has been made thread-safe for use with the Web Audio API in conjunction with an MediaElementAudioSourceNode. (WebCore::HTMLMediaElement::setAudioSourceNode): (WebCore::HTMLMediaElement::audioSourceProvider): * html/HTMLMediaElement.h: (WebCore::HTMLMediaElement::audioSourceNode): The HTMLMediaElement now keeps track of an optional MediaElementAudioSourceNode if the audio stream is being processed using the Web Audio API. * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::audioSourceProvider): * platform/graphics/MediaPlayer.h: * platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::audioSourceProvider): MediaPlayer now has an audioSourceProvider() method with a default "empty" implementation. audioSourceProvider() returns an AudioSourceProvider object which the Web Audio API's MediaElementAudioSourceNode uses (indirectly through an HTMLMediaElement method) to get the rendered audio stream. * webaudio/AudioContext.cpp: (WebCore::AudioContext::createMediaElementSource): * webaudio/AudioContext.h: * webaudio/AudioContext.idl: AudioContext::createMediaElementSource() is now more careful to check that an HTMLMediaElement doesn't already have a MediaElementAudioSourceNode attached to it. * webaudio/MediaElementAudioSourceNode.cpp: (WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode): (WebCore::MediaElementAudioSourceNode::~MediaElementAudioSourceNode): (WebCore::MediaElementAudioSourceNode::process): (WebCore::MediaElementAudioSourceNode::lock): (WebCore::MediaElementAudioSourceNode::unlock): * webaudio/MediaElementAudioSourceNode.h: Implement thread-safe processing (replacing the old stub implementation). LayoutTests: * webaudio/mediaelementaudiosourcenode-expected.txt: * webaudio/mediaelementaudiosourcenode.html: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@93903 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3b1a09d0