audiopolicy: Match DIRECT and MMAP_NOIRQ flags exactly in IOProfile

Prevent selection of DIRECT and MMAP_NOIRQ output profiles
if these flags were not requested.

Update the test APM configuration to use PCM16 on all outputs,
so they are all equivalent in terms of format and only differ in flags.

Test: atest audiopolicy_tests
Change-Id: I6940caed519b6237ea3038e646a84e4403a0c1ed
diff --git a/services/audiopolicy/tests/audiopolicymanager_tests.cpp b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
index 737d3cc..d3d839e 100644
--- a/services/audiopolicy/tests/audiopolicymanager_tests.cpp
+++ b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
@@ -1164,7 +1164,7 @@
     audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE;
     audio_io_handle_t output;
     audio_port_handle_t portId;
-    getOutputForAttr(&selectedDeviceId, AUDIO_FORMAT_AC3, AUDIO_CHANNEL_OUT_STEREO, 48000,
+    getOutputForAttr(&selectedDeviceId, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, 48000,
             flags, &output, &portId);
     sp<SwAudioOutputDescriptor> outDesc = mManager->getOutputs().valueFor(output);
     ASSERT_NE(nullptr, outDesc.get());
@@ -1187,13 +1187,23 @@
     dumpToLog();
 }
 
-TEST_F(AudioPolicyManagerTVTest, MatchOutputNoHwAvSync) {
+TEST_F(AudioPolicyManagerTVTest, MatchNoFlags) {
+    testHDMIPortSelection(AUDIO_OUTPUT_FLAG_NONE, "primary output");
+}
+
+TEST_F(AudioPolicyManagerTVTest, MatchOutputDirectNoHwAvSync) {
     // b/140447125: The selected port must not have HW AV Sync flag (see the config file).
     testHDMIPortSelection(AUDIO_OUTPUT_FLAG_DIRECT, "direct");
 }
 
-TEST_F(AudioPolicyManagerTVTest, MatchOutputHwAvSync) {
+TEST_F(AudioPolicyManagerTVTest, MatchOutputDirectHwAvSync) {
     testHDMIPortSelection(static_cast<audio_output_flags_t>(
                     AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_HW_AV_SYNC),
             "tunnel");
 }
+
+TEST_F(AudioPolicyManagerTVTest, MatchOutputDirectMMapNoIrq) {
+    testHDMIPortSelection(static_cast<audio_output_flags_t>(
+                    AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_MMAP_NOIRQ),
+            "low latency");
+}