CCodec: put encrypted buffer in array mode right away
Bug: 118412571
Test: atest GtsMediaTestCases:WidevineH264PlaybackTests
Change-Id: Ic51339eb38e0bb877f3194dad21c151c7f49b2a3
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 55a97d8..432b8c0 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -2127,6 +2127,7 @@
pools->inputPool = pool;
}
+ bool forceArrayMode = false;
Mutexed<std::unique_ptr<InputBuffers>>::Locked buffers(mInputBuffers);
if (graphic) {
if (mInputSurface) {
@@ -2158,6 +2159,7 @@
}
buffers->reset(new EncryptedLinearInputBuffers(
secure, mDealer, mCrypto, mHeapSeqNum, (size_t)capacity, mName));
+ forceArrayMode = true;
} else {
buffers->reset(new LinearInputBuffers(mName));
}
@@ -2169,6 +2171,10 @@
} else {
// TODO: error
}
+
+ if (forceArrayMode) {
+ *buffers = (*buffers)->toArrayMode(kMinInputBufferArraySize);
+ }
}
if (outputFormat != nullptr) {