AAudioService: integrated with audioserver
Call the MmapStreamInterface from AudioFlinger instead of the FakeHAL.
Fix sending timestamps from the thread.
Add shared mode in service.
Bug: 35260844
Bug: 33398120
Test: CTS test_aaudio.cpp
Change-Id: I44c7e4ecae4ce205611b6b73a72e0ae8a5b243e5
Signed-off-by: Phil Burk <philburk@google.com>
(cherry picked from commit 7f6b40d78b1976c78d1300e8a51fda36eeb50c5d)
diff --git a/media/libaaudio/src/binding/AAudioServiceMessage.h b/media/libaaudio/src/binding/AAudioServiceMessage.h
index cc77d59..b74b6c2 100644
--- a/media/libaaudio/src/binding/AAudioServiceMessage.h
+++ b/media/libaaudio/src/binding/AAudioServiceMessage.h
@@ -25,10 +25,11 @@
// TODO move this to an "include" folder for the service.
+// Used to send information about the HAL to the client.
struct AAudioMessageTimestamp {
- int64_t position;
- int64_t deviceOffset; // add to client position to get device position
- int64_t timestamp;
+ int64_t position; // number of frames transferred so far
+ int64_t deviceOffset; // add to client position to get device position
+ int64_t timestamp; // time when that position was reached
};
typedef enum aaudio_service_event_e : uint32_t {
@@ -36,13 +37,14 @@
AAUDIO_SERVICE_EVENT_PAUSED,
AAUDIO_SERVICE_EVENT_FLUSHED,
AAUDIO_SERVICE_EVENT_CLOSED,
- AAUDIO_SERVICE_EVENT_DISCONNECTED
+ AAUDIO_SERVICE_EVENT_DISCONNECTED,
+ AAUDIO_SERVICE_EVENT_VOLUME
} aaudio_service_event_t;
struct AAudioMessageEvent {
aaudio_service_event_t event;
- int32_t data1;
- int64_t data2;
+ double dataDouble;
+ int64_t dataLong;
};
typedef struct AAudioServiceMessage_s {
@@ -54,12 +56,11 @@
code what;
union {
- AAudioMessageTimestamp timestamp;
- AAudioMessageEvent event;
+ AAudioMessageTimestamp timestamp; // what == TIMESTAMP
+ AAudioMessageEvent event; // what == EVENT
};
} AAudioServiceMessage;
-
} /* namespace aaudio */
#endif //AAUDIO_AAUDIO_SERVICE_MESSAGE_H