Loading media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoEncTest.cpp +61 −21 Original line number Diff line number Diff line Loading @@ -284,15 +284,16 @@ void encodeNFrames(const std::shared_ptr<android::Codec2Client::Component>& comp std::list<std::unique_ptr<C2Work>>& workQueue, std::list<uint64_t>& flushedIndices, std::shared_ptr<C2BlockPool>& graphicPool, std::ifstream& eleStream, uint32_t frameID, uint32_t nFrames, uint32_t nWidth, int32_t nHeight, bool flushed = false,bool signalEOS = true) { std::ifstream& eleStream, bool& disableTest, uint32_t frameID, uint32_t nFrames, uint32_t nWidth, int32_t nHeight, bool flushed = false, bool signalEOS = true) { typedef std::unique_lock<std::mutex> ULock; uint32_t maxRetry = 0; int bytesCount = nWidth * nHeight * 3 >> 1; int32_t timestampIncr = ENCODER_TIMESTAMP_INCREMENT; uint64_t timestamp = 0; c2_status_t err = C2_OK; while (1) { if (nFrames == 0) break; uint32_t flags = 0; Loading Loading @@ -333,16 +334,21 @@ void encodeNFrames(const std::shared_ptr<android::Codec2Client::Component>& comp ASSERT_EQ(eleStream.gcount(), bytesCount); } std::shared_ptr<C2GraphicBlock> block; ASSERT_EQ( C2_OK, graphicPool->fetchGraphicBlock( err = graphicPool->fetchGraphicBlock( nWidth, nHeight, HAL_PIXEL_FORMAT_YV12, {C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE}, &block)); {C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE}, &block); if (err != C2_OK) { fprintf(stderr, "fetchGraphicBlock failed : %d\n", err); disableTest = true; break; } ASSERT_TRUE(block); // Graphic View C2GraphicView view = block->map().get(); if (view.error() != C2_OK) { fprintf(stderr, "C2GraphicBlock::map() failed : %d", view.error()); disableTest = true; break; } Loading Loading @@ -420,8 +426,16 @@ TEST_P(Codec2VideoEncEncodeTest, EncodeTest) { ASSERT_EQ(mComponent->start(), C2_OK); ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, ENC_NUM_FRAMES, nWidth, nHeight, false, signalEOS)); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } // If EOS is not sent, sending empty input with EOS flag inputFrames = ENC_NUM_FRAMES; Loading Loading @@ -531,8 +545,17 @@ TEST_F(Codec2VideoEncHidlTest, FlushTest) { ALOGV("mURL : %s", mURL); ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, numFramesFlushed, nWidth, nHeight)); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } std::list<std::unique_ptr<C2Work>> flushedWork; c2_status_t err = mComponent->flush(C2Component::FLUSH_COMPONENT, &flushedWork); Loading Loading @@ -561,10 +584,19 @@ TEST_F(Codec2VideoEncHidlTest, FlushTest) { mFlushedIndices.clear(); ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, numFramesFlushed, numFrames - numFramesFlushed, nWidth, nHeight, true)); eleStream.close(); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } err = mComponent->flush(C2Component::FLUSH_COMPONENT, &flushedWork); ASSERT_EQ(err, C2_OK); ASSERT_NO_FATAL_FAILURE( Loading Loading @@ -607,19 +639,19 @@ TEST_F(Codec2VideoEncHidlTest, InvalidBufferTest) { ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, 1, nWidth, nHeight, false, false)); // Feed larger input buffer. ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 1, 1, nWidth*2, nHeight*2, false, false)); // Feed smaller input buffer. ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 2, 1, nWidth/2, nHeight/2, false, true)); // blocking call to ensures application to Wait till all the inputs are Loading @@ -629,15 +661,13 @@ TEST_F(Codec2VideoEncHidlTest, InvalidBufferTest) { waitOnInputConsumption(mQueueLock, mQueueCondition, mWorkQueue)); if (mFramesReceived != 3) { ALOGE("Input buffer count and Output buffer count mismatch"); ALOGE("framesReceived : %d inputFrames : 3", mFramesReceived); ASSERT_TRUE(false); std::cout << "[ WARN ] Component didn't receive all buffers back \n"; ALOGW("framesReceived : %d inputFrames : 3", mFramesReceived); } if (mFailedWorkReceived == 0) { ALOGE("Expected failed frame count mismatch"); ALOGE("failedFramesReceived : %d", mFailedWorkReceived); ASSERT_TRUE(false); std::cout << "[ WARN ] Expected failed frame count mismatch \n"; ALOGW("failedFramesReceived : %d", mFailedWorkReceived); } ASSERT_EQ(mComponent->stop(), C2_OK); Loading Loading @@ -665,8 +695,17 @@ TEST_P(Codec2VideoEncResolutionTest, ResolutionTest) { ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, 0, MAX_INPUT_BUFFERS, nWidth, nHeight)); mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, MAX_INPUT_BUFFERS, nWidth, nHeight, false, true)); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } ALOGD("Waiting for input consumption"); ASSERT_NO_FATAL_FAILURE( Loading @@ -676,6 +715,7 @@ TEST_P(Codec2VideoEncResolutionTest, ResolutionTest) { ASSERT_EQ(mComponent->stop(), C2_OK); ASSERT_EQ(mComponent->reset(), C2_OK); } INSTANTIATE_TEST_CASE_P(NonStdSizes, Codec2VideoEncResolutionTest, ::testing::Values( std::make_pair(52, 18), std::make_pair(365, 365), Loading Loading
media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoEncTest.cpp +61 −21 Original line number Diff line number Diff line Loading @@ -284,15 +284,16 @@ void encodeNFrames(const std::shared_ptr<android::Codec2Client::Component>& comp std::list<std::unique_ptr<C2Work>>& workQueue, std::list<uint64_t>& flushedIndices, std::shared_ptr<C2BlockPool>& graphicPool, std::ifstream& eleStream, uint32_t frameID, uint32_t nFrames, uint32_t nWidth, int32_t nHeight, bool flushed = false,bool signalEOS = true) { std::ifstream& eleStream, bool& disableTest, uint32_t frameID, uint32_t nFrames, uint32_t nWidth, int32_t nHeight, bool flushed = false, bool signalEOS = true) { typedef std::unique_lock<std::mutex> ULock; uint32_t maxRetry = 0; int bytesCount = nWidth * nHeight * 3 >> 1; int32_t timestampIncr = ENCODER_TIMESTAMP_INCREMENT; uint64_t timestamp = 0; c2_status_t err = C2_OK; while (1) { if (nFrames == 0) break; uint32_t flags = 0; Loading Loading @@ -333,16 +334,21 @@ void encodeNFrames(const std::shared_ptr<android::Codec2Client::Component>& comp ASSERT_EQ(eleStream.gcount(), bytesCount); } std::shared_ptr<C2GraphicBlock> block; ASSERT_EQ( C2_OK, graphicPool->fetchGraphicBlock( err = graphicPool->fetchGraphicBlock( nWidth, nHeight, HAL_PIXEL_FORMAT_YV12, {C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE}, &block)); {C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE}, &block); if (err != C2_OK) { fprintf(stderr, "fetchGraphicBlock failed : %d\n", err); disableTest = true; break; } ASSERT_TRUE(block); // Graphic View C2GraphicView view = block->map().get(); if (view.error() != C2_OK) { fprintf(stderr, "C2GraphicBlock::map() failed : %d", view.error()); disableTest = true; break; } Loading Loading @@ -420,8 +426,16 @@ TEST_P(Codec2VideoEncEncodeTest, EncodeTest) { ASSERT_EQ(mComponent->start(), C2_OK); ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, ENC_NUM_FRAMES, nWidth, nHeight, false, signalEOS)); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } // If EOS is not sent, sending empty input with EOS flag inputFrames = ENC_NUM_FRAMES; Loading Loading @@ -531,8 +545,17 @@ TEST_F(Codec2VideoEncHidlTest, FlushTest) { ALOGV("mURL : %s", mURL); ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, numFramesFlushed, nWidth, nHeight)); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } std::list<std::unique_ptr<C2Work>> flushedWork; c2_status_t err = mComponent->flush(C2Component::FLUSH_COMPONENT, &flushedWork); Loading Loading @@ -561,10 +584,19 @@ TEST_F(Codec2VideoEncHidlTest, FlushTest) { mFlushedIndices.clear(); ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, numFramesFlushed, numFrames - numFramesFlushed, nWidth, nHeight, true)); eleStream.close(); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } err = mComponent->flush(C2Component::FLUSH_COMPONENT, &flushedWork); ASSERT_EQ(err, C2_OK); ASSERT_NO_FATAL_FAILURE( Loading Loading @@ -607,19 +639,19 @@ TEST_F(Codec2VideoEncHidlTest, InvalidBufferTest) { ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, 1, nWidth, nHeight, false, false)); // Feed larger input buffer. ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 1, 1, nWidth*2, nHeight*2, false, false)); // Feed smaller input buffer. ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 2, 1, nWidth/2, nHeight/2, false, true)); // blocking call to ensures application to Wait till all the inputs are Loading @@ -629,15 +661,13 @@ TEST_F(Codec2VideoEncHidlTest, InvalidBufferTest) { waitOnInputConsumption(mQueueLock, mQueueCondition, mWorkQueue)); if (mFramesReceived != 3) { ALOGE("Input buffer count and Output buffer count mismatch"); ALOGE("framesReceived : %d inputFrames : 3", mFramesReceived); ASSERT_TRUE(false); std::cout << "[ WARN ] Component didn't receive all buffers back \n"; ALOGW("framesReceived : %d inputFrames : 3", mFramesReceived); } if (mFailedWorkReceived == 0) { ALOGE("Expected failed frame count mismatch"); ALOGE("failedFramesReceived : %d", mFailedWorkReceived); ASSERT_TRUE(false); std::cout << "[ WARN ] Expected failed frame count mismatch \n"; ALOGW("failedFramesReceived : %d", mFailedWorkReceived); } ASSERT_EQ(mComponent->stop(), C2_OK); Loading Loading @@ -665,8 +695,17 @@ TEST_P(Codec2VideoEncResolutionTest, ResolutionTest) { ASSERT_NO_FATAL_FAILURE( encodeNFrames(mComponent, mQueueLock, mQueueCondition, mWorkQueue, mFlushedIndices, mGraphicPool, eleStream, 0, MAX_INPUT_BUFFERS, nWidth, nHeight)); mFlushedIndices, mGraphicPool, eleStream, mDisableTest, 0, MAX_INPUT_BUFFERS, nWidth, nHeight, false, true)); // mDisableTest will be set if buffer was not fetched properly. // This may happen when resolution is not proper but config suceeded // In this cases, we skip encoding the input stream if (mDisableTest) { std::cout << "[ WARN ] Test Disabled \n"; ASSERT_EQ(mComponent->stop(), C2_OK); return; } ALOGD("Waiting for input consumption"); ASSERT_NO_FATAL_FAILURE( Loading @@ -676,6 +715,7 @@ TEST_P(Codec2VideoEncResolutionTest, ResolutionTest) { ASSERT_EQ(mComponent->stop(), C2_OK); ASSERT_EQ(mComponent->reset(), C2_OK); } INSTANTIATE_TEST_CASE_P(NonStdSizes, Codec2VideoEncResolutionTest, ::testing::Values( std::make_pair(52, 18), std::make_pair(365, 365), Loading