mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 943589 - Handle AudioChunk::mVolume (from GainNode) in AudioParam. r=ehsan
This commit is contained in:
parent
3f4dc71b42
commit
ab2cc97579
@ -138,6 +138,7 @@ AudioParamTimeline::AudioNodeInputValue(size_t aCounter) const
|
||||
MOZ_ASSERT(lastAudioNodeChunk.GetDuration() == WEBAUDIO_BLOCK_SIZE);
|
||||
audioNodeInputValue =
|
||||
static_cast<const float*>(lastAudioNodeChunk.mChannelData[0])[aCounter];
|
||||
audioNodeInputValue *= lastAudioNodeChunk.mVolume;
|
||||
}
|
||||
|
||||
return audioNodeInputValue;
|
||||
|
@ -45,6 +45,7 @@ support-files =
|
||||
[test_audioParamSetTargetAtTime.html]
|
||||
[test_audioParamSetValueAtTime.html]
|
||||
[test_audioParamTimelineDestinationOffset.html]
|
||||
[test_audioParamGain.html]
|
||||
[test_badConnect.html]
|
||||
[test_biquadFilterNode.html]
|
||||
[test_biquadFilterNodeWithGain.html]
|
||||
|
61
content/media/webaudio/test/test_audioParamGain.html
Normal file
61
content/media/webaudio/test/test_audioParamGain.html
Normal file
@ -0,0 +1,61 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test AudioParam with pre-gain </title>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="text/javascript" src="webaudio.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
var ctx = new AudioContext();
|
||||
var source = ctx.createOscillator();
|
||||
var lfo = ctx.createOscillator();
|
||||
var lfoIntensity = ctx.createGain();
|
||||
var effect = ctx.createGain();
|
||||
var sp = ctx.createScriptProcessor(2048, 1);
|
||||
|
||||
source.frequency.value = 440;
|
||||
lfo.frequency.value = 2;
|
||||
// Very low gain, so the LFO should have very little influence
|
||||
// on the source, its RMS value should be close to the nominal value
|
||||
// for a sine wave.
|
||||
lfoIntensity.gain.value = 0.0001;
|
||||
|
||||
lfo.connect(lfoIntensity);
|
||||
lfoIntensity.connect(effect.gain);
|
||||
source.connect(effect);
|
||||
effect.connect(sp);
|
||||
|
||||
sp.onaudioprocess = function(e) {
|
||||
var buffer = e.inputBuffer.getChannelData(0);
|
||||
var rms = 0;
|
||||
for (var i = 0; i < buffer.length; i++) {
|
||||
rms += buffer[i] * buffer[i];
|
||||
}
|
||||
|
||||
rms /= buffer.length;
|
||||
rms = Math.sqrt(rms);
|
||||
|
||||
// 1 / Math.sqrt(2) is the theoretical RMS value for a sine wave.
|
||||
ok(fuzzyCompare(rms, 1 / Math.sqrt(2)),
|
||||
"Gain correctly applied to the AudioParam.");
|
||||
|
||||
ctx = null;
|
||||
sp.onaudioprocess = null;
|
||||
lfo.stop(0);
|
||||
source.stop(0);
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
lfo.start(0);
|
||||
source.start(0);
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
Loading…
Reference in New Issue
Block a user