aaudio: implement native IPLayer for legacy playback streams
Make AudioStreamTrack derive from PlayerTrackBase to
provide playback and volume control via IPLayer interface.
Bug: 62027849
Test: verify aaudio playback regressions and registration of aaudio
players in AudioService
Change-Id: I5c04110f1554233eae3f1bc357a64a584d7303d1
diff --git a/media/libaudioclient/PlayerBase.cpp b/media/libaudioclient/PlayerBase.cpp
index 0ec69db..cbef1b3 100644
--- a/media/libaudioclient/PlayerBase.cpp
+++ b/media/libaudioclient/PlayerBase.cpp
@@ -84,15 +84,21 @@
servicePlayerEvent(event);
}
-//------------------------------------------------------------------------------
-// Implementation of IPlayer
-void PlayerBase::start() {
- if (playerStart() == NO_ERROR) {
+status_t PlayerBase::startWithStatus() {
+ status_t status = playerStart();
+ if (status == NO_ERROR) {
ALOGD("PlayerBase::start() from IPlayer");
servicePlayerEvent(PLAYER_STATE_STARTED);
} else {
ALOGD("PlayerBase::start() no AudioTrack to start from IPlayer");
}
+ return status;
+}
+
+//------------------------------------------------------------------------------
+// Implementation of IPlayer
+void PlayerBase::start() {
+ (void)startWithStatus();
}
void PlayerBase::pause() {
diff --git a/media/libaudioclient/include/media/PlayerBase.h b/media/libaudioclient/include/media/PlayerBase.h
index 58a7a00..fe1db7b 100644
--- a/media/libaudioclient/include/media/PlayerBase.h
+++ b/media/libaudioclient/include/media/PlayerBase.h
@@ -47,6 +47,8 @@
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags);
+ status_t startWithStatus();
+
//FIXME temporary method while some player state is outside of this class
void reportEvent(player_state_t event);