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

Commit 0befec60 authored by Phil Burk's avatar Phil Burk
Browse files

aaudio: update state for legacy mode

Add logging to the loopback test.
Update state in the callback.
Implement AAudioStreamRecord::getFramesWritten().

Bug: 62781173
Bug: 64214193
Test: aaudio_loopback.cpp, look for STARTED state while running
Change-Id: Iba867d048dcfcafe6db1d095abe2766f1aabe608
parent dde8d48a
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -417,11 +417,18 @@ int main(int argc, const char **argv)
            sleep(1);
            printf("%4d: ", i);
            loopbackData.loopbackProcessor->printStatus();
            int64_t framesWritten = AAudioStream_getFramesWritten(loopbackData.inputStream);
            int64_t framesRead = AAudioStream_getFramesRead(loopbackData.inputStream);
            printf(" input written = %lld, read %lld, xruns = %d\n",
                   (long long) framesWritten,
                   (long long) framesRead,

            int64_t inputFramesWritten = AAudioStream_getFramesWritten(loopbackData.inputStream);
            int64_t inputFramesRead = AAudioStream_getFramesRead(loopbackData.inputStream);
            int64_t outputFramesWritten = AAudioStream_getFramesWritten(outputStream);
            int64_t outputFramesRead = AAudioStream_getFramesRead(outputStream);
            printf(" INPUT: wr %lld rd %lld state %s, OUTPUT: wr %lld rd %lld state %s, xruns %d\n",
                   (long long) inputFramesWritten,
                   (long long) inputFramesRead,
                   AAudio_convertStreamStateToText(AAudioStream_getState(loopbackData.inputStream)),
                   (long long) outputFramesWritten,
                   (long long) outputFramesRead,
                   AAudio_convertStreamStateToText(AAudioStream_getState(outputStream)),
                   AAudioStream_getXRunCount(outputStream)
            );
        }
+1 −1
Original line number Diff line number Diff line
@@ -363,7 +363,7 @@ aaudio_result_t AudioStreamInternal::getTimestamp(clockid_t clockId,
    }
}

aaudio_result_t AudioStreamInternal::updateStateWhileWaiting() {
aaudio_result_t AudioStreamInternal::updateStateMachine() {
    if (isDataCallbackActive()) {
        return AAUDIO_OK; // state is getting updated by the callback thread read/write call
    }
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ public:
                                       int64_t *framePosition,
                                       int64_t *timeNanoseconds) override;

    virtual aaudio_result_t updateStateWhileWaiting() override;
    virtual aaudio_result_t updateStateMachine() override;

    aaudio_result_t open(const AudioStreamBuilder &builder) override;

+2 −2
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ aaudio_result_t AudioStream::waitForStateChange(aaudio_stream_state_t currentSta
                                                aaudio_stream_state_t *nextState,
                                                int64_t timeoutNanoseconds)
{
    aaudio_result_t result = updateStateWhileWaiting();
    aaudio_result_t result = updateStateMachine();
    if (result != AAUDIO_OK) {
        return result;
    }
@@ -112,7 +112,7 @@ aaudio_result_t AudioStream::waitForStateChange(aaudio_stream_state_t currentSta
        AudioClock::sleepForNanos(durationNanos);
        timeoutNanoseconds -= durationNanos;

        aaudio_result_t result = updateStateWhileWaiting();
        aaudio_result_t result = updateStateMachine();
        if (result != AAUDIO_OK) {
            return result;
        }
+2 −2
Original line number Diff line number Diff line
@@ -68,10 +68,10 @@ public:


    /**
     * Update state while in the middle of waitForStateChange()
     * Update state machine.()
     * @return
     */
    virtual aaudio_result_t updateStateWhileWaiting() = 0;
    virtual aaudio_result_t updateStateMachine() = 0;


    // =========== End ABSTRACT methods ===========================
Loading