bug 1197028 use AudioChunk::ChannelCount() r=padenot

--HG--
extra : rebase_source : 033220c221f33fb4230f1384427d24e9b0b01213
This commit is contained in:
Karl Tomlinson 2015-09-03 17:30:16 +12:00
parent 0219374858
commit e32bdd4030
18 changed files with 32 additions and 32 deletions

View File

@ -329,7 +329,7 @@ AnalyserNode::GetTimeDomainData(float* aData, size_t aLength)
for (size_t writeIndex = 0; writeIndex < aLength; ) {
const AudioChunk& chunk = mChunks[readChunk & (CHUNK_COUNT - 1)];
const size_t channelCount = chunk.mChannelData.Length();
const size_t channelCount = chunk.ChannelCount();
size_t copyLength =
std::min<size_t>(aLength - writeIndex, WEBAUDIO_BLOCK_SIZE);
float* dataOut = &aData[writeIndex];

View File

@ -79,7 +79,7 @@ public:
// Record our input buffer
MOZ_ASSERT(mWriteIndex < mLength, "How did this happen?");
const uint32_t duration = std::min(WEBAUDIO_BLOCK_SIZE, mLength - mWriteIndex);
const uint32_t inputChannelCount = aInput.mChannelData.Length();
const uint32_t inputChannelCount = aInput.ChannelCount();
for (uint32_t i = 0; i < outputChannelCount; ++i) {
float* outputData = mBuffer->GetDataForWrite(i) + mWriteIndex;
if (aInput.IsNull() || i >= inputChannelCount) {

View File

@ -40,7 +40,7 @@ WriteZeroesToAudioBlock(AudioChunk* aChunk, uint32_t aStart, uint32_t aLength)
if (aLength == 0)
return;
for (uint32_t i = 0; i < aChunk->mChannelData.Length(); ++i) {
for (uint32_t i = 0; i < aChunk->ChannelCount(); ++i) {
PodZero(aChunk->ChannelFloatsForWrite(i) + aStart, aLength);
}
}

View File

@ -393,20 +393,20 @@ AudioNodeStream::ObtainInputBlock(AudioChunk& aTmpChunk, uint32_t aPortIndex)
inputChunks.AppendElement(chunk);
outputChannelCount =
GetAudioChannelsSuperset(outputChannelCount, chunk->mChannelData.Length());
GetAudioChannelsSuperset(outputChannelCount, chunk->ChannelCount());
}
outputChannelCount = ComputedNumberOfChannels(outputChannelCount);
uint32_t inputChunkCount = inputChunks.Length();
if (inputChunkCount == 0 ||
(inputChunkCount == 1 && inputChunks[0]->mChannelData.Length() == 0)) {
(inputChunkCount == 1 && inputChunks[0]->ChannelCount() == 0)) {
aTmpChunk.SetNull(WEBAUDIO_BLOCK_SIZE);
return;
}
if (inputChunkCount == 1 &&
inputChunks[0]->mChannelData.Length() == outputChannelCount) {
inputChunks[0]->ChannelCount() == outputChannelCount) {
aTmpChunk = *inputChunks[0];
return;
}
@ -431,7 +431,7 @@ AudioNodeStream::AccumulateInputChunk(uint32_t aInputIndex, const AudioChunk& aC
nsTArray<float>* aDownmixBuffer)
{
nsAutoTArray<const float*,GUESS_AUDIO_CHANNELS> channels;
UpMixDownMixChunk(&aChunk, aBlock->mChannelData.Length(), channels, *aDownmixBuffer);
UpMixDownMixChunk(&aChunk, aBlock->ChannelCount(), channels, *aDownmixBuffer);
for (uint32_t c = 0; c < channels.Length(); ++c) {
const float* inputData = static_cast<const float*>(channels[c]);
@ -458,7 +458,7 @@ AudioNodeStream::UpMixDownMixChunk(const AudioChunk* aChunk,
{
static const float silenceChannel[WEBAUDIO_BLOCK_SIZE] = {0.f};
for (uint32_t i = 0; i < aChunk->mChannelData.Length(); i++) {
for (uint32_t i = 0; i < aChunk->ChannelCount(); i++) {
aOutputChannels.AppendElement(static_cast<const float*>(aChunk->mChannelData[i]));
}
if (aOutputChannels.Length() < aOutputChannelCount) {

View File

@ -168,7 +168,7 @@ public:
PodArrayZero(inputBuffer);
} else if(mBiquads.Length() != aInput.mChannelData.Length()){
} else if(mBiquads.Length() != aInput.ChannelCount()){
if (mBiquads.IsEmpty()) {
nsRefPtr<PlayingRefChangeHandler> refchanged =
new PlayingRefChangeHandler(aStream, PlayingRefChangeHandler::ADDREF);
@ -179,7 +179,7 @@ public:
}
// Adjust the number of biquads based on the number of channels
mBiquads.SetLength(aInput.mChannelData.Length());
mBiquads.SetLength(aInput.ChannelCount());
}
uint32_t numberOfChannels = mBiquads.Length();

View File

@ -33,7 +33,7 @@ public:
// Get the number of output channels, and allocate it
size_t channelCount = 0;
for (uint16_t i = 0; i < InputCount(); ++i) {
channelCount += aInput[i].mChannelData.Length();
channelCount += aInput[i].ChannelCount();
}
if (channelCount == 0) {
aOutput[0].SetNull(WEBAUDIO_BLOCK_SIZE);
@ -46,7 +46,7 @@ public:
size_t channelIndex = 0;
for (uint16_t i = 0; true; ++i) {
MOZ_ASSERT(i < InputCount());
for (size_t j = 0; j < aInput[i].mChannelData.Length(); ++j) {
for (size_t j = 0; j < aInput[i].ChannelCount(); ++j) {
AudioBlockCopyChannelWithScale(
static_cast<const float*>(aInput[i].mChannelData[j]),
aInput[i].mVolume,

View File

@ -32,7 +32,7 @@ public:
aOutput.SetLength(OutputCount());
for (uint16_t i = 0; i < OutputCount(); ++i) {
if (i < aInput[0].mChannelData.Length()) {
if (i < aInput[0].ChannelCount()) {
// Split out existing channels
AllocateAudioBlock(1, &aOutput[i]);
AudioBlockCopyChannelWithScale(

View File

@ -131,7 +131,7 @@ public:
} else {
if (aInput.mVolume != 1.0f) {
// Pre-multiply the input's volume
uint32_t numChannels = aInput.mChannelData.Length();
uint32_t numChannels = aInput.ChannelCount();
AllocateAudioBlock(numChannels, &input);
for (uint32_t i = 0; i < numChannels; ++i) {
const float* src = static_cast<const float*>(aInput.mChannelData[i]);

View File

@ -29,7 +29,7 @@ void
DelayBuffer::Write(const AudioChunk& aInputChunk)
{
// We must have a reference to the buffer if there are channels
MOZ_ASSERT(aInputChunk.IsNull() == !aInputChunk.mChannelData.Length());
MOZ_ASSERT(aInputChunk.IsNull() == !aInputChunk.ChannelCount());
#ifdef DEBUG
MOZ_ASSERT(!mHaveWrittenBlock);
mHaveWrittenBlock = true;
@ -116,7 +116,7 @@ DelayBuffer::ReadChannels(const double aPerFrameDelays[WEBAUDIO_BLOCK_SIZE],
uint32_t aFirstChannel, uint32_t aNumChannelsToRead,
ChannelInterpretation aChannelInterpretation)
{
uint32_t totalChannelCount = aOutputChunk->mChannelData.Length();
uint32_t totalChannelCount = aOutputChunk->ChannelCount();
uint32_t readChannelsEnd = aFirstChannel + aNumChannelsToRead;
MOZ_ASSERT(readChannelsEnd <= totalChannelCount);

View File

@ -103,11 +103,11 @@ public:
return;
}
const uint32_t channelCount = aInput.mChannelData.Length();
const uint32_t channelCount = aInput.ChannelCount();
if (mCompressor->numberOfChannels() != channelCount) {
// Create a new compressor object with a new channel count
mCompressor = new WebCore::DynamicsCompressor(aStream->SampleRate(),
aInput.mChannelData.Length());
aInput.ChannelCount());
}
StreamTime pos = aStream->GetCurrentPosition();

View File

@ -81,7 +81,7 @@ public:
// First, compute a vector of gains for each track tick based on the
// timeline at hand, and then for each channel, multiply the values
// in the buffer with the gain vector.
AllocateAudioBlock(aInput.mChannelData.Length(), aOutput);
AllocateAudioBlock(aInput.ChannelCount(), aOutput);
// Compute the gain values for the duration of the input AudioChunk
StreamTime tick = aStream->GetCurrentPosition();
@ -93,7 +93,7 @@ public:
}
// Apply the gain to the output buffer
for (size_t channel = 0; channel < aOutput->mChannelData.Length(); ++channel) {
for (size_t channel = 0; channel < aOutput->ChannelCount(); ++channel) {
const float* inputBuffer = static_cast<const float*> (aInput.mChannelData[channel]);
float* buffer = aOutput->ChannelFloatsForWrite(channel);
AudioBlockCopyChannelWithScale(inputBuffer, computedGain, buffer);

View File

@ -323,7 +323,7 @@ PannerNodeEngine::EqualPowerPanningFunction(const AudioChunk& aInput,
AudioChunk* aOutput)
{
float azimuth, elevation, gainL, gainR, normalizedAzimuth, distanceGain, coneGain;
int inputChannels = aInput.mChannelData.Length();
int inputChannels = aInput.ChannelCount();
// If both the listener are in the same spot, and no cone gain is specified,
// this node is noop.

View File

@ -52,7 +52,7 @@ template<typename T, typename U>
void ApplyStereoPanning(const AudioChunk& aInput, AudioChunk* aOutput,
T aGainL, T aGainR, U aOnLeft)
{
if (aInput.mChannelData.Length() == 1) {
if (aInput.ChannelCount() == 1) {
GainMonoToStereo(aInput, aOutput, aGainL, aGainR);
} else {
GainStereoToStereo(aInput, aOutput, aGainL, aGainR, aOnLeft);

View File

@ -315,7 +315,7 @@ public:
PodZero(writeData, aInput.GetDuration());
} else {
MOZ_ASSERT(aInput.GetDuration() == WEBAUDIO_BLOCK_SIZE, "sanity check");
MOZ_ASSERT(aInput.mChannelData.Length() == inputChannelCount);
MOZ_ASSERT(aInput.ChannelCount() == inputChannelCount);
AudioBlockCopyChannelWithScale(static_cast<const float*>(aInput.mChannelData[i]),
aInput.mVolume, writeData);
}

View File

@ -219,7 +219,7 @@ public:
AudioChunk* aOutput,
bool* aFinished) override
{
uint32_t channelCount = aInput.mChannelData.Length();
uint32_t channelCount = aInput.ChannelCount();
if (!mCurve.Length() || !channelCount) {
// Optimize the case where we don't have a curve buffer,
// or the input is null.

View File

@ -154,8 +154,8 @@ void DynamicsCompressor::process(const AudioChunk* sourceChunk, AudioChunk* dest
// It's because we internally match sourceChannels's size to destinationBus by channel up/down mix. Thus we need numberOfChannels
// to do the loop work for both m_sourceChannels and m_destinationChannels.
unsigned numberOfChannels = destinationChunk->mChannelData.Length();
unsigned numberOfSourceChannels = sourceChunk->mChannelData.Length();
unsigned numberOfChannels = destinationChunk->ChannelCount();
unsigned numberOfSourceChannels = sourceChunk->ChannelCount();
MOZ_ASSERT(numberOfChannels == m_numberOfChannels && numberOfSourceChannels);

View File

@ -132,13 +132,13 @@ void HRTFPanner::pan(double desiredAzimuth, double elevation, const AudioChunk*
{
#ifdef DEBUG
unsigned numInputChannels =
inputBus->IsNull() ? 0 : inputBus->mChannelData.Length();
inputBus->IsNull() ? 0 : inputBus->ChannelCount();
MOZ_ASSERT(numInputChannels <= 2);
MOZ_ASSERT(inputBus->mDuration == WEBAUDIO_BLOCK_SIZE);
#endif
bool isOutputGood = outputBus && outputBus->mChannelData.Length() == 2 && outputBus->mDuration == WEBAUDIO_BLOCK_SIZE;
bool isOutputGood = outputBus && outputBus->ChannelCount() == 2 && outputBus->mDuration == WEBAUDIO_BLOCK_SIZE;
MOZ_ASSERT(isOutputGood);
if (!isOutputGood) {

View File

@ -154,7 +154,7 @@ void Reverb::process(const AudioChunk* sourceBus, AudioChunk* destinationBus, si
{
// Do a fairly comprehensive sanity check.
// If these conditions are satisfied, all of the source and destination pointers will be valid for the various matrixing cases.
bool isSafeToProcess = sourceBus && destinationBus && sourceBus->mChannelData.Length() > 0 && destinationBus->mChannelData.Length() > 0
bool isSafeToProcess = sourceBus && destinationBus && sourceBus->ChannelCount() > 0 && destinationBus->mChannelData.Length() > 0
&& framesToProcess <= MaxFrameSize && framesToProcess <= size_t(sourceBus->mDuration) && framesToProcess <= size_t(destinationBus->mDuration);
MOZ_ASSERT(isSafeToProcess);
@ -162,14 +162,14 @@ void Reverb::process(const AudioChunk* sourceBus, AudioChunk* destinationBus, si
return;
// For now only handle mono or stereo output
MOZ_ASSERT(destinationBus->mChannelData.Length() <= 2);
MOZ_ASSERT(destinationBus->ChannelCount() <= 2);
float* destinationChannelL = static_cast<float*>(const_cast<void*>(destinationBus->mChannelData[0]));
const float* sourceBusL = static_cast<const float*>(sourceBus->mChannelData[0]);
// Handle input -> output matrixing...
size_t numInputChannels = sourceBus->mChannelData.Length();
size_t numOutputChannels = destinationBus->mChannelData.Length();
size_t numInputChannels = sourceBus->ChannelCount();
size_t numOutputChannels = destinationBus->ChannelCount();
size_t numReverbChannels = m_convolvers.Length();
if (numInputChannels == 2 && numReverbChannels == 2 && numOutputChannels == 2) {