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

Commit 7b69bd4e authored by gmanam's avatar gmanam Committed by Ajender Reddy
Browse files

av: Support restore track for offload/direct track

Handle setOutputDevice for offload/direct tracks
only in non-playing state

Bug: 331739807
test: run cts -m CtsMediaAudioTestCases -t android.media.audio.cts.RoutingTest#test_MediaPlayer_RoutingChangedCallback
Change-Id: Ib77b01180d98201405da1a10063dd3683705eff0
parent ac76e8e9
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1707,14 +1707,14 @@ status_t AudioTrack::setOutputDevice(audio_port_handle_t deviceId) {
        mSelectedDeviceId = deviceId;
        if (mStatus == NO_ERROR) {
            if (isOffloadedOrDirect_l()) {
                if (mState == STATE_STOPPED || mState == STATE_FLUSHED) {
                    ALOGD("%s(%d): creating a new AudioTrack", __func__, mPortId);
                    result = restoreTrack_l("setOutputDevice", true /* forceRestore */);
                } else {
                if (isPlaying_l()) {
                    ALOGW("%s(%d). Offloaded or Direct track is not STOPPED or FLUSHED. "
                          "State: %s.",
                            __func__, mPortId, stateToString(mState));
                    result = INVALID_OPERATION;
                } else {
                    ALOGD("%s(%d): creating a new AudioTrack", __func__, mPortId);
                    result = restoreTrack_l("setOutputDevice", true /* forceRestore */);
                }
            } else {
                // allow track invalidation when track is not playing to propagate