diff --git a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
index abd044d..7240964 100644
--- a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
@@ -87,13 +87,6 @@
     return status;
 }
 
-Return<android::hardware::media::omx::V1_0::Status> setRole(
-    sp<IOmxNode> omxNode, const char* role) {
-    OMX_PARAM_COMPONENTROLETYPE params;
-    strcpy((char*)params.cRole, role);
-    return setParam(omxNode, OMX_IndexParamStandardComponentRole, &params);
-}
-
 void enumerateProfile(sp<IOmxNode> omxNode, OMX_U32 portIndex,
                       std::vector<int32_t>* arrProfile) {
     android::hardware::media::omx::V1_0::Status status;
diff --git a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
index a762436..70142f2 100644
--- a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
@@ -30,9 +30,6 @@
 Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
     sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding);
 
-Return<android::hardware::media::omx::V1_0::Status> setRole(
-    sp<IOmxNode> omxNode, const char* role);
-
 void enumerateProfile(sp<IOmxNode> omxNode, OMX_U32 portIndex,
                       std::vector<int32_t>* arrProfile);
 
diff --git a/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp b/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp
index 01d7751..e81e6dd 100755
--- a/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp
@@ -36,6 +36,7 @@
 using ::android::hardware::media::omx::V1_0::Message;
 using ::android::hardware::media::omx::V1_0::CodecBuffer;
 using ::android::hardware::media::omx::V1_0::PortMode;
+using ::android::hardware::media::omx::V1_0::Status;
 using ::android::hidl::allocator::V1_0::IAllocator;
 using ::android::hidl::memory::V1_0::IMemory;
 using ::android::hidl::memory::V1_0::IMapper;
@@ -51,6 +52,14 @@
 #include <media_hidl_test_common.h>
 #include <memory>
 
+// set component role
+Return<android::hardware::media::omx::V1_0::Status> setRole(
+    sp<IOmxNode> omxNode, const char* role) {
+    OMX_PARAM_COMPONENTROLETYPE params;
+    strcpy((char*)params.cRole, role);
+    return setParam(omxNode, OMX_IndexParamStandardComponentRole, &params);
+}
+
 // allocate buffers needed on a component port
 void allocatePortBuffers(sp<IOmxNode> omxNode,
                          android::Vector<BufferInfo>* buffArray,
@@ -293,51 +302,59 @@
 void dispatchOutputBuffer(sp<IOmxNode> omxNode,
                           android::Vector<BufferInfo>* buffArray,
                           size_t bufferIndex, PortMode portMode) {
-    if (portMode == PortMode::DYNAMIC_ANW_BUFFER) {
-        android::hardware::media::omx::V1_0::Status status;
-        CodecBuffer t = (*buffArray)[bufferIndex].omxBuffer;
-        t.type = CodecBuffer::Type::ANW_BUFFER;
-        native_handle_t* fenceNh = native_handle_create(0, 0);
-        ASSERT_NE(fenceNh, nullptr);
-        status = omxNode->fillBuffer((*buffArray)[bufferIndex].id, t, fenceNh);
-        native_handle_close(fenceNh);
-        native_handle_delete(fenceNh);
-        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-        buffArray->editItemAt(bufferIndex).owner = component;
-    } else {
-        android::hardware::media::omx::V1_0::Status status;
-        CodecBuffer t;
-        t.sharedMemory = android::hardware::hidl_memory();
-        t.nativeHandle = android::hardware::hidl_handle();
-        t.type = CodecBuffer::Type::PRESET;
-        t.attr.preset.rangeOffset = 0;
-        t.attr.preset.rangeLength = 0;
-        native_handle_t* fenceNh = native_handle_create(0, 0);
-        ASSERT_NE(fenceNh, nullptr);
-        status = omxNode->fillBuffer((*buffArray)[bufferIndex].id, t, fenceNh);
-        native_handle_close(fenceNh);
-        native_handle_delete(fenceNh);
-        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-        buffArray->editItemAt(bufferIndex).owner = component;
+    android::hardware::media::omx::V1_0::Status status;
+    CodecBuffer t;
+    native_handle_t* fenceNh = native_handle_create(0, 0);
+    ASSERT_NE(fenceNh, nullptr);
+    switch (portMode) {
+        case PortMode::DYNAMIC_ANW_BUFFER:
+            t = (*buffArray)[bufferIndex].omxBuffer;
+            t.type = CodecBuffer::Type::ANW_BUFFER;
+            status =
+                omxNode->fillBuffer((*buffArray)[bufferIndex].id, t, fenceNh);
+            break;
+        case PortMode::PRESET_SECURE_BUFFER:
+        case PortMode::PRESET_BYTE_BUFFER:
+            t.sharedMemory = android::hardware::hidl_memory();
+            t.nativeHandle = android::hardware::hidl_handle();
+            t.type = CodecBuffer::Type::PRESET;
+            t.attr.preset.rangeOffset = 0;
+            t.attr.preset.rangeLength = 0;
+            status =
+                omxNode->fillBuffer((*buffArray)[bufferIndex].id, t, fenceNh);
+            break;
+        default:
+            status = Status::NAME_NOT_FOUND;
     }
+    native_handle_close(fenceNh);
+    native_handle_delete(fenceNh);
+    ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+    buffArray->editItemAt(bufferIndex).owner = component;
 }
 
 // dispatch buffer to input port
 void dispatchInputBuffer(sp<IOmxNode> omxNode,
                          android::Vector<BufferInfo>* buffArray,
                          size_t bufferIndex, int bytesCount, uint32_t flags,
-                         uint64_t timestamp) {
+                         uint64_t timestamp, PortMode portMode) {
     android::hardware::media::omx::V1_0::Status status;
     CodecBuffer t;
-    t.sharedMemory = android::hardware::hidl_memory();
-    t.nativeHandle = android::hardware::hidl_handle();
-    t.type = CodecBuffer::Type::PRESET;
-    t.attr.preset.rangeOffset = 0;
-    t.attr.preset.rangeLength = bytesCount;
     native_handle_t* fenceNh = native_handle_create(0, 0);
     ASSERT_NE(fenceNh, nullptr);
-    status = omxNode->emptyBuffer((*buffArray)[bufferIndex].id, t, flags,
-                                  timestamp, fenceNh);
+    switch (portMode) {
+        case PortMode::PRESET_SECURE_BUFFER:
+        case PortMode::PRESET_BYTE_BUFFER:
+            t.sharedMemory = android::hardware::hidl_memory();
+            t.nativeHandle = android::hardware::hidl_handle();
+            t.type = CodecBuffer::Type::PRESET;
+            t.attr.preset.rangeOffset = 0;
+            t.attr.preset.rangeLength = bytesCount;
+            status = omxNode->emptyBuffer((*buffArray)[bufferIndex].id, t,
+                                          flags, timestamp, fenceNh);
+            break;
+        default:
+            status = Status::NAME_NOT_FOUND;
+    }
     native_handle_close(fenceNh);
     native_handle_delete(fenceNh);
     ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
diff --git a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
index a402532..53bbe60 100644
--- a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
@@ -256,6 +256,9 @@
 /*
  * common functions declarations
  */
+Return<android::hardware::media::omx::V1_0::Status> setRole(
+    sp<IOmxNode> omxNode, const char* role);
+
 void allocatePortBuffers(sp<IOmxNode> omxNode,
                          android::Vector<BufferInfo>* buffArray,
                          OMX_U32 portIndex,
@@ -288,7 +291,8 @@
 void dispatchInputBuffer(sp<IOmxNode> omxNode,
                          android::Vector<BufferInfo>* buffArray,
                          size_t bufferIndex, int bytesCount, uint32_t flags,
-                         uint64_t timestamp);
+                         uint64_t timestamp,
+                         PortMode portMode = PortMode::PRESET_BYTE_BUFFER);
 
 void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                 android::Vector<BufferInfo>* iBuffer,
diff --git a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
index 39e8864..e6f51de 100644
--- a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
+++ b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
@@ -164,6 +164,14 @@
             }
         }
         if (compClass == unknown_class) disableTest = true;
+        isSecure = false;
+        size_t suffixLen = strlen(".secure");
+        if (strlen(gEnv->getComponent().c_str()) >= suffixLen) {
+            isSecure =
+                !strcmp(gEnv->getComponent().c_str() +
+                            strlen(gEnv->getComponent().c_str()) - suffixLen,
+                        ".secure");
+        }
         if (disableTest) std::cerr << "[          ] Warning !  Test Disabled\n";
     }
 
@@ -186,6 +194,7 @@
     sp<CodecObserver> observer;
     sp<IOmxNode> omxNode;
     standardCompClass compClass;
+    bool isSecure;
     bool disableTest;
 
    protected:
@@ -197,6 +206,25 @@
 // Random Index used for monkey testing while get/set parameters
 #define RANDOM_INDEX 1729
 
+void initPortMode(PortMode* pm, bool isSecure,
+                  ComponentHidlTest::standardCompClass compClass) {
+    pm[0] = PortMode::PRESET_BYTE_BUFFER;
+    pm[1] = PortMode::PRESET_BYTE_BUFFER;
+    if (isSecure) {
+        switch (compClass) {
+            case ComponentHidlTest::video_decoder:
+                pm[0] = PortMode::PRESET_SECURE_BUFFER;
+                break;
+            case ComponentHidlTest::video_encoder:
+                pm[1] = PortMode::PRESET_SECURE_BUFFER;
+                break;
+            default:
+                break;
+        }
+    }
+    return;
+}
+
 // get/set video component port format
 Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
     sp<IOmxNode> omxNode, OMX_U32 portIndex,
@@ -304,14 +332,6 @@
     return status;
 }
 
-// set component role
-Return<android::hardware::media::omx::V1_0::Status> setRole(
-    sp<IOmxNode> omxNode, const char* role) {
-    OMX_PARAM_COMPONENTROLETYPE params;
-    strcpy((char*)params.cRole, role);
-    return setParam(omxNode, OMX_IndexParamStandardComponentRole, &params);
-}
-
 // test dispatch message API call
 TEST_F(ComponentHidlTest, dispatchMsg) {
     description("test dispatch message API call");
@@ -320,34 +340,21 @@
     Message msgin, msgout;
 
     msgin.type = Message::Type::EVENT;
-
-    // dispatch EOS event, normally this is by component when it receives a
-    // EOS flag
-    msgin.data.eventData.event = OMX_EventBufferFlag;
-    msgin.data.eventData.data1 = 0U;
-    msgin.data.eventData.data2 = (uint32_t)OMX_BUFFERFLAG_EOS;
+    msgin.data.eventData.event = OMX_EventError;
+    msgin.data.eventData.data1 = 0xdeaf;
+    msgin.data.eventData.data2 = 0xd00d;
+    msgin.data.eventData.data3 = 0x01ce;
+    msgin.data.eventData.data4 = 0xfa11;
     status = omxNode->dispatchMessage(msgin);
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
     status = observer->dequeueMessage(&msgout, DEFAULT_TIMEOUT);
-    ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-    ASSERT_EQ(msgout.type, msgin.type);
-    ASSERT_EQ(msgout.data.eventData.event, msgin.data.eventData.event);
-    ASSERT_EQ(msgout.data.eventData.data1, msgin.data.eventData.data1);
-    ASSERT_EQ(msgout.data.eventData.data2, msgin.data.eventData.data2);
-
-    // dispatch dataspace changed event
-    msgin.data.eventData.event = OMX_EventDataSpaceChanged;
-    msgin.data.eventData.data1 = 281149440U;  // V0_BT601_625;
-    msgin.data.eventData.data2 = 0x1111;
-    msgin.data.eventData.data3 = 0x24;  // RAW_OPAQUE
-    status = omxNode->dispatchMessage(msgin);
-    ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-    status = observer->dequeueMessage(&msgout, DEFAULT_TIMEOUT);
-    ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
-    ASSERT_EQ(msgout.type, msgin.type);
-    ASSERT_EQ(msgout.data.eventData.event, msgin.data.eventData.event);
-    ASSERT_EQ(msgout.data.eventData.data1, msgin.data.eventData.data1);
-    ASSERT_EQ(msgout.data.eventData.data2, msgin.data.eventData.data2);
+    EXPECT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+    EXPECT_EQ(msgout.type, msgin.type);
+    EXPECT_EQ(msgout.data.eventData.event, msgin.data.eventData.event);
+    EXPECT_EQ(msgout.data.eventData.data1, msgin.data.eventData.data1);
+    EXPECT_EQ(msgout.data.eventData.data2, msgin.data.eventData.data2);
+    EXPECT_EQ(msgout.data.eventData.data3, msgin.data.eventData.data3);
+    EXPECT_EQ(msgout.data.eventData.data4, msgin.data.eventData.data4);
 }
 
 // set component role
@@ -464,116 +471,86 @@
         kPortIndexOutput = kPortIndexInput + 1;
     }
 
-    // r/w default i/o port parameters
-    OMX_PARAM_PORTDEFINITIONTYPE iPortDef;
-    status = getPortParam(omxNode, OMX_IndexParamPortDefinition,
-                          kPortIndexInput, &iPortDef);
-    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-    if (status == android::hardware::media::omx::V1_0::Status::OK) {
-        EXPECT_EQ(iPortDef.eDir, OMX_DirInput);
-        EXPECT_EQ(iPortDef.bEnabled, OMX_TRUE);
-        EXPECT_EQ(iPortDef.bPopulated, OMX_FALSE);
-        EXPECT_GE(iPortDef.nBufferCountMin, 1U);
-        EXPECT_GE(iPortDef.nBufferCountActual, iPortDef.nBufferCountMin);
-        if (compClass == audio_encoder || compClass == audio_decoder) {
-            EXPECT_EQ(iPortDef.eDomain, OMX_PortDomainAudio);
-            if (compClass == audio_decoder) {
-                iPortDef.format.audio.bFlagErrorConcealment = OMX_TRUE;
-                status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                                      kPortIndexInput, &iPortDef);
+    for (size_t i = kPortIndexInput; i < kPortIndexOutput; i++) {
+        OMX_PARAM_PORTDEFINITIONTYPE portDef;
+        status =
+            getPortParam(omxNode, OMX_IndexParamPortDefinition, i, &portDef);
+        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+        if (status == android::hardware::media::omx::V1_0::Status::OK) {
+            EXPECT_EQ(portDef.eDir, i - kPortIndexInput);  // OMX_DirInput
+            EXPECT_EQ(portDef.bEnabled, OMX_TRUE);
+            EXPECT_EQ(portDef.bPopulated, OMX_FALSE);
+            EXPECT_GE(portDef.nBufferCountMin, 1U);
+            EXPECT_GE(portDef.nBufferCountActual, portDef.nBufferCountMin);
+            if (compClass == audio_encoder || compClass == audio_decoder) {
+                EXPECT_EQ(portDef.eDomain, OMX_PortDomainAudio);
+            } else if (compClass == video_encoder ||
+                       compClass == video_decoder) {
+                EXPECT_EQ(portDef.eDomain, OMX_PortDomainVideo);
             }
-        } else if (compClass == video_encoder || compClass == video_decoder) {
-            EXPECT_EQ(iPortDef.eDomain, OMX_PortDomainVideo);
-            if (compClass == video_decoder) {
-                iPortDef.format.video.bFlagErrorConcealment = OMX_TRUE;
-                status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                                      kPortIndexInput, &iPortDef);
-            }
-        }
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        OMX_PARAM_PORTDEFINITIONTYPE dummy = iPortDef;
-        iPortDef.nBufferCountActual = iPortDef.nBufferCountMin - 1;
-        status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                              kPortIndexInput, &iPortDef);
-        EXPECT_NE(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        // Edit Read-Only fields.
-        iPortDef.eDir = OMX_DirOutput;  // Read Only field
-        iPortDef.nBufferCountActual = dummy.nBufferCountActual << 1;
-        iPortDef.nBufferCountMin = dummy.nBufferCountMin
-                                   << 1;                // Read Only field
-        iPortDef.nBufferSize = dummy.nBufferSize << 1;  // Read Only field
-        status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                              kPortIndexInput, &iPortDef);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        status = getPortParam(omxNode, OMX_IndexParamPortDefinition,
-                              kPortIndexInput, &iPortDef);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        EXPECT_EQ(iPortDef.nBufferCountActual, dummy.nBufferCountActual << 1);
-        if ((iPortDef.eDir != OMX_DirInput) ||
-            (iPortDef.nBufferCountMin != dummy.nBufferCountMin) ||
-            (iPortDef.nBufferSize != dummy.nBufferSize)) {
-            std::cerr << "[          ] Warning ! Component input port does not "
-                         "preserve Read-Only fields \n";
-        }
-    }
+            OMX_PARAM_PORTDEFINITIONTYPE mirror = portDef;
 
-    OMX_PARAM_PORTDEFINITIONTYPE oPortDef;
-    status = getPortParam(omxNode, OMX_IndexParamPortDefinition,
-                          kPortIndexOutput, &oPortDef);
-    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-    if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
-        EXPECT_EQ(oPortDef.eDir, OMX_DirOutput);
-        EXPECT_EQ(oPortDef.bEnabled, OMX_TRUE);
-        EXPECT_EQ(oPortDef.bPopulated, OMX_FALSE);
-        EXPECT_GE(oPortDef.nBufferCountMin, 1U);
-        EXPECT_GE(oPortDef.nBufferCountActual, oPortDef.nBufferCountMin);
-        if (compClass == audio_encoder || compClass == audio_decoder) {
-            EXPECT_EQ(oPortDef.eDomain, OMX_PortDomainAudio);
-            if (compClass == audio_encoder) {
-                oPortDef.format.audio.bFlagErrorConcealment = OMX_TRUE;
-                status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                                      kPortIndexOutput, &oPortDef);
+            // nBufferCountActual >= nBufferCountMin
+            portDef.nBufferCountActual = portDef.nBufferCountMin - 1;
+            status = setPortParam(omxNode, OMX_IndexParamPortDefinition, i,
+                                  &portDef);
+            EXPECT_NE(status,
+                      ::android::hardware::media::omx::V1_0::Status::OK);
+
+            // Edit Read-Only fields.
+            portDef = mirror;
+            portDef.eDir = static_cast<OMX_DIRTYPE>(RANDOM_INDEX);
+            setPortParam(omxNode, OMX_IndexParamPortDefinition, i, &portDef);
+            getPortParam(omxNode, OMX_IndexParamPortDefinition, i, &portDef);
+            EXPECT_EQ(portDef.eDir, mirror.eDir);
+            setPortParam(omxNode, OMX_IndexParamPortDefinition, i, &mirror);
+
+            portDef = mirror;
+            portDef.nBufferSize >>= 1;
+            setPortParam(omxNode, OMX_IndexParamPortDefinition, i, &portDef);
+            getPortParam(omxNode, OMX_IndexParamPortDefinition, i, &portDef);
+            EXPECT_EQ(portDef.nBufferSize, mirror.nBufferSize);
+            setPortParam(omxNode, OMX_IndexParamPortDefinition, i, &mirror);
+
+            portDef = mirror;
+            portDef.nBufferCountMin += 1;
+            setPortParam(omxNode, OMX_IndexParamPortDefinition, i, &portDef);
+            getPortParam(omxNode, OMX_IndexParamPortDefinition, i, &portDef);
+            EXPECT_EQ(portDef.nBufferCountMin, mirror.nBufferCountMin);
+            setPortParam(omxNode, OMX_IndexParamPortDefinition, i, &mirror);
+
+            portDef = mirror;
+            portDef.nBufferCountActual += 1;
+            status = setPortParam(omxNode, OMX_IndexParamPortDefinition, i,
+                                  &portDef);
+            if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
+                status = getPortParam(omxNode, OMX_IndexParamPortDefinition, i,
+                                      &portDef);
+                EXPECT_EQ(portDef.nBufferCountActual,
+                          mirror.nBufferCountActual + 1);
             }
-        } else if (compClass == video_encoder || compClass == video_decoder) {
-            EXPECT_EQ(oPortDef.eDomain, OMX_PortDomainVideo);
-            if (compClass == video_encoder) {
-                oPortDef.format.video.bFlagErrorConcealment = OMX_TRUE;
-                status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                                      kPortIndexOutput, &oPortDef);
+
+            portDef = mirror;
+            portDef.nBufferSize = mirror.nBufferSize << 1;
+            status = setPortParam(omxNode, OMX_IndexParamPortDefinition, i,
+                                  &portDef);
+            if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
+                status = getPortParam(omxNode, OMX_IndexParamPortDefinition, i,
+                                      &portDef);
+                if (portDef.nBufferSize != mirror.nBufferSize) {
+                    std::cout
+                        << "[          ] Warning ! Component input port does "
+                           "not  preserve Read-Only fields \n";
+                }
             }
         }
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        OMX_PARAM_PORTDEFINITIONTYPE dummy = oPortDef;
-        oPortDef.nBufferCountActual = oPortDef.nBufferCountMin - 1;
-        status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                              kPortIndexOutput, &oPortDef);
-        EXPECT_NE(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        // Edit Read-Only fields.
-        oPortDef.eDir = OMX_DirInput;  // Read Only field
-        oPortDef.nBufferCountActual = dummy.nBufferCountActual << 1;
-        oPortDef.nBufferCountMin = dummy.nBufferCountMin
-                                   << 1;                // Read Only field
-        oPortDef.nBufferSize = dummy.nBufferSize << 1;  // Read Only field
-        status = setPortParam(omxNode, OMX_IndexParamPortDefinition,
-                              kPortIndexOutput, &oPortDef);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        status = getPortParam(omxNode, OMX_IndexParamPortDefinition,
-                              kPortIndexOutput, &oPortDef);
-        EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
-        EXPECT_EQ(oPortDef.nBufferCountActual, dummy.nBufferCountActual << 1);
-        if ((oPortDef.eDir != OMX_DirOutput) ||
-            (oPortDef.nBufferCountMin != dummy.nBufferCountMin) ||
-            (oPortDef.nBufferSize != dummy.nBufferSize)) {
-            std::cerr << "[          ] Warning ! Component output port does "
-                         "not preserve Read-Only fields \n";
-        }
     }
 }
 
 // populate port test
 TEST_F(ComponentHidlTest, PopulatePort) {
     description("Verify bPopulated field of a component port");
-    if (disableTest) return;
+    if (disableTest || isSecure) return;
     android::hardware::media::omx::V1_0::Status status;
     OMX_U32 portBase = 0;
 
@@ -664,21 +641,29 @@
 
     android::Vector<BufferInfo> iBuffer, oBuffer;
 
+    // set port mode
+    PortMode portMode[2];
+    initPortMode(portMode, isSecure, compClass);
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
     // set state to idle
     changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                            kPortIndexInput, kPortIndexOutput);
+                            kPortIndexInput, kPortIndexOutput, portMode);
     // set state to executing
     changeStateIdletoExecute(omxNode, observer);
     // dispatch buffers
     for (size_t i = 0; i < oBuffer.size(); i++) {
-        dispatchOutputBuffer(omxNode, &oBuffer, i);
+        dispatchOutputBuffer(omxNode, &oBuffer, i, portMode[1]);
     }
     // flush port
     flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
                kPortIndexOutput);
     // dispatch buffers
     for (size_t i = 0; i < iBuffer.size(); i++) {
-        dispatchInputBuffer(omxNode, &iBuffer, i, 0, 0, 0);
+        dispatchInputBuffer(omxNode, &iBuffer, i, 0, 0, 0, portMode[0]);
     }
     // flush ports
     flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
@@ -714,14 +699,22 @@
 
     android::Vector<BufferInfo> iBuffer, oBuffer;
 
+    // set port mode
+    PortMode portMode[2];
+    initPortMode(portMode, isSecure, compClass);
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
     // set state to idle
     changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
-                            kPortIndexInput, kPortIndexOutput);
+                            kPortIndexInput, kPortIndexOutput, portMode);
     // set state to executing
     changeStateIdletoExecute(omxNode, observer);
     // dispatch buffers
     for (size_t i = 0; i < oBuffer.size(); i++) {
-        dispatchOutputBuffer(omxNode, &oBuffer, i);
+        dispatchOutputBuffer(omxNode, &oBuffer, i, portMode[1]);
     }
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
@@ -729,7 +722,7 @@
     changeStateIdletoExecute(omxNode, observer);
     // dispatch buffers
     for (size_t i = 0; i < iBuffer.size(); i++) {
-        dispatchInputBuffer(omxNode, &iBuffer, i, 0, 0, 0);
+        dispatchInputBuffer(omxNode, &iBuffer, i, 0, 0, 0, portMode[0]);
     }
     // set state to idle
     changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
@@ -741,7 +734,7 @@
 // state transitions test - monkeying
 TEST_F(ComponentHidlTest, StateTransitions_M) {
     description("Test State Transitions monkeying");
-    if (disableTest) return;
+    if (disableTest || isSecure) return;
     android::hardware::media::omx::V1_0::Status status;
     uint32_t kPortIndexInput = 0, kPortIndexOutput = 1;
     Message msg;
@@ -878,9 +871,17 @@
     // Component State :: Idle
     android::Vector<BufferInfo> pBuffer[2];
 
+    // set port mode
+    PortMode portMode[2];
+    initPortMode(portMode, isSecure, compClass);
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
     // set state to idle
     changeStateLoadedtoIdle(omxNode, observer, &pBuffer[0], &pBuffer[1],
-                            kPortIndexInput, kPortIndexOutput);
+                            kPortIndexInput, kPortIndexOutput, portMode);
 
     for (size_t i = portBase; i < portBase + 2; i++) {
         status =
@@ -929,7 +930,8 @@
             ASSERT_EQ(status,
                       android::hardware::media::omx::V1_0::Status::TIMED_OUT);
 
-            allocatePortBuffers(omxNode, &pBuffer[i - portBase], i);
+            allocatePortBuffers(omxNode, &pBuffer[i - portBase], i,
+                                portMode[i - portBase]);
             status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
                                               &pBuffer[0], &pBuffer[1]);
             ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
@@ -973,16 +975,24 @@
     // Component State :: Idle
     android::Vector<BufferInfo> pBuffer[2];
 
+    // set port mode
+    PortMode portMode[2];
+    initPortMode(portMode, isSecure, compClass);
+    status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
+    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
     // set state to idle
     changeStateLoadedtoIdle(omxNode, observer, &pBuffer[0], &pBuffer[1],
-                            kPortIndexInput, kPortIndexOutput);
+                            kPortIndexInput, kPortIndexOutput, portMode);
 
     // set state to executing
     changeStateIdletoExecute(omxNode, observer);
 
     // dispatch buffers
     for (size_t i = 0; i < pBuffer[1].size(); i++) {
-        dispatchOutputBuffer(omxNode, &pBuffer[1], i);
+        dispatchOutputBuffer(omxNode, &pBuffer[1], i, portMode[1]);
     }
 
     for (size_t i = portBase; i < portBase + 2; i++) {
@@ -1035,7 +1045,8 @@
             ASSERT_EQ(status,
                       android::hardware::media::omx::V1_0::Status::TIMED_OUT);
 
-            allocatePortBuffers(omxNode, &pBuffer[i - portBase], i);
+            allocatePortBuffers(omxNode, &pBuffer[i - portBase], i,
+                                portMode[i - portBase]);
             status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
                                               &pBuffer[0], &pBuffer[1]);
             ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
@@ -1060,7 +1071,7 @@
 TEST_F(ComponentHidlTest, PortEnableDisable_M) {
     description(
         "Test Port Enable and Disable Monkeying (Component State :: Loaded)");
-    if (disableTest) return;
+    if (disableTest || isSecure) return;
     android::hardware::media::omx::V1_0::Status status;
     OMX_U32 portBase = 0;
     Message msg;
diff --git a/media/omx/1.0/vts/functional/master/Android.bp b/media/omx/1.0/vts/functional/master/Android.bp
index 6edbf4a..e24b79b 100644
--- a/media/omx/1.0/vts/functional/master/Android.bp
+++ b/media/omx/1.0/vts/functional/master/Android.bp
@@ -27,6 +27,8 @@
         "libhwbinder",
         "libnativehelper",
         "libutils",
+        "android.hidl.allocator@1.0",
+        "android.hidl.memory@1.0",
         "android.hardware.media.omx@1.0",
     ],
     static_libs: ["VtsHalHidlTargetTestBase"],
@@ -34,5 +36,9 @@
         "-O0",
         "-g",
     ],
+    include_dirs: [
+        "frameworks/native/include/media/openmax/",
+        "hardware/interfaces/media/omx/1.0/vts/functional/common",
+    ],
 }
 
diff --git a/media/omx/1.0/vts/functional/master/VtsHalMediaOmxV1_0TargetMasterTest.cpp b/media/omx/1.0/vts/functional/master/VtsHalMediaOmxV1_0TargetMasterTest.cpp
index 9c66c25..9958869 100644
--- a/media/omx/1.0/vts/functional/master/VtsHalMediaOmxV1_0TargetMasterTest.cpp
+++ b/media/omx/1.0/vts/functional/master/VtsHalMediaOmxV1_0TargetMasterTest.cpp
@@ -17,21 +17,35 @@
 #define LOG_TAG "media_omx_hidl_master_test"
 #include <android-base/logging.h>
 
-#include <VtsHalHidlTargetTestBase.h>
 #include <android/hardware/media/omx/1.0/IOmx.h>
+#include <android/hardware/media/omx/1.0/IOmxNode.h>
+#include <android/hardware/media/omx/1.0/IOmxObserver.h>
 #include <android/hardware/media/omx/1.0/IOmxStore.h>
 #include <android/hardware/media/omx/1.0/types.h>
-#include <getopt.h>
-#include <log/log.h>
+#include <android/hidl/allocator/1.0/IAllocator.h>
+#include <android/hidl/memory/1.0/IMapper.h>
+#include <android/hidl/memory/1.0/IMemory.h>
 
-using ::android::hardware::media::omx::V1_0::IOmxStore;
 using ::android::hardware::media::omx::V1_0::IOmx;
+using ::android::hardware::media::omx::V1_0::IOmxObserver;
+using ::android::hardware::media::omx::V1_0::IOmxNode;
+using ::android::hardware::media::omx::V1_0::IOmxStore;
+using ::android::hardware::media::omx::V1_0::Message;
+using ::android::hardware::media::omx::V1_0::CodecBuffer;
+using ::android::hardware::media::omx::V1_0::PortMode;
+using ::android::hidl::allocator::V1_0::IAllocator;
+using ::android::hidl::memory::V1_0::IMemory;
+using ::android::hidl::memory::V1_0::IMapper;
 using ::android::hardware::Return;
 using ::android::hardware::Void;
 using ::android::hardware::hidl_vec;
 using ::android::hardware::hidl_string;
 using ::android::sp;
 
+#include <VtsHalHidlTargetTestBase.h>
+#include <getopt.h>
+#include <media_hidl_test_common.h>
+
 // A class for test environment setup
 class ComponentTestEnvironment : public ::testing::Environment {
    public:
@@ -127,8 +141,7 @@
                         attributes = _nl;
                     })
                     .isOk());
-    if (attributes.size() == 0)
-        std::cerr << "[          ] Warning ! Attribute list empty \n";
+    if (attributes.size() == 0) ALOGV("Warning, Attribute list empty");
 }
 
 // get node prefix
@@ -137,8 +150,7 @@
     hidl_string prefix;
     omxStore->getNodePrefix(
         [&prefix](hidl_string const& _nl) { prefix = _nl; });
-    if (prefix.empty())
-        std::cerr << "[          ] Warning ! Node Prefix empty \n";
+    if (prefix.empty()) ALOGV("Warning, Node Prefix empty");
 }
 
 // list roles
@@ -148,15 +160,15 @@
     omxStore->listRoles([&roleList](hidl_vec<IOmxStore::RoleInfo> const& _nl) {
         roleList = _nl;
     });
-    if (roleList.size() == 0)
-        std::cerr << "[          ] Warning ! RoleInfo list empty \n";
+    if (roleList.size() == 0) ALOGV("Warning, RoleInfo list empty");
 }
 
-// list components and roles
+// list components and roles.
 TEST_F(MasterHidlTest, ListNodes) {
     description("enumerate component and roles");
     android::hardware::media::omx::V1_0::Status status;
     hidl_vec<IOmx::ComponentInfo> nodeList;
+    bool isPass = true;
     EXPECT_TRUE(
         omx->listNodes([&status, &nodeList](
                            android::hardware::media::omx::V1_0::Status _s,
@@ -166,9 +178,36 @@
            })
             .isOk());
     if (nodeList.size() == 0)
-        std::cerr << "[          ] Warning ! ComponentInfo list empty \n";
-    else
-        displayComponentInfo(nodeList);
+        ALOGV("Warning, ComponentInfo list empty");
+    else {
+        // displayComponentInfo(nodeList);
+        for (size_t i = 0; i < nodeList.size(); i++) {
+            sp<CodecObserver> observer = nullptr;
+            sp<IOmxNode> omxNode = nullptr;
+            observer = new CodecObserver(nullptr);
+            ASSERT_NE(observer, nullptr);
+            EXPECT_TRUE(
+                omx->allocateNode(
+                       nodeList[i].mName, observer,
+                       [&](android::hardware::media::omx::V1_0::Status _s,
+                           sp<IOmxNode> const& _nl) {
+                           status = _s;
+                           omxNode = _nl;
+                       })
+                    .isOk());
+            if (omxNode == nullptr) {
+                isPass = false;
+                std::cerr << "[    !OK   ] " << nodeList[i].mName.c_str()
+                          << "\n";
+            } else {
+                EXPECT_TRUE((omxNode->freeNode()).isOk());
+                omxNode = nullptr;
+                // std::cout << "[     OK   ] " << nodeList[i].mName.c_str() <<
+                // "\n";
+            }
+        }
+    }
+    EXPECT_TRUE(isPass);
 }
 
 int main(int argc, char** argv) {
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 8ab01b5..9b0be51 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -209,10 +209,11 @@
         isSecure = false;
         size_t suffixLen = strlen(".secure");
         if (strlen(gEnv->getComponent().c_str()) >= suffixLen) {
+            isSecure =
+                !strcmp(gEnv->getComponent().c_str() +
+                            strlen(gEnv->getComponent().c_str()) - suffixLen,
+                        ".secure");
         }
-        isSecure = !strcmp(gEnv->getComponent().c_str() +
-                               strlen(gEnv->getComponent().c_str()) - suffixLen,
-                           ".secure");
         if (isSecure) disableTest = true;
         if (disableTest) std::cout << "[          ] Warning !  Test Disabled\n";
     }
@@ -784,25 +785,15 @@
     eleInfo.close();
 
     // set port mode
-    if (isSecure) {
-        portMode[0] = PortMode::PRESET_SECURE_BUFFER;
-        portMode[1] = PortMode::DYNAMIC_ANW_BUFFER;
-        status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
-        ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+    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);
-    } else {
-        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
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 7a57430..45d0856 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
@@ -221,10 +221,11 @@
         isSecure = false;
         size_t suffixLen = strlen(".secure");
         if (strlen(gEnv->getComponent().c_str()) >= suffixLen) {
+            isSecure =
+                !strcmp(gEnv->getComponent().c_str() +
+                            strlen(gEnv->getComponent().c_str()) - suffixLen,
+                        ".secure");
         }
-        isSecure = !strcmp(gEnv->getComponent().c_str() +
-                               strlen(gEnv->getComponent().c_str()) - suffixLen,
-                           ".secure");
         if (isSecure) disableTest = true;
         if (disableTest) std::cerr << "[          ] Warning !  Test Disabled\n";
     }
@@ -1213,7 +1214,6 @@
     // set port mode
     PortMode portMode[2];
     portMode[0] = portMode[1] = PortMode::PRESET_BYTE_BUFFER;
-    if (isSecure && prependSPSPPS) portMode[1] = PortMode::PRESET_SECURE_BUFFER;
     status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
     ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
     status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
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 271b4d4..2c81805 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
@@ -114,13 +114,6 @@
     return status;
 }
 
-Return<android::hardware::media::omx::V1_0::Status> setRole(
-    sp<IOmxNode> omxNode, const char* role) {
-    OMX_PARAM_COMPONENTROLETYPE params;
-    strcpy((char*)params.cRole, role);
-    return setParam(omxNode, OMX_IndexParamStandardComponentRole, &params);
-}
-
 void enumerateProfileAndLevel(sp<IOmxNode> omxNode, OMX_U32 portIndex,
                               std::vector<int32_t>* arrProfile,
                               std::vector<int32_t>* arrLevel) {
diff --git a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
index ce4272c..e492779 100644
--- a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
@@ -31,9 +31,6 @@
     OMX_VIDEO_CODINGTYPE eCompressionFormat, OMX_COLOR_FORMATTYPE eColorFormat,
     OMX_U32 xFramerate);
 
-Return<android::hardware::media::omx::V1_0::Status> setRole(
-    sp<IOmxNode> omxNode, const char* role);
-
 void enumerateProfileAndLevel(sp<IOmxNode> omxNode, OMX_U32 portIndex,
                               std::vector<int32_t>* arrProfile,
                               std::vector<int32_t>* arrLevel);
diff --git a/media/res/bbb_opus_stereo_128kbps_48000hz.info b/media/res/bbb_opus_stereo_128kbps_48000hz.info
index 9160c5c..12a6b99 100755
--- a/media/res/bbb_opus_stereo_128kbps_48000hz.info
+++ b/media/res/bbb_opus_stereo_128kbps_48000hz.info
@@ -1,500 +1,504 @@
 19 128 0
 8 128 0
-615 32 0
-557 32 13500
-311 32 33500
-329 32 53500
-341 32 73500
-370 32 93500
-359 32 113500
-344 32 133500
-335 32 153500
-334 32 173500
-327 32 193500
-330 32 213500
-328 32 233500
-328 32 253500
-343 32 273500
-358 32 293500
-341 32 313500
-326 32 333500
-333 32 353500
-333 32 373500
-402 32 393500
-338 32 413500
-327 32 433500
-334 32 453500
-329 32 473500
-318 32 493500
-322 32 513500
-323 32 533500
-320 32 553500
-325 32 573500
-328 32 593500
-325 32 613500
-304 32 633500
-304 32 653500
-303 32 673500
-299 32 693500
-296 32 713500
-305 32 733500
-307 32 753500
-308 32 773500
-310 32 793500
-331 32 813500
-332 32 833500
-323 32 853500
-310 32 873500
-311 32 893500
-316 32 913500
-308 32 933500
-321 32 953500
-320 32 973500
-310 32 993500
-304 32 1013500
-303 32 1033500
-301 32 1053500
-295 32 1073500
-302 32 1093500
-311 32 1113500
-322 32 1133500
-313 32 1153500
-315 32 1173500
-315 32 1193500
-315 32 1213500
-339 32 1233500
-336 32 1253500
-316 32 1273500
-321 32 1293500
-297 32 1313500
-295 32 1333500
-294 32 1353500
-297 32 1373500
-296 32 1393500
-295 32 1413500
-295 32 1433500
-294 32 1453500
-306 32 1473500
-303 32 1493500
-308 32 1513500
-302 32 1533500
-306 32 1553500
-302 32 1573500
-295 32 1593500
-293 32 1613500
-307 32 1633500
-313 32 1653500
-305 32 1673500
-308 32 1693500
-325 32 1713500
-312 32 1733500
-305 32 1753500
-301 32 1773500
-322 32 1793500
-319 32 1813500
-317 32 1833500
-317 32 1853500
-322 32 1873500
-302 32 1893500
-308 32 1913500
-305 32 1933500
-305 32 1953500
-300 32 1973500
-293 32 1993500
-300 32 2013500
-300 32 2033500
-294 32 2053500
-293 32 2073500
-295 32 2093500
-290 32 2113500
-303 32 2133500
-311 32 2153500
-431 32 2173500
-293 32 2193500
-302 32 2213500
-306 32 2233500
-297 32 2253500
-297 32 2273500
-301 32 2293500
-404 32 2313500
-299 32 2333500
-443 32 2353500
-296 32 2373500
-296 32 2393500
-306 32 2413500
-313 32 2433500
-314 32 2453500
-303 32 2473500
-306 32 2493500
-320 32 2513500
-311 32 2533500
-303 32 2553500
-316 32 2573500
-317 32 2593500
-300 32 2613500
-297 32 2633500
-306 32 2653500
-312 32 2673500
-319 32 2693500
-307 32 2713500
-309 32 2733500
-302 32 2753500
-306 32 2773500
-316 32 2793500
-300 32 2813500
-320 32 2833500
-312 32 2853500
-324 32 2873500
-319 32 2893500
-313 32 2913500
-314 32 2933500
-316 32 2953500
-310 32 2973500
-301 32 2993500
-313 32 3013500
-303 32 3033500
-298 32 3053500
-292 32 3073500
-288 32 3093500
-294 32 3113500
-296 32 3133500
-296 32 3153500
-294 32 3173500
-299 32 3193500
-303 32 3213500
-294 32 3233500
-301 32 3253500
-321 32 3273500
-310 32 3293500
-314 32 3313500
-298 32 3333500
-300 32 3353500
-302 32 3373500
-297 32 3393500
-298 32 3413500
-293 32 3433500
-304 32 3453500
-304 32 3473500
-311 32 3493500
-310 32 3513500
-322 32 3533500
-340 32 3553500
-330 32 3573500
-329 32 3593500
-318 32 3613500
-309 32 3633500
-306 32 3653500
-313 32 3673500
-314 32 3693500
-303 32 3713500
-297 32 3733500
-296 32 3753500
-292 32 3773500
-291 32 3793500
-291 32 3813500
-291 32 3833500
-299 32 3853500
-295 32 3873500
-302 32 3893500
-305 32 3913500
-301 32 3933500
-311 32 3953500
-317 32 3973500
-314 32 3993500
-310 32 4013500
-378 32 4033500
-310 32 4053500
-301 32 4073500
-353 32 4093500
-289 32 4113500
-294 32 4133500
-297 32 4153500
-294 32 4173500
-296 32 4193500
-305 32 4213500
-303 32 4233500
-317 32 4253500
-359 32 4273500
-314 32 4293500
-323 32 4313500
-319 32 4333500
-330 32 4353500
-326 32 4373500
-305 32 4393500
-300 32 4413500
-298 32 4433500
-297 32 4453500
-293 32 4473500
-296 32 4493500
-303 32 4513500
-318 32 4533500
-306 32 4553500
-295 32 4573500
-294 32 4593500
-468 32 4613500
-291 32 4633500
-295 32 4653500
-292 32 4673500
-296 32 4693500
-291 32 4713500
-290 32 4733500
-299 32 4753500
-291 32 4773500
-297 32 4793500
-304 32 4813500
-306 32 4833500
-296 32 4853500
-286 32 4873500
-299 32 4893500
-294 32 4913500
-318 32 4933500
-328 32 4953500
-318 32 4973500
-319 32 4993500
-312 32 5013500
-298 32 5033500
-301 32 5053500
-296 32 5073500
-293 32 5093500
-293 32 5113500
-297 32 5133500
-296 32 5153500
-294 32 5173500
-294 32 5193500
-292 32 5213500
-296 32 5233500
-291 32 5253500
-294 32 5273500
-297 32 5293500
-304 32 5313500
-295 32 5333500
-290 32 5353500
-294 32 5373500
-293 32 5393500
-294 32 5413500
-294 32 5433500
-293 32 5453500
-289 32 5473500
-293 32 5493500
-295 32 5513500
-295 32 5533500
-286 32 5553500
-292 32 5573500
-288 32 5593500
-292 32 5613500
-296 32 5633500
-288 32 5653500
-294 32 5673500
-294 32 5693500
-293 32 5713500
-291 32 5733500
-293 32 5753500
-303 32 5773500
-306 32 5793500
-307 32 5813500
-302 32 5833500
-294 32 5853500
-297 32 5873500
-297 32 5893500
-302 32 5913500
-299 32 5933500
-302 32 5953500
-297 32 5973500
-299 32 5993500
-305 32 6013500
-307 32 6033500
-310 32 6053500
-310 32 6073500
-315 32 6093500
-306 32 6113500
-305 32 6133500
-304 32 6153500
-307 32 6173500
-306 32 6193500
-297 32 6213500
-298 32 6233500
-293 32 6253500
-293 32 6273500
-296 32 6293500
-305 32 6313500
-299 32 6333500
-298 32 6353500
-305 32 6373500
-291 32 6393500
-296 32 6413500
-296 32 6433500
-303 32 6453500
-298 32 6473500
-328 32 6493500
-322 32 6513500
-323 32 6533500
-319 32 6553500
-331 32 6573500
-332 32 6593500
-333 32 6613500
-325 32 6633500
-334 32 6653500
-333 32 6673500
-329 32 6693500
-325 32 6713500
-321 32 6733500
-460 32 6753500
-322 32 6773500
-313 32 6793500
-303 32 6813500
-307 32 6833500
-302 32 6853500
-298 32 6873500
-294 32 6893500
-296 32 6913500
-288 32 6933500
-286 32 6953500
-404 32 6973500
-408 32 6993500
-316 32 7013500
-336 32 7033500
-326 32 7053500
-333 32 7073500
-324 32 7093500
-330 32 7113500
-315 32 7133500
-318 32 7153500
-323 32 7173500
-304 32 7193500
-302 32 7213500
-310 32 7233500
-329 32 7253500
-324 32 7273500
-332 32 7293500
-474 32 7313500
-347 32 7333500
-351 32 7353500
-412 32 7373500
-326 32 7393500
-300 32 7413500
-308 32 7433500
-307 32 7453500
-299 32 7473500
-306 32 7493500
-450 32 7513500
-294 32 7533500
-348 32 7553500
-294 32 7573500
-289 32 7593500
-281 32 7613500
-293 32 7633500
-291 32 7653500
-341 32 7673500
-291 32 7693500
-298 32 7713500
-295 32 7733500
-298 32 7753500
-299 32 7773500
-332 32 7793500
-297 32 7813500
-302 32 7833500
-302 32 7853500
-316 32 7873500
-322 32 7893500
-327 32 7913500
-321 32 7933500
-315 32 7953500
-308 32 7973500
-323 32 7993500
-306 32 8013500
-319 32 8033500
-318 32 8053500
-319 32 8073500
-319 32 8093500
-323 32 8113500
-320 32 8133500
-311 32 8153500
-312 32 8173500
-307 32 8193500
-311 32 8213500
-318 32 8233500
-346 32 8253500
-348 32 8273500
-336 32 8293500
-334 32 8313500
-331 32 8333500
-340 32 8353500
-335 32 8373500
-319 32 8393500
-307 32 8413500
-304 32 8433500
-301 32 8453500
-311 32 8473500
-317 32 8493500
-325 32 8513500
-327 32 8533500
-335 32 8553500
-340 32 8573500
-320 32 8593500
-333 32 8613500
-328 32 8633500
-312 32 8653500
-304 32 8673500
-337 32 8693500
-334 32 8713500
-333 32 8733500
-327 32 8753500
-328 32 8773500
-340 32 8793500
-478 32 8813500
-331 32 8833500
-328 32 8853500
-320 32 8873500
-315 32 8893500
-321 32 8913500
-324 32 8933500
-325 32 8953500
-323 32 8973500
-324 32 8993500
-336 32 9013500
-340 32 9033500
-333 32 9053500
-339 32 9073500
-490 32 9093500
-480 32 9113500
-329 32 9133500
-327 32 9153500
-341 32 9173500
-338 32 9193500
-337 32 9213500
-337 32 9233500
-328 32 9253500
-322 32 9273500
-324 32 9293500
-349 32 9313500
-350 32 9333500
-337 32 9353500
-342 32 9373500
-334 32 9393500
-324 32 9413500
-320 32 9433500
-329 32 9453500
-333 32 9473500
-328 32 9493500
-335 32 9513500
-322 32 9533500
-323 32 9553500
-330 32 9573500
-320 32 9593500
-313 32 9613500
-526 32 9633500
-306 32 9653500
-300 32 9673500
-299 32 9693500
-300 32 9713500
-299 32 9733500
-299 32 9753500
-295 32 9773500
-293 32 9793500
-297 32 9813500
-306 32 9833500
-300 32 9853500
-438 32 9873500
-291 32 9893500
-448 32 9913500
-504 32 9933500
+8 128 0
+618 32 0
+398 32 21000
+582 32 41000
+466 32 61000
+434 32 81000
+419 32 101000
+578 32 121000
+591 32 141000
+293 32 161000
+323 32 181000
+303 32 201000
+319 32 221000
+318 32 241000
+307 32 261000
+539 32 281000
+358 32 301000
+334 32 321000
+308 32 341000
+331 32 361000
+327 32 381000
+357 32 401000
+365 32 421000
+375 32 441000
+370 32 461000
+636 32 481000
+497 32 501000
+360 32 521000
+327 32 541000
+438 32 561000
+323 32 581000
+323 32 601000
+308 32 621000
+313 32 641000
+326 32 661000
+329 32 681000
+324 32 701000
+326 32 721000
+332 32 741000
+336 32 761000
+345 32 781000
+352 32 801000
+380 32 821000
+341 32 841000
+341 32 861000
+347 32 881000
+352 32 901000
+339 32 921000
+366 32 941000
+369 32 961000
+367 32 981000
+342 32 1001000
+344 32 1021000
+339 32 1041000
+312 32 1061000
+306 32 1081000
+307 32 1101000
+308 32 1121000
+319 32 1141000
+297 32 1161000
+294 32 1181000
+298 32 1201000
+474 32 1221000
+424 32 1241000
+278 32 1261000
+290 32 1281000
+281 32 1301000
+295 32 1321000
+277 32 1341000
+305 32 1361000
+293 32 1381000
+284 32 1401000
+296 32 1421000
+298 32 1441000
+316 32 1461000
+302 32 1481000
+300 32 1501000
+283 32 1521000
+604 32 1541000
+474 32 1561000
+277 32 1581000
+285 32 1601000
+278 32 1621000
+295 32 1641000
+301 32 1661000
+317 32 1681000
+301 32 1701000
+594 32 1721000
+296 32 1741000
+374 32 1761000
+301 32 1781000
+296 32 1801000
+300 32 1821000
+285 32 1841000
+308 32 1861000
+304 32 1881000
+286 32 1901000
+294 32 1921000
+300 32 1941000
+324 32 1961000
+315 32 1981000
+326 32 2001000
+311 32 2021000
+300 32 2041000
+304 32 2061000
+307 32 2081000
+304 32 2101000
+301 32 2121000
+296 32 2141000
+299 32 2161000
+298 32 2181000
+300 32 2201000
+300 32 2221000
+303 32 2241000
+303 32 2261000
+303 32 2281000
+308 32 2301000
+304 32 2321000
+295 32 2341000
+300 32 2361000
+300 32 2381000
+293 32 2401000
+302 32 2421000
+548 32 2441000
+338 32 2461000
+311 32 2481000
+304 32 2501000
+304 32 2521000
+299 32 2541000
+298 32 2561000
+294 32 2581000
+298 32 2601000
+300 32 2621000
+301 32 2641000
+305 32 2661000
+309 32 2681000
+303 32 2701000
+313 32 2721000
+302 32 2741000
+304 32 2761000
+304 32 2781000
+304 32 2801000
+300 32 2821000
+434 32 2841000
+571 32 2861000
+386 32 2881000
+323 32 2901000
+415 32 2921000
+277 32 2941000
+401 32 2961000
+388 32 2981000
+337 32 3001000
+540 32 3021000
+516 32 3041000
+316 32 3061000
+301 32 3081000
+298 32 3101000
+302 32 3121000
+301 32 3141000
+299 32 3161000
+295 32 3181000
+281 32 3201000
+296 32 3221000
+300 32 3241000
+295 32 3261000
+308 32 3281000
+296 32 3301000
+297 32 3321000
+276 32 3341000
+281 32 3361000
+291 32 3381000
+294 32 3401000
+281 32 3421000
+277 32 3441000
+274 32 3461000
+298 32 3481000
+293 32 3501000
+279 32 3521000
+275 32 3541000
+282 32 3561000
+289 32 3581000
+300 32 3601000
+289 32 3621000
+295 32 3641000
+301 32 3661000
+306 32 3681000
+301 32 3701000
+305 32 3721000
+296 32 3741000
+296 32 3761000
+377 32 3781000
+297 32 3801000
+293 32 3821000
+290 32 3841000
+298 32 3861000
+303 32 3881000
+304 32 3901000
+316 32 3921000
+298 32 3941000
+319 32 3961000
+330 32 3981000
+316 32 4001000
+316 32 4021000
+286 32 4041000
+272 32 4061000
+257 32 4081000
+240 32 4101000
+229 32 4121000
+223 32 4141000
+225 32 4161000
+223 32 4181000
+232 32 4201000
+234 32 4221000
+224 32 4241000
+351 32 4261000
+309 32 4281000
+350 32 4301000
+437 32 4321000
+277 32 4341000
+291 32 4361000
+271 32 4381000
+266 32 4401000
+264 32 4421000
+285 32 4441000
+280 32 4461000
+276 32 4481000
+278 32 4501000
+262 32 4521000
+262 32 4541000
+246 32 4561000
+253 32 4581000
+289 32 4601000
+264 32 4621000
+285 32 4641000
+278 32 4661000
+266 32 4681000
+275 32 4701000
+264 32 4721000
+264 32 4741000
+275 32 4761000
+268 32 4781000
+262 32 4801000
+266 32 4821000
+262 32 4841000
+246 32 4861000
+284 32 4881000
+291 32 4901000
+294 32 4921000
+294 32 4941000
+294 32 4961000
+296 32 4981000
+294 32 5001000
+300 32 5021000
+293 32 5041000
+298 32 5061000
+295 32 5081000
+301 32 5101000
+301 32 5121000
+302 32 5141000
+303 32 5161000
+300 32 5181000
+301 32 5201000
+302 32 5221000
+296 32 5241000
+297 32 5261000
+300 32 5281000
+295 32 5301000
+349 32 5321000
+351 32 5341000
+333 32 5361000
+267 32 5381000
+291 32 5401000
+270 32 5421000
+258 32 5441000
+266 32 5461000
+252 32 5481000
+251 32 5501000
+323 32 5521000
+398 32 5541000
+383 32 5561000
+295 32 5581000
+260 32 5601000
+413 32 5621000
+288 32 5641000
+299 32 5661000
+277 32 5681000
+295 32 5701000
+296 32 5721000
+305 32 5741000
+300 32 5761000
+305 32 5781000
+293 32 5801000
+305 32 5821000
+455 32 5841000
+302 32 5861000
+293 32 5881000
+289 32 5901000
+283 32 5921000
+289 32 5941000
+275 32 5961000
+279 32 5981000
+626 32 6001000
+335 32 6021000
+324 32 6041000
+331 32 6061000
+334 32 6081000
+322 32 6101000
+339 32 6121000
+339 32 6141000
+329 32 6161000
+339 32 6181000
+328 32 6201000
+330 32 6221000
+312 32 6241000
+527 32 6261000
+324 32 6281000
+322 32 6301000
+313 32 6321000
+306 32 6341000
+303 32 6361000
+304 32 6381000
+311 32 6401000
+302 32 6421000
+294 32 6441000
+296 32 6461000
+293 32 6481000
+297 32 6501000
+287 32 6521000
+300 32 6541000
+324 32 6561000
+304 32 6581000
+303 32 6601000
+303 32 6621000
+324 32 6641000
+340 32 6661000
+357 32 6681000
+355 32 6701000
+349 32 6721000
+358 32 6741000
+378 32 6761000
+591 32 6781000
+525 32 6801000
+378 32 6821000
+356 32 6841000
+353 32 6861000
+347 32 6881000
+334 32 6901000
+330 32 6921000
+334 32 6941000
+352 32 6961000
+344 32 6981000
+356 32 7001000
+356 32 7021000
+351 32 7041000
+346 32 7061000
+350 32 7081000
+366 32 7101000
+504 32 7121000
+360 32 7141000
+366 32 7161000
+369 32 7181000
+363 32 7201000
+345 32 7221000
+347 32 7241000
+338 32 7261000
+332 32 7281000
+318 32 7301000
+307 32 7321000
+302 32 7341000
+308 32 7361000
+317 32 7381000
+304 32 7401000
+313 32 7421000
+314 32 7441000
+302 32 7461000
+299 32 7481000
+300 32 7501000
+295 32 7521000
+296 32 7541000
+298 32 7561000
+601 32 7581000
+489 32 7601000
+303 32 7621000
+323 32 7641000
+304 32 7661000
+328 32 7681000
+332 32 7701000
+356 32 7721000
+356 32 7741000
+340 32 7761000
+333 32 7781000
+332 32 7801000
+321 32 7821000
+455 32 7841000
+328 32 7861000
+314 32 7881000
+310 32 7901000
+300 32 7921000
+327 32 7941000
+317 32 7961000
+309 32 7981000
+305 32 8001000
+299 32 8021000
+312 32 8041000
+309 32 8061000
+300 32 8081000
+319 32 8101000
+329 32 8121000
+323 32 8141000
+332 32 8161000
+340 32 8181000
+339 32 8201000
+319 32 8221000
+323 32 8241000
+320 32 8261000
+322 32 8281000
+314 32 8301000
+310 32 8321000
+300 32 8341000
+294 32 8361000
+324 32 8381000
+325 32 8401000
+305 32 8421000
+306 32 8441000
+298 32 8461000
+302 32 8481000
+298 32 8501000
+295 32 8521000
+294 32 8541000
+295 32 8561000
+288 32 8581000
+310 32 8601000
+301 32 8621000
+401 32 8641000
+324 32 8661000
+309 32 8681000
+294 32 8701000
+306 32 8721000
+318 32 8741000
+312 32 8761000
+325 32 8781000
+352 32 8801000
+351 32 8821000
+343 32 8841000
+377 32 8861000
+409 32 8881000
+424 32 8901000
+366 32 8921000
+341 32 8941000
+330 32 8961000
+342 32 8981000
+328 32 9001000
+333 32 9021000
+334 32 9041000
+340 32 9061000
+347 32 9081000
+354 32 9101000
+342 32 9121000
+323 32 9141000
+311 32 9161000
+297 32 9181000
+286 32 9201000
+290 32 9221000
+288 32 9241000
+291 32 9261000
+439 32 9281000
+278 32 9301000
+506 32 9321000
+441 32 9341000
+333 32 9361000
+416 32 9381000
+446 32 9401000
+219 32 9421000
+353 32 9441000
+307 32 9461000
+222 32 9481000
+221 32 9501000
+235 32 9521000
+294 32 9541000
+239 32 9561000
+251 32 9581000
+259 32 9601000
+263 32 9621000
+283 32 9641000
+423 32 9661000
+296 32 9681000
+299 32 9701000
+322 32 9721000
+296 32 9741000
+489 32 9761000
+481 32 9781000
+505 32 9801000
+292 32 9821000
+390 32 9841000
+279 32 9861000
+442 32 9881000
+426 32 9901000
+408 32 9921000
+272 32 9941000
+484 32 9961000
+443 32 9981000
+440 32 10001000
diff --git a/media/res/bbb_opus_stereo_128kbps_48000hz.opus b/media/res/bbb_opus_stereo_128kbps_48000hz.opus
index c9001ac..7b763b2 100755
--- a/media/res/bbb_opus_stereo_128kbps_48000hz.opus
+++ b/media/res/bbb_opus_stereo_128kbps_48000hz.opus
Binary files differ
diff --git a/media/res/bbb_raw_1ch_8khz_s32le.raw b/media/res/bbb_raw_1ch_8khz_s32le.raw
index 3149eb2..fd91b46 100755
--- a/media/res/bbb_raw_1ch_8khz_s32le.raw
+++ b/media/res/bbb_raw_1ch_8khz_s32le.raw
Binary files differ
