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

Commit 4c5129b4 authored by Phil Burk's avatar Phil Burk
Browse files

aaudio: Fix getFramesWritten() for callback mode.



Plus other small fixes for CTS and cleanup

Bug: 37910599
Test: test_aaudio.cpp
Change-Id: I65a23daf99e9de857d3ce9fd12e9f11c614e298e
Signed-off-by: default avatarPhil Burk <philburk@google.com>
parent c5cbb87d
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -791,4 +791,10 @@ int64_t AudioStreamInternal::getFramesRead()
    return framesRead;
}

// TODO implement getTimestamp
int64_t AudioStreamInternal::getFramesWritten()
{
    int64_t getFramesWritten = mAudioEndpoint.getDownDataWriteCounter()
            + mFramesOffsetFromService;
    ALOGD_IF(MYLOG_CONDITION, "AudioStreamInternal::getFramesWritten() returns %lld", (long long)getFramesWritten);
    return getFramesWritten;
}
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ public:
    int32_t getFramesPerBurst() const override;

    int64_t getFramesRead() override;
    int64_t getFramesWritten() override;

    int32_t getXRunCount() const override {
        return mXRunCount;
+10 −15
Original line number Diff line number Diff line
@@ -195,26 +195,21 @@ AAUDIO_API void AAudioStreamBuilder_setFramesPerDataCallback(AAudioStreamBuilder
    streamBuilder->setFramesPerDataCallback(frames);
}

// TODO merge AAudioInternal_openStream into AAudioStreamBuilder_openStream
static aaudio_result_t  AAudioInternal_openStream(AudioStreamBuilder *streamBuilder,
AAUDIO_API aaudio_result_t  AAudioStreamBuilder_openStream(AAudioStreamBuilder* builder,
                                                     AAudioStream** streamPtr)
{
    AudioStream *audioStream = nullptr;
    ALOGD("AAudioStreamBuilder_openStream() ----------------------------------------------");
    AudioStreamBuilder *streamBuilder = COMMON_GET_FROM_BUILDER_OR_RETURN(streamPtr);
    aaudio_result_t result = streamBuilder->build(&audioStream);
    if (result != AAUDIO_OK) {
        return result;
    } else {
    ALOGD("AAudioStreamBuilder_openStream() returns %d -----------------------------------",
          result);
    if (result == AAUDIO_OK) {
        *streamPtr = (AAudioStream*) audioStream;
        return AAUDIO_OK;
    }
    } else {
        *streamPtr = nullptr;
    }

AAUDIO_API aaudio_result_t  AAudioStreamBuilder_openStream(AAudioStreamBuilder* builder,
                                                     AAudioStream** streamPtr)
{
    ALOGD("AAudioStreamBuilder_openStream() ----------------------------------------------");
    AudioStreamBuilder *streamBuilder = COMMON_GET_FROM_BUILDER_OR_RETURN(streamPtr);
    return AAudioInternal_openStream(streamBuilder, streamPtr);
    return result;
}

AAUDIO_API aaudio_result_t  AAudioStreamBuilder_delete(AAudioStreamBuilder* builder)
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ aaudio_result_t AudioStream::open(const AudioStreamBuilder& builder)
    mDataCallbackProc = builder.getDataCallbackProc();
    mErrorCallbackProc = builder.getErrorCallbackProc();
    mDataCallbackUserData = builder.getDataCallbackUserData();
    mErrorCallbackUserData = builder.getErrorCallbackUserData();

    // This is very helpful for debugging in the future.
    ALOGI("AudioStream.open(): rate = %d, channels = %d, format = %d, sharing = %d",
+2 −2
Original line number Diff line number Diff line
@@ -223,11 +223,11 @@ public:
protected:

    virtual int64_t incrementFramesWritten(int32_t frames) {
        return static_cast<int64_t>(mFramesWritten.increment(frames));
        return mFramesWritten.increment(frames);
    }

    virtual int64_t incrementFramesRead(int32_t frames) {
        return static_cast<int64_t>(mFramesRead.increment(frames));
        return mFramesRead.increment(frames);
    }

    /**
Loading