Bug 867174 - Part 2: Protect against invalid sample rates a bit harder; r=padenot

This commit is contained in:
Ehsan Akhgari 2013-04-30 16:37:23 -04:00
Родитель 35b84ef38c
Коммит f4ef30f478
3 изменённых файлов: 45 добавлений и 2 удалений

Просмотреть файл

@ -312,9 +312,11 @@ public:
mPlaybackRate = mPlaybackRateTimeline.GetValueAtTime<TrackTicks>(aStream->GetCurrentPosition());
}
// Make sure the playback rate if something our resampler can work with.
if (mPlaybackRate <= 0.0 || mPlaybackRate >= 1024) {
// Make sure the playback rate and the doppler shift are something
// our resampler can work with.
if (ComputeFinalOutSampleRate() == 0) {
mPlaybackRate = 1.0;
mDopplerShift = 1.0;
}
uint32_t currentOutSampleRate, currentInSampleRate;

Просмотреть файл

@ -20,6 +20,7 @@ MOCHITEST_FILES := \
test_bug866570.html \
test_bug866737.html \
test_bug867089.html \
test_bug867174.html \
test_analyserNode.html \
test_AudioBuffer.html \
test_AudioContext.html \

Просмотреть файл

@ -0,0 +1,40 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Crashtest for bug 867174</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
SpecialPowers.setBoolPref("media.webaudio.enabled", true);
SimpleTest.waitForExplicitFinish();
addLoadEvent(function() {
var ctx = new AudioContext();
var source = ctx.createBufferSource();
var buffer = ctx.createBuffer(2, 2048, 8000);
source.playbackRate.setTargetValueAtTime(0, 2, 3);
var sp = ctx.createScriptProcessor();
source.connect(sp);
sp.connect(ctx.destination);
source.start(0);
sp.onaudioprocess = function(e) {
// Now set the buffer
source.buffer = buffer;
ok(true, "We did not crash.");
sp.onaudioprocess = null;
SpecialPowers.clearUserPref("media.webaudio.enabled");
SimpleTest.finish();
};
});
</script>
</pre>
</body>
</html>