libaudiohal: Implement basic stream I/O
Implement completely DeviceHalAidl::open{Input|Output}Stream.
Implement reading, writing, and position reporting in StreamHalAidl.
Implement pause, resume, and drain for StreamOutHalAidl.
Bug: 205884982
Test: boot cuttlefish with AIDL enabled
Test: run tests from libaudioclient/TEST_MAPPING
Test: atest CtsMediaAudioTestCases
Change-Id: I928593094e4d8adbdecfd22cb3acdd60027924da
Merged-In: I928593094e4d8adbdecfd22cb3acdd60027924da
diff --git a/media/libaudiohal/impl/DeviceHalAidl.h b/media/libaudiohal/impl/DeviceHalAidl.h
index 95a8219..82299b5 100644
--- a/media/libaudiohal/impl/DeviceHalAidl.h
+++ b/media/libaudiohal/impl/DeviceHalAidl.h
@@ -138,6 +138,10 @@
~DeviceHalAidl() override = default;
+ bool audioDeviceMatches(const ::aidl::android::media::audio::common::AudioDevice& device,
+ const ::aidl::android::media::audio::common::AudioPort& p);
+ bool audioDeviceMatches(const ::aidl::android::media::audio::common::AudioDevice& device,
+ const ::aidl::android::media::audio::common::AudioPortConfig& p);
status_t createPortConfig(
const ::aidl::android::media::audio::common::AudioPortConfig& requestedPortConfig,
::aidl::android::media::audio::common::AudioPortConfig* appliedPortConfig);
@@ -154,7 +158,7 @@
bool* created);
status_t findOrCreatePortConfig(
const ::aidl::android::media::audio::common::AudioConfig& config,
- const ::aidl::android::media::audio::common::AudioIoFlags& flags,
+ const std::optional<::aidl::android::media::audio::common::AudioIoFlags>& flags,
int32_t ioHandle,
::aidl::android::media::audio::common::AudioPortConfig* portConfig, bool* created);
status_t findOrCreatePortConfig(
@@ -170,7 +174,7 @@
const ::aidl::android::media::audio::common::AudioDevice& device);
PortConfigs::iterator findPortConfig(
const ::aidl::android::media::audio::common::AudioConfig& config,
- const ::aidl::android::media::audio::common::AudioIoFlags& flags,
+ const std::optional<::aidl::android::media::audio::common::AudioIoFlags>& flags,
int32_t ioHandle);
// Currently unused but may be useful for implementing setAudioPortConfig
// PortConfigs::iterator findPortConfig(
@@ -182,13 +186,16 @@
struct audio_config* config,
Cleanups* cleanups,
::aidl::android::media::audio::common::AudioConfig* aidlConfig,
- ::aidl::android::media::audio::common::AudioPortConfig* mixPortConfig);
+ ::aidl::android::media::audio::common::AudioPortConfig* mixPortConfig,
+ int32_t* nominalLatency);
void resetPatch(int32_t patchId);
void resetPortConfig(int32_t portConfigId);
const std::string mInstance;
const std::shared_ptr<::aidl::android::hardware::audio::core::IModule> mModule;
Ports mPorts;
+ int32_t mDefaultInputPortId;
+ int32_t mDefaultOutputPortId;
PortConfigs mPortConfigs;
Patches mPatches;
std::map<audio_patch_handle_t, int32_t /* patch ID */> mFwkHandles;