b=937057 provide a null ptr instead of a zero buffer when processing resampler tail r=padenot

--HG--
extra : transplant_source : %8EK%22q%A6%E9%82%F1%5E-%9E%BEs%01%F1%D1Jj%097
This commit is contained in:
Karl Tomlinson 2013-12-03 12:07:17 +13:00
Родитель 40a355cd1f
Коммит 3d689d137a
2 изменённых файлов: 2 добавлений и 16 удалений

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

@ -382,20 +382,12 @@ MediaDecodeTask::Decode()
if (sampleRate != destSampleRate) {
int inputLatency = speex_resampler_get_input_latency(resampler);
int outputLatency = speex_resampler_get_output_latency(resampler);
AudioDataValue* zero = (AudioDataValue*)calloc(inputLatency, sizeof(AudioDataValue));
if (!zero) {
// Out of memory!
ReportFailureOnMainThread(WebAudioDecodeJob::UnknownError);
return;
}
for (uint32_t i = 0; i < channelCount; ++i) {
uint32_t inSamples = inputLatency;
uint32_t outSamples = outputLatency;
WebAudioUtils::SpeexResamplerProcess(
resampler, i, zero, &inSamples,
resampler, i, (AudioDataValue*)nullptr, &inSamples,
mDecodeJob.mChannelBuffers[i] + mDecodeJob.mWriteIndex,
&outSamples);
@ -404,8 +396,6 @@ MediaDecodeTask::Decode()
MOZ_ASSERT(mDecodeJob.mWriteIndex <= resampledFrames);
}
}
free(zero);
}
mPhase = PhaseEnum::AllocateBuffer;

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

@ -137,12 +137,8 @@ nsReturnRef<HRTFKernel> HRTFElevation::calculateKernelForAzimuthElevation(int az
// Feed in zeros get the data remaining in the resampler.
spx_uint32_t out_index = out_len;
in_len = speex_resampler_get_input_latency(resampler);
nsAutoTArray<AudioDataValue, 256> zeros;
zeros.SetLength(in_len);
PodZero(zeros.Elements(), in_len);
out_len = resampled.Length() - out_index;
RESAMPLER_PROCESS(resampler, 0,
zeros.Elements(), &in_len,
RESAMPLER_PROCESS(resampler, 0, nullptr, &in_len,
resampled.Elements() + out_index, &out_len);
out_index += out_len;
// There may be some uninitialized samples remaining for very low