Loading media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp +37 −18 Original line number Diff line number Diff line Loading @@ -485,15 +485,20 @@ void GetURLForComponent(AudioDecHidlTest::standardComp comp, char* mURL, // port settings reconfiguration during runtime. reconfigures sample rate and // number typedef struct { OMX_AUDIO_CODINGTYPE eEncoding; AudioDecHidlTest::standardComp comp; } packedArgs; void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_AUDIO_CODINGTYPE eEncoding, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, Message msg, AudioDecHidlTest::standardComp comp = AudioDecHidlTest::standardComp::unknown_comp) { Message msg, PortMode oPortMode, void* args) { android::hardware::media::omx::V1_0::Status status; packedArgs* audioArgs = static_cast<packedArgs*>(args); OMX_AUDIO_CODINGTYPE eEncoding = audioArgs->eEncoding; AudioDecHidlTest::standardComp comp = audioArgs->comp; (void)oPortMode; if (msg.data.eventData.event == OMX_EventPortSettingsChanged) { ASSERT_EQ(msg.data.eventData.data1, kPortIndexOutput); Loading Loading @@ -579,7 +584,8 @@ void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_AUDIO_CODINGTYPE eEncoding, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput) { OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, AudioDecHidlTest::standardComp comp) { android::hardware::media::omx::V1_0::Status status; Message msg; int timeOut = TIMEOUT_COUNTER; Loading @@ -590,8 +596,10 @@ void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer, observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); if (status == android::hardware::media::omx::V1_0::Status::OK) { EXPECT_EQ(msg.type, Message::Type::EVENT); portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput, msg); packedArgs audioArgs = {eEncoding, comp}; portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, PortMode::PRESET_BYTE_BUFFER, &audioArgs); } // status == TIMED_OUT, it could be due to process time being large // than DEFAULT_TIMEOUT or component needs output buffers to start Loading Loading @@ -655,8 +663,10 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer, // Port Reconfiguration if (status == android::hardware::media::omx::V1_0::Status::OK && msg.type == Message::Type::EVENT) { portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput, msg, comp); packedArgs audioArgs = {eEncoding, comp}; portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, PortMode::PRESET_BYTE_BUFFER, &audioArgs); } if (frameID == (int)Info->size() || frameID == (offset + range)) break; Loading Loading @@ -800,8 +810,10 @@ TEST_F(AudioDecHidlTest, DecodeTest) { (int)Info.size(), compName); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag); kPortIndexInput, kPortIndexOutput, compName); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); EXPECT_EQ(timestampUslist.empty(), true); // set state to idle changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer); Loading Loading @@ -857,7 +869,9 @@ TEST_F(AudioDecHidlTest, DISABLED_EOSTest_M) { changeStateIdletoExecute(omxNode, observer); // request EOS at the start testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 0U); Loading Loading @@ -944,8 +958,10 @@ TEST_F(AudioDecHidlTest, ThumbnailTest) { compName); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag); kPortIndexInput, kPortIndexOutput, compName); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading @@ -960,8 +976,9 @@ TEST_F(AudioDecHidlTest, ThumbnailTest) { compName, false); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag); kPortIndexInput, kPortIndexOutput, compName); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading Loading @@ -1045,8 +1062,10 @@ TEST_F(AudioDecHidlTest, SimpleEOSTest) { (int)Info.size(), compName, false); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag); kPortIndexInput, kPortIndexOutput, compName); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); framesReceived = 0; Loading media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -406,7 +406,8 @@ void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer, void testEOS(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, bool signalEOS, bool& eosFlag, PortMode* portMode) { bool& eosFlag, PortMode* portMode, portreconfig fptr, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, void* args) { android::hardware::media::omx::V1_0::Status status; PortMode defaultPortMode[2], *pm; Loading Loading @@ -443,9 +444,15 @@ void testEOS(sp<IOmxNode> omxNode, sp<CodecObserver> observer, status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); if (status == android::hardware::media::omx::V1_0::Status::OK) { if (msg.data.eventData.event == OMX_EventBufferFlag) { // soft omx components donot send this, we will just ignore it // for now if (msg.data.eventData.event == OMX_EventPortSettingsChanged) { if (fptr) { (*fptr)(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, pm[1], args); } else { // something unexpected happened EXPECT_TRUE(false); } } else { // something unexpected happened EXPECT_TRUE(false); Loading media/omx/1.0/vts/functional/common/media_hidl_test_common.h +14 −1 Original line number Diff line number Diff line Loading @@ -113,6 +113,12 @@ struct CodecObserver : public IOmxObserver { android::hardware::media::omx::V1_0::Message::Type::EVENT) { *msg = *it; msgQueue.erase(it); // OMX_EventBufferFlag event is sent when the component has // processed a buffer with its EOS flag set. This event is // not sent by soft omx components. Vendor components can // send this. From IOMX point of view, we will ignore this // event. if (msg->data.eventData.event == OMX_EventBufferFlag) break; return ::android::hardware::media::omx::V1_0::Status::OK; } else if (it->type == android::hardware::media::omx::V1_0:: Message::Type::FILL_BUFFER_DONE) { Loading Loading @@ -299,9 +305,16 @@ void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, int64_t timeoutUs = DEFAULT_TIMEOUT); typedef void (*portreconfig)(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, Message msg, PortMode oPortMode, void* args); void testEOS(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, bool signalEOS, bool& eosFlag, PortMode* portMode = nullptr); bool& eosFlag, PortMode* portMode = nullptr, portreconfig fptr = nullptr, OMX_U32 kPortIndexInput = 0, OMX_U32 kPortIndexOutput = 1, void* args = nullptr); #endif // MEDIA_HIDL_TEST_COMMON_H media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp +14 −11 Original line number Diff line number Diff line Loading @@ -485,8 +485,9 @@ void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, Message msg, PortMode oPortMode) { Message msg, PortMode oPortMode, void* args) { android::hardware::media::omx::V1_0::Status status; (void)args; if (msg.data.eventData.event == OMX_EventPortSettingsChanged) { ASSERT_EQ(msg.data.eventData.data1, kPortIndexOutput); Loading Loading @@ -586,9 +587,6 @@ void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer, std::cout << "[ ] Warning ! OMX_EventError/ " "Decode Frame Call might be failed \n"; return; } else if (msg.data.eventData.event == OMX_EventBufferFlag) { // soft omx components donot send this, we will just ignore it // for now } else { // something unexpected happened ASSERT_TRUE(false); Loading @@ -613,7 +611,7 @@ void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer, EXPECT_EQ(msg.type, Message::Type::EVENT); portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, oPortMode); oPortMode, nullptr); } // status == TIMED_OUT, it could be due to process time being large // than DEFAULT_TIMEOUT or component needs output buffers to start Loading Loading @@ -679,7 +677,7 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer, msg.type == Message::Type::EVENT) { portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, oPortMode); oPortMode, nullptr); } if (frameID == (int)Info->size() || frameID == (offset + range)) break; Loading Loading @@ -845,7 +843,8 @@ TEST_F(VideoDecHidlTest, DecodeTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); EXPECT_EQ(timestampUslist.empty(), true); // set state to idle changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer); Loading Loading @@ -895,7 +894,8 @@ TEST_F(VideoDecHidlTest, EOSTest_M) { changeStateIdletoExecute(omxNode, observer); // request EOS at the start testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 0U); Loading Loading @@ -979,7 +979,8 @@ TEST_F(VideoDecHidlTest, ThumbnailTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading @@ -994,7 +995,8 @@ TEST_F(VideoDecHidlTest, ThumbnailTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading Loading @@ -1077,7 +1079,8 @@ TEST_F(VideoDecHidlTest, SimpleEOSTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); framesReceived = 0; Loading Loading
media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp +37 −18 Original line number Diff line number Diff line Loading @@ -485,15 +485,20 @@ void GetURLForComponent(AudioDecHidlTest::standardComp comp, char* mURL, // port settings reconfiguration during runtime. reconfigures sample rate and // number typedef struct { OMX_AUDIO_CODINGTYPE eEncoding; AudioDecHidlTest::standardComp comp; } packedArgs; void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_AUDIO_CODINGTYPE eEncoding, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, Message msg, AudioDecHidlTest::standardComp comp = AudioDecHidlTest::standardComp::unknown_comp) { Message msg, PortMode oPortMode, void* args) { android::hardware::media::omx::V1_0::Status status; packedArgs* audioArgs = static_cast<packedArgs*>(args); OMX_AUDIO_CODINGTYPE eEncoding = audioArgs->eEncoding; AudioDecHidlTest::standardComp comp = audioArgs->comp; (void)oPortMode; if (msg.data.eventData.event == OMX_EventPortSettingsChanged) { ASSERT_EQ(msg.data.eventData.data1, kPortIndexOutput); Loading Loading @@ -579,7 +584,8 @@ void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_AUDIO_CODINGTYPE eEncoding, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput) { OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, AudioDecHidlTest::standardComp comp) { android::hardware::media::omx::V1_0::Status status; Message msg; int timeOut = TIMEOUT_COUNTER; Loading @@ -590,8 +596,10 @@ void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer, observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); if (status == android::hardware::media::omx::V1_0::Status::OK) { EXPECT_EQ(msg.type, Message::Type::EVENT); portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput, msg); packedArgs audioArgs = {eEncoding, comp}; portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, PortMode::PRESET_BYTE_BUFFER, &audioArgs); } // status == TIMED_OUT, it could be due to process time being large // than DEFAULT_TIMEOUT or component needs output buffers to start Loading Loading @@ -655,8 +663,10 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer, // Port Reconfiguration if (status == android::hardware::media::omx::V1_0::Status::OK && msg.type == Message::Type::EVENT) { portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput, msg, comp); packedArgs audioArgs = {eEncoding, comp}; portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, PortMode::PRESET_BYTE_BUFFER, &audioArgs); } if (frameID == (int)Info->size() || frameID == (offset + range)) break; Loading Loading @@ -800,8 +810,10 @@ TEST_F(AudioDecHidlTest, DecodeTest) { (int)Info.size(), compName); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag); kPortIndexInput, kPortIndexOutput, compName); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); EXPECT_EQ(timestampUslist.empty(), true); // set state to idle changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer); Loading Loading @@ -857,7 +869,9 @@ TEST_F(AudioDecHidlTest, DISABLED_EOSTest_M) { changeStateIdletoExecute(omxNode, observer); // request EOS at the start testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 0U); Loading Loading @@ -944,8 +958,10 @@ TEST_F(AudioDecHidlTest, ThumbnailTest) { compName); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag); kPortIndexInput, kPortIndexOutput, compName); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading @@ -960,8 +976,9 @@ TEST_F(AudioDecHidlTest, ThumbnailTest) { compName, false); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag); kPortIndexInput, kPortIndexOutput, compName); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading Loading @@ -1045,8 +1062,10 @@ TEST_F(AudioDecHidlTest, SimpleEOSTest) { (int)Info.size(), compName, false); eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding, kPortIndexInput, kPortIndexOutput); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag); kPortIndexInput, kPortIndexOutput, compName); packedArgs audioArgs = {eEncoding, compName}; testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, nullptr, portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); framesReceived = 0; Loading
media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -406,7 +406,8 @@ void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer, void testEOS(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, bool signalEOS, bool& eosFlag, PortMode* portMode) { bool& eosFlag, PortMode* portMode, portreconfig fptr, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, void* args) { android::hardware::media::omx::V1_0::Status status; PortMode defaultPortMode[2], *pm; Loading Loading @@ -443,9 +444,15 @@ void testEOS(sp<IOmxNode> omxNode, sp<CodecObserver> observer, status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); if (status == android::hardware::media::omx::V1_0::Status::OK) { if (msg.data.eventData.event == OMX_EventBufferFlag) { // soft omx components donot send this, we will just ignore it // for now if (msg.data.eventData.event == OMX_EventPortSettingsChanged) { if (fptr) { (*fptr)(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, pm[1], args); } else { // something unexpected happened EXPECT_TRUE(false); } } else { // something unexpected happened EXPECT_TRUE(false); Loading
media/omx/1.0/vts/functional/common/media_hidl_test_common.h +14 −1 Original line number Diff line number Diff line Loading @@ -113,6 +113,12 @@ struct CodecObserver : public IOmxObserver { android::hardware::media::omx::V1_0::Message::Type::EVENT) { *msg = *it; msgQueue.erase(it); // OMX_EventBufferFlag event is sent when the component has // processed a buffer with its EOS flag set. This event is // not sent by soft omx components. Vendor components can // send this. From IOMX point of view, we will ignore this // event. if (msg->data.eventData.event == OMX_EventBufferFlag) break; return ::android::hardware::media::omx::V1_0::Status::OK; } else if (it->type == android::hardware::media::omx::V1_0:: Message::Type::FILL_BUFFER_DONE) { Loading Loading @@ -299,9 +305,16 @@ void flushPorts(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, int64_t timeoutUs = DEFAULT_TIMEOUT); typedef void (*portreconfig)(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, Message msg, PortMode oPortMode, void* args); void testEOS(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, bool signalEOS, bool& eosFlag, PortMode* portMode = nullptr); bool& eosFlag, PortMode* portMode = nullptr, portreconfig fptr = nullptr, OMX_U32 kPortIndexInput = 0, OMX_U32 kPortIndexOutput = 1, void* args = nullptr); #endif // MEDIA_HIDL_TEST_COMMON_H
media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp +14 −11 Original line number Diff line number Diff line Loading @@ -485,8 +485,9 @@ void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer, android::Vector<BufferInfo>* iBuffer, android::Vector<BufferInfo>* oBuffer, OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput, Message msg, PortMode oPortMode) { Message msg, PortMode oPortMode, void* args) { android::hardware::media::omx::V1_0::Status status; (void)args; if (msg.data.eventData.event == OMX_EventPortSettingsChanged) { ASSERT_EQ(msg.data.eventData.data1, kPortIndexOutput); Loading Loading @@ -586,9 +587,6 @@ void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer, std::cout << "[ ] Warning ! OMX_EventError/ " "Decode Frame Call might be failed \n"; return; } else if (msg.data.eventData.event == OMX_EventBufferFlag) { // soft omx components donot send this, we will just ignore it // for now } else { // something unexpected happened ASSERT_TRUE(false); Loading @@ -613,7 +611,7 @@ void waitOnInputConsumption(sp<IOmxNode> omxNode, sp<CodecObserver> observer, EXPECT_EQ(msg.type, Message::Type::EVENT); portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, oPortMode); oPortMode, nullptr); } // status == TIMED_OUT, it could be due to process time being large // than DEFAULT_TIMEOUT or component needs output buffers to start Loading Loading @@ -679,7 +677,7 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer, msg.type == Message::Type::EVENT) { portReconfiguration(omxNode, observer, iBuffer, oBuffer, kPortIndexInput, kPortIndexOutput, msg, oPortMode); oPortMode, nullptr); } if (frameID == (int)Info->size() || frameID == (offset + range)) break; Loading Loading @@ -845,7 +843,8 @@ TEST_F(VideoDecHidlTest, DecodeTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); EXPECT_EQ(timestampUslist.empty(), true); // set state to idle changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer); Loading Loading @@ -895,7 +894,8 @@ TEST_F(VideoDecHidlTest, EOSTest_M) { changeStateIdletoExecute(omxNode, observer); // request EOS at the start testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 0U); Loading Loading @@ -979,7 +979,8 @@ TEST_F(VideoDecHidlTest, ThumbnailTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading @@ -994,7 +995,8 @@ TEST_F(VideoDecHidlTest, ThumbnailTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); EXPECT_GE(framesReceived, 1U); Loading Loading @@ -1077,7 +1079,8 @@ TEST_F(VideoDecHidlTest, SimpleEOSTest) { eleStream.close(); waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput, portMode[1]); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode); testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode, portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr); flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput, kPortIndexOutput); framesReceived = 0; Loading