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

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: 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
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();
KhNo 2014/04/14 11:23:30 This destructor was added for clear m_panners whic
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; }
KhNo 2014/04/14 11:23:30 Moved to private, no need to public.
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
KhNo 2014/04/14 11:23:30 Orientation and up-vector should be categorized to
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; }
KhNo 2014/04/14 11:23:30 Moved to private, no need to public.
60 const FloatPoint3D& orientation() const { return m_orientation; } 62 const FloatPoint3D& orientation() const { return m_orientation; }
61
62 // Up-vector
KhNo 2014/04/14 11:23:30 Orientation and up-vector should be categorized to
63 void setUpVector(const FloatPoint3D &upVector) { m_upVector = upVector; }
KhNo 2014/04/14 11:23:30 Moved to private, no need to public.
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; }
KhNo 2014/04/14 11:23:30 Moved to private, no need to public.
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 // Provide for pannerNodes.
78 Mutex& listenerLock() { return m_listenerLock; }
KhNo 2014/04/14 11:23:30 listener lock will be used for pannerNode's proces
79 void addPanner(PannerNode*);
80 void removePanner(PannerNode*);
81
79 private: 82 private:
80 AudioListener(); 83 AudioListener();
81 84
82 // Position / Orientation 85 void setPosition(const FloatPoint3D&);
86 void setOrientation(const FloatPoint3D&);
87 void setUpVector(const FloatPoint3D&);
88 void setVelocity(const FloatPoint3D&);
89
90 void updatePannersDirty(unsigned);
KhNo 2014/04/14 11:23:30 Common private method for change dirties of all pa
91
83 FloatPoint3D m_position; 92 FloatPoint3D m_position;
84 FloatPoint3D m_orientation; 93 FloatPoint3D m_orientation;
85 FloatPoint3D m_upVector; 94 FloatPoint3D m_upVector;
86
KhNo 2014/04/14 11:23:30 blank is not necessary for categorization.
87 FloatPoint3D m_velocity; 95 FloatPoint3D m_velocity;
88
KhNo 2014/04/14 11:23:30 blank is not necessary for categorization.
89 double m_dopplerFactor; 96 double m_dopplerFactor;
90 double m_speedOfSound; 97 double m_speedOfSound;
98
99 // Synchronize a panner's process() with setting of the state of the listene r.
100 mutable Mutex m_listenerLock;
101
102 // List for pannerNodes in context.
103 typedef Vector<PannerNode*> PannerList;
104 PannerList m_panners;
KhNo 2014/04/14 11:23:30 audio listener should have all pannernode's instan
91 }; 105 };
92 106
93 } // WebCore 107 } // WebCore
94 108
95 #endif // AudioListener_h 109 #endif // AudioListener_h
OLDNEW
« no previous file with comments | « no previous file | Source/modules/webaudio/AudioListener.cpp » ('j') | Source/modules/webaudio/PannerNode.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698