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

Commit 40b0b1da authored by Wonsik Kim's avatar Wonsik Kim
Browse files

CCodec: update skip-cut-buffers for relevant setting changes only

Sample rate and channel counts should be the only settings that
triggers skip-cut-buffer update.

Bug: 150270199
Test: atest CtsMediaTestCases:DecoderTestAacDrc
Change-Id: Iecf54833d6b484374e6336fd31d8038a441e1c30
parent 3006a835
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -127,20 +127,26 @@ void OutputBuffers::initSkipCutBuffer(
    mDelay = delay;
    mPadding = padding;
    mSampleRate = sampleRate;
    setSkipCutBuffer(delay, padding, channelCount);
    mChannelCount = channelCount;
    setSkipCutBuffer(delay, padding);
}

void OutputBuffers::updateSkipCutBuffer(int32_t sampleRate, int32_t channelCount) {
    if (mSkipCutBuffer == nullptr) {
        return;
    }
    if (mSampleRate == sampleRate && mChannelCount == channelCount) {
        return;
    }
    int32_t delay = mDelay;
    int32_t padding = mPadding;
    if (sampleRate != mSampleRate) {
        delay = ((int64_t)delay * sampleRate) / mSampleRate;
        padding = ((int64_t)padding * sampleRate) / mSampleRate;
    }
    setSkipCutBuffer(delay, padding, channelCount);
    mSampleRate = sampleRate;
    mChannelCount = channelCount;
    setSkipCutBuffer(delay, padding);
}

void OutputBuffers::submit(const sp<MediaCodecBuffer> &buffer) {
@@ -153,14 +159,14 @@ void OutputBuffers::transferSkipCutBuffer(const sp<SkipCutBuffer> &scb) {
    mSkipCutBuffer = scb;
}

void OutputBuffers::setSkipCutBuffer(int32_t skip, int32_t cut, int32_t channelCount) {
void OutputBuffers::setSkipCutBuffer(int32_t skip, int32_t cut) {
    if (mSkipCutBuffer != nullptr) {
        size_t prevSize = mSkipCutBuffer->size();
        if (prevSize != 0u) {
            ALOGD("[%s] Replacing SkipCutBuffer holding %zu bytes", mName, prevSize);
        }
    }
    mSkipCutBuffer = new SkipCutBuffer(skip, cut, channelCount);
    mSkipCutBuffer = new SkipCutBuffer(skip, cut, mChannelCount);
}

// LocalBufferPool
+2 −1
Original line number Diff line number Diff line
@@ -228,8 +228,9 @@ private:
    int32_t mDelay;
    int32_t mPadding;
    int32_t mSampleRate;
    int32_t mChannelCount;

    void setSkipCutBuffer(int32_t skip, int32_t cut, int32_t channelCount);
    void setSkipCutBuffer(int32_t skip, int32_t cut);

    DISALLOW_EVIL_CONSTRUCTORS(OutputBuffers);
};