| 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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 | 133 |
| 134 // Called at the start of each render quantum. | 134 // Called at the start of each render quantum. |
| 135 void handlePreRenderTasks(); | 135 void handlePreRenderTasks(); |
| 136 | 136 |
| 137 // Called at the end of each render quantum. | 137 // Called at the end of each render quantum. |
| 138 void handlePostRenderTasks(); | 138 void handlePostRenderTasks(); |
| 139 | 139 |
| 140 // Called periodically at the end of each render quantum to dereference fini
shed source nodes. | 140 // Called periodically at the end of each render quantum to dereference fini
shed source nodes. |
| 141 void derefFinishedSourceNodes(); | 141 void derefFinishedSourceNodes(); |
| 142 | 142 |
| 143 #if ENABLE(OILPAN) |
| 144 void registerLiveAudioSummingJunction(AudioSummingJunction&); |
| 145 #endif |
| 143 // We schedule deletion of all marked nodes at the end of each realtime rend
er quantum. | 146 // We schedule deletion of all marked nodes at the end of each realtime rend
er quantum. |
| 144 void markForDeletion(AudioNode*); | 147 void markForDeletion(AudioNode*); |
| 145 void deleteMarkedNodes(); | 148 void deleteMarkedNodes(); |
| 146 | 149 |
| 147 // AudioContext can pull node(s) at the end of each render quantum even when
they are not connected to any downstream nodes. | 150 // AudioContext can pull node(s) at the end of each render quantum even when
they are not connected to any downstream nodes. |
| 148 // These two methods are called by the nodes who want to add/remove themselv
es into/from the automatic pull lists. | 151 // These two methods are called by the nodes who want to add/remove themselv
es into/from the automatic pull lists. |
| 149 void addAutomaticPullNode(AudioNode*); | 152 void addAutomaticPullNode(AudioNode*); |
| 150 void removeAutomaticPullNode(AudioNode*); | 153 void removeAutomaticPullNode(AudioNode*); |
| 151 | 154 |
| 152 // Called right before handlePostRenderTasks() to handle nodes which need to
be pulled even when they are not connected to anything. | 155 // Called right before handlePostRenderTasks() to handle nodes which need to
be pulled even when they are not connected to anything. |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 // Only accessed in the audio thread. | 272 // Only accessed in the audio thread. |
| 270 Vector<AudioNode*> m_finishedNodes; | 273 Vector<AudioNode*> m_finishedNodes; |
| 271 | 274 |
| 272 // List of source nodes. This is either accessed when the graph lock is | 275 // List of source nodes. This is either accessed when the graph lock is |
| 273 // held, or on the main thread when the audio thread has finished. | 276 // held, or on the main thread when the audio thread has finished. |
| 274 // This RefPtr is connection reference. We must call AudioNode:: | 277 // This RefPtr is connection reference. We must call AudioNode:: |
| 275 // makeConnection() after ref(), and call AudioNode::breakConnection() | 278 // makeConnection() after ref(), and call AudioNode::breakConnection() |
| 276 // before deref(). | 279 // before deref(). |
| 277 Vector<RefPtr<AudioNode> > m_referencedNodes; | 280 Vector<RefPtr<AudioNode> > m_referencedNodes; |
| 278 | 281 |
| 282 #if ENABLE(OILPAN) |
| 283 class AudioSummingJunctionDisposer { |
| 284 public: |
| 285 explicit AudioSummingJunctionDisposer(AudioSummingJunction& junction) :
m_junction(junction) { } |
| 286 ~AudioSummingJunctionDisposer(); |
| 287 |
| 288 private: |
| 289 AudioSummingJunction& m_junction; |
| 290 }; |
| 291 HeapHashMap<WeakMember<AudioSummingJunction>, OwnPtr<AudioSummingJunctionDis
poser> > m_liveAudioSummingJunctions; |
| 292 #endif |
| 279 // Accumulate nodes which need to be deleted here. | 293 // Accumulate nodes which need to be deleted here. |
| 280 // This is copied to m_nodesToDelete at the end of a render cycle in handleP
ostRenderTasks(), where we're assured of a stable graph | 294 // This is copied to m_nodesToDelete at the end of a render cycle in handleP
ostRenderTasks(), where we're assured of a stable graph |
| 281 // state which will have no references to any of the nodes in m_nodesToDelet
e once the context lock is released | 295 // state which will have no references to any of the nodes in m_nodesToDelet
e once the context lock is released |
| 282 // (when handlePostRenderTasks() has completed). | 296 // (when handlePostRenderTasks() has completed). |
| 283 Vector<AudioNode*> m_nodesMarkedForDeletion; | 297 Vector<AudioNode*> m_nodesMarkedForDeletion; |
| 284 | 298 |
| 285 // They will be scheduled for deletion (on the main thread) at the end of a
render cycle (in realtime thread). | 299 // They will be scheduled for deletion (on the main thread) at the end of a
render cycle (in realtime thread). |
| 286 Vector<AudioNode*> m_nodesToDelete; | 300 Vector<AudioNode*> m_nodesToDelete; |
| 287 bool m_isDeletionScheduled; | 301 bool m_isDeletionScheduled; |
| 288 | 302 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 AsyncAudioDecoder m_audioDecoder; | 334 AsyncAudioDecoder m_audioDecoder; |
| 321 | 335 |
| 322 // This is considering 32 is large enough for multiple channels audio. | 336 // This is considering 32 is large enough for multiple channels audio. |
| 323 // It is somewhat arbitrary and could be increased if necessary. | 337 // It is somewhat arbitrary and could be increased if necessary. |
| 324 enum { MaxNumberOfChannels = 32 }; | 338 enum { MaxNumberOfChannels = 32 }; |
| 325 }; | 339 }; |
| 326 | 340 |
| 327 } // WebCore | 341 } // WebCore |
| 328 | 342 |
| 329 #endif // AudioContext_h | 343 #endif // AudioContext_h |
| OLD | NEW |