Skip to content
  • tommyw@google.com's avatar
    Add basic implementation for MediaStreamAudioDestinationNode · 19d9a7cd
    tommyw@google.com authored
    https://bugs.webkit.org/show_bug.cgi?id=101815
    
    Reviewed by Chris Rogers.
    
    Source/Platform:
    
    Adds the consumer interface and related functionality to WebMediaStreamSource.
    
    * chromium/public/WebAudioDestinationConsumer.h: Added.
    (WebKit):
    (WebAudioDestinationConsumer):
    (WebKit::WebAudioDestinationConsumer::~WebAudioDestinationConsumer):
    * chromium/public/WebMediaStreamSource.h:
    (WebKit):
    (WebMediaStreamSource):
    
    Source/WebCore:
    
    Implements an audio destination node which has a MediaStream.
    This can be added to a PeerConnection with peerConnection.addStream().
    Please see use case (3):
    https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/webrtc-integration.html
    
    Test: webaudio/mediastreamaudiodestinationnode.html
    
    * Modules/webaudio/AudioContext.cpp:
    (WebCore):
    (WebCore::AudioContext::createMediaStreamDestination):
    * Modules/webaudio/AudioContext.h:
    (WebCore):
    (AudioContext):
    * Modules/webaudio/AudioContext.idl:
    * Modules/webaudio/AudioNode.h:
    * Modules/webaudio/MediaStreamAudioDestinationNode.cpp: Added.
    (WebCore):
    (WebCore::MediaStreamAudioDestinationNode::create):
    (WebCore::MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode):
    (WebCore::MediaStreamAudioDestinationNode::mediaStreamSource):
    (WebCore::MediaStreamAudioDestinationNode::~MediaStreamAudioDestinationNode):
    (WebCore::MediaStreamAudioDestinationNode::process):
    (WebCore::MediaStreamAudioDestinationNode::reset):
    * Modules/webaudio/MediaStreamAudioDestinationNode.h: Added.
    (WebCore):
    (MediaStreamAudioDestinationNode):
    (WebCore::MediaStreamAudioDestinationNode::stream):
    * Modules/webaudio/MediaStreamAudioDestinationNode.idl: Added.
    * WebCore.gypi:
    * platform/audio/AudioDestinationConsumer.h: Copied from Source/WebCore/platform/mediastream/MediaStreamSource.cpp.
    (WebCore):
    (AudioDestinationConsumer):
    (WebCore::AudioDestinationConsumer::~AudioDestinationConsumer):
    * platform/chromium/support/WebMediaStreamSource.cpp:
    (WebKit::WebMediaStreamSource::extraData):
    (WebKit::WebMediaStreamSource::setExtraData):
    (WebKit::WebMediaStreamSource::requiresAudioConsumer):
    (WebKit):
    (ConsumerWrapper):
    (WebKit::ConsumerWrapper::create):
    (WebKit::ConsumerWrapper::consumer):
    (WebKit::ConsumerWrapper::ConsumerWrapper):
    (WebKit::ConsumerWrapper::consumeAudio):
    (WebKit::WebMediaStreamSource::addAudioConsumer):
    (WebKit::WebMediaStreamSource::removeAudioConsumer):
    * platform/mediastream/MediaStreamSource.cpp:
    (WebCore::MediaStreamSource::create):
    (WebCore::MediaStreamSource::MediaStreamSource):
    (WebCore::MediaStreamSource::addAudioConsumer):
    (WebCore):
    (WebCore::MediaStreamSource::removeAudioConsumer):
    (WebCore::MediaStreamSource::consumeAudio):
    * platform/mediastream/MediaStreamSource.h:
    (WebCore):
    (MediaStreamSource):
    (WebCore::MediaStreamSource::requiresAudioConsumer):
    (WebCore::MediaStreamSource::audioConsumers):
    
    Tools:
    
    Adds a bit of code that exercises the WebKit API.
    
    * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
    (MockWebMediaStreamSourceConsumer):
    (MockWebMediaStreamSourceConsumer::~MockWebMediaStreamSourceConsumer):
    (MockWebMediaStreamCenter::didCreateMediaStream):
    
    LayoutTests:
    
    * webaudio/mediastreamaudiodestinationnode-expected.txt: Added.
    * webaudio/mediastreamaudiodestinationnode.html: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@135985 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    19d9a7cd