diff options
author | Glenn Kasten <gkasten@google.com> | 2015-03-19 14:49:46 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-03-19 14:49:47 +0000 |
commit | 5a23aa949188fafe1d8d35966ff5a73974294dfd (patch) | |
tree | 51100d1057123aa3d7b6fd40a54c2b5611a82172 /services/audioflinger | |
parent | d58b2ac7244a964caa3f4e386b8280ae2f5d2125 (diff) | |
parent | 17c9c998afed5ed9df7495eeed5822f3ed53ebec (diff) | |
download | frameworks_av-5a23aa949188fafe1d8d35966ff5a73974294dfd.zip frameworks_av-5a23aa949188fafe1d8d35966ff5a73974294dfd.tar.gz frameworks_av-5a23aa949188fafe1d8d35966ff5a73974294dfd.tar.bz2 |
Merge "Initial implementation of fast capture dump"
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/FastCaptureDumpState.cpp | 23 | ||||
-rw-r--r-- | services/audioflinger/FastCaptureDumpState.h | 2 | ||||
-rw-r--r-- | services/audioflinger/FastMixerDumpState.cpp | 2 | ||||
-rw-r--r-- | services/audioflinger/Threads.cpp | 4 |
4 files changed, 30 insertions, 1 deletions
diff --git a/services/audioflinger/FastCaptureDumpState.cpp b/services/audioflinger/FastCaptureDumpState.cpp index 00f8da0..53eeba5 100644 --- a/services/audioflinger/FastCaptureDumpState.cpp +++ b/services/audioflinger/FastCaptureDumpState.cpp @@ -14,7 +14,13 @@ * limitations under the License. */ +#define LOG_TAG "FastCaptureDumpState" +//define LOG_NDEBUG 0 + +#include "Configuration.h" +#include <utils/Log.h> #include "FastCaptureDumpState.h" +#include "FastCaptureState.h" namespace android { @@ -27,4 +33,21 @@ FastCaptureDumpState::~FastCaptureDumpState() { } +void FastCaptureDumpState::dump(int fd) const +{ + if (mCommand == FastCaptureState::INITIAL) { + dprintf(fd, " FastCapture not initialized\n"); + return; + } + double measuredWarmupMs = (mMeasuredWarmupTs.tv_sec * 1000.0) + + (mMeasuredWarmupTs.tv_nsec / 1000000.0); + double periodSec = (double) mFrameCount / mSampleRate; + dprintf(fd, " FastCapture command=%s readSequence=%u framesRead=%u\n" + " readErrors=%u sampleRate=%u frameCount=%zu\n" + " measuredWarmup=%.3g ms, warmupCycles=%u period=%.2f ms\n", + FastCaptureState::commandToString(mCommand), mReadSequence, mFramesRead, + mReadErrors, mSampleRate, mFrameCount, measuredWarmupMs, mWarmupCycles, + periodSec * 1e3); +} + } // android diff --git a/services/audioflinger/FastCaptureDumpState.h b/services/audioflinger/FastCaptureDumpState.h index ee99099..6f9c4c3 100644 --- a/services/audioflinger/FastCaptureDumpState.h +++ b/services/audioflinger/FastCaptureDumpState.h @@ -27,6 +27,8 @@ struct FastCaptureDumpState : FastThreadDumpState { FastCaptureDumpState(); /*virtual*/ ~FastCaptureDumpState(); + void dump(int fd) const; // should only be called on a stable copy, not the original + // FIXME by renaming, could pull up many of these to FastThreadDumpState uint32_t mReadSequence; // incremented before and after each read() uint32_t mFramesRead; // total number of frames read successfully diff --git a/services/audioflinger/FastMixerDumpState.cpp b/services/audioflinger/FastMixerDumpState.cpp index 65fbf2b..b10942b 100644 --- a/services/audioflinger/FastMixerDumpState.cpp +++ b/services/audioflinger/FastMixerDumpState.cpp @@ -64,7 +64,7 @@ void FastMixerDumpState::dump(int fd) const } double measuredWarmupMs = (mMeasuredWarmupTs.tv_sec * 1000.0) + (mMeasuredWarmupTs.tv_nsec / 1000000.0); - double mixPeriodSec = (double) mFrameCount / (double) mSampleRate; + double mixPeriodSec = (double) mFrameCount / mSampleRate; dprintf(fd, " FastMixer command=%s writeSequence=%u framesWritten=%u\n" " numTracks=%u writeErrors=%u underruns=%u overruns=%u\n" " sampleRate=%u frameCount=%zu measuredWarmup=%.3g ms, warmupCycles=%u\n" diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index c1da6bc..9881764 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -6164,6 +6164,10 @@ void AudioFlinger::RecordThread::dumpInternals(int fd, const Vector<String16>& a } dprintf(fd, " Fast capture thread: %s\n", hasFastCapture() ? "yes" : "no"); dprintf(fd, " Fast track available: %s\n", mFastTrackAvail ? "yes" : "no"); + + // Make a non-atomic copy of fast capture dump state so it won't change underneath us + const FastCaptureDumpState copy(mFastCaptureDumpState); + copy.dump(fd); } void AudioFlinger::RecordThread::dumpTracks(int fd, const Vector<String16>& args __unused) |