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
diff --git a/media/codec2/sfplugin/CCodecBuffers.cpp b/media/codec2/sfplugin/CCodecBuffers.cpp
index 265eeb7..668f892 100644
--- a/media/codec2/sfplugin/CCodecBuffers.cpp
+++ b/media/codec2/sfplugin/CCodecBuffers.cpp
@@ -127,20 +127,26 @@
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 @@
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
diff --git a/media/codec2/sfplugin/CCodecBuffers.h b/media/codec2/sfplugin/CCodecBuffers.h
index bae08e0..85ca5d5 100644
--- a/media/codec2/sfplugin/CCodecBuffers.h
+++ b/media/codec2/sfplugin/CCodecBuffers.h
@@ -228,8 +228,9 @@
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);
};