OSDN Git Service

Omx vts tests
authorRam Mohan M <ram.mohan@ittiam.com>
Fri, 2 Jun 2017 06:28:53 +0000 (11:58 +0530)
committerZhuoyao Zhang <zhuoyao@google.com>
Thu, 8 Jun 2017 00:50:50 +0000 (17:50 -0700)
Bug:32023356
Test: make vts.

cleanup: move duplicate code to common

moved code shared across application to common and
removed duplicate code

Change-Id: I2dacb9d72bdf545addd2cc377dd4342c92f50f11

restrict secure component testing to VTS*ComponentTest

Change-Id: I1d2878408df2e4cbe31b3b47a3d6500a90692a7a

Master Test: test component node alloc/dealloc

Change-Id: I89ef853cf5a9f6b0a0af9e25ef484968aec614f6

Component Test: fix dispatchMsg test fixture

Change-Id: Ie1068a5d73a3a573e552cf023c9c7dc78a43ea59

AudioDec Test : missing csd in opus resource files

opus decoder test resource files have a missing csd. This is causing
timestamp list empty test to fail. This is fixed

Change-Id: I6ae3b241fbf3e384943a0e6e80838a45c1fc6687

Change-Id: Ie7775456542f12d5f5d87dded4b0a57fd0723037

14 files changed:
media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp
media/omx/1.0/vts/functional/common/media_hidl_test_common.h
media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
media/omx/1.0/vts/functional/master/Android.bp
media/omx/1.0/vts/functional/master/VtsHalMediaOmxV1_0TargetMasterTest.cpp
media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
media/res/bbb_opus_stereo_128kbps_48000hz.info
media/res/bbb_opus_stereo_128kbps_48000hz.opus
media/res/bbb_raw_1ch_8khz_s32le.raw

index abd044d..7240964 100644 (file)
@@ -87,13 +87,6 @@ Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
     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;
index a762436..70142f2 100644 (file)
@@ -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);
 
index 01d7751..e81e6dd 100755 (executable)
@@ -36,6 +36,7 @@ using ::android::hardware::media::omx::V1_0::IOmxNode;
 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 @@ using ::android::sp;
 #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 @@ size_t getEmptyBufferID(android::Vector<BufferInfo>* buffArray) {
 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);
index a402532..53bbe60 100644 (file)
@@ -256,6 +256,9 @@ Return<android::hardware::media::omx::V1_0::Status> setPortConfig(
 /*
  * 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 dispatchOutputBuffer(sp<IOmxNode> omxNode,
 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,
index 39e8864..e6f51de 100644 (file)
@@ -164,6 +164,14 @@ class ComponentHidlTest : public ::testing::VtsHalHidlTargetTestBase {
             }
         }
         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 @@ class ComponentHidlTest : public ::testing::VtsHalHidlTargetTestBase {
     sp<CodecObserver> observer;
     sp<IOmxNode> omxNode;
     standardCompClass compClass;
+    bool isSecure;
     bool disableTest;
 
    protected:
@@ -197,6 +206,25 @@ class ComponentHidlTest : public ::testing::VtsHalHidlTargetTestBase {
 // 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<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
     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 @@ TEST_F(ComponentHidlTest, dispatchMsg) {
     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,108 +471,78 @@ TEST_F(ComponentHidlTest, SetDefaultPortParams) {
         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);
+            OMX_PARAM_PORTDEFINITIONTYPE mirror = portDef;
+
+            // 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);
             }
-        }
-        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 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);
+            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";
+                }
             }
-        } 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);
-            }
-        }
-        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";
         }
     }
 }
@@ -573,7 +550,7 @@ TEST_F(ComponentHidlTest, SetDefaultPortParams) {
 // 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 @@ TEST_F(ComponentHidlTest, Flush) {
 
     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 @@ TEST_F(ComponentHidlTest, StateTransitions) {
 
     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 @@ TEST_F(ComponentHidlTest, StateTransitions) {
     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 @@ TEST_F(ComponentHidlTest, StateTransitions) {
 // 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 @@ TEST_F(ComponentHidlTest, PortEnableDisable_Idle) {
     // 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 @@ TEST_F(ComponentHidlTest, PortEnableDisable_Idle) {
             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 @@ TEST_F(ComponentHidlTest, PortEnableDisable_Execute) {
     // 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 @@ TEST_F(ComponentHidlTest, PortEnableDisable_Execute) {
             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_Execute) {
 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;
index 6edbf4a..e24b79b 100644 (file)
@@ -27,6 +27,8 @@ cc_test {
         "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 @@ cc_test {
         "-O0",
         "-g",
     ],
+    include_dirs: [
+        "frameworks/native/include/media/openmax/",
+        "hardware/interfaces/media/omx/1.0/vts/functional/common",
+    ],
 }
 
index 9c66c25..9958869 100644 (file)
 #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 @@ TEST_F(MasterHidlTest, ListServiceAttr) {
                         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 @@ TEST_F(MasterHidlTest, getNodePrefix) {
     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 @@ TEST_F(MasterHidlTest, ListRoles) {
     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 @@ TEST_F(MasterHidlTest, ListNodes) {
            })
             .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) {
index 8ab01b5..9b0be51 100644 (file)
@@ -209,10 +209,11 @@ class VideoDecHidlTest : public ::testing::VtsHalHidlTargetTestBase {
         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 @@ TEST_F(VideoDecHidlTest, DecodeTest) {
     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
index 7a57430..45d0856 100644 (file)
@@ -221,10 +221,11 @@ class VideoEncHidlTest : public ::testing::VtsHalHidlTargetTestBase {
         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 @@ TEST_F(VideoEncHidlTest, EncodeTest) {
     // 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]);
index 271b4d4..2c81805 100644 (file)
@@ -114,13 +114,6 @@ Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
     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) {
index ce4272c..e492779 100644 (file)
@@ -31,9 +31,6 @@ Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
     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);
index 9160c5c..12a6b99 100755 (executable)
 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
index c9001ac..7b763b2 100755 (executable)
Binary files a/media/res/bbb_opus_stereo_128kbps_48000hz.opus and b/media/res/bbb_opus_stereo_128kbps_48000hz.opus differ
index 3149eb2..fd91b46 100755 (executable)
Binary files a/media/res/bbb_raw_1ch_8khz_s32le.raw and b/media/res/bbb_raw_1ch_8khz_s32le.raw differ