Remove explicit use of the "exiting" parameter from AudioFlinger
Pushed into libaudiohal to establish a cleaner abstraction and allow
for a strongly-typed interface in the future.
Test: Manual verification of basic audio use-cases
Change-Id: I1eb2bd2013f7129e65fe8a672ac4305f928cc9ef
diff --git a/media/libaudiohal/impl/StreamHalHidl.cpp b/media/libaudiohal/impl/StreamHalHidl.cpp
index f4e93b5..e162a68 100644
--- a/media/libaudiohal/impl/StreamHalHidl.cpp
+++ b/media/libaudiohal/impl/StreamHalHidl.cpp
@@ -931,6 +931,11 @@
callback->onRecommendedLatencyModeChanged(modes);
}
+status_t StreamOutHalHidl::exit() {
+ // FIXME this is using hard-coded strings but in the future, this functionality will be
+ // converted to use audio HAL extensions required to support tunneling
+ return setParameters(String8("exiting=1"));
+}
StreamInHalHidl::StreamInHalHidl(
const sp<::android::hardware::audio::CPP_VERSION::IStreamIn>& stream)
diff --git a/media/libaudiohal/impl/StreamHalHidl.h b/media/libaudiohal/impl/StreamHalHidl.h
index 21b0627..1dbdf4c 100644
--- a/media/libaudiohal/impl/StreamHalHidl.h
+++ b/media/libaudiohal/impl/StreamHalHidl.h
@@ -202,6 +202,8 @@
void onRecommendedLatencyModeChanged(const std::vector<audio_latency_mode_t>& modes);
+ status_t exit() override;
+
private:
friend class DeviceHalHidl;
typedef MessageQueue<WriteCommand, hardware::kSynchronizedReadWrite> CommandMQ;
diff --git a/media/libaudiohal/include/media/audiohal/StreamHalInterface.h b/media/libaudiohal/include/media/audiohal/StreamHalInterface.h
index 3f2e450..1d52b7d 100644
--- a/media/libaudiohal/include/media/audiohal/StreamHalInterface.h
+++ b/media/libaudiohal/include/media/audiohal/StreamHalInterface.h
@@ -248,6 +248,11 @@
virtual status_t setLatencyModeCallback(
const sp<StreamOutHalInterfaceLatencyModeCallback>& callback) = 0;
+ /**
+ * Signal the end of audio output, interrupting an ongoing 'write' operation.
+ */
+ virtual status_t exit() = 0;
+
protected:
virtual ~StreamOutHalInterface() {}
};