content/media/webaudio/DynamicsCompressorNode.h

branch
TOR_BUG_9701
changeset 8
97036ab72558
equal deleted inserted replaced
-1:000000000000 0:add58d19c135
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #ifndef DynamicsCompressorNode_h_
8 #define DynamicsCompressorNode_h_
9
10 #include "AudioNode.h"
11 #include "AudioParam.h"
12
13 namespace mozilla {
14 namespace dom {
15
16 class AudioContext;
17
18 class DynamicsCompressorNode : public AudioNode
19 {
20 public:
21 explicit DynamicsCompressorNode(AudioContext* aContext);
22
23 NS_DECL_ISUPPORTS_INHERITED
24 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DynamicsCompressorNode, AudioNode)
25
26 virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
27
28 AudioParam* Threshold() const
29 {
30 return mThreshold;
31 }
32
33 AudioParam* Knee() const
34 {
35 return mKnee;
36 }
37
38 AudioParam* Ratio() const
39 {
40 return mRatio;
41 }
42
43 AudioParam* Reduction() const
44 {
45 return mReduction;
46 }
47
48 AudioParam* Attack() const
49 {
50 return mAttack;
51 }
52
53 // Called GetRelease to prevent clashing with the nsISupports::Release name
54 AudioParam* GetRelease() const
55 {
56 return mRelease;
57 }
58
59 virtual const char* NodeType() const
60 {
61 return "DynamicsCompressorNode";
62 }
63
64 virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
65 virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
66
67 private:
68 static void SendThresholdToStream(AudioNode* aNode);
69 static void SendKneeToStream(AudioNode* aNode);
70 static void SendRatioToStream(AudioNode* aNode);
71 static void SendAttackToStream(AudioNode* aNode);
72 static void SendReleaseToStream(AudioNode* aNode);
73
74 private:
75 nsRefPtr<AudioParam> mThreshold;
76 nsRefPtr<AudioParam> mKnee;
77 nsRefPtr<AudioParam> mRatio;
78 nsRefPtr<AudioParam> mReduction;
79 nsRefPtr<AudioParam> mAttack;
80 nsRefPtr<AudioParam> mRelease;
81 };
82
83 }
84 }
85
86 #endif
87

mercurial