C2SoftXaacDec: Handle error cases when decoder fails to initialize

When decoder fails to initialize, it doesn't consume any bytes in
subsequent process call. Avoid this by returning an error when decoder
is not initialized before first process call.

Bug: 112194305
Test: cts-tradefed run commandAndExit cts-dev -m CtsSecurityTestCases\
 -t android.security.cts.StagefrightTest#testStagefright_c_2016_2428

Change-Id: I725c14a7634bab9355dbe743425919eea814f865
(cherry picked from commit 2ebffcd4480126771dfa397a58ca98c6a5e06dea)
diff --git a/media/codecs/xaac/C2SoftXaacDec.cpp b/media/codecs/xaac/C2SoftXaacDec.cpp
index d7f6af6..4ee4919 100644
--- a/media/codecs/xaac/C2SoftXaacDec.cpp
+++ b/media/codecs/xaac/C2SoftXaacDec.cpp
@@ -420,7 +420,6 @@
                 work->result = C2_CORRUPTED;
                 return;
             }
-            mIsCodecConfigFlushRequired = true;
 
             if ((mSampFreq != prevSampleRate) ||
                 (mNumChannels != prevNumChannels)) {
@@ -451,10 +450,14 @@
         signed int bytesConsumed = 0;
         int errorCode = 0;
         if (mIsCodecInitialized) {
+            mIsCodecConfigFlushRequired = true;
             errorCode = decodeXAACStream(inBuffer, inBufferLength,
                                          &bytesConsumed, &mNumOutBytes);
-        } else {
+        } else if (!mIsCodecConfigFlushRequired) {
             ALOGE("Assumption that first frame after header initializes decoder Failed!");
+            mSignalledError = true;
+            work->result = C2_CORRUPTED;
+            return;
         }
         size -= bytesConsumed;
         offset += bytesConsumed;