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;  | 
