Merge "Revert "Loop all decode tests for all port modes supported""
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 369db5b..b8a1634 100644
--- a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
+++ b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
@@ -813,7 +813,7 @@
     if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 }
@@ -872,7 +872,7 @@
 
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 }
@@ -979,7 +979,7 @@
 
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 }
@@ -1065,7 +1065,7 @@
 
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 }
@@ -1169,7 +1169,7 @@
 
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 }
diff --git a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp
index 5367a4d..dd5f16a 100644
--- a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp
+++ b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioEncTest.cpp
@@ -535,7 +535,7 @@
 
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 }
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 eeca599..070dc4c 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -671,8 +671,8 @@
     bUsingNativeBuffers = params.bUsingNativeBuffers;
 };
 
-bool isColorFormatFlexibleYUV420(sp<IOmxNode> omxNode,
-                                 OMX_COLOR_FORMATTYPE eColorFormat) {
+bool isColorFormatFlexibleYUV(sp<IOmxNode> omxNode,
+                              OMX_COLOR_FORMATTYPE eColorFormat) {
     android::hardware::media::omx::V1_0::Status status;
     unsigned int index = OMX_IndexMax, index2 = OMX_IndexMax;
     omxNode->getExtensionIndex(
@@ -740,11 +740,7 @@
     return false;
 }
 
-// get default color format for output port.
-// Recommended Order of Supported Color Formats :
-//   1. most efficient hardware format
-//   2. most efficient flexible YUV format
-//   3. other formats
+// get default color format for output port
 void getDefaultColorFormat(sp<IOmxNode> omxNode, OMX_U32 kPortIndexOutput,
                            PortMode oPortMode,
                            OMX_COLOR_FORMATTYPE* eColorFormat) {
@@ -758,21 +754,13 @@
         if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
         EXPECT_EQ(portFormat.eCompressionFormat, OMX_VIDEO_CodingUnused);
         if (oPortMode != PortMode::PRESET_BYTE_BUFFER) {
-            // In GraphicBuffermode pick first format in the list as the desired
-            // format
             *eColorFormat = portFormat.eColorFormat;
             break;
         }
-        // FlexibleYUV color format is supported in both graphic and shared mem
-        // mode
-        if (isColorFormatFlexibleYUV420(omxNode, portFormat.eColorFormat)) {
+        if (isColorFormatFlexibleYUV(omxNode, portFormat.eColorFormat)) {
             *eColorFormat = portFormat.eColorFormat;
             break;
         }
-        // Video components must support either OMX_COLOR_FormatYUV420Planar
-        // or OMX_COLOR_FormatYUV420SemiPlanar format in shared memory mode.
-        // Android treats Packed formats identical to the unpacked version as
-        // as all raw video buffers must be packed (nSliceHeight = height)
         if (OMX_COLOR_FormatYUV420SemiPlanar == portFormat.eColorFormat ||
             OMX_COLOR_FormatYUV420Planar == portFormat.eColorFormat ||
             OMX_COLOR_FormatYUV420PackedPlanar == portFormat.eColorFormat ||
@@ -854,102 +842,84 @@
         eleInfo >> flags;
         eleInfo >> timestamp;
         Info.push_back({bytesCount, flags, timestamp});
+        if (timestampDevTest && (flags != OMX_BUFFERFLAG_CODECCONFIG))
+            timestampUslist.push_back(timestamp);
         if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
     }
-    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
     eleInfo.close();
 
+    // As the frame sizes are known ahead, use it to configure i/p buffer size
+    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+    status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
+    // Change the port modes arbitrarily at the start before finialising on the
+    // desired values.
     PortMode dummyPM[] = {
         PortMode::PRESET_BYTE_BUFFER,    PortMode::PRESET_ANW_BUFFER,
         PortMode::PRESET_SECURE_BUFFER,  PortMode::DYNAMIC_ANW_BUFFER,
         PortMode::DYNAMIC_NATIVE_HANDLE,
     };
-    PortMode pmArray[] = {PortMode::PRESET_BYTE_BUFFER,
-                          PortMode::DYNAMIC_ANW_BUFFER,
-                          PortMode::PRESET_ANW_BUFFER};
-
-    for (size_t j = 0; j < sizeof(pmArray) / sizeof(pmArray[0]); j++) {
-        // Change the port modes arbitrarily at the start before finialising
-        // on the desired values.
-        for (size_t k = 0; k < sizeof(dummyPM) / sizeof(dummyPM[0]); k++) {
-            // ports may or may not support these modes. These are not the final
-            // values. This init is done to test if causes any problems.
-            status = omxNode->setPortMode(kPortIndexInput, dummyPM[k]);
-            status = omxNode->setPortMode(kPortIndexOutput, dummyPM[k]);
-        }
-        // set port mode
-        portMode[0] = PortMode::PRESET_BYTE_BUFFER;
-        portMode[1] = pmArray[j];
-        status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
-        if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
-            continue;
-        }
-
-        // The input width and height information is necessary for the component
-        // to configure the size of the input buffer. But this is not available.
-        // As the frame sizes are known ahead, use it to configure i/p buffer
-        // size.
-        status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-
-        // prepare list of input timestamps
-        for (size_t frameID = 0; frameID < Info.size(); frameID++) {
-            if (timestampDevTest &&
-                (Info[frameID].flags != OMX_BUFFERFLAG_CODECCONFIG))
-                timestampUslist.push_back(Info[frameID].timestamp);
-        }
-
-        // set Port Params
-        uint32_t nFrameWidth, nFrameHeight, xFramerate;
-        getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
-                            &nFrameHeight, &xFramerate);
-        // get default color format
-        OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
-        getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
-                              &eColorFormat);
-        ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
-        status = setVideoPortFormat(omxNode, kPortIndexOutput,
-                                    OMX_VIDEO_CodingUnused, eColorFormat,
-                                    xFramerate);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
-                            eColorFormat, nFrameWidth, nFrameHeight, 0,
-                            xFramerate);
-
-        android::Vector<BufferInfo> iBuffer, oBuffer;
-
-        // set state to idle
-        changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput, portMode,
-                                true);
-        // set state to executing
-        changeStateIdletoExecute(omxNode, observer);
-
-        // Port Reconfiguration
-        eleStream.open(mURL, std::ifstream::binary);
-        ASSERT_EQ(eleStream.is_open(), true);
-        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                      kPortIndexOutput, eleStream, &Info, 0, (int)Info.size(),
-                      portMode[1]);
-        eleStream.close();
-        waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
-                               kPortIndexInput, kPortIndexOutput, portMode[1]);
-        testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode,
-                portReconfiguration, kPortIndexInput, kPortIndexOutput,
-                nullptr);
-        if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
-        eosFlag = false;
-        timestampUslist.clear();
-        framesReceived = 0;
-        timestampUs = 0;
-        // set state to idle
-        changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-        // set state to loaded
-        changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput);
+    for (size_t k = 0; k < sizeof(dummyPM) / sizeof(dummyPM[0]); k++) {
+        // ports may or may not support these modes. These are not the final
+        // values. This init is done to test if causes any problems.
+        status = omxNode->setPortMode(kPortIndexInput, dummyPM[k]);
+        status = omxNode->setPortMode(kPortIndexOutput, dummyPM[k]);
     }
+
+    // set port mode
+    portMode[0] = PortMode::PRESET_BYTE_BUFFER;
+    portMode[1] = PortMode::DYNAMIC_ANW_BUFFER;
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
+        portMode[1] = PortMode::PRESET_BYTE_BUFFER;
+        status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    }
+
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    // get default color format
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+    getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+                          &eColorFormat);
+    ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+    status =
+        setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                           eColorFormat, xFramerate);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput, portMode, true);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // Port Reconfiguration
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, (int)Info.size(),
+                  portMode[1]);
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput, portMode[1]);
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode,
+            portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr);
+    if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 // Test for adaptive playback support
@@ -971,153 +941,127 @@
         kPortIndexOutput = kPortIndexInput + 1;
     }
 
-    bool apbSupport = false;
-    PortMode pmArray[] = {
-        PortMode::PRESET_BYTE_BUFFER, PortMode::DYNAMIC_ANW_BUFFER,
-        PortMode::PRESET_ANW_BUFFER,
-    };
-    for (size_t j = 0; j < sizeof(pmArray) / sizeof(pmArray[0]); j++) {
-        // set port mode
-        portMode[0] = PortMode::PRESET_BYTE_BUFFER;
-        portMode[1] = pmArray[j];
-        status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    // set port mode
+    portMode[0] = PortMode::PRESET_BYTE_BUFFER;
+    portMode[1] = PortMode::DYNAMIC_ANW_BUFFER;
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
+        portMode[1] = PortMode::PRESET_BYTE_BUFFER;
         status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
-        if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
-            continue;
-        }
-
-        // prepare for adaptive playback
-        uint32_t adaptiveMaxWidth = 320;
-        uint32_t adaptiveMaxHeight = 240;
-        status = omxNode->prepareForAdaptivePlayback(
-            kPortIndexOutput, true, adaptiveMaxWidth, adaptiveMaxHeight);
-        if (strncmp(gEnv->getComponent().c_str(), "OMX.google.", 11) == 0) {
-            // SoftOMX Decoders donot support graphic buffer modes. So for them
-            // support for adaptive play back is mandatory in Byte Buffer mode
-            ASSERT_EQ(status,
-                      ::android::hardware::media::omx::V1_0::Status::OK);
-        } else {
-            // Adaptive playback not supported
-            if (status != ::android::hardware::media::omx::V1_0::Status::OK)
-                continue;
-            // for vendor codecs, support for adaptive play back is optional
-            // in byte buffer mode. But they must be supported in atleast one
-            // graphic buffer mode
-            if (portMode[1] == PortMode::PRESET_BYTE_BUFFER ||
-                apbSupport == true)
-                continue;
-            else
-                apbSupport = true;
-        }
-
-        // TODO: Handle this better !!!
-        // Without the knowledge of the maximum resolution of the frame to be
-        // decoded it is not possible to choose the size of the input buffer.
-        // The value below is based on the info. files of clips in res folder.
-        status = setPortBufferSize(omxNode, kPortIndexInput, 482304);
         ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    }
 
-        // set Port Params
-        uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    // prepare for adaptive playback
+    uint32_t adaptiveMaxWidth = 320;
+    uint32_t adaptiveMaxHeight = 240;
+    status = omxNode->prepareForAdaptivePlayback(
+        kPortIndexOutput, true, adaptiveMaxWidth, adaptiveMaxHeight);
+    if (strncmp(gEnv->getComponent().c_str(), "OMX.google.", 11) == 0) {
+        // SoftOMX Decoders donot support graphic buffer modes. So for them
+        // support for adaptive play back is mandatory in Byte Buffer mode
+        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    } else {
+        // for vendor codecs, support for adaptive play back is optional
+        // in byte buffer mode.
+        if (portMode[1] == PortMode::PRESET_BYTE_BUFFER) return;
+        if (status != ::android::hardware::media::omx::V1_0::Status::OK) return;
+    }
+
+    // TODO: Handle this better !!!
+    // Without the knowledge of the maximum resolution of the frame to be
+    // decoded it is not possible to choose the size of the input buffer.
+    // The value below is based on the info. files of clips in res folder.
+    status = setPortBufferSize(omxNode, kPortIndexInput, 482304);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    // get default color format
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+    getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+                          &eColorFormat);
+    ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+    status =
+        setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                           eColorFormat, xFramerate);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput, portMode, true);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    timestampDevTest = true;
+    uint32_t timestampOffset = 0;
+    for (uint32_t i = 0; i < STREAM_COUNT * 2; i++) {
+        std::ifstream eleStream, eleInfo;
+        char mURL[512], info[512];
+        android::Vector<FrameData> Info;
+        strcpy(mURL, gEnv->getRes().c_str());
+        strcpy(info, gEnv->getRes().c_str());
+        GetURLForComponent(compName, mURL, info, i % STREAM_COUNT);
+        eleInfo.open(info);
+        ASSERT_EQ(eleInfo.is_open(), true);
+        int bytesCount = 0;
+        uint32_t flags = 0;
+        uint32_t timestamp = 0;
+        uint32_t timestampMax = 0;
+        while (1) {
+            if (!(eleInfo >> bytesCount)) break;
+            eleInfo >> flags;
+            eleInfo >> timestamp;
+            timestamp += timestampOffset;
+            Info.push_back({bytesCount, flags, timestamp});
+            if (timestampDevTest && (flags != OMX_BUFFERFLAG_CODECCONFIG))
+                timestampUslist.push_back(timestamp);
+            if (timestampMax < timestamp) timestampMax = timestamp;
+        }
+        timestampOffset = timestampMax;
+        eleInfo.close();
+
+        // Port Reconfiguration
+        eleStream.open(mURL, std::ifstream::binary);
+        ASSERT_EQ(eleStream.is_open(), true);
+        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                      kPortIndexOutput, eleStream, &Info, 0, (int)Info.size(),
+                      portMode[1], false);
+        eleStream.close();
+
         getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
                             &nFrameHeight, &xFramerate);
-        // get default color format
-        OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
-        getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
-                              &eColorFormat);
-        ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
-        status = setVideoPortFormat(omxNode, kPortIndexOutput,
-                                    OMX_VIDEO_CodingUnused, eColorFormat,
-                                    xFramerate);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
-                            eColorFormat, nFrameWidth, nFrameHeight, 0,
-                            xFramerate);
-
-        android::Vector<BufferInfo> iBuffer, oBuffer;
-
-        // set state to idle
-        changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput, portMode,
-                                true);
-        // set state to executing
-        changeStateIdletoExecute(omxNode, observer);
-
-        timestampDevTest = true;
-        uint32_t timestampOffset = 0;
-        for (uint32_t i = 0; i < STREAM_COUNT * 2; i++) {
-            std::ifstream eleStream, eleInfo;
-            char mURL[512], info[512];
-            android::Vector<FrameData> Info;
-            strcpy(mURL, gEnv->getRes().c_str());
-            strcpy(info, gEnv->getRes().c_str());
-            GetURLForComponent(compName, mURL, info, i % STREAM_COUNT);
-            eleInfo.open(info);
-            ASSERT_EQ(eleInfo.is_open(), true);
-            int bytesCount = 0;
-            uint32_t flags = 0;
-            uint32_t timestamp = 0;
-            uint32_t timestampMax = 0;
-            while (1) {
-                if (!(eleInfo >> bytesCount)) break;
-                eleInfo >> flags;
-                eleInfo >> timestamp;
-                timestamp += timestampOffset;
-                Info.push_back({bytesCount, flags, timestamp});
-                if (timestampDevTest && (flags != OMX_BUFFERFLAG_CODECCONFIG))
-                    timestampUslist.push_back(timestamp);
-                if (timestampMax < timestamp) timestampMax = timestamp;
-            }
-            timestampOffset = timestampMax;
-            eleInfo.close();
-
-            // Port Reconfiguration
-            eleStream.open(mURL, std::ifstream::binary);
-            ASSERT_EQ(eleStream.is_open(), true);
-            decodeNFrames(omxNode, observer, &iBuffer, &oBuffer,
-                          kPortIndexInput, kPortIndexOutput, eleStream, &Info,
-                          0, (int)Info.size(), portMode[1], false);
-            eleStream.close();
-
-            getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
-                                &nFrameHeight, &xFramerate);
-            if ((nFrameWidth > adaptiveMaxWidth) ||
-                (nFrameHeight > adaptiveMaxHeight)) {
-                if (nFrameWidth > adaptiveMaxWidth)
-                    adaptiveMaxWidth = nFrameWidth;
-                if (nFrameHeight > adaptiveMaxHeight)
-                    adaptiveMaxHeight = nFrameHeight;
-                EXPECT_TRUE(portSettingsChange);
-            } else {
-                // In DynamicANW Buffer mode, it is ok to do a complete
-                // reconfiguration even if a partial reconfiguration is
-                // sufficient.
-                if (portMode[1] != PortMode::DYNAMIC_ANW_BUFFER)
-                    EXPECT_FALSE(portSettingsChange);
-            }
-            portSettingsChange = false;
+        if ((nFrameWidth > adaptiveMaxWidth) ||
+            (nFrameHeight > adaptiveMaxHeight)) {
+            if (nFrameWidth > adaptiveMaxWidth) adaptiveMaxWidth = nFrameWidth;
+            if (nFrameHeight > adaptiveMaxHeight)
+                adaptiveMaxHeight = nFrameHeight;
+            EXPECT_TRUE(portSettingsChange);
+        } else {
+            // In DynamicANW Buffer mode, its ok to do a complete
+            // reconfiguration even if a partial reconfiguration is sufficient.
+            if (portMode[1] != PortMode::DYNAMIC_ANW_BUFFER)
+                EXPECT_FALSE(portSettingsChange);
         }
-        waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
-                               kPortIndexInput, kPortIndexOutput, portMode[1]);
-        testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
-                portReconfiguration, kPortIndexInput, kPortIndexOutput,
-                nullptr);
-        if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
-        eosFlag = false;
-        timestampUslist.clear();
-        framesReceived = 0;
-        timestampUs = 0;
-        // set state to idle
-        changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-        // set state to loaded
-        changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput);
+        portSettingsChange = false;
     }
-    // For Vendor components ensure apb is supported in atleast one graphic
-    // buffer mode
-    if (strncmp(gEnv->getComponent().c_str(), "OMX.google.", 11) != 0)
-        EXPECT_TRUE(apbSupport);
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput, portMode[1]);
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
+            portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr);
+    if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 // end of sequence test
@@ -1136,62 +1080,50 @@
         kPortIndexOutput = kPortIndexInput + 1;
     }
 
-    PortMode pmArray[] = {PortMode::PRESET_BYTE_BUFFER,
-                          PortMode::DYNAMIC_ANW_BUFFER,
-                          PortMode::PRESET_ANW_BUFFER};
-    for (size_t j = 0; j < sizeof(pmArray) / sizeof(pmArray[0]); j++) {
-        // set port mode
-        portMode[0] = PortMode::PRESET_BYTE_BUFFER;
-        portMode[1] = pmArray[j];
-        status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
-        if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
-            continue;
-        }
+    // set port mode
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 
-        // set Port Params
-        uint32_t nFrameWidth, nFrameHeight, xFramerate;
-        getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
-                            &nFrameHeight, &xFramerate);
-        // get default color format
-        OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
-        getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
-                              &eColorFormat);
-        ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
-        status = setVideoPortFormat(omxNode, kPortIndexOutput,
-                                    OMX_VIDEO_CodingUnused, eColorFormat,
-                                    xFramerate);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
-                            eColorFormat, nFrameWidth, nFrameHeight, 0,
-                            xFramerate);
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    // get default color format
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+    getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+                          &eColorFormat);
+    ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+    status =
+        setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                           eColorFormat, xFramerate);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
 
-        android::Vector<BufferInfo> iBuffer, oBuffer;
+    android::Vector<BufferInfo> iBuffer, oBuffer;
 
-        // set state to idle
-        changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput, portMode,
-                                true);
-        // set state to executing
-        changeStateIdletoExecute(omxNode, observer);
-        // request EOS at the start
-        testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
-                portReconfiguration, kPortIndexInput, kPortIndexOutput,
-                nullptr);
-        flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                   kPortIndexOutput);
-        EXPECT_GE(framesReceived, 0U);
-        eosFlag = false;
-        timestampUslist.clear();
-        framesReceived = 0;
-        timestampUs = 0;
-        // set state to idle
-        changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-        // set state to loaded
-        changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput);
-    }
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput, portMode, true);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // request EOS at the start
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
+            portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 0U);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 // end of sequence test
@@ -1229,101 +1161,82 @@
         Info.push_back({bytesCount, flags, timestamp});
         if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
     }
-    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
     eleInfo.close();
 
-    PortMode pmArray[] = {PortMode::PRESET_BYTE_BUFFER,
-                          PortMode::DYNAMIC_ANW_BUFFER,
-                          PortMode::PRESET_ANW_BUFFER};
-    for (size_t j = 0; j < sizeof(pmArray) / sizeof(pmArray[0]); j++) {
-        // set port mode
-        portMode[0] = PortMode::PRESET_BYTE_BUFFER;
-        portMode[1] = pmArray[j];
-        status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
-        if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
-            continue;
-        }
+    // As the frame sizes are known ahead, use it to configure i/p buffer size
+    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+    status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 
-        // As the frame sizes are known ahead, use it to configure i/p buffer
-        // size
-        status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    // set port mode
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
 
-        // set Port Params
-        uint32_t nFrameWidth, nFrameHeight, xFramerate;
-        getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
-                            &nFrameHeight, &xFramerate);
-        // get default color format
-        OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
-        getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
-                              &eColorFormat);
-        ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
-        status = setVideoPortFormat(omxNode, kPortIndexOutput,
-                                    OMX_VIDEO_CodingUnused, eColorFormat,
-                                    xFramerate);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
-                            eColorFormat, nFrameWidth, nFrameHeight, 0,
-                            xFramerate);
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    // get default color format
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+    getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+                          &eColorFormat);
+    ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+    status =
+        setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                           eColorFormat, xFramerate);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
 
-        android::Vector<BufferInfo> iBuffer, oBuffer;
+    android::Vector<BufferInfo> iBuffer, oBuffer;
 
-        // set state to idle
-        changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput, portMode,
-                                true);
-        // set state to executing
-        changeStateIdletoExecute(omxNode, observer);
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput, portMode, true);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
 
-        // request EOS for thumbnail
-        size_t i = 0;
-        while (!(Info[i].flags & OMX_BUFFERFLAG_SYNCFRAME)) i++;
-        eleStream.open(mURL, std::ifstream::binary);
-        ASSERT_EQ(eleStream.is_open(), true);
-        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                      kPortIndexOutput, eleStream, &Info, 0, i + 1,
-                      portMode[1]);
-        eleStream.close();
-        waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
-                               kPortIndexInput, kPortIndexOutput, portMode[1]);
-        testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode,
-                portReconfiguration, kPortIndexInput, kPortIndexOutput,
-                nullptr);
-        flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                   kPortIndexOutput);
-        EXPECT_GE(framesReceived, 1U);
-        eosFlag = false;
-        timestampUslist.clear();
-        framesReceived = 0;
-        timestampUs = 0;
+    // request EOS for thumbnail
+    size_t i = 0;
+    while (!(Info[i].flags & OMX_BUFFERFLAG_SYNCFRAME)) i++;
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, i + 1, portMode[1]);
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput, portMode[1]);
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode,
+            portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 1U);
+    framesReceived = 0;
+    timestampUs = 0;
 
-        eleStream.open(mURL, std::ifstream::binary);
-        ASSERT_EQ(eleStream.is_open(), true);
-        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                      kPortIndexOutput, eleStream, &Info, 0, i + 1, portMode[1],
-                      false);
-        eleStream.close();
-        waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
-                               kPortIndexInput, kPortIndexOutput, portMode[1]);
-        testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
-                portReconfiguration, kPortIndexInput, kPortIndexOutput,
-                nullptr);
-        flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                   kPortIndexOutput);
-        EXPECT_GE(framesReceived, 1U);
-        eosFlag = false;
-        timestampUslist.clear();
-        framesReceived = 0;
-        timestampUs = 0;
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, i + 1, portMode[1],
+                  false);
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput, portMode[1]);
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
+            portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    EXPECT_GE(framesReceived, 1U);
+    framesReceived = 0;
+    timestampUs = 0;
 
-        // set state to idle
-        changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-        // set state to loaded
-        changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput);
-    }
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 // end of sequence test
@@ -1361,79 +1274,70 @@
         Info.push_back({bytesCount, flags, timestamp});
         if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
     }
-    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
     eleInfo.close();
 
-    PortMode pmArray[] = {PortMode::PRESET_BYTE_BUFFER,
-                          PortMode::DYNAMIC_ANW_BUFFER,
-                          PortMode::PRESET_ANW_BUFFER};
-    for (size_t j = 0; j < sizeof(pmArray) / sizeof(pmArray[0]); j++) {
-        // set port mode
-        portMode[0] = PortMode::PRESET_BYTE_BUFFER;
-        portMode[1] = pmArray[j];
-        status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    // As the frame sizes are known ahead, use it to configure i/p buffer size
+    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+    status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
+    // set port mode
+    portMode[0] = PortMode::PRESET_BYTE_BUFFER;
+    portMode[1] = PortMode::PRESET_ANW_BUFFER;
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
+        portMode[1] = PortMode::PRESET_BYTE_BUFFER;
         status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
-        if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
-            continue;
-        }
-
-        // As the frame sizes are known ahead, use it to configure i/p buffer
-        // size
-        status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
         ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-
-        // set Port Params
-        uint32_t nFrameWidth, nFrameHeight, xFramerate;
-        getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
-                            &nFrameHeight, &xFramerate);
-        // get default color format
-        OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
-        getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
-                              &eColorFormat);
-        ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
-        status = setVideoPortFormat(omxNode, kPortIndexOutput,
-                                    OMX_VIDEO_CodingUnused, eColorFormat,
-                                    xFramerate);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
-                            eColorFormat, nFrameWidth, nFrameHeight, 0,
-                            xFramerate);
-
-        android::Vector<BufferInfo> iBuffer, oBuffer;
-
-        // set state to idle
-        changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput, portMode,
-                                true);
-        // set state to executing
-        changeStateIdletoExecute(omxNode, observer);
-
-        // request EOS at the end
-        eleStream.open(mURL, std::ifstream::binary);
-        ASSERT_EQ(eleStream.is_open(), true);
-        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                      kPortIndexOutput, eleStream, &Info, 0, (int)Info.size(),
-                      portMode[1], false);
-        eleStream.close();
-        waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
-                               kPortIndexInput, kPortIndexOutput, portMode[1]);
-        testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
-                portReconfiguration, kPortIndexInput, kPortIndexOutput,
-                nullptr);
-        flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                   kPortIndexOutput);
-        eosFlag = false;
-        timestampUslist.clear();
-        framesReceived = 0;
-        timestampUs = 0;
-
-        // set state to idle
-        changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-        // set state to loaded
-        changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput);
     }
+
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    // get default color format
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+    getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+                          &eColorFormat);
+    ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+    status =
+        setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                           eColorFormat, xFramerate);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput, portMode, true);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // request EOS at the end
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, (int)Info.size(),
+                  portMode[1], false);
+    eleStream.close();
+    waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
+                           kPortIndexInput, kPortIndexOutput, portMode[1]);
+    testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode,
+            portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    framesReceived = 0;
+    timestampUs = 0;
+
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 // test input/output port flush
@@ -1471,96 +1375,84 @@
         Info.push_back({bytesCount, flags, timestamp});
         if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
     }
-    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
     eleInfo.close();
 
-    PortMode pmArray[] = {PortMode::PRESET_BYTE_BUFFER,
-                          PortMode::DYNAMIC_ANW_BUFFER,
-                          PortMode::PRESET_ANW_BUFFER};
-    for (size_t j = 0; j < sizeof(pmArray) / sizeof(pmArray[0]); j++) {
-        // set port mode
-        portMode[0] = PortMode::PRESET_BYTE_BUFFER;
-        portMode[1] = pmArray[j];
-        status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
-        if (status != ::android::hardware::media::omx::V1_0::Status::OK) {
-            continue;
+    // As the frame sizes are known ahead, use it to configure i/p buffer size
+    maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+    status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
+    // set port mode
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
+    // set Port Params
+    uint32_t nFrameWidth, nFrameHeight, xFramerate;
+    getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+                        &xFramerate);
+    // get default color format
+    OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+    getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+                          &eColorFormat);
+    ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+    status =
+        setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                           eColorFormat, xFramerate);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+                        eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
+    android::Vector<BufferInfo> iBuffer, oBuffer;
+
+    // set state to idle
+    changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput, portMode, true);
+    // set state to executing
+    changeStateIdletoExecute(omxNode, observer);
+
+    // Decode 128 frames and flush. here 128 is chosen to ensure there is a key
+    // frame after this so that the below section can be convered for all
+    // components
+    int nFrames = 128;
+    eleStream.open(mURL, std::ifstream::binary);
+    ASSERT_EQ(eleStream.is_open(), true);
+    decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                  kPortIndexOutput, eleStream, &Info, 0, nFrames, portMode[1],
+                  false);
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    framesReceived = 0;
+
+    // Seek to next key frame and start decoding till the end
+    int index = nFrames;
+    bool keyFrame = false;
+    while (index < (int)Info.size()) {
+        if ((Info[index].flags & OMX_BUFFERFLAG_SYNCFRAME) ==
+            OMX_BUFFERFLAG_SYNCFRAME) {
+            timestampUs = Info[index - 1].timestamp;
+            keyFrame = true;
+            break;
         }
-
-        // As the frame sizes are known ahead, use it to configure i/p buffer
-        // size
-        status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-
-        // set Port Params
-        uint32_t nFrameWidth, nFrameHeight, xFramerate;
-        getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
-                            &nFrameHeight, &xFramerate);
-        // get default color format
-        OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
-        getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
-                              &eColorFormat);
-        ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
-        status = setVideoPortFormat(omxNode, kPortIndexOutput,
-                                    OMX_VIDEO_CodingUnused, eColorFormat,
-                                    xFramerate);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
-                            eColorFormat, nFrameWidth, nFrameHeight, 0,
-                            xFramerate);
-
-        android::Vector<BufferInfo> iBuffer, oBuffer;
-
-        // set state to idle
-        changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput, portMode,
-                                true);
-        // set state to executing
-        changeStateIdletoExecute(omxNode, observer);
-
-        // Decode 128 frames and flush. here 128 is chosen to ensure there is a
-        // key frame after this so that the below section can be convered for
-        // all components
-        int nFrames = 128;
-        eleStream.open(mURL, std::ifstream::binary);
-        ASSERT_EQ(eleStream.is_open(), true);
-        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                      kPortIndexOutput, eleStream, &Info, 0, nFrames,
-                      portMode[1], false);
-        flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                   kPortIndexOutput);
-        framesReceived = 0;
-
-        // Seek to next key frame and start decoding till the end
-        int index = nFrames;
-        bool keyFrame = false;
-        while (index < (int)Info.size()) {
-            if ((Info[index].flags & OMX_BUFFERFLAG_SYNCFRAME) ==
-                OMX_BUFFERFLAG_SYNCFRAME) {
-                timestampUs = Info[index - 1].timestamp;
-                keyFrame = true;
-                break;
-            }
-            eleStream.ignore(Info[index].bytesCount);
-            index++;
-        }
-        if (keyFrame) {
-            decodeNFrames(omxNode, observer, &iBuffer, &oBuffer,
-                          kPortIndexInput, kPortIndexOutput, eleStream, &Info,
-                          index, Info.size() - index, portMode[1], false);
-        }
-        eleStream.close();
-        flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
-                   kPortIndexOutput);
-        framesReceived = 0;
-
-        // set state to idle
-        changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-        // set state to loaded
-        changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
-                                kPortIndexInput, kPortIndexOutput);
+        eleStream.ignore(Info[index].bytesCount);
+        index++;
     }
+    if (keyFrame) {
+        decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+                      kPortIndexOutput, eleStream, &Info, index,
+                      Info.size() - index, portMode[1], false);
+    }
+    eleStream.close();
+    flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
+               kPortIndexOutput);
+    framesReceived = 0;
+
+    // set state to idle
+    changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
+    // set state to executing
+    changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
+                            kPortIndexInput, kPortIndexOutput);
 }
 
 int main(int argc, char** argv) {
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
index 24eeea7..df90ccc 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
@@ -1161,7 +1161,7 @@
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &buffersource->iBuffer,
                              &buffersource->oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &buffersource->iBuffer,
                             &buffersource->oBuffer, kPortIndexInput,
                             kPortIndexOutput);
@@ -1273,7 +1273,7 @@
 
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 }
@@ -1432,7 +1432,7 @@
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
     EXPECT_EQ(portDef.nBufferCountActual, listener->freeBuffers);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 
@@ -1543,7 +1543,7 @@
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
     EXPECT_EQ(portDef.nBufferCountActual, listener->freeBuffers);
-    // set state to loaded
+    // set state to executing
     changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer,
                             kPortIndexInput, kPortIndexOutput);
 
diff --git a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
index f9b7833..91aecf2 100644
--- a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
@@ -89,7 +89,7 @@
     portDef.format.video.nFrameWidth = nFrameWidth;
     portDef.format.video.nFrameHeight = nFrameHeight;
     portDef.format.video.nStride = (((nFrameWidth + 15) >> 4) << 4);
-    portDef.format.video.nSliceHeight = nFrameHeight;
+    portDef.format.video.nSliceHeight = (((nFrameHeight + 15) >> 4) << 4);
     portDef.format.video.nBitrate = nBitrate;
     portDef.format.video.xFramerate = xFramerate;
     portDef.format.video.bFlagErrorConcealment = OMX_TRUE;