AudioFlinger: Log Record and MMap thread events
Also update track dump for better grouping and consistency.
Test: adb shell dumpsys media.audio_flinger
Bug: 62700410
Bug: 62701585
Change-Id: I3a6e76eac871cb08ff14d45f7d3992a6e7fba045
diff --git a/media/libaudioclient/AudioTrackShared.cpp b/media/libaudioclient/AudioTrackShared.cpp
index 2ce6c63..97f0dfd 100644
--- a/media/libaudioclient/AudioTrackShared.cpp
+++ b/media/libaudioclient/AudioTrackShared.cpp
@@ -832,6 +832,25 @@
return filled;
}
+__attribute__((no_sanitize("integer")))
+size_t AudioTrackServerProxy::framesReadySafe() const
+{
+ if (mIsShutdown) {
+ return 0;
+ }
+ const audio_track_cblk_t* cblk = mCblk;
+ const int32_t flush = android_atomic_acquire_load(&cblk->u.mStreaming.mFlush);
+ if (flush != mFlush) {
+ return mFrameCount;
+ }
+ const int32_t rear = android_atomic_acquire_load(&cblk->u.mStreaming.mRear);
+ const ssize_t filled = rear - cblk->u.mStreaming.mFront;
+ if (!(0 <= filled && (size_t) filled <= mFrameCount)) {
+ return 0; // error condition, silently return 0.
+ }
+ return filled;
+}
+
bool AudioTrackServerProxy::setStreamEndDone() {
audio_track_cblk_t* cblk = mCblk;
bool old =
@@ -900,6 +919,11 @@
return mFramesReadySafe;
}
+size_t StaticAudioTrackServerProxy::framesReadySafe() const
+{
+ return mFramesReadySafe;
+}
+
status_t StaticAudioTrackServerProxy::updateStateWithLoop(
StaticAudioTrackState *localState, const StaticAudioTrackState &update) const
{