Merge "AAudio AudioStreamLegacy: refine handling of AudioTrack teardown" into rvc-dev

gugelfrei
TreeHugger Robot 4 years ago committed by Android (Google) Code Review
commit 01d9c845f0

@ -215,6 +215,9 @@ aaudio_result_t AudioStreamTrack::open(const AudioStreamBuilder& builder)
: (aaudio_session_id_t) mAudioTrack->getSessionId();
setSessionId(actualSessionId);
mInitialBufferCapacity = getBufferCapacity();
mInitialFramesPerBurst = getFramesPerBurst();
mAudioTrack->addAudioDeviceCallback(mDeviceCallback);
// Update performance mode based on the actual stream flags.
@ -265,7 +268,16 @@ void AudioStreamTrack::processCallback(int event, void *info) {
// Stream got rerouted so we disconnect.
case AudioTrack::EVENT_NEW_IAUDIOTRACK:
processCallbackCommon(AAUDIO_CALLBACK_OPERATION_DISCONNECTED, info);
// request stream disconnect if the restored AudioTrack has properties not matching
// what was requested initially
if (mAudioTrack->channelCount() != getSamplesPerFrame()
|| mAudioTrack->format() != getFormat()
|| mAudioTrack->getSampleRate() != getSampleRate()
|| mAudioTrack->getRoutedDeviceId() != getDeviceId()
|| getBufferCapacity() != mInitialBufferCapacity
|| getFramesPerBurst() != mInitialFramesPerBurst) {
processCallbackCommon(AAUDIO_CALLBACK_OPERATION_DISCONNECTED, info);
}
break;
default:

@ -104,6 +104,10 @@ private:
// TODO add 64-bit position reporting to AudioTrack and use it.
aaudio_wrapping_frames_t mPositionWhenPausing = 0;
// initial AudioTrack frame count and notification period
int32_t mInitialBufferCapacity = 0;
int32_t mInitialFramesPerBurst = 0;
};
} /* namespace aaudio */

Loading…
Cancel
Save