mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 20:25:44 +00:00
Bug 849713 - Part 4: Refactor the logic for borrowing the output buffer from the input buffer; r=roc
This commit is contained in:
parent
231f1bbd52
commit
f873b5a8da
@ -68,6 +68,20 @@ public:
|
|||||||
mBuffer = aBuffer;
|
mBuffer = aBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BorrowFromInputBuffer(AudioChunk* aOutput,
|
||||||
|
uint32_t aChannels,
|
||||||
|
uintptr_t aBufferOffset)
|
||||||
|
{
|
||||||
|
aOutput->mDuration = WEBAUDIO_BLOCK_SIZE;
|
||||||
|
aOutput->mBuffer = mBuffer;
|
||||||
|
aOutput->mChannelData.SetLength(aChannels);
|
||||||
|
for (uint32_t i = 0; i < aChannels; ++i) {
|
||||||
|
aOutput->mChannelData[i] = mBuffer->GetData(i) + aBufferOffset;
|
||||||
|
}
|
||||||
|
aOutput->mVolume = 1.0f;
|
||||||
|
aOutput->mBufferFormat = AUDIO_FORMAT_FLOAT32;
|
||||||
|
}
|
||||||
|
|
||||||
virtual void ProduceAudioBlock(AudioNodeStream* aStream,
|
virtual void ProduceAudioBlock(AudioNodeStream* aStream,
|
||||||
const AudioChunk& aInput,
|
const AudioChunk& aInput,
|
||||||
AudioChunk* aOutput,
|
AudioChunk* aOutput,
|
||||||
@ -100,15 +114,8 @@ public:
|
|||||||
if (currentPosition >= mStart &&
|
if (currentPosition >= mStart &&
|
||||||
currentPosition + WEBAUDIO_BLOCK_SIZE <= endTime) {
|
currentPosition + WEBAUDIO_BLOCK_SIZE <= endTime) {
|
||||||
// Data is entirely within the buffer. Avoid copying it.
|
// Data is entirely within the buffer. Avoid copying it.
|
||||||
aOutput->mDuration = WEBAUDIO_BLOCK_SIZE;
|
BorrowFromInputBuffer(aOutput, channels,
|
||||||
aOutput->mBuffer = mBuffer;
|
uintptr_t(currentPosition - mStart + mOffset));
|
||||||
aOutput->mChannelData.SetLength(channels);
|
|
||||||
for (uint32_t i = 0; i < channels; ++i) {
|
|
||||||
aOutput->mChannelData[i] =
|
|
||||||
mBuffer->GetData(i) + uintptr_t(currentPosition - mStart + mOffset);
|
|
||||||
}
|
|
||||||
aOutput->mVolume = 1.0f;
|
|
||||||
aOutput->mBufferFormat = AUDIO_FORMAT_FLOAT32;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user