Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd16a8c5 authored by Andy Hung's avatar Andy Hung Committed by Android Git Automerger
Browse files

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

* commit '1864460b':
  Allow partial playback parameter settings in AudioTrack
parents cd65a4f9 1864460b
Loading
Loading
Loading
Loading
+32 −10
Original line number Original line Diff line number Diff line
@@ -702,20 +702,42 @@ static void android_media_AudioTrack_set_playback_params(JNIEnv *env, jobject t
        return;
        return;
    }
    }


    PlaybackParams pbs;
    PlaybackParams pbp;
    pbs.fillFromJobject(env, gPlaybackParamsFields, params);
    pbp.fillFromJobject(env, gPlaybackParamsFields, params);


    ALOGV("setPlaybackParams: %d:%f %d:%f %d:%u %d:%u",
    ALOGV("setPlaybackParams: %d:%f %d:%f %d:%u %d:%u",
            pbs.speedSet, pbs.audioRate.mSpeed,
            pbp.speedSet, pbp.audioRate.mSpeed,
            pbs.pitchSet, pbs.audioRate.mPitch,
            pbp.pitchSet, pbp.audioRate.mPitch,
            pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode,
            pbp.audioFallbackModeSet, pbp.audioRate.mFallbackMode,
            pbs.audioStretchModeSet, pbs.audioRate.mStretchMode);
            pbp.audioStretchModeSet, pbp.audioRate.mStretchMode);


    if (lpTrack->setPlaybackRate(pbs.audioRate) != OK) {
    // 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",
            jniThrowException(env, "java/lang/IllegalArgumentException",
                    "arguments out of range");
                    "arguments out of range");
        }
        }
    }
    }
}




// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------