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

Side by Side Diff: third_party/WebKit/Source/modules/webaudio/AudioWorkletGlobalScope.h

Issue 2727733002: Implement AudioWorkletProcessor interface (Closed)
Patch Set: Addressing feedback from rtoy@ Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef AudioWorkletGlobalScope_h 5 #ifndef AudioWorkletGlobalScope_h
6 #define AudioWorkletGlobalScope_h 6 #define AudioWorkletGlobalScope_h
7 7
8 #include "bindings/core/v8/ScriptValue.h"
9 #include "core/dom/ExecutionContext.h"
8 #include "core/workers/ThreadedWorkletGlobalScope.h" 10 #include "core/workers/ThreadedWorkletGlobalScope.h"
11 #include "modules/ModulesExport.h"
9 12
10 namespace blink { 13 namespace blink {
11 14
12 class AudioWorkletGlobalScope final : public ThreadedWorkletGlobalScope { 15 class AudioBuffer;
16 class AudioWorkletProcessor;
17 class AudioWorkletProcessorDefinition;
18 class ExceptionState;
19
20 // This is constructed and destroyed on a worker thread, and all methods also
21 // must be called on the worker thread.
22 class MODULES_EXPORT AudioWorkletGlobalScope final
23 : public ThreadedWorkletGlobalScope {
13 DEFINE_WRAPPERTYPEINFO(); 24 DEFINE_WRAPPERTYPEINFO();
14 25
15 public: 26 public:
16 static AudioWorkletGlobalScope* create(const KURL&, 27 static AudioWorkletGlobalScope* create(const KURL&,
17 const String& userAgent, 28 const String& userAgent,
18 PassRefPtr<SecurityOrigin>, 29 PassRefPtr<SecurityOrigin>,
19 v8::Isolate*, 30 v8::Isolate*,
20 WorkerThread*); 31 WorkerThread*);
21 ~AudioWorkletGlobalScope() override; 32 ~AudioWorkletGlobalScope() override;
33 void dispose() final;
34 bool isAudioWorkletGlobalScope() const final { return true; }
35 void registerProcessor(const String& name,
36 const ScriptValue& classDefinition,
37 ExceptionState&);
38
39 // Creates an instance of AudioWorkletProcessor from a registered name. This
40 // function may return nullptr when 1) a definition cannot be found or 2) a
41 // new V8 object cannot be constructed for some reason.
42 AudioWorkletProcessor* createInstance(const String& name);
43
44 // Invokes the JS audio processing function from an instance of
45 // AudioWorkletProcessor, along with given AudioBuffer from the audio graph.
46 bool process(AudioWorkletProcessor*,
47 AudioBuffer* inputBuffer,
48 AudioBuffer* outputBuffer);
49
50 AudioWorkletProcessorDefinition* findDefinition(const String& name);
51
52 DECLARE_TRACE();
22 53
23 private: 54 private:
24 AudioWorkletGlobalScope(const KURL&, 55 AudioWorkletGlobalScope(const KURL&,
25 const String& userAgent, 56 const String& userAgent,
26 PassRefPtr<SecurityOrigin>, 57 PassRefPtr<SecurityOrigin>,
27 v8::Isolate*, 58 v8::Isolate*,
28 WorkerThread*); 59 WorkerThread*);
60
61 typedef HeapHashMap<String, Member<AudioWorkletProcessorDefinition>>
62 ProcessorDefinitionMap;
63 typedef HeapVector<Member<AudioWorkletProcessor>> ProcessorInstances;
64
65 ProcessorDefinitionMap m_processorDefinitionMap;
66 ProcessorInstances m_processorInstances;
29 }; 67 };
30 68
31 } // namespace blink 69 } // namespace blink
32 70
33 #endif // AudioWorkletGlobalScope_h 71 #endif // AudioWorkletGlobalScope_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/BUILD.gn ('k') | third_party/WebKit/Source/modules/webaudio/AudioWorkletGlobalScope.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698