summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-05-31 14:35:01 -0700
committerGlenn Kasten <gkasten@google.com>2012-06-13 15:12:42 -0700
commit0c9d26d187017f7fb028ab52a0fbc6395142faa4 (patch)
tree35fd2f6babef082b85058fd27a69bda048687295
parentb4ea1ab821d652cb080910d4081f5f1318597a90 (diff)
downloadframeworks_av-0c9d26d187017f7fb028ab52a0fbc6395142faa4.zip
frameworks_av-0c9d26d187017f7fb028ab52a0fbc6395142faa4.tar.gz
frameworks_av-0c9d26d187017f7fb028ab52a0fbc6395142faa4.tar.bz2
Log track name on obtain/releaseBuffer warnings
This should help diagnose problems by allowing us to correlate the logs with the dumpsys media.audio_flinger output. Change-Id: I8c7c592b4f87d13b0f29c66ce7a2f301a0f063c9
-rw-r--r--include/private/media/AudioTrackShared.h4
-rw-r--r--media/libmedia/AudioTrack.cpp6
-rw-r--r--services/audioflinger/AudioFlinger.cpp2
3 files changed, 6 insertions, 6 deletions
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index 469f5ff..5b133f3 100644
--- a/include/private/media/AudioTrackShared.h
+++ b/include/private/media/AudioTrackShared.h
@@ -97,9 +97,7 @@ public:
// read-only for client, server writes once at initialization and is then read-only
uint8_t frameSize; // would normally be size_t, but 8 bits is plenty
-
- // never used
- uint8_t pad1;
+ uint8_t mName; // normal tracks: track name, fast tracks: track index
// used by client only
uint16_t bufferTimeoutMs; // Maximum cumulated timeout before restarting audioflinger
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index e234532..7df9b75 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -987,8 +987,8 @@ status_t AudioTrack::obtainBuffer(Buffer* audioBuffer, int32_t waitCount)
// timing out when a loop has been set and we have already written upto loop end
// is a normal condition: no need to wake AudioFlinger up.
if (cblk->user < cblk->loopEnd) {
- ALOGW( "obtainBuffer timed out (is the CPU pegged?) %p "
- "user=%08x, server=%08x", this, cblk->user, cblk->server);
+ ALOGW( "obtainBuffer timed out (is the CPU pegged?) %p name=%#x"
+ "user=%08x, server=%08x", this, cblk->mName, cblk->user, cblk->server);
//unlock cblk mutex before calling mAudioTrack->start() (see issue #1617140)
cblk->lock.unlock();
result = mAudioTrack->start();
@@ -1054,7 +1054,7 @@ void AudioTrack::releaseBuffer(Buffer* audioBuffer)
// restart track if it was disabled by audioflinger due to previous underrun
if (mActive && (mCblk->flags & CBLK_DISABLED_MSK)) {
android_atomic_and(~CBLK_DISABLED_ON, &mCblk->flags);
- ALOGW("releaseBuffer() track %p disabled, restarting", this);
+ ALOGW("releaseBuffer() track %p name=%#x disabled, restarting", this, mCblk->mName);
mAudioTrack->start();
}
}
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 586a916..900f74c 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -4287,6 +4287,7 @@ AudioFlinger::PlaybackThread::Track::Track(
mCblk->frameSize = audio_is_linear_pcm(format) ? mChannelCount * sizeof(int16_t) : sizeof(uint8_t);
// to avoid leaking a track name, do not allocate one unless there is an mCblk
mName = thread->getTrackName_l((audio_channel_mask_t)channelMask);
+ mCblk->mName = mName;
if (mName < 0) {
ALOGE("no more track names available");
return;
@@ -4302,6 +4303,7 @@ AudioFlinger::PlaybackThread::Track::Track(
// this means we are potentially denying other more important fast tracks from
// being created. It would be better to allocate the index dynamically.
mFastIndex = i;
+ mCblk->mName = i;
// Read the initial underruns because this field is never cleared by the fast mixer
mObservedUnderruns = thread->getFastTrackUnderruns(i);
thread->mFastTrackAvailMask &= ~(1 << i);