audio: fix mmap output
1. add createMmapBuffer() for vendor to override and create mmap fd.
2. add refineMmapPosition() for vendor to override and update
latency in mmap case.
3. fix testcases position check in mmap case.
Bug: 274456992
Bug: 345591089
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ie63fdd47c0ddc563d84699dfdf6d4e9b72b5af43
diff --git a/audio/aidl/common/include/Utils.h b/audio/aidl/common/include/Utils.h
index a1008a4..dd216e5 100644
--- a/audio/aidl/common/include/Utils.h
+++ b/audio/aidl/common/include/Utils.h
@@ -26,6 +26,7 @@
#include <aidl/android/media/audio/common/AudioDeviceType.h>
#include <aidl/android/media/audio/common/AudioFormatDescription.h>
#include <aidl/android/media/audio/common/AudioInputFlags.h>
+#include <aidl/android/media/audio/common/AudioIoFlags.h>
#include <aidl/android/media/audio/common/AudioMode.h>
#include <aidl/android/media/audio/common/AudioOutputFlags.h>
#include <aidl/android/media/audio/common/PcmType.h>
@@ -188,4 +189,15 @@
return frameCountFromDurationUs(durationMs * 1000, sampleRateHz);
}
+constexpr bool hasMmapFlag(const ::aidl::android::media::audio::common::AudioIoFlags& flags) {
+ return (flags.getTag() == ::aidl::android::media::audio::common::AudioIoFlags::Tag::input &&
+ isBitPositionFlagSet(
+ flags.get<::aidl::android::media::audio::common::AudioIoFlags::Tag::input>(),
+ ::aidl::android::media::audio::common::AudioInputFlags::MMAP_NOIRQ)) ||
+ (flags.getTag() == ::aidl::android::media::audio::common::AudioIoFlags::Tag::output &&
+ isBitPositionFlagSet(
+ flags.get<::aidl::android::media::audio::common::AudioIoFlags::Tag::output>(),
+ ::aidl::android::media::audio::common::AudioOutputFlags::MMAP_NOIRQ));
+}
+
} // namespace aidl::android::hardware::audio::common