https://bugs.webkit.org/show_bug.cgi?id=81221
Patch by Gao Chun <chun.gao@intel.com> on 2012-03-15
Reviewed by Chris Rogers.
Source/WebCore:
Test: webaudio/dynamicscompressor-basic.html
* platform/audio/DynamicsCompressor.h:
(DynamicsCompressor):
* webaudio/DynamicsCompressorNode.cpp:
(WebCore::DynamicsCompressorNode::DynamicsCompressorNode):
(WebCore::DynamicsCompressorNode::process):
* webaudio/DynamicsCompressorNode.h:
(WebCore::DynamicsCompressorNode::attack):
(WebCore::DynamicsCompressorNode::release):
(DynamicsCompressorNode):
* webaudio/DynamicsCompressorNode.idl:
LayoutTests:
* webaudio/dynamicscompressor-basic-expected.txt:
* webaudio/dynamicscompressor-basic.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@110951
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-03-15 Gao Chun <chun.gao@intel.com>
+
+ Expose attack, release as DynamicsCompressorNode's attributes.
+ https://bugs.webkit.org/show_bug.cgi?id=81221
+
+ Reviewed by Chris Rogers.
+
+ * webaudio/dynamicscompressor-basic-expected.txt:
+ * webaudio/dynamicscompressor-basic.html:
+
2012-03-15 Hans Wennborg <hans@chromium.org>
Speech JavaScript API: SpeechRecognition, Controller and Client
PASS threshold attribute has correct default value.
PASS knee attribute has correct default value.
PASS ratio attribute has correct default value.
+PASS attack attribute has correct default value.
+PASS release attribute has correct default value.
PASS successfullyParsed is true
TEST COMPLETE
else
testFailed("ratio attribute has incorrect default value.");
+ if (compressor.attack.value - 0.003 < 1e-7)
+ testPassed("attack attribute has correct default value.");
+ else
+ testFailed("attack attribute has incorrect default value.");
+
+ if (compressor.release.value - 0.25 < 1e-7)
+ testPassed("release attribute has correct default value.");
+ else
+ testFailed("release attribute has incorrect default value.");
+
} catch(e) {
testFailed("Exception thrown when accessing DynamicsCompressorNode attributes.");
}
+2012-03-15 Gao Chun <chun.gao@intel.com>
+
+ Expose attack, release as DynamicsCompressorNode's attributes.
+ https://bugs.webkit.org/show_bug.cgi?id=81221
+
+ Reviewed by Chris Rogers.
+
+ Test: webaudio/dynamicscompressor-basic.html
+
+ * platform/audio/DynamicsCompressor.h:
+ (DynamicsCompressor):
+ * webaudio/DynamicsCompressorNode.cpp:
+ (WebCore::DynamicsCompressorNode::DynamicsCompressorNode):
+ (WebCore::DynamicsCompressorNode::process):
+ * webaudio/DynamicsCompressorNode.h:
+ (WebCore::DynamicsCompressorNode::attack):
+ (WebCore::DynamicsCompressorNode::release):
+ (DynamicsCompressorNode):
+ * webaudio/DynamicsCompressorNode.idl:
+
2012-03-15 Hans Wennborg <hans@chromium.org>
Speech JavaScript API: SpeechRecognition, Controller and Client
unsigned m_numberOfChannels;
// m_parameters holds the tweakable compressor parameters.
- // FIXME: expose some of the most important ones (such as threshold, attack, release)
- // as DynamicsCompressorNode attributes.
float m_parameters[ParamLast];
void initializeParameters();
m_knee = AudioParam::create("knee", 30, 0, 40);
m_ratio = AudioParam::create("ratio", 12, 1, 20);
m_reduction = AudioParam::create("reduction", 0, -20, 0);
+ m_attack = AudioParam::create("attack", 0.003, 0, 1);
+ m_release = AudioParam::create("release", 0.250, 0, 1);
m_threshold->setContext(context);
m_knee->setContext(context);
m_ratio->setContext(context);
m_reduction->setContext(context);
+ m_attack->setContext(context);
+ m_release->setContext(context);
initialize();
}
float threshold = m_threshold->value();
float knee = m_knee->value();
float ratio = m_ratio->value();
+ float attack = m_attack->value();
+ float release = m_release->value();
m_dynamicsCompressor->setParameterValue(DynamicsCompressor::ParamThreshold, threshold);
m_dynamicsCompressor->setParameterValue(DynamicsCompressor::ParamKnee, knee);
m_dynamicsCompressor->setParameterValue(DynamicsCompressor::ParamRatio, ratio);
+ m_dynamicsCompressor->setParameterValue(DynamicsCompressor::ParamAttack, attack);
+ m_dynamicsCompressor->setParameterValue(DynamicsCompressor::ParamRelease, release);
m_dynamicsCompressor->process(input(0)->bus(), outputBus, framesToProcess);
AudioParam* threshold() { return m_threshold.get(); }
AudioParam* knee() { return m_knee.get(); }
AudioParam* ratio() { return m_ratio.get(); }
+ AudioParam* attack() { return m_attack.get(); }
+ AudioParam* release() { return m_release.get(); }
// Amount by which the compressor is currently compressing the signal in decibels.
AudioParam* reduction() { return m_reduction.get(); }
RefPtr<AudioParam> m_knee;
RefPtr<AudioParam> m_ratio;
RefPtr<AudioParam> m_reduction;
+ RefPtr<AudioParam> m_attack;
+ RefPtr<AudioParam> m_release;
};
} // namespace WebCore
readonly attribute AudioParam knee; // in Decibels
readonly attribute AudioParam ratio; // unit-less
readonly attribute AudioParam reduction; // in Decibels
+ readonly attribute AudioParam attack; // in Seconds
+ readonly attribute AudioParam release; // in Seconds
};
}