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

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

aaudio: use unique_ptr for mixer buffer

Bug: 151650670
Test: atest CtsNativeMediaAAudioTestCases
Test: OboeTester "TEST OUTPUT"
Test: disable EXCLUSIVE mode so we use the shared mixer
Change-Id: Ie8bcca265cd3ee124e455116a366d1056f3ee4cb
parent 99f69fed
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -33,25 +33,21 @@ using android::WrappingBuffer;
using android::FifoBuffer;
using android::fifo_frames_t;

AAudioMixer::~AAudioMixer() {
    delete[] mOutputBuffer;
}

void AAudioMixer::allocate(int32_t samplesPerFrame, int32_t framesPerBurst) {
    mSamplesPerFrame = samplesPerFrame;
    mFramesPerBurst = framesPerBurst;
    int32_t samplesPerBuffer = samplesPerFrame * framesPerBurst;
    mOutputBuffer = new float[samplesPerBuffer];
    mOutputBuffer = std::make_unique<float[]>(samplesPerBuffer);
    mBufferSizeInBytes = samplesPerBuffer * sizeof(float);
}

void AAudioMixer::clear() {
    memset(mOutputBuffer, 0, mBufferSizeInBytes);
    memset(mOutputBuffer.get(), 0, mBufferSizeInBytes);
}

int32_t AAudioMixer::mix(int streamIndex, FifoBuffer *fifo, bool allowUnderflow) {
    WrappingBuffer wrappingBuffer;
    float *destination = mOutputBuffer;
    float *destination = mOutputBuffer.get();

#if AAUDIO_MIXER_ATRACE_ENABLED
    ATRACE_BEGIN("aaMix");
@@ -117,5 +113,5 @@ void AAudioMixer::mixPart(float *destination, float *source, int32_t numFrames)
}

float *AAudioMixer::getOutputBuffer() {
    return mOutputBuffer;
    return mOutputBuffer.get();
}
+1 −2
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@
class AAudioMixer {
public:
    AAudioMixer() {}
    ~AAudioMixer();

    void allocate(int32_t samplesPerFrame, int32_t framesPerBurst);

@@ -47,7 +46,7 @@ public:
private:
    void mixPart(float *destination, float *source, int32_t numFrames);

    float   *mOutputBuffer = nullptr;
    std::unique_ptr<float[]> mOutputBuffer;
    int32_t  mSamplesPerFrame = 0;
    int32_t  mFramesPerBurst = 0;
    int32_t  mBufferSizeInBytes = 0;