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

Commit bb9370b2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I8d78cc1a,I9b711d42 into main

* changes:
  Add traces for measure Audio-Haptics latency (mediaServer)
  Add traces in AudioFlinger to measure Audio-Haptics latency
parents 56c2a0d0 8b4bcdfc
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -43,6 +43,12 @@
#include <mpeg2ts/ATSParser.h>
#include <gui/Surface.h>

#define ATRACE_TAG ATRACE_TAG_AUDIO
#include <utils/Trace.h>

#include <android-base/stringprintf.h>
using ::android::base::StringPrintf;

namespace android {

static float kDisplayRefreshingRate = 60.f; // TODO: get this from the display
@@ -157,7 +163,10 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) {
                    int32_t index;
                    CHECK(msg->findInt32("index", &index));

                    ATRACE_BEGIN(StringPrintf("Nuplayer::handleAnInputBuffer [%s]",
                                              mIsAudio ? "audio" : "video").c_str());
                    handleAnInputBuffer(index);
                    ATRACE_END();
                    break;
                }

@@ -175,7 +184,10 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) {
                    CHECK(msg->findInt64("timeUs", &timeUs));
                    CHECK(msg->findInt32("flags", &flags));

                    ATRACE_BEGIN(StringPrintf("Nuplayer::handleAnOutputBuffer [%s]",
                                              mIsAudio ? "audio" : "video").c_str());
                    handleAnOutputBuffer(index, offset, size, timeUs, flags);
                    ATRACE_END();
                    break;
                }

@@ -184,7 +196,10 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) {
                    sp<AMessage> format;
                    CHECK(msg->findMessage("format", &format));

                    ATRACE_BEGIN(StringPrintf("Nuplayer::handleOutputFormatChange [%s]",
                                              mIsAudio ? "audio" : "video").c_str());
                    handleOutputFormatChange(format);
                    ATRACE_END();
                    break;
                }

@@ -205,15 +220,16 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) {
                    break;
                }
            }

            break;
        }

        case kWhatRenderBuffer:
        {
            ATRACE_BEGIN("Nuplayer::onRenderBuffer");
            if (!isStaleReply(msg)) {
                onRenderBuffer(msg);
            }
            ATRACE_END();
            break;
        }

+8 −0
Original line number Diff line number Diff line
@@ -27,6 +27,12 @@
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>

#define ATRACE_TAG ATRACE_TAG_AUDIO
#include <utils/Trace.h>

#include <android-base/stringprintf.h>
using ::android::base::StringPrintf;

namespace android {

NuPlayer::DecoderBase::DecoderBase(const sp<AMessage> &notify)
@@ -129,9 +135,11 @@ void NuPlayer::DecoderBase::onMessageReceived(const sp<AMessage> &msg) {
    switch (msg->what()) {
        case kWhatConfigure:
        {
            ATRACE_BEGIN("NuPlayer::DecoderBase::onConfigure");
            sp<AMessage> format;
            CHECK(msg->findMessage("format", &format));
            onConfigure(format);
            ATRACE_END();
            break;
        }

+28 −2
Original line number Diff line number Diff line
@@ -36,6 +36,11 @@
#include <media/stagefright/Utils.h>
#include <media/stagefright/FoundationUtils.h>

#define ATRACE_TAG ATRACE_TAG_AUDIO
#include <utils/Trace.h>
#include <android-base/stringprintf.h>
using ::android::base::StringPrintf;

static const int kDumpLockRetries = 50;
static const int kDumpLockSleepUs = 20000;

@@ -146,9 +151,11 @@ status_t NuPlayerDriver::setDataSource(
        const char *url,
        const KeyedVector<String8, String8> *headers) {
    ALOGV("setDataSource(%p) url(%s)", this, uriDebugString(url, false).c_str());
    ATRACE_BEGIN(StringPrintf("setDataSource(%p)", this).c_str());
    Mutex::Autolock autoLock(mLock);

    if (mState != STATE_IDLE) {
        ATRACE_END();
        return INVALID_OPERATION;
    }

@@ -159,15 +166,18 @@ status_t NuPlayerDriver::setDataSource(
    while (mState == STATE_SET_DATASOURCE_PENDING) {
        mCondition.wait(mLock);
    }
    ATRACE_END();

    return mAsyncResult;
}

status_t NuPlayerDriver::setDataSource(int fd, int64_t offset, int64_t length) {
    ALOGV("setDataSource(%p) file(%d)", this, fd);
    ATRACE_BEGIN(StringPrintf("setDataSource(%p) file(%d)", this, fd).c_str());
    Mutex::Autolock autoLock(mLock);

    if (mState != STATE_IDLE) {
        ATRACE_END();
        return INVALID_OPERATION;
    }

@@ -178,15 +188,18 @@ status_t NuPlayerDriver::setDataSource(int fd, int64_t offset, int64_t length) {
    while (mState == STATE_SET_DATASOURCE_PENDING) {
        mCondition.wait(mLock);
    }
    ATRACE_END();

    return mAsyncResult;
}

status_t NuPlayerDriver::setDataSource(const sp<IStreamSource> &source) {
    ALOGV("setDataSource(%p) stream source", this);
    ATRACE_BEGIN(StringPrintf("setDataSource(%p) stream source", this).c_str());
    Mutex::Autolock autoLock(mLock);

    if (mState != STATE_IDLE) {
        ATRACE_END();
        return INVALID_OPERATION;
    }

@@ -197,15 +210,18 @@ status_t NuPlayerDriver::setDataSource(const sp<IStreamSource> &source) {
    while (mState == STATE_SET_DATASOURCE_PENDING) {
        mCondition.wait(mLock);
    }
    ATRACE_END();

    return mAsyncResult;
}

status_t NuPlayerDriver::setDataSource(const sp<DataSource> &source) {
    ALOGV("setDataSource(%p) callback source", this);
    ATRACE_BEGIN(StringPrintf("setDataSource(%p) callback source", this).c_str());
    Mutex::Autolock autoLock(mLock);

    if (mState != STATE_IDLE) {
        ATRACE_END();
        return INVALID_OPERATION;
    }

@@ -216,15 +232,18 @@ status_t NuPlayerDriver::setDataSource(const sp<DataSource> &source) {
    while (mState == STATE_SET_DATASOURCE_PENDING) {
        mCondition.wait(mLock);
    }
    ATRACE_END();

    return mAsyncResult;
}

status_t NuPlayerDriver::setDataSource(const String8& rtpParams) {
    ALOGV("setDataSource(%p) rtp source", this);
    ATRACE_BEGIN(StringPrintf("setDataSource(%p) rtp source", this).c_str());
    Mutex::Autolock autoLock(mLock);

    if (mState != STATE_IDLE) {
        ATRACE_END();
        return INVALID_OPERATION;
    }

@@ -235,6 +254,7 @@ status_t NuPlayerDriver::setDataSource(const String8& rtpParams) {
    while (mState == STATE_SET_DATASOURCE_PENDING) {
        mCondition.wait(mLock);
    }
    ATRACE_END();

    return mAsyncResult;
}
@@ -295,8 +315,11 @@ status_t NuPlayerDriver::setBufferingSettings(const BufferingSettings& buffering

status_t NuPlayerDriver::prepare() {
    ALOGV("prepare(%p)", this);
    ATRACE_BEGIN(StringPrintf("prepare(%p)", this).c_str());
    Mutex::Autolock autoLock(mLock);
    return prepare_l();
    status_t ret = prepare_l();
    ATRACE_END();
    return ret;
}

status_t NuPlayerDriver::prepare_l() {
@@ -354,8 +377,11 @@ status_t NuPlayerDriver::prepareAsync() {

status_t NuPlayerDriver::start() {
    ALOGV("start(%p), state is %d, eos is %d", this, mState, mAtEOS);
    ATRACE_BEGIN(StringPrintf("start(%p), state is %d, eos is %d", this, mState, mAtEOS).c_str());
    Mutex::Autolock autoLock(mLock);
    return start_l();
    status_t ret = start_l();
    ATRACE_END();
    return ret;
}

status_t NuPlayerDriver::start_l() {
+12 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */

//#define LOG_NDEBUG 0
#define ATRACE_TAG ATRACE_TAG_AUDIO
#define LOG_TAG "NuPlayerRenderer"
#include <utils/Log.h>

@@ -37,6 +38,9 @@

#include <inttypes.h>

#include <android-base/stringprintf.h>
using ::android::base::StringPrintf;

namespace android {

/*
@@ -2000,6 +2004,8 @@ status_t NuPlayer::Renderer::onOpenAudioSink(
        bool isStreaming) {
    ALOGV("openAudioSink: offloadOnly(%d) offloadingAudio(%d)",
            offloadOnly, offloadingAudio());
    ATRACE_BEGIN(StringPrintf("NuPlayer::Renderer::onOpenAudioSink: offloadOnly(%d) "
            "offloadingAudio(%d)", offloadOnly, offloadingAudio()).c_str());
    bool audioSinkChanged = false;

    int32_t numChannels;
@@ -2071,6 +2077,7 @@ status_t NuPlayer::Renderer::onOpenAudioSink(
            if (memcmp(&mCurrentOffloadInfo, &offloadInfo, sizeof(offloadInfo)) == 0) {
                ALOGV("openAudioSink: no change in offload mode");
                // no change from previous configuration, everything ok.
                ATRACE_END();
                return OK;
            }
            mCurrentPcmInfo = AUDIO_PCMINFO_INITIALIZER;
@@ -2140,6 +2147,7 @@ status_t NuPlayer::Renderer::onOpenAudioSink(
        if (memcmp(&mCurrentPcmInfo, &info, sizeof(info)) == 0) {
            ALOGV("openAudioSink: no change in pcm mode");
            // no change from previous configuration, everything ok.
            ATRACE_END();
            return OK;
        }

@@ -2184,6 +2192,7 @@ status_t NuPlayer::Renderer::onOpenAudioSink(
            ALOGW("openAudioSink: non offloaded open failed status: %d", err);
            mAudioSink->close();
            mCurrentPcmInfo = AUDIO_PCMINFO_INITIALIZER;
            ATRACE_END();
            return err;
        }
        mCurrentPcmInfo = info;
@@ -2195,13 +2204,16 @@ status_t NuPlayer::Renderer::onOpenAudioSink(
        onAudioSinkChanged();
    }
    mAudioTornDown = false;
    ATRACE_END();
    return OK;
}

void NuPlayer::Renderer::onCloseAudioSink() {
    ATRACE_BEGIN("NuPlyer::Renderer::onCloseAudioSink");
    mAudioSink->close();
    mCurrentOffloadInfo = AUDIO_INFO_INITIALIZER;
    mCurrentPcmInfo = AUDIO_PCMINFO_INITIALIZER;
    ATRACE_END();
}

void NuPlayer::Renderer::onChangeAudioFormat(
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@

#define LOG_TAG "AudioFlinger"
//#define LOG_NDEBUG 0
#define ATRACE_TAG ATRACE_TAG_AUDIO
#include <utils/Trace.h>

// Define AUDIO_ARRAYS_STATIC_CHECK to check all audio arrays are correct
#define AUDIO_ARRAYS_STATIC_CHECK 1
@@ -1065,6 +1067,7 @@ void AudioFlinger::unregisterWriter(const sp<NBLog::Writer>& writer)
status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input,
                                   media::CreateTrackResponse& _output)
{
    ATRACE_CALL();
    // Local version of VALUE_OR_RETURN, specific to this method's calling conventions.
    CreateTrackInput input = VALUE_OR_RETURN_STATUS(CreateTrackInput::fromAidl(_input));
    CreateTrackOutput output;