aaudio: honor requested device in Legacy mode
Was calling setDeviceId(), which is overwritten by set().
Bug: 70512693
Test: write_sine_callback, see bug for details
Test: input_monitor, see bug for details
Change-Id: I484f47e898a0e92a6f88e099a115f3d091c174c2
diff --git a/media/libaaudio/src/legacy/AudioStreamTrack.cpp b/media/libaaudio/src/legacy/AudioStreamTrack.cpp
index c2ce9a2..0d8fea8 100644
--- a/media/libaaudio/src/legacy/AudioStreamTrack.cpp
+++ b/media/libaaudio/src/legacy/AudioStreamTrack.cpp
@@ -115,10 +115,13 @@
ALOGD("open(), request notificationFrames = %d, frameCount = %u",
notificationFrames, (uint)frameCount);
- mAudioTrack = new AudioTrack(); // TODO review
- if (getDeviceId() != AAUDIO_UNSPECIFIED) {
- mAudioTrack->setOutputDevice(getDeviceId());
- }
+
+ // Don't call mAudioTrack->setDeviceId() because it will be overwritten by set()!
+ audio_port_handle_t selectedDeviceId = (getDeviceId() == AAUDIO_UNSPECIFIED)
+ ? AUDIO_PORT_HANDLE_NONE
+ : getDeviceId();
+
+ mAudioTrack = new AudioTrack();
mAudioTrack->set(
(audio_stream_type_t) AUDIO_STREAM_MUSIC,
getSampleRate(),
@@ -129,11 +132,20 @@
callback,
callbackData,
notificationFrames,
- 0 /*sharedBuffer*/,
- false /*threadCanCallJava*/,
+ 0, // DEFAULT sharedBuffer*/,
+ false, // DEFAULT threadCanCallJava
AUDIO_SESSION_ALLOCATE,
- streamTransferType
- );
+ streamTransferType,
+ NULL, // DEFAULT audio_offload_info_t
+ AUDIO_UID_INVALID, // DEFAULT uid
+ -1, // DEFAULT pid
+ NULL, // DEFAULT audio_attributes_t
+ // WARNING - If doNotReconnect set true then audio stops after plugging and unplugging
+ // headphones a few times.
+ false, // DEFAULT doNotReconnect,
+ 1.0f, // DEFAULT maxRequiredSpeed
+ selectedDeviceId
+ );
// Did we get a valid track?
status_t status = mAudioTrack->initCheck();