summaryrefslogtreecommitdiff
path: root/audio_proxy
diff options
context:
space:
mode:
authoryucliu <yucliu@google.com>2020-09-28 16:23:44 -0700
committerYuchen Liu <yucliu@google.com>2020-10-02 19:09:52 +0000
commit04167a70d1659ffb11e0f482e85185baf37984f6 (patch)
treeb43994dd54e9ef304bee066c30018922da46b17b /audio_proxy
parentcdb2fdcf8f6fca7829a7e1fe25eb3176bf5f20bb (diff)
downloadatv-04167a70d1659ffb11e0f482e85185baf37984f6.tar.gz
[AudioProxy] Client version 5.1
Upgrade client version to 5.1: 1. Bump AUDIO_PROXY_MINOR_VERSION, 0 -> 1. 2. Call IStreamEventListener::onEvent(CLOSE) when audioserver closes IStreamOut. 3. Remove 5.0 impl. Bug: 167605686 Test: Manual Change-Id: I5fb63ea865114615aa1e8c741df66e037f4861bd
Diffstat (limited to 'audio_proxy')
-rw-r--r--audio_proxy/Android.bp14
-rw-r--r--audio_proxy/AudioProxy.cpp2
-rw-r--r--audio_proxy/AudioProxyManager.h4
-rw-r--r--audio_proxy/StreamOutImpl.cpp11
-rw-r--r--audio_proxy/StreamOutImpl.h13
5 files changed, 35 insertions, 9 deletions
diff --git a/audio_proxy/Android.bp b/audio_proxy/Android.bp
index 79797b4..08739e8 100644
--- a/audio_proxy/Android.bp
+++ b/audio_proxy/Android.bp
@@ -14,15 +14,20 @@ cc_library {
"liblog",
"libutils",
- // HAL version 5.0
+ // Audio HAL version 5.0
"android.hardware.audio@5.0",
"android.hardware.audio.common@5.0",
"android.hardware.audio.common@5.0-util",
+
+ // HAL version 5.0
"device.google.atv.audio_proxy@5.0",
+
+ // HAL version 5.1
+ "device.google.atv.audio_proxy@5.1",
],
static_libs: [
- "libaudio_proxy_client@5.0",
+ "libaudio_proxy_client@5.1",
],
}
@@ -55,7 +60,7 @@ cc_defaults {
}
cc_library_static {
- name: "libaudio_proxy_client@5.0",
+ name: "libaudio_proxy_client@5.1",
defaults: [ "libaudio_proxy_client_default" ],
@@ -64,12 +69,13 @@ cc_library_static {
"android.hardware.audio.common@5.0",
"android.hardware.audio.common@5.0-util",
"device.google.atv.audio_proxy@5.0",
+ "device.google.atv.audio_proxy@5.1",
],
cflags: [
"-DMAJOR_VERSION=5",
"-DMINOR_VERSION=0",
- "-DAUDIO_PROXY_MINOR_VERSION=0",
+ "-DAUDIO_PROXY_MINOR_VERSION=1",
"-include common/all-versions/VersionMacro.h",
"-include common/AudioProxyVersionMacro.h",
],
diff --git a/audio_proxy/AudioProxy.cpp b/audio_proxy/AudioProxy.cpp
index a215299..2cd7aab 100644
--- a/audio_proxy/AudioProxy.cpp
+++ b/audio_proxy/AudioProxy.cpp
@@ -34,7 +34,7 @@ class AudioProxyImpl {
};
AudioProxyImpl::AudioProxyImpl() {
- mManager = audio_proxy::V5_0::createAudioProxyManager();
+ mManager = audio_proxy::V5_1::createAudioProxyManager();
ALOGE_IF(!mManager, "Failed to create audio proxy manager");
}
diff --git a/audio_proxy/AudioProxyManager.h b/audio_proxy/AudioProxyManager.h
index d23f5dd..46bb2e2 100644
--- a/audio_proxy/AudioProxyManager.h
+++ b/audio_proxy/AudioProxyManager.h
@@ -27,7 +27,7 @@ class AudioProxyManager {
virtual bool registerDevice(audio_proxy_device_t* device) = 0;
};
-namespace V5_0 {
+namespace V5_1 {
std::unique_ptr<AudioProxyManager> createAudioProxyManager();
-} // namespace V5_0
+} // namespace V5_1
} // namespace audio_proxy
diff --git a/audio_proxy/StreamOutImpl.cpp b/audio_proxy/StreamOutImpl.cpp
index 5b80ec6..1f4f29d 100644
--- a/audio_proxy/StreamOutImpl.cpp
+++ b/audio_proxy/StreamOutImpl.cpp
@@ -179,6 +179,12 @@ StreamOutImpl::~StreamOutImpl() {
mEventFlag.reset();
}
+Return<void> StreamOutImpl::setEventListener(
+ const sp<IStreamEventListener>& listener) {
+ mEventListener = listener;
+ return Void();
+}
+
Return<uint64_t> StreamOutImpl::getFrameSize() {
audio_format_t format = static_cast<audio_format_t>(mStream->getFormat());
@@ -295,6 +301,11 @@ Result StreamOutImpl::closeImpl() {
if (mEventFlag) {
mEventFlag->wake(static_cast<uint32_t>(MessageQueueFlagBits::NOT_EMPTY));
}
+
+ if (mEventListener) {
+ mEventListener->onClose();
+ }
+
return Result::OK;
}
diff --git a/audio_proxy/StreamOutImpl.h b/audio_proxy/StreamOutImpl.h
index 9a82922..c57a7c4 100644
--- a/audio_proxy/StreamOutImpl.h
+++ b/audio_proxy/StreamOutImpl.h
@@ -15,7 +15,7 @@
#pragma once
// clang-format off
-#include PATH(android/hardware/audio/FILE_VERSION/IStreamOut.h)
+#include PATH(device/google/atv/audio_proxy/AUDIO_PROXY_FILE_VERSION/IAudioProxyStreamOut.h)
// clang-format on
#include <fmq/EventFlag.h>
@@ -37,11 +37,16 @@ using ::android::hardware::Void;
using namespace ::android::hardware::audio::common::CPP_VERSION;
using namespace ::android::hardware::audio::CPP_VERSION;
+using ::device::google::atv::audio_proxy::AUDIO_PROXY_CPP_VERSION::
+ IAudioProxyStreamOut;
+using ::device::google::atv::audio_proxy::AUDIO_PROXY_CPP_VERSION::
+ IStreamEventListener;
+
namespace audio_proxy {
namespace AUDIO_PROXY_CPP_VERSION {
class AudioProxyStreamOut;
-class StreamOutImpl : public IStreamOut {
+class StreamOutImpl : public IAudioProxyStreamOut {
public:
using CommandMQ = MessageQueue<WriteCommand, kSynchronizedReadWrite>;
using DataMQ = MessageQueue<uint8_t, kSynchronizedReadWrite>;
@@ -50,6 +55,9 @@ class StreamOutImpl : public IStreamOut {
explicit StreamOutImpl(std::unique_ptr<AudioProxyStreamOut> stream);
~StreamOutImpl() override;
+ // IAudioProxyStreamOut implementations:
+ Return<void> setEventListener(const sp<IStreamEventListener>& listener);
+
// Methods from ::android::hardware::audio::CPP_VERSION::IStream follow.
Return<uint64_t> getFrameSize() override;
Return<uint64_t> getFrameCount() override;
@@ -115,6 +123,7 @@ class StreamOutImpl : public IStreamOut {
Result closeImpl();
std::unique_ptr<AudioProxyStreamOut> mStream;
+ sp<IStreamEventListener> mEventListener;
std::unique_ptr<CommandMQ> mCommandMQ;
std::unique_ptr<DataMQ> mDataMQ;