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

Commit a5222e29 authored by Phil Burk's avatar Phil Burk
Browse files

aaudio: improve error logging

Report when INVALID_STATE returned.
This was used to debug monkey test errors.
Cleanup some log messages.
Improve "dumpsys media.aaudio"

Bug: 64310586
Test: CTS nativemedia/aaudio
Change-Id: Ifbcac4794cda22cccbacff6352243c0ef4589c53
parent 909f4a6c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -24,7 +24,8 @@

#include <aaudio/AAudio.h>
#include <aaudio/AAudioTesting.h>
#include <AAudioExampleUtils.h>

#include "AAudioExampleUtils.h"

// TODO use this as a base class within AAudio
class AAudioParameters {
@@ -239,7 +240,7 @@ public:
     * Print stream parameters in comparison with requested values.
     * @param stream
     */
    void compareWithStream(AAudioStream *stream) {
    void compareWithStream(AAudioStream *stream) const {

        printf("  DeviceId:     requested = %d, actual = %d\n",
               getDeviceId(), AAudioStream_getDeviceId(stream));
+7 −3
Original line number Diff line number Diff line
@@ -241,9 +241,11 @@ aaudio_result_t AudioStreamInternal::requestStart()
    int64_t startTime;
    ALOGD("AudioStreamInternal()::requestStart()");
    if (mServiceStreamHandle == AAUDIO_HANDLE_INVALID) {
        ALOGE("AudioStreamInternal::requestStart() mServiceStreamHandle invalid");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    if (isActive()) {
        ALOGE("AudioStreamInternal::requestStart() already active");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    aaudio_stream_state_t originalState = getState();
@@ -320,6 +322,7 @@ aaudio_result_t AudioStreamInternal::requestStop()

aaudio_result_t AudioStreamInternal::registerThread() {
    if (mServiceStreamHandle == AAUDIO_HANDLE_INVALID) {
        ALOGE("AudioStreamInternal::registerThread() mServiceStreamHandle invalid");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    return mServiceInterface.registerAudioThread(mServiceStreamHandle,
@@ -329,6 +332,7 @@ aaudio_result_t AudioStreamInternal::registerThread() {

aaudio_result_t AudioStreamInternal::unregisterThread() {
    if (mServiceStreamHandle == AAUDIO_HANDLE_INVALID) {
        ALOGE("AudioStreamInternal::unregisterThread() mServiceStreamHandle invalid");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    return mServiceInterface.unregisterAudioThread(mServiceStreamHandle, gettid());
@@ -407,19 +411,19 @@ aaudio_result_t AudioStreamInternal::onEventFromServer(AAudioServiceMessage *mes
    aaudio_result_t result = AAUDIO_OK;
    switch (message->event.event) {
        case AAUDIO_SERVICE_EVENT_STARTED:
            ALOGD("AudioStreamInternal::onEventFromServergot() AAUDIO_SERVICE_EVENT_STARTED");
            ALOGD("AudioStreamInternal::onEventFromServer() got AAUDIO_SERVICE_EVENT_STARTED");
            if (getState() == AAUDIO_STREAM_STATE_STARTING) {
                setState(AAUDIO_STREAM_STATE_STARTED);
            }
            break;
        case AAUDIO_SERVICE_EVENT_PAUSED:
            ALOGD("AudioStreamInternal::onEventFromServergot() AAUDIO_SERVICE_EVENT_PAUSED");
            ALOGD("AudioStreamInternal::onEventFromServer() got AAUDIO_SERVICE_EVENT_PAUSED");
            if (getState() == AAUDIO_STREAM_STATE_PAUSING) {
                setState(AAUDIO_STREAM_STATE_PAUSED);
            }
            break;
        case AAUDIO_SERVICE_EVENT_STOPPED:
            ALOGD("AudioStreamInternal::onEventFromServergot() AAUDIO_SERVICE_EVENT_STOPPED");
            ALOGD("AudioStreamInternal::onEventFromServer() got AAUDIO_SERVICE_EVENT_STOPPED");
            if (getState() == AAUDIO_STREAM_STATE_STOPPING) {
                setState(AAUDIO_STREAM_STATE_STOPPED);
            }
+1 −1
Original line number Diff line number Diff line
@@ -248,7 +248,7 @@ AAUDIO_API aaudio_result_t AAudioStream_requestStart(AAudioStream* stream)
    AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
    ALOGD("AAudioStream_requestStart(%p) called --------------", stream);
    aaudio_result_t result = audioStream->requestStart();
    ALOGD("AAudioStream_requestStart(%p) returned ------------", stream);
    ALOGD("AAudioStream_requestStart(%p) returned %d ---------", stream, result);
    return result;
}

+2 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ aaudio_result_t AudioStream::createThread(int64_t periodNanoseconds,
                                     void* threadArg)
{
    if (mHasThread) {
        ALOGE("AudioStream::createThread() - mHasThread already true");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    if (threadProc == nullptr) {
@@ -174,6 +175,7 @@ aaudio_result_t AudioStream::createThread(int64_t periodNanoseconds,
aaudio_result_t AudioStream::joinThread(void** returnArg, int64_t timeoutNanoseconds)
{
    if (!mHasThread) {
        ALOGE("AudioStream::joinThread() - but has no thread");
        return AAUDIO_ERROR_INVALID_STATE;
    }
#if 0
+5 −0
Original line number Diff line number Diff line
@@ -230,6 +230,7 @@ aaudio_result_t AudioStreamTrack::requestStart()
    std::lock_guard<std::mutex> lock(mStreamMutex);

    if (mAudioTrack.get() == nullptr) {
        ALOGE("AudioStreamTrack::requestStart() no AudioTrack");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    // Get current position so we can detect when the track is playing.
@@ -253,6 +254,7 @@ aaudio_result_t AudioStreamTrack::requestPause()
    std::lock_guard<std::mutex> lock(mStreamMutex);

    if (mAudioTrack.get() == nullptr) {
        ALOGE("AudioStreamTrack::requestPause() no AudioTrack");
        return AAUDIO_ERROR_INVALID_STATE;
    } else if (getState() != AAUDIO_STREAM_STATE_STARTING
            && getState() != AAUDIO_STREAM_STATE_STARTED) {
@@ -274,8 +276,10 @@ aaudio_result_t AudioStreamTrack::requestFlush() {
    std::lock_guard<std::mutex> lock(mStreamMutex);

    if (mAudioTrack.get() == nullptr) {
        ALOGE("AudioStreamTrack::requestFlush() no AudioTrack");
        return AAUDIO_ERROR_INVALID_STATE;
    } else if (getState() != AAUDIO_STREAM_STATE_PAUSED) {
        ALOGE("AudioStreamTrack::requestFlush() not paused");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    setState(AAUDIO_STREAM_STATE_FLUSHING);
@@ -289,6 +293,7 @@ aaudio_result_t AudioStreamTrack::requestStop() {
    std::lock_guard<std::mutex> lock(mStreamMutex);

    if (mAudioTrack.get() == nullptr) {
        ALOGE("AudioStreamTrack::requestStop() no AudioTrack");
        return AAUDIO_ERROR_INVALID_STATE;
    }
    onStop();
Loading