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

Side by Side Diff: Source/modules/webaudio/AudioListener.h

Issue 232453003: Add logic to cache elements of panner node from calculation with own attributes and AudioListener (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Unrelated fix has been separated. Created 6 years, 8 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
« no previous file with comments | « no previous file | Source/modules/webaudio/AudioListener.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 15 matching lines...) Expand all
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #ifndef AudioListener_h 29 #ifndef AudioListener_h
30 #define AudioListener_h 30 #define AudioListener_h
31 31
32 #include "bindings/v8/ScriptWrappable.h" 32 #include "bindings/v8/ScriptWrappable.h"
33 #include "platform/geometry/FloatPoint3D.h" 33 #include "platform/geometry/FloatPoint3D.h"
34 #include "wtf/PassRefPtr.h" 34 #include "wtf/PassRefPtr.h"
35 #include "wtf/RefCounted.h" 35 #include "wtf/RefCounted.h"
36 #include "wtf/Vector.h"
36 37
37 namespace WebCore { 38 namespace WebCore {
38 39
40 class PannerNode;
41
39 // AudioListener maintains the state of the listener in the audio scene as defin ed in the OpenAL specification. 42 // AudioListener maintains the state of the listener in the audio scene as defin ed in the OpenAL specification.
40 43
41 class AudioListener : public ScriptWrappable, public RefCounted<AudioListener> { 44 class AudioListener : public ScriptWrappable, public RefCounted<AudioListener> {
42 public: 45 public:
43 static PassRefPtr<AudioListener> create() 46 static PassRefPtr<AudioListener> create()
44 { 47 {
45 return adoptRef(new AudioListener()); 48 return adoptRef(new AudioListener());
46 } 49 }
50 virtual ~AudioListener();
47 51
48 // Position 52 // Position
49 void setPosition(float x, float y, float z) { setPosition(FloatPoint3D(x, y, z)); } 53 void setPosition(float x, float y, float z) { setPosition(FloatPoint3D(x, y, z)); }
50 void setPosition(const FloatPoint3D &position) { m_position = position; }
51 const FloatPoint3D& position() const { return m_position; } 54 const FloatPoint3D& position() const { return m_position; }
52 55
53 // Orientation 56 // Orientation and Up-vector
54 void setOrientation(float x, float y, float z, float upX, float upY, float u pZ) 57 void setOrientation(float x, float y, float z, float upX, float upY, float u pZ)
55 { 58 {
56 setOrientation(FloatPoint3D(x, y, z)); 59 setOrientation(FloatPoint3D(x, y, z));
57 setUpVector(FloatPoint3D(upX, upY, upZ)); 60 setUpVector(FloatPoint3D(upX, upY, upZ));
58 } 61 }
59 void setOrientation(const FloatPoint3D &orientation) { m_orientation = orien tation; }
60 const FloatPoint3D& orientation() const { return m_orientation; } 62 const FloatPoint3D& orientation() const { return m_orientation; }
61
62 // Up-vector
63 void setUpVector(const FloatPoint3D &upVector) { m_upVector = upVector; }
64 const FloatPoint3D& upVector() const { return m_upVector; } 63 const FloatPoint3D& upVector() const { return m_upVector; }
65 64
66 // Velocity 65 // Velocity
67 void setVelocity(float x, float y, float z) { setVelocity(FloatPoint3D(x, y, z)); } 66 void setVelocity(float x, float y, float z) { setVelocity(FloatPoint3D(x, y, z)); }
68 void setVelocity(const FloatPoint3D &velocity) { m_velocity = velocity; }
69 const FloatPoint3D& velocity() const { return m_velocity; } 67 const FloatPoint3D& velocity() const { return m_velocity; }
70 68
71 // Doppler factor 69 // Doppler factor
72 void setDopplerFactor(double dopplerFactor) { m_dopplerFactor = dopplerFacto r; } 70 void setDopplerFactor(double);
73 double dopplerFactor() const { return m_dopplerFactor; } 71 double dopplerFactor() const { return m_dopplerFactor; }
74 72
75 // Speed of sound 73 // Speed of sound
76 void setSpeedOfSound(double speedOfSound) { m_speedOfSound = speedOfSound; } 74 void setSpeedOfSound(double);
77 double speedOfSound() const { return m_speedOfSound; } 75 double speedOfSound() const { return m_speedOfSound; }
78 76
77 Mutex& listenerLock() { return m_listenerLock; }
78 void addPanner(PannerNode*);
79 void removePanner(PannerNode*);
80
79 private: 81 private:
80 AudioListener(); 82 AudioListener();
81 83
82 // Position / Orientation 84 void setPosition(const FloatPoint3D&);
85 void setOrientation(const FloatPoint3D&);
86 void setUpVector(const FloatPoint3D&);
87 void setVelocity(const FloatPoint3D&);
88
89 void markPannersAsDirty(unsigned);
90
83 FloatPoint3D m_position; 91 FloatPoint3D m_position;
84 FloatPoint3D m_orientation; 92 FloatPoint3D m_orientation;
85 FloatPoint3D m_upVector; 93 FloatPoint3D m_upVector;
86
87 FloatPoint3D m_velocity; 94 FloatPoint3D m_velocity;
88
89 double m_dopplerFactor; 95 double m_dopplerFactor;
90 double m_speedOfSound; 96 double m_speedOfSound;
97
98 // Synchronize a panner's process() with setting of the state of the listene r.
99 mutable Mutex m_listenerLock;
100
101 // List for pannerNodes in context.
102 Vector<PannerNode*> m_panners;
91 }; 103 };
92 104
93 } // WebCore 105 } // WebCore
94 106
95 #endif // AudioListener_h 107 #endif // AudioListener_h
OLDNEW
« no previous file with comments | « no previous file | Source/modules/webaudio/AudioListener.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698