Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8614)

Unified Diff: Source/modules/webaudio/AudioContext.h

Issue 1006963003: AudioContext.decodeAudioData returns a Promise (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Error callback invoked with error, not null. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/modules/webaudio/AudioContext.h
diff --git a/Source/modules/webaudio/AudioContext.h b/Source/modules/webaudio/AudioContext.h
index d74b0cc089ea10bb9a9d6be7ac64e4a567f0d455..477c216bc1e7275ee8c2ea815deff84a83127737 100644
--- a/Source/modules/webaudio/AudioContext.h
+++ b/Source/modules/webaudio/AudioContext.h
@@ -124,7 +124,7 @@ public:
AudioBuffer* createBuffer(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate, ExceptionState&);
// Asynchronous audio file data decoding.
- void decodeAudioData(DOMArrayBuffer*, AudioBufferCallback*, AudioBufferCallback*, ExceptionState&);
+ ScriptPromise decodeAudioData(ScriptState*, DOMArrayBuffer*, AudioBufferCallback*, AudioBufferCallback*, ExceptionState&);
AudioListener* listener() { return m_listener.get(); }
@@ -283,6 +283,7 @@ public:
// Get the security origin for this audio context.
SecurityOrigin* securityOrigin() const;
+ void removeAudioDecoderResolver(ScriptPromiseResolver*);
protected:
explicit AudioContext(Document*);
AudioContext(Document*, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate);
@@ -417,6 +418,8 @@ private:
void setContextState(AudioContextState);
AsyncAudioDecoder m_audioDecoder;
+ // A vector of the ScriptPromiseResolvers the decodeAudioData method uses.
+ WillBeHeapVector<RefPtrWillBeMember<ScriptPromiseResolver>> m_audioDecoderResolvers;
// Collection of nodes where the channel count mode has changed. We want the channel count mode
// to change in the pre- or post-rendering phase so as not to disturb the running audio thread.
@@ -429,6 +432,11 @@ private:
// Follows the destination's currentSampleFrame, but might be slightly behind due to locking.
size_t m_cachedSampleFrame;
+ // When a context is closed, the sample rate is cleared. But decodeAudioData can be called
+ // after the context has been closed and it needs the sample rate. When the context is closed,
+ // the sample rate is saved here.
+ float m_closedContextSampleRate;
+
// Tries to handle AudioBufferSourceNodes that were started but became disconnected or was never
// connected. Because these never get pulled anymore, they will stay around forever. So if we
// can, try to stop them so they can be collected.

Powered by Google App Engine
This is Rietveld 408576698