Loading core/jni/android_media_AudioTrack.cpp +32 −10 Original line number Diff line number Diff line Loading @@ -702,20 +702,42 @@ static void android_media_AudioTrack_set_playback_params(JNIEnv *env, jobject t return; } PlaybackParams pbs; pbs.fillFromJobject(env, gPlaybackParamsFields, params); PlaybackParams pbp; pbp.fillFromJobject(env, gPlaybackParamsFields, params); ALOGV("setPlaybackParams: %d:%f %d:%f %d:%u %d:%u", pbs.speedSet, pbs.audioRate.mSpeed, pbs.pitchSet, pbs.audioRate.mPitch, pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode, pbs.audioStretchModeSet, pbs.audioRate.mStretchMode); if (lpTrack->setPlaybackRate(pbs.audioRate) != OK) { pbp.speedSet, pbp.audioRate.mSpeed, pbp.pitchSet, pbp.audioRate.mPitch, pbp.audioFallbackModeSet, pbp.audioRate.mFallbackMode, pbp.audioStretchModeSet, pbp.audioRate.mStretchMode); // to simulate partially set params, we do a read-modify-write. // TODO: pass in the valid set mask into AudioTrack. AudioPlaybackRate rate = lpTrack->getPlaybackRate(); bool updatedRate = false; if (pbp.speedSet) { rate.mSpeed = pbp.audioRate.mSpeed; updatedRate = true; } if (pbp.pitchSet) { rate.mPitch = pbp.audioRate.mPitch; updatedRate = true; } if (pbp.audioFallbackModeSet) { rate.mFallbackMode = pbp.audioRate.mFallbackMode; updatedRate = true; } if (pbp.audioStretchModeSet) { rate.mStretchMode = pbp.audioRate.mStretchMode; updatedRate = true; } if (updatedRate) { if (lpTrack->setPlaybackRate(rate) != OK) { jniThrowException(env, "java/lang/IllegalArgumentException", "arguments out of range"); } } } // ---------------------------------------------------------------------------- Loading Loading
core/jni/android_media_AudioTrack.cpp +32 −10 Original line number Diff line number Diff line Loading @@ -702,20 +702,42 @@ static void android_media_AudioTrack_set_playback_params(JNIEnv *env, jobject t return; } PlaybackParams pbs; pbs.fillFromJobject(env, gPlaybackParamsFields, params); PlaybackParams pbp; pbp.fillFromJobject(env, gPlaybackParamsFields, params); ALOGV("setPlaybackParams: %d:%f %d:%f %d:%u %d:%u", pbs.speedSet, pbs.audioRate.mSpeed, pbs.pitchSet, pbs.audioRate.mPitch, pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode, pbs.audioStretchModeSet, pbs.audioRate.mStretchMode); if (lpTrack->setPlaybackRate(pbs.audioRate) != OK) { pbp.speedSet, pbp.audioRate.mSpeed, pbp.pitchSet, pbp.audioRate.mPitch, pbp.audioFallbackModeSet, pbp.audioRate.mFallbackMode, pbp.audioStretchModeSet, pbp.audioRate.mStretchMode); // to simulate partially set params, we do a read-modify-write. // TODO: pass in the valid set mask into AudioTrack. AudioPlaybackRate rate = lpTrack->getPlaybackRate(); bool updatedRate = false; if (pbp.speedSet) { rate.mSpeed = pbp.audioRate.mSpeed; updatedRate = true; } if (pbp.pitchSet) { rate.mPitch = pbp.audioRate.mPitch; updatedRate = true; } if (pbp.audioFallbackModeSet) { rate.mFallbackMode = pbp.audioRate.mFallbackMode; updatedRate = true; } if (pbp.audioStretchModeSet) { rate.mStretchMode = pbp.audioRate.mStretchMode; updatedRate = true; } if (updatedRate) { if (lpTrack->setPlaybackRate(rate) != OK) { jniThrowException(env, "java/lang/IllegalArgumentException", "arguments out of range"); } } } // ---------------------------------------------------------------------------- Loading