am 1864460b: Merge "Allow partial playback parameter settings in AudioTrack" into mnc-dev

* commit '1864460bf3c495e7821326f9753324247d4c778b':
  Allow partial playback parameter settings in AudioTrack
This commit is contained in:
Andy Hung
2015-05-14 00:29:56 +00:00
committed by Android Git Automerger

View File

@@ -702,18 +702,40 @@ 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);
pbp.speedSet, pbp.audioRate.mSpeed,
pbp.pitchSet, pbp.audioRate.mPitch,
pbp.audioFallbackModeSet, pbp.audioRate.mFallbackMode,
pbp.audioStretchModeSet, pbp.audioRate.mStretchMode);
if (lpTrack->setPlaybackRate(pbs.audioRate) != OK) {
jniThrowException(env, "java/lang/IllegalArgumentException",
"arguments out of range");
// 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");
}
}
}