diff options
author | Glenn Kasten <gkasten@google.com> | 2012-12-07 14:13:35 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-12-07 16:19:09 -0800 |
commit | f0ff908da019a44115109f1b4d1b6864b35a8a29 (patch) | |
tree | 26878ce2fbb731f6cdd47a55ff1cfae54e9e58ee | |
parent | 47c1a5f7c13d82aa8834fd4543bd1d713b97808e (diff) | |
download | frameworks_av-f0ff908da019a44115109f1b4d1b6864b35a8a29.zip frameworks_av-f0ff908da019a44115109f1b4d1b6864b35a8a29.tar.gz frameworks_av-f0ff908da019a44115109f1b4d1b6864b35a8a29.tar.bz2 |
Logging to investigate a crash
Bug: 6490974
Change-Id: Ib926a9258bde4ee05ed42eea662dff68e426a997
-rw-r--r-- | include/media/AudioBufferProvider.h | 12 | ||||
-rw-r--r-- | services/audioflinger/AudioMixer.cpp | 6 |
2 files changed, 17 insertions, 1 deletions
diff --git a/include/media/AudioBufferProvider.h b/include/media/AudioBufferProvider.h index 43e4de7..865ed7e 100644 --- a/include/media/AudioBufferProvider.h +++ b/include/media/AudioBufferProvider.h @@ -36,8 +36,11 @@ public: size_t frameCount; }; - virtual ~AudioBufferProvider() {} +protected: + AudioBufferProvider() : mValid(kValid) { } + virtual ~AudioBufferProvider() { mValid = kDead; } +public: // value representing an invalid presentation timestamp static const int64_t kInvalidPTS = 0x7FFFFFFFFFFFFFFFLL; // <stdint.h> is too painful @@ -47,6 +50,13 @@ public: virtual status_t getNextBuffer(Buffer* buffer, int64_t pts = kInvalidPTS) = 0; virtual void releaseBuffer(Buffer* buffer) = 0; + + int getValid() const { return mValid; } + static const int kValid = 'GOOD'; + static const int kDead = 'DEAD'; + +private: + int mValid; }; // ---------------------------------------------------------------------------- diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp index af169d5..1e4049a 100644 --- a/services/audioflinger/AudioMixer.cpp +++ b/services/audioflinger/AudioMixer.cpp @@ -1098,6 +1098,12 @@ void AudioMixer::process__genericNoResampling(state_t* state, int64_t pts) e0 &= ~(1<<i); track_t& t = state->tracks[i]; t.buffer.frameCount = state->frameCount; + int valid = t.bufferProvider->getValid(); + if (valid != AudioBufferProvider::kValid) { + ALOGE("invalid bufferProvider=%p name=%d frameCount=%d valid=%#x enabledTracks=%#x", + t.bufferProvider, i, t.buffer.frameCount, valid, enabledTracks); + // expect to crash + } t.bufferProvider->getNextBuffer(&t.buffer, pts); t.frameCount = t.buffer.frameCount; t.in = t.buffer.raw; |