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) {