CCodec: put encrypted buffer in array mode right away
Bug: 118412571
Test: atest GtsMediaTestCases:WidevineH264PlaybackTests
Change-Id: Ic51339eb38e0bb877f3194dad21c151c7f49b2a3
(cherry picked from commit 1b02631afd276887a3d14dcc5564e41e574dc97a)
diff --git a/media/sfplugin/CCodecBufferChannel.cpp b/media/sfplugin/CCodecBufferChannel.cpp
index 3977607..f4b407f 100644
--- a/media/sfplugin/CCodecBufferChannel.cpp
+++ b/media/sfplugin/CCodecBufferChannel.cpp
@@ -1991,6 +1991,7 @@
pools->inputPool = pool;
}
+ bool forceArrayMode = false;
Mutexed<std::unique_ptr<InputBuffers>>::Locked buffers(mInputBuffers);
if (graphic) {
if (mInputSurface) {
@@ -2022,6 +2023,7 @@
}
buffers->reset(new EncryptedLinearInputBuffers(
secure, mDealer, mCrypto, mHeapSeqNum, (size_t)capacity, mName));
+ forceArrayMode = true;
} else {
buffers->reset(new LinearInputBuffers(mName));
}
@@ -2033,6 +2035,10 @@
} else {
// TODO: error
}
+
+ if (forceArrayMode) {
+ *buffers = (*buffers)->toArrayMode(kMinInputBufferArraySize);
+ }
}
if (outputFormat != nullptr) {