diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-08-12 08:06:02 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-08-12 08:06:02 +0000 |
commit | 59283a4634786bcd07e15daa8dc4b178b4f68ee5 (patch) | |
tree | 7df512b681884178e01aa9863e7a9dd4724d1518 | |
parent | 06f87153a43df3298387399f19bc65fb12b96dc0 (diff) | |
parent | d703f868c4b9ca99d41bcbf46f287626d81f905e (diff) | |
download | sonivox-59283a4634786bcd07e15daa8dc4b178b4f68ee5.tar.gz |
Merge cherrypicks of [15541539, 15541507, 15541630, 15541631, 15541613, 15541632, 15541633, 15541634, 15541615, 15541592, 15541268, 15541269, 15541651] into security-aosp-qt-releaseandroid-security-10.0.0_r75android-security-10.0.0_r74android-security-10.0.0_r73android-security-10.0.0_r72android-security-10.0.0_r71android-security-10.0.0_r70android-security-10.0.0_r69android-security-10.0.0_r68android-security-10.0.0_r67android-security-10.0.0_r66android-security-10.0.0_r65android-security-10.0.0_r64android-security-10.0.0_r63android-security-10.0.0_r62android-security-10.0.0_r61android-security-10.0.0_r60android-security-10.0.0_r59android10-security-release
Change-Id: I585663a12130339ec9b017ccbdf0356278826b14
-rw-r--r-- | arm-wt-22k/lib_src/eas_wtengine.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arm-wt-22k/lib_src/eas_wtengine.c b/arm-wt-22k/lib_src/eas_wtengine.c index 97c14e3..e02ffa2 100644 --- a/arm-wt-22k/lib_src/eas_wtengine.c +++ b/arm-wt-22k/lib_src/eas_wtengine.c @@ -282,6 +282,7 @@ void WT_InterpolateNoLoop (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame) EAS_I32 phaseFrac; EAS_I32 acc0; const EAS_SAMPLE *pSamples; + const EAS_SAMPLE *bufferEndP1; EAS_I32 samp1; EAS_I32 samp2; EAS_I32 numSamples; @@ -296,8 +297,9 @@ void WT_InterpolateNoLoop (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame) pOutputBuffer = pWTIntFrame->pAudioBuffer; phaseInc = pWTIntFrame->frame.phaseIncrement; + bufferEndP1 = (const EAS_SAMPLE*) pWTVoice->loopEnd + 1; pSamples = (const EAS_SAMPLE*) pWTVoice->phaseAccum; - phaseFrac = (EAS_I32)pWTVoice->phaseFrac; + phaseFrac = (EAS_I32)(pWTVoice->phaseFrac & PHASE_FRAC_MASK); /* fetch adjacent samples */ #if defined(_8_BIT_SAMPLES) @@ -312,6 +314,7 @@ void WT_InterpolateNoLoop (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame) while (numSamples--) { + EAS_I32 nextSamplePhaseInc; /* linear interpolation */ acc0 = samp2 - samp1; @@ -326,13 +329,18 @@ void WT_InterpolateNoLoop (S_WT_VOICE *pWTVoice, S_WT_INT_FRAME *pWTIntFrame) /* increment phase */ phaseFrac += phaseInc; /*lint -e{704} <avoid divide>*/ - acc0 = phaseFrac >> NUM_PHASE_FRAC_BITS; + nextSamplePhaseInc = phaseFrac >> NUM_PHASE_FRAC_BITS; /* next sample */ - if (acc0 > 0) { + if (nextSamplePhaseInc > 0) { + + /* check for loop end */ + if ( &pSamples[nextSamplePhaseInc+1] >= bufferEndP1) { + break; + } /* advance sample pointer */ - pSamples += acc0; + pSamples += nextSamplePhaseInc; phaseFrac = (EAS_I32)((EAS_U32)phaseFrac & PHASE_FRAC_MASK); /* fetch new samples */ |