Allow DAP render-only mix to be matched to mmap-ed stream.
Bug: b/287182335
Test: atest audiopolicy_tests AudioHostTest
Merged-In: If1e0ffb980e989cfd0fb9c6d2f87fac60ad7d067
Change-Id: If1e0ffb980e989cfd0fb9c6d2f87fac60ad7d067
diff --git a/services/audiopolicy/tests/audiopolicymanager_tests.cpp b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
index 97a1e0d..935667f 100644
--- a/services/audiopolicy/tests/audiopolicymanager_tests.cpp
+++ b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
@@ -1898,7 +1898,7 @@
bool mIsBitPerfect;
};
-TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, MmapPlaybackStreamMatchingDapMixFails) {
+TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, MmapPlaybackStreamMatchingLoopbackDapMixFails) {
// Add mix matching the test uid.
const int testUid = 12345;
const auto param = GetParam();
@@ -1915,7 +1915,8 @@
&mOutputType, &mIsSpatialized, &mIsBitPerfect));
}
-TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting, NonMmapPlaybackStreamMatchingDapMixSucceeds) {
+TEST_P(AudioPolicyManagerTestMMapPlaybackRerouting,
+ NonMmapPlaybackStreamMatchingLoopbackDapMixSucceeds) {
// Add mix matching the test uid.
const int testUid = 12345;
const auto param = GetParam();
@@ -1932,15 +1933,30 @@
&mOutputType, &mIsSpatialized, &mIsBitPerfect));
}
+TEST_F(AudioPolicyManagerTestMMapPlaybackRerouting,
+ MmapPlaybackStreamMatchingRenderDapMixSucceeds) {
+ // Add render-only mix matching the test uid.
+ const int testUid = 12345;
+ status_t ret = addPolicyMix(MIX_TYPE_PLAYERS, MIX_ROUTE_FLAG_RENDER, AUDIO_DEVICE_OUT_SPEAKER,
+ /*mixAddress=*/"", audioConfig, {createUidCriterion(testUid)});
+ ASSERT_EQ(NO_ERROR, ret);
+
+ // Geting output for matching uid should succeed for mmaped stream.
+ audio_output_flags_t outputFlags = AUDIO_OUTPUT_FLAG_MMAP_NOIRQ;
+ ASSERT_EQ(NO_ERROR,
+ mManager->getOutputForAttr(&attr, &mOutput, AUDIO_SESSION_NONE, &mStream,
+ createAttributionSourceState(testUid), &audioConfig,
+ &outputFlags, &mSelectedDeviceId, &mPortId, {},
+ &mOutputType, &mIsSpatialized, &mIsBitPerfect));
+}
+
INSTANTIATE_TEST_SUITE_P(
MmapPlaybackRerouting, AudioPolicyManagerTestMMapPlaybackRerouting,
testing::Values(DPMmapTestParam(MIX_ROUTE_FLAG_LOOP_BACK, AUDIO_DEVICE_OUT_REMOTE_SUBMIX,
/*deviceAddress=*/"remote_submix_media"),
DPMmapTestParam(MIX_ROUTE_FLAG_LOOP_BACK_AND_RENDER,
AUDIO_DEVICE_OUT_REMOTE_SUBMIX,
- /*deviceAddress=*/"remote_submix_media"),
- DPMmapTestParam(MIX_ROUTE_FLAG_RENDER, AUDIO_DEVICE_OUT_SPEAKER,
- /*deviceAddress=*/"")));
+ /*deviceAddress=*/"remote_submix_media")));
class AudioPolicyManagerTestDPMixRecordInjection : public AudioPolicyManagerTestDynamicPolicy,
public testing::WithParamInterface<DPTestParam> {