diff options
| author | 2008-12-19 08:31:54 -0800 | |
|---|---|---|
| committer | 2008-12-19 08:31:54 -0800 | |
| commit | 772a89695f179b51d16b26c1b0d946aa3e850e70 (patch) | |
| tree | 9a9fdadd1301625f875a3c126c986c79e3363ac4 /libs/audioflinger/AudioResamplerCubic.cpp | |
| parent | d34e59679f6a98e9e67ef4bd18da6e5a86d386bc (diff) | |
| parent | e09fd9e819c23dc90bca68375645e15544861330 (diff) | |
Merge commit 'remotes/korg/cupcake'
Conflicts:
	core/java/com/android/internal/app/AlertController.java
	core/res/res/values/strings.xml
	media/java/android/media/AudioSystem.java
	services/java/com/android/server/LocationManagerService.java
Diffstat (limited to 'libs/audioflinger/AudioResamplerCubic.cpp')
| -rw-r--r-- | libs/audioflinger/AudioResamplerCubic.cpp | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/libs/audioflinger/AudioResamplerCubic.cpp b/libs/audioflinger/AudioResamplerCubic.cpp index 4f437bf2f5..1d247bd3a6 100644 --- a/libs/audioflinger/AudioResamplerCubic.cpp +++ b/libs/audioflinger/AudioResamplerCubic.cpp @@ -60,9 +60,11 @@ void AudioResamplerCubic::resampleStereo16(int32_t* out, size_t outFrameCount,      uint32_t phaseIncrement = mPhaseIncrement;      size_t outputIndex = 0;      size_t outputSampleCount = outFrameCount * 2; -     +    size_t inFrameCount = (outFrameCount*mInSampleRate)/mSampleRate; +      // fetch first buffer -    if (mBuffer.raw == NULL) { +    if (mBuffer.frameCount == 0) { +        mBuffer.frameCount = inFrameCount;          provider->getNextBuffer(&mBuffer);          if (mBuffer.raw == NULL)              return; @@ -79,7 +81,7 @@ void AudioResamplerCubic::resampleStereo16(int32_t* out, size_t outFrameCount,          out[outputIndex++] += vl * interp(&left, x);          out[outputIndex++] += vr * interp(&right, x);          // out[outputIndex++] += vr * in[inputIndex*2]; -         +          // increment phase          phaseFraction += phaseIncrement;          uint32_t indexIncrement = (phaseFraction >> kNumPhaseBits); @@ -92,6 +94,7 @@ void AudioResamplerCubic::resampleStereo16(int32_t* out, size_t outFrameCount,              if (inputIndex == mBuffer.frameCount) {                  inputIndex = 0;                  provider->releaseBuffer(&mBuffer); +                mBuffer.frameCount = inFrameCount;                  provider->getNextBuffer(&mBuffer);                  if (mBuffer.raw == NULL)                      goto save_state;  // ugly, but efficient @@ -122,9 +125,11 @@ void AudioResamplerCubic::resampleMono16(int32_t* out, size_t outFrameCount,      uint32_t phaseIncrement = mPhaseIncrement;      size_t outputIndex = 0;      size_t outputSampleCount = outFrameCount * 2; -     +    size_t inFrameCount = (outFrameCount*mInSampleRate)/mSampleRate; +      // fetch first buffer -    if (mBuffer.raw == NULL) { +    if (mBuffer.frameCount == 0) { +        mBuffer.frameCount = inFrameCount;          provider->getNextBuffer(&mBuffer);          if (mBuffer.raw == NULL)              return; @@ -141,7 +146,7 @@ void AudioResamplerCubic::resampleMono16(int32_t* out, size_t outFrameCount,          sample = interp(&left, x);          out[outputIndex++] += vl * sample;          out[outputIndex++] += vr * sample; -         +          // increment phase          phaseFraction += phaseIncrement;          uint32_t indexIncrement = (phaseFraction >> kNumPhaseBits); @@ -154,6 +159,7 @@ void AudioResamplerCubic::resampleMono16(int32_t* out, size_t outFrameCount,              if (inputIndex == mBuffer.frameCount) {                  inputIndex = 0;                  provider->releaseBuffer(&mBuffer); +                mBuffer.frameCount = inFrameCount;                  provider->getNextBuffer(&mBuffer);                  if (mBuffer.raw == NULL)                      goto save_state;  // ugly, but efficient |