Merge "AudioDec Test: Ignore output port configuration" into oc-dev am: 11e9b588c4 am: 8cbb07a5f6
am: 58483d21d1

Change-Id: I8d7280c659c42f5e1a286d56c74523b7be180a0a
diff --git a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
index 410dc51..fe67cb9 100644
--- a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
+++ b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
@@ -479,7 +479,9 @@
                          android::Vector<BufferInfo>* oBuffer,
                          OMX_AUDIO_CODINGTYPE eEncoding,
                          OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput,
-                         Message msg) {
+                         Message msg,
+                         AudioDecHidlTest::standardComp comp =
+                             AudioDecHidlTest::standardComp::unknown_comp) {
     android::hardware::media::omx::V1_0::Status status;
 
     if (msg.data.eventData.event == OMX_EventPortSettingsChanged) {
@@ -514,8 +516,18 @@
             int32_t nSampleRate;
             getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
                                 &nSampleRate);
-            setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
-                                nChannels, nSampleRate);
+            // Configure output port
+            // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way
+            // to
+            // configure output PCM port. The port undergoes auto configuration
+            // internally basing on parsed elementary stream information.
+            if (comp != AudioDecHidlTest::standardComp::vorbis &&
+                comp != AudioDecHidlTest::standardComp::opus &&
+                comp != AudioDecHidlTest::standardComp::raw) {
+                setDefaultPortParam(omxNode, kPortIndexOutput,
+                                    OMX_AUDIO_CodingPCM, nChannels,
+                                    nSampleRate);
+            }
 
             // If you can disable a port, then you should be able to
             // enable
@@ -594,7 +606,7 @@
                    OMX_AUDIO_CODINGTYPE eEncoding, OMX_U32 kPortIndexInput,
                    OMX_U32 kPortIndexOutput, std::ifstream& eleStream,
                    android::Vector<FrameData>* Info, int offset, int range,
-                   bool signalEOS = true) {
+                   AudioDecHidlTest::standardComp comp, bool signalEOS = true) {
     android::hardware::media::omx::V1_0::Status status;
     Message msg;
 
@@ -633,7 +645,7 @@
         if (status == android::hardware::media::omx::V1_0::Status::OK &&
             msg.type == Message::Type::EVENT) {
             portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding,
-                                kPortIndexInput, kPortIndexOutput, msg);
+                                kPortIndexInput, kPortIndexOutput, msg, comp);
         }
 
         if (frameID == (int)Info->size() || frameID == (offset + range)) break;
@@ -754,8 +766,13 @@
     getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
                         &nSampleRate);
     // Configure output port
-    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
-                        nChannels, nSampleRate);
+    // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+    // configure output PCM port. The port undergoes auto configuration
+    // internally basing on parsed elementary stream information.
+    if (compName != vorbis && compName != opus && compName != raw) {
+        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                            nChannels, nSampleRate);
+    }
 
     android::Vector<BufferInfo> iBuffer, oBuffer;
 
@@ -769,7 +786,7 @@
     ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                   kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
-                  (int)Info.size());
+                  (int)Info.size(), compName);
     eleStream.close();
     waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                            kPortIndexInput, kPortIndexOutput);
@@ -812,8 +829,13 @@
     getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
                         &nSampleRate);
     // Configure output port
-    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
-                        nChannels, nSampleRate);
+    // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+    // configure output PCM port. The port undergoes auto configuration
+    // internally basing on parsed elementary stream information.
+    if (compName != vorbis && compName != opus && compName != raw) {
+        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                            nChannels, nSampleRate);
+    }
 
     android::Vector<BufferInfo> iBuffer, oBuffer;
 
@@ -884,8 +906,13 @@
     getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
                         &nSampleRate);
     // Configure output port
-    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
-                        nChannels, nSampleRate);
+    // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+    // configure output PCM port. The port undergoes auto configuration
+    // internally basing on parsed elementary stream information.
+    if (compName != vorbis && compName != opus && compName != raw) {
+        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                            nChannels, nSampleRate);
+    }
 
     android::Vector<BufferInfo> iBuffer, oBuffer;
 
@@ -902,8 +929,8 @@
     eleStream.open(mURL, std::ifstream::binary);
     ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
-                  kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
-                  i + 1);
+                  kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0, i + 1,
+                  compName);
     eleStream.close();
     waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                            kPortIndexInput, kPortIndexOutput);
@@ -919,7 +946,7 @@
     ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                   kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0, i + 1,
-                  false);
+                  compName, false);
     eleStream.close();
     waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                            kPortIndexInput, kPortIndexOutput);
@@ -983,8 +1010,13 @@
     getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
                         &nSampleRate);
     // Configure output port
-    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
-                        nChannels, nSampleRate);
+    // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+    // configure output PCM port. The port undergoes auto configuration
+    // internally basing on parsed elementary stream information.
+    if (compName != vorbis && compName != opus && compName != raw) {
+        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                            nChannels, nSampleRate);
+    }
 
     android::Vector<BufferInfo> iBuffer, oBuffer;
 
@@ -999,11 +1031,11 @@
     ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                   kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
-                  (int)Info.size());
+                  (int)Info.size(), compName, false);
     eleStream.close();
     waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                            kPortIndexInput, kPortIndexOutput);
-    testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag);
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag);
     flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
                kPortIndexOutput);
     framesReceived = 0;
@@ -1062,8 +1094,13 @@
     getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
                         &nSampleRate);
     // Configure output port
-    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
-                        nChannels, nSampleRate);
+    // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+    // configure output PCM port. The port undergoes auto configuration
+    // internally basing on parsed elementary stream information.
+    if (compName != vorbis && compName != opus && compName != raw) {
+        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+                            nChannels, nSampleRate);
+    }
 
     android::Vector<BufferInfo> iBuffer, oBuffer;
 
@@ -1081,7 +1118,7 @@
     ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                   kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
-                  nFrames, false);
+                  nFrames, compName, false);
     // Note: Assumes 200 ms is enough to end any decode call that started
     flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
                kPortIndexOutput, 200000);
@@ -1103,7 +1140,7 @@
     if (keyFrame) {
         decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
                       kPortIndexInput, kPortIndexOutput, eleStream, &Info,
-                      index, Info.size() - index, false);
+                      index, Info.size() - index, compName, false);
     }
     // Note: Assumes 200 ms is enough to end any decode call that started
     flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
index 9b0be51..2ff8ed3 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -1062,11 +1062,11 @@
     ASSERT_EQ(eleStream.is_open(), true);
     decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
                   kPortIndexOutput, eleStream, &Info, 0, (int)Info.size(),
-                  portMode[1]);
+                  portMode[1], false);
     eleStream.close();
     waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
                            kPortIndexInput, kPortIndexOutput, portMode[1]);
-    testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode);
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode);
     flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
                kPortIndexOutput);
     framesReceived = 0;