Chromium Code Reviews| Index: third_party/WebKit/Source/modules/webaudio/AudioDestinationNode.h |
| diff --git a/third_party/WebKit/Source/modules/webaudio/AudioDestinationNode.h b/third_party/WebKit/Source/modules/webaudio/AudioDestinationNode.h |
| index a25e598b53617a89d01aa2b0466ae65ea470a49e..9f1125d0b791091122425ecbea73791adc0f2b07 100644 |
| --- a/third_party/WebKit/Source/modules/webaudio/AudioDestinationNode.h |
| +++ b/third_party/WebKit/Source/modules/webaudio/AudioDestinationNode.h |
| @@ -30,11 +30,13 @@ |
| #include "platform/audio/AudioBus.h" |
| #include "platform/audio/AudioIOCallback.h" |
| #include "platform/audio/AudioSourceProvider.h" |
| +#include "wtf/ThreadingPrimitives.h" |
| namespace blink { |
| class AudioBus; |
| class AbstractAudioContext; |
| +class AudioTimestamp; |
| class AudioDestinationHandler : public AudioHandler, public AudioIOCallback { |
| public: |
| @@ -46,7 +48,7 @@ public: |
| // The audio hardware calls render() to get the next render quantum of audio into destinationBus. |
| // It will optionally give us local/live audio input in sourceBus (if it's not 0). |
| - void render(AudioBus* sourceBus, AudioBus* destinationBus, size_t numberOfFrames) final; |
| + void render(AudioBus* sourceBus, AudioBus* destinationBus, size_t numberOfFrames, const WebAudioTimestamp& outputTimestamp) final; |
| size_t currentSampleFrame() const { return acquireLoad(&m_currentSampleFrame); } |
| double currentTime() const { return currentSampleFrame() / static_cast<double>(sampleRate()); } |
| @@ -56,6 +58,8 @@ public: |
| virtual void startRendering() = 0; |
| virtual void stopRendering() = 0; |
| + WebAudioTimestamp outputTimestamp() const; |
| + |
| protected: |
| // LocalAudioInputProvider allows us to expose an AudioSourceProvider for local/live audio input. |
| // If there is local/live audio input, we call set() with the audio input data every render quantum. |
| @@ -88,6 +92,10 @@ protected: |
| // Counts the number of sample-frames processed by the destination. |
| size_t m_currentSampleFrame; |
| + // FIXME(Mikhail) : when allowed use std::atomic<WebAudioTimestamp> instead of mutex. |
|
hongchan
2016/06/14 17:10:38
FIXME -> TODO.
Mikhail
2016/06/17 09:36:57
I've changed the approach so that it is using 'loc
|
| + WebAudioTimestamp m_outputTimestamp; |
| + mutable Mutex m_mutex; |
| + |
| LocalAudioInputProvider m_localAudioInputProvider; |
| }; |