OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010, Google Inc. All rights reserved. | 2 * Copyright (C) 2010, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 virtual void dispose(); | 100 virtual void dispose(); |
101 | 101 |
102 // node() returns a valid object until dispose() is called. This returns | 102 // node() returns a valid object until dispose() is called. This returns |
103 // nullptr after dispose(). We must not call node() in an audio rendering | 103 // nullptr after dispose(). We must not call node() in an audio rendering |
104 // thread. | 104 // thread. |
105 AudioNode* node() const; | 105 AudioNode* node() const; |
106 // context() returns a valid object until the AbstractAudioContext dies, and
returns | 106 // context() returns a valid object until the AbstractAudioContext dies, and
returns |
107 // nullptr otherwise. This always returns a valid object in an audio | 107 // nullptr otherwise. This always returns a valid object in an audio |
108 // rendering thread, and inside dispose(). We must not call context() in | 108 // rendering thread, and inside dispose(). We must not call context() in |
109 // the destructor. | 109 // the destructor. |
110 AbstractAudioContext* context() const; | 110 virtual AbstractAudioContext* context() const; |
111 void clearContext() { m_context = nullptr; } | 111 void clearContext() { m_context = nullptr; } |
112 | 112 |
113 enum ChannelCountMode { | 113 enum ChannelCountMode { |
114 Max, | 114 Max, |
115 ClampedMax, | 115 ClampedMax, |
116 Explicit | 116 Explicit |
117 }; | 117 }; |
118 | 118 |
119 NodeType nodeType() const { return m_nodeType; } | 119 NodeType nodeType() const { return m_nodeType; } |
120 String nodeTypeName() const; | 120 String nodeTypeName() const; |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 void addOutput(unsigned numberOfChannels); | 222 void addOutput(unsigned numberOfChannels); |
223 | 223 |
224 // Called by processIfNecessary() to cause all parts of the rendering graph
connected to us to process. | 224 // Called by processIfNecessary() to cause all parts of the rendering graph
connected to us to process. |
225 // Each rendering quantum, the audio data for each of the AudioNode's inputs
will be available after this method is called. | 225 // Each rendering quantum, the audio data for each of the AudioNode's inputs
will be available after this method is called. |
226 // Called from context's audio thread. | 226 // Called from context's audio thread. |
227 virtual void pullInputs(size_t framesToProcess); | 227 virtual void pullInputs(size_t framesToProcess); |
228 | 228 |
229 // Force all inputs to take any channel interpretation changes into account. | 229 // Force all inputs to take any channel interpretation changes into account. |
230 void updateChannelsForInputs(); | 230 void updateChannelsForInputs(); |
231 | 231 |
| 232 // This raw pointer is safe because this is cleared for all of live |
| 233 // AudioHandlers when the AbstractAudioContext dies. Do not access m_contex
t |
| 234 // directly, use context() instead. |
| 235 GC_PLUGIN_IGNORE("http://crbug.com/404527") |
| 236 AbstractAudioContext* m_context; |
| 237 |
232 private: | 238 private: |
233 void setNodeType(NodeType); | 239 void setNodeType(NodeType); |
234 | 240 |
235 volatile bool m_isInitialized; | 241 volatile bool m_isInitialized; |
236 NodeType m_nodeType; | 242 NodeType m_nodeType; |
237 | 243 |
238 // The owner AudioNode. This raw pointer is safe because dispose() is | 244 // The owner AudioNode. This raw pointer is safe because dispose() is |
239 // called before the AudioNode death, and it clears m_node. Do not access | 245 // called before the AudioNode death, and it clears m_node. Do not access |
240 // m_node directly, use node() instead. | 246 // m_node directly, use node() instead. |
241 GC_PLUGIN_IGNORE("http://crbug.com/404527") | 247 GC_PLUGIN_IGNORE("http://crbug.com/404527") |
242 AudioNode* m_node; | 248 AudioNode* m_node; |
243 | 249 |
244 // This raw pointer is safe because this is cleared for all of live | |
245 // AudioHandlers when the AbstractAudioContext dies. Do not access m_contex
t | |
246 // directly, use context() instead. | |
247 GC_PLUGIN_IGNORE("http://crbug.com/404527") | |
248 AbstractAudioContext* m_context; | |
249 | |
250 float m_sampleRate; | 250 float m_sampleRate; |
251 Vector<OwnPtr<AudioNodeInput>> m_inputs; | 251 Vector<OwnPtr<AudioNodeInput>> m_inputs; |
252 Vector<OwnPtr<AudioNodeOutput>> m_outputs; | 252 Vector<OwnPtr<AudioNodeOutput>> m_outputs; |
253 | 253 |
254 double m_lastProcessingTime; | 254 double m_lastProcessingTime; |
255 double m_lastNonSilentTime; | 255 double m_lastNonSilentTime; |
256 | 256 |
257 volatile int m_connectionRefCount; | 257 volatile int m_connectionRefCount; |
258 | 258 |
259 bool m_isDisabled; | 259 bool m_isDisabled; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 HeapVector<Member<HeapHashSet<Member<AudioNode>>>> m_connectedNodes; | 330 HeapVector<Member<HeapHashSet<Member<AudioNode>>>> m_connectedNodes; |
331 // Represents audio node graph with Oilpan references. N-th HeapHashSet | 331 // Represents audio node graph with Oilpan references. N-th HeapHashSet |
332 // represents a set of AudioParam objects connected to this AudioNode's N-th | 332 // represents a set of AudioParam objects connected to this AudioNode's N-th |
333 // output. | 333 // output. |
334 HeapVector<Member<HeapHashSet<Member<AudioParam>>>> m_connectedParams; | 334 HeapVector<Member<HeapHashSet<Member<AudioParam>>>> m_connectedParams; |
335 }; | 335 }; |
336 | 336 |
337 } // namespace blink | 337 } // namespace blink |
338 | 338 |
339 #endif // AudioNode_h | 339 #endif // AudioNode_h |
OLD | NEW |