summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot2017-09-20 20:00:22 -0500
committerAndroid (Google) Code Review2017-09-20 20:00:22 -0500
commit98d4fd9ed6b93b63058e88378783b31e34183457 (patch)
tree757316a11bafd3a2c350771b9c6822ac21d137df /media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
parent5f03369e25eaa722d67a7dc4cd078be1f1dd810f (diff)
parent0cf6b3df5ba7cb5bd56f88377401286f157cc7d9 (diff)
downloadplatform-hardware-interfaces-98d4fd9ed6b93b63058e88378783b31e34183457.tar.gz
platform-hardware-interfaces-98d4fd9ed6b93b63058e88378783b31e34183457.tar.xz
platform-hardware-interfaces-98d4fd9ed6b93b63058e88378783b31e34183457.zip
Merge "Signal eof flag for each input buffer" into oc-mr1-dev
Diffstat (limited to 'media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp')
-rw-r--r--media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp35
1 files changed, 9 insertions, 26 deletions
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
index 8d739e89..2ea97016 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -601,39 +601,16 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
601 bool signalEOS = true) { 601 bool signalEOS = true) {
602 android::hardware::media::omx::V1_0::Status status; 602 android::hardware::media::omx::V1_0::Status status;
603 Message msg; 603 Message msg;
604 604 size_t index;
605 // dispatch output buffers
606 for (size_t i = 0; i < oBuffer->size(); i++) {
607 dispatchOutputBuffer(omxNode, oBuffer, i, oPortMode);
608 }
609 // dispatch input buffers
610 uint32_t flags = 0; 605 uint32_t flags = 0;
611 int frameID = offset; 606 int frameID = offset;
612 for (size_t i = 0; (i < iBuffer->size()) && (frameID < (int)Info->size()) &&
613 (frameID < (offset + range));
614 i++) {
615 char* ipBuffer = static_cast<char*>(
616 static_cast<void*>((*iBuffer)[i].mMemory->getPointer()));
617 ASSERT_LE((*Info)[frameID].bytesCount,
618 static_cast<int>((*iBuffer)[i].mMemory->getSize()));
619 eleStream.read(ipBuffer, (*Info)[frameID].bytesCount);
620 ASSERT_EQ(eleStream.gcount(), (*Info)[frameID].bytesCount);
621 flags = (*Info)[frameID].flags;
622 if (signalEOS && ((frameID == (int)Info->size() - 1) ||
623 (frameID == (offset + range - 1))))
624 flags |= OMX_BUFFERFLAG_EOS;
625 dispatchInputBuffer(omxNode, iBuffer, i, (*Info)[frameID].bytesCount,
626 flags, (*Info)[frameID].timestamp);
627 frameID++;
628 }
629
630 int timeOut = TIMEOUT_COUNTER_Q; 607 int timeOut = TIMEOUT_COUNTER_Q;
631 bool iQueued, oQueued; 608 bool iQueued, oQueued;
609
632 while (1) { 610 while (1) {
633 iQueued = oQueued = false; 611 iQueued = oQueued = false;
634 status = 612 status =
635 observer->dequeueMessage(&msg, DEFAULT_TIMEOUT_Q, iBuffer, oBuffer); 613 observer->dequeueMessage(&msg, DEFAULT_TIMEOUT_Q, iBuffer, oBuffer);
636
637 // Port Reconfiguration 614 // Port Reconfiguration
638 if (status == android::hardware::media::omx::V1_0::Status::OK && 615 if (status == android::hardware::media::omx::V1_0::Status::OK &&
639 msg.type == Message::Type::EVENT) { 616 msg.type == Message::Type::EVENT) {
@@ -645,7 +622,6 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
645 if (frameID == (int)Info->size() || frameID == (offset + range)) break; 622 if (frameID == (int)Info->size() || frameID == (offset + range)) break;
646 623
647 // Dispatch input buffer 624 // Dispatch input buffer
648 size_t index = 0;
649 if ((index = getEmptyBufferID(iBuffer)) < iBuffer->size()) { 625 if ((index = getEmptyBufferID(iBuffer)) < iBuffer->size()) {
650 char* ipBuffer = static_cast<char*>( 626 char* ipBuffer = static_cast<char*>(
651 static_cast<void*>((*iBuffer)[index].mMemory->getPointer())); 627 static_cast<void*>((*iBuffer)[index].mMemory->getPointer()));
@@ -654,6 +630,11 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
654 eleStream.read(ipBuffer, (*Info)[frameID].bytesCount); 630 eleStream.read(ipBuffer, (*Info)[frameID].bytesCount);
655 ASSERT_EQ(eleStream.gcount(), (*Info)[frameID].bytesCount); 631 ASSERT_EQ(eleStream.gcount(), (*Info)[frameID].bytesCount);
656 flags = (*Info)[frameID].flags; 632 flags = (*Info)[frameID].flags;
633 // Indicate to omx core that the buffer contains a full frame worth
634 // of data
635 flags |= OMX_BUFFERFLAG_ENDOFFRAME;
636 // Indicate the omx core that this is the last buffer it needs to
637 // process
657 if (signalEOS && ((frameID == (int)Info->size() - 1) || 638 if (signalEOS && ((frameID == (int)Info->size() - 1) ||
658 (frameID == (offset + range - 1)))) 639 (frameID == (offset + range - 1))))
659 flags |= OMX_BUFFERFLAG_EOS; 640 flags |= OMX_BUFFERFLAG_EOS;
@@ -663,10 +644,12 @@ void decodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
663 frameID++; 644 frameID++;
664 iQueued = true; 645 iQueued = true;
665 } 646 }
647 // Dispatch output buffer
666 if ((index = getEmptyBufferID(oBuffer)) < oBuffer->size()) { 648 if ((index = getEmptyBufferID(oBuffer)) < oBuffer->size()) {
667 dispatchOutputBuffer(omxNode, oBuffer, index, oPortMode); 649 dispatchOutputBuffer(omxNode, oBuffer, index, oPortMode);
668 oQueued = true; 650 oQueued = true;
669 } 651 }
652 // Reset Counters when either input or output buffer is dispatched
670 if (iQueued || oQueued) 653 if (iQueued || oQueued)
671 timeOut = TIMEOUT_COUNTER_Q; 654 timeOut = TIMEOUT_COUNTER_Q;
672 else 655 else