AudioFlinger: Do not permit fast patch tracks if not compatible
Test: atest AudioPlaybackCaptureTest
Bug: 132346038
Change-Id: I67939ed7f98c546d41148d36764d93723353c893
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 5e5ea11..612c5e1 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -827,6 +827,12 @@
ALOGE("Secondary output patchRecord init failed: %d", status);
continue;
}
+
+ // TODO: We could check compatibility of the secondaryThread with the PatchTrack
+ // for fast usage: thread has fast mixer, sample rate matches, etc.;
+ // for now, we exclude fast tracks by removing the Fast flag.
+ const audio_output_flags_t outputFlags =
+ (audio_output_flags_t)(output.flags & ~AUDIO_OUTPUT_FLAG_FAST);
sp patchTrack = new PlaybackThread::PatchTrack(secondaryThread,
streamType,
output.sampleRate,
@@ -835,7 +841,7 @@
frameCount,
patchRecord->buffer(),
patchRecord->bufferSize(),
- output.flags,
+ outputFlags,
0ns /* timeout */);
status = patchTrack->initCheck();
if (status != NO_ERROR) {