Report data from aaudio mmap path to audio flinger.
Report data from aaudio mmap path to audio flinger for sound dose
computation. A shared memory is allocated for read and write counter.
The client will shared the write counter with the aaudio service. The
command thread will wake up every 5 burst time to report the data to
audio flinger.
Test: atest AAudioTests
Test: test_marshalling
Test: dump wav file in audio flinger and play
Bug: 264254430
Change-Id: Ib732442c5afc9169fe891212cf77b458c41a87f1
diff --git a/media/libaaudio/src/binding/AudioEndpointParcelable.h b/media/libaaudio/src/binding/AudioEndpointParcelable.h
index 5d2c38f..722dd14 100644
--- a/media/libaaudio/src/binding/AudioEndpointParcelable.h
+++ b/media/libaaudio/src/binding/AudioEndpointParcelable.h
@@ -61,8 +61,10 @@
* Update current data file descriptor with given endpoint parcelable.
* @param endpointParcelable an endpoint parcelable that contains new data file
* descriptor information
+ * @return AAUDIO_OK if the data file descriptor updates successfully.
+ * AAUDIO_ERROR_OUT_OF_RANGE if there is not enough space for the shared memory.
*/
- void updateDataFileDescriptor(AudioEndpointParcelable* endpointParcelable);
+ aaudio_result_t updateDataFileDescriptor(AudioEndpointParcelable* endpointParcelable);
aaudio_result_t resolve(EndpointDescriptor *descriptor);
aaudio_result_t resolveDataQueue(RingBufferDescriptor *descriptor);
@@ -84,9 +86,10 @@
RingBufferParcelable mDownDataQueueParcelable; // eg. playback
private:
- aaudio_result_t validate() const;
+ // Return the first available shared memory position. Return -1 if all shared memories are
+ // in use.
+ int32_t getNextAvailableSharedMemoryPosition() const;
- int32_t mNumSharedMemories = 0;
SharedMemoryParcelable mSharedMemories[MAX_SHARED_MEMORIES];
};