Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6057fa27 authored by Kevin Rocard's avatar Kevin Rocard
Browse files

Log if intercepting tracks takes too long



Test: adb shell audiorecorder --target /data/file.raw
Bug: 111453086
Change-Id: Ic56cd0d223e83938a2d5eeb98cbcb754629799d8
Signed-off-by: default avatarKevin Rocard <krocard@google.com>
parent a134b006
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -698,6 +698,7 @@ void AudioFlinger::PlaybackThread::Track::releaseBuffer(AudioBufferProvider::Buf
// TODO: compensate for time shift between HW modules.
void AudioFlinger::PlaybackThread::Track::interceptBuffer(
        const AudioBufferProvider::Buffer& sourceBuffer) {
    auto start = std::chrono::steady_clock::now();
    const size_t frameCount = sourceBuffer.frameCount;
    for (auto& sink : mTeePatches) {
        RecordThread::PatchRecord* patchRecord = sink.patchRecord.get();
@@ -715,6 +716,11 @@ void AudioFlinger::PlaybackThread::Track::interceptBuffer(
                 "buffer %zu/%zu, dropping %zu frames", __func__, mId, patchRecord->mId,
                 framesWritten, frameCount, framesLeft);
    }
    auto spent = ceil<std::chrono::microseconds>(std::chrono::steady_clock::now() - start);
    using namespace std::chrono_literals;
    // Average is ~20us per track, this should virtually never be logged (Logging takes >200us)
    ALOGD_IF(spent > 200us, "%s: took %lldus to intercept %zu tracks", __func__,
             spent.count(), mTeePatches.size());
}

size_t AudioFlinger::PlaybackThread::Track::writeFrames(AudioBufferProvider* dest,