Bug 1265394 - Add new PannerNode AudioParams to webidl; r=smaug draft
authorSchwartz Clement <clement.schwartz@ensimag.grenoble-inp.fr>
Fri, 03 Jun 2016 14:15:15 +0200
changeset 384169 be8c2fea3a6b87b858579e099ad6f2ca362e5394
parent 383505 4191df8e4b8e1e2dd0593132dac25915f987f797
child 384170 9d7e8e734f54d18af44f6a3c72a21b2d9b38d83f
push id22187
push userdminor@mozilla.com
push dateTue, 05 Jul 2016 18:31:32 +0000
reviewerssmaug
bugs1265394
milestone50.0a1
Bug 1265394 - Add new PannerNode AudioParams to webidl; r=smaug MozReview-Commit-ID: I09QSCU9pIr
dom/media/webaudio/PannerNode.h
dom/webidl/PannerNode.webidl
--- a/dom/media/webaudio/PannerNode.h
+++ b/dom/media/webaudio/PannerNode.h
@@ -180,16 +180,47 @@ public:
   {
     if (WebAudioUtils::FuzzyEqual(mConeOuterGain, aConeOuterGain)) {
       return;
     }
     mConeOuterGain = aConeOuterGain;
     SendDoubleParameterToStream(CONE_OUTER_GAIN, mConeOuterGain);
   }
 
+  AudioParam* PositionX()
+  {
+    return mPositionX;
+  }
+
+  AudioParam* PositionY()
+  {
+    return mPositionY;
+  }
+
+  AudioParam* PositionZ()
+  {
+    return mPositionZ;
+  }
+
+  AudioParam* OrientationX()
+  {
+    return mOrientationX;
+  }
+
+  AudioParam* OrientationY()
+  {
+    return mOrientationY;
+  }
+
+  AudioParam* OrientationZ()
+  {
+    return mOrientationZ;
+  }
+
+
   float ComputeDopplerShift();
   void SendDopplerToSourcesIfNeeded();
   void FindConnectedSources();
   void FindConnectedSources(AudioNode* aNode, nsTArray<AudioBufferSourceNode*>& aSources, std::set<AudioNode*>& aSeenNodes);
 
   const char* NodeType() const override
   {
     return "PannerNode";
@@ -225,16 +256,23 @@ private:
   };
 
 private:
   PanningModelType mPanningModel;
   DistanceModelType mDistanceModel;
   ThreeDPoint mPosition;
   ThreeDPoint mOrientation;
   ThreeDPoint mVelocity;
+  RefPtr<AudioParam> mPositionX;
+  RefPtr<AudioParam> mPositionY;
+  RefPtr<AudioParam> mPositionZ;
+  RefPtr<AudioParam> mOrientationX;
+  RefPtr<AudioParam> mOrientationY;
+  RefPtr<AudioParam> mOrientationZ;
+
   double mRefDistance;
   double mMaxDistance;
   double mRolloffFactor;
   double mConeInnerAngle;
   double mConeOuterAngle;
   double mConeOuterGain;
 
   // An array of all the AudioBufferSourceNode connected directly or indirectly
--- a/dom/webidl/PannerNode.webidl
+++ b/dom/webidl/PannerNode.webidl
@@ -27,16 +27,26 @@ interface PannerNode : AudioNode {
     attribute PanningModelType panningModel;
 
     // Uses a 3D cartesian coordinate system
     void setPosition(double x, double y, double z);
     void setOrientation(double x, double y, double z);
     [Deprecated="PannerNodeDoppler"]
     void setVelocity(double x, double y, double z);
 
+    // Cartesian coordinate for position
+    readonly attribute AudioParam positionX;
+    readonly attribute AudioParam positionY;
+    readonly attribute AudioParam positionZ;
+
+    // Cartesian coordinate for orientation
+    readonly attribute AudioParam orientationX;
+    readonly attribute AudioParam orientationY;
+    readonly attribute AudioParam orientationZ;
+
     // Distance model and attributes
     attribute DistanceModelType distanceModel;
     attribute double refDistance;
     attribute double maxDistance;
     attribute double rolloffFactor;
 
     // Directional sound cone
     attribute double coneInnerAngle;