summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRam Mohan M2017-09-14 01:34:48 -0500
committerPawin Vongmasa2017-09-17 07:17:34 -0500
commit957367805b587f7e2e6a8c5a06d95dca5da7c6f3 (patch)
treef4eac7d8ff3ef08cc1b2a556e3e55fec948bb5df /media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
parent05f81e4d07383933cc6803796f2d19ab80dce3b3 (diff)
downloadplatform-hardware-interfaces-957367805b587f7e2e6a8c5a06d95dca5da7c6f3.tar.gz
platform-hardware-interfaces-957367805b587f7e2e6a8c5a06d95dca5da7c6f3.tar.xz
platform-hardware-interfaces-957367805b587f7e2e6a8c5a06d95dca5da7c6f3.zip
Move graphic buffer allocation to common
Test: make vts -j99 BUILD_GOOGLE_VTS=true TARGET_PRODUCT=aosp_arm64 \ && vts-tradefed run commandAndExit vts \ --skip-all-system-status-check --primary-abi-only \ --skip-preconditions --module VtsHalMediaOmxV1_0Host \ -l INFO Bug: 63796949 Change-Id: I40b949199856beab73933a083045ed2e4e018c75
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.cpp124
1 files changed, 7 insertions, 117 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 fb02cd46..03c9eb99 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -17,9 +17,6 @@
17#define LOG_TAG "media_omx_hidl_video_dec_test" 17#define LOG_TAG "media_omx_hidl_video_dec_test"
18#include <android-base/logging.h> 18#include <android-base/logging.h>
19 19
20#include <android/hardware/graphics/allocator/2.0/IAllocator.h>
21#include <android/hardware/graphics/mapper/2.0/IMapper.h>
22#include <android/hardware/graphics/mapper/2.0/types.h>
23#include <android/hardware/media/omx/1.0/IOmx.h> 20#include <android/hardware/media/omx/1.0/IOmx.h>
24#include <android/hardware/media/omx/1.0/IOmxNode.h> 21#include <android/hardware/media/omx/1.0/IOmxNode.h>
25#include <android/hardware/media/omx/1.0/IOmxObserver.h> 22#include <android/hardware/media/omx/1.0/IOmxObserver.h>
@@ -27,10 +24,7 @@
27#include <android/hidl/allocator/1.0/IAllocator.h> 24#include <android/hidl/allocator/1.0/IAllocator.h>
28#include <android/hidl/memory/1.0/IMapper.h> 25#include <android/hidl/memory/1.0/IMapper.h>
29#include <android/hidl/memory/1.0/IMemory.h> 26#include <android/hidl/memory/1.0/IMemory.h>
30#include <cutils/atomic.h>
31 27
32using ::android::hardware::graphics::common::V1_0::BufferUsage;
33using ::android::hardware::graphics::common::V1_0::PixelFormat;
34using ::android::hardware::media::omx::V1_0::IOmx; 28using ::android::hardware::media::omx::V1_0::IOmx;
35using ::android::hardware::media::omx::V1_0::IOmxObserver; 29using ::android::hardware::media::omx::V1_0::IOmxObserver;
36using ::android::hardware::media::omx::V1_0::IOmxNode; 30using ::android::hardware::media::omx::V1_0::IOmxNode;
@@ -433,82 +427,6 @@ void GetURLForComponent(VideoDecHidlTest::standardComp comp, char* mURL,
433 } 427 }
434} 428}
435 429
436void allocateGraphicBuffers(sp<IOmxNode> omxNode, OMX_U32 portIndex,
437 android::Vector<BufferInfo>* buffArray,
438 uint32_t nFrameWidth, uint32_t nFrameHeight,
439 int32_t* nStride, int format, uint32_t count) {
440 android::hardware::media::omx::V1_0::Status status;
441 sp<android::hardware::graphics::allocator::V2_0::IAllocator> allocator =
442 android::hardware::graphics::allocator::V2_0::IAllocator::getService();
443 ASSERT_NE(nullptr, allocator.get());
444
445 sp<android::hardware::graphics::mapper::V2_0::IMapper> mapper =
446 android::hardware::graphics::mapper::V2_0::IMapper::getService();
447 ASSERT_NE(mapper.get(), nullptr);
448
449 android::hardware::graphics::mapper::V2_0::IMapper::BufferDescriptorInfo
450 descriptorInfo;
451 uint32_t usage;
452
453 descriptorInfo.width = nFrameWidth;
454 descriptorInfo.height = nFrameHeight;
455 descriptorInfo.layerCount = 1;
456 descriptorInfo.format = static_cast<PixelFormat>(format);
457 descriptorInfo.usage = static_cast<uint64_t>(BufferUsage::CPU_READ_OFTEN);
458 omxNode->getGraphicBufferUsage(
459 portIndex,
460 [&status, &usage](android::hardware::media::omx::V1_0::Status _s,
461 uint32_t _n1) {
462 status = _s;
463 usage = _n1;
464 });
465 if (status == android::hardware::media::omx::V1_0::Status::OK) {
466 descriptorInfo.usage |= usage;
467 }
468
469 ::android::hardware::hidl_vec<uint32_t> descriptor;
470 android::hardware::graphics::mapper::V2_0::Error error;
471 mapper->createDescriptor(
472 descriptorInfo, [&error, &descriptor](
473 android::hardware::graphics::mapper::V2_0::Error _s,
474 ::android::hardware::hidl_vec<uint32_t> _n1) {
475 error = _s;
476 descriptor = _n1;
477 });
478 EXPECT_EQ(error, android::hardware::graphics::mapper::V2_0::Error::NONE);
479
480 EXPECT_EQ(buffArray->size(), count);
481
482 static volatile int32_t nextId = 0;
483 uint64_t id = static_cast<uint64_t>(getpid()) << 32;
484 allocator->allocate(
485 descriptor, count,
486 [&](android::hardware::graphics::mapper::V2_0::Error _s, uint32_t _n1,
487 const ::android::hardware::hidl_vec<
488 ::android::hardware::hidl_handle>& _n2) {
489 ASSERT_EQ(android::hardware::graphics::mapper::V2_0::Error::NONE,
490 _s);
491 *nStride = _n1;
492 ASSERT_EQ(count, _n2.size());
493 for (uint32_t i = 0; i < count; i++) {
494 buffArray->editItemAt(i).omxBuffer.nativeHandle = _n2[i];
495 buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.width =
496 nFrameWidth;
497 buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.height =
498 nFrameHeight;
499 buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.stride = _n1;
500 buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.format =
501 descriptorInfo.format;
502 buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.usage =
503 descriptorInfo.usage;
504 buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.layerCount =
505 descriptorInfo.layerCount;
506 buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.id =
507 id | static_cast<uint32_t>(android_atomic_inc(&nextId));
508 }
509 });
510}
511
512// port settings reconfiguration during runtime. reconfigures frame dimensions 430// port settings reconfiguration during runtime. reconfigures frame dimensions
513void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer, 431void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
514 android::Vector<BufferInfo>* iBuffer, 432 android::Vector<BufferInfo>* iBuffer,
@@ -592,22 +510,7 @@ void portReconfiguration(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
592 android::hardware::media::omx::V1_0::Status::TIMED_OUT); 510 android::hardware::media::omx::V1_0::Status::TIMED_OUT);
593 511
594 allocatePortBuffers(omxNode, oBuffer, kPortIndexOutput, 512 allocatePortBuffers(omxNode, oBuffer, kPortIndexOutput,
595 oPortMode); 513 oPortMode, true);
596 if (oPortMode != PortMode::PRESET_BYTE_BUFFER) {
597 OMX_PARAM_PORTDEFINITIONTYPE portDef;
598
599 status = getPortParam(omxNode, OMX_IndexParamPortDefinition,
600 kPortIndexOutput, &portDef);
601 ASSERT_EQ(
602 status,
603 ::android::hardware::media::omx::V1_0::Status::OK);
604 allocateGraphicBuffers(omxNode, kPortIndexOutput, oBuffer,
605 portDef.format.video.nFrameWidth,
606 portDef.format.video.nFrameHeight,
607 &portDef.format.video.nStride,
608 portDef.format.video.eColorFormat,
609 portDef.nBufferCountActual);
610 }
611 status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, 514 status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
612 iBuffer, oBuffer); 515 iBuffer, oBuffer);
613 ASSERT_EQ(status, 516 ASSERT_EQ(status,
@@ -1000,23 +903,10 @@ TEST_F(VideoDecHidlTest, DecodeTest) {
1000 903
1001 // set state to idle 904 // set state to idle
1002 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer, 905 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
1003 kPortIndexInput, kPortIndexOutput, portMode); 906 kPortIndexInput, kPortIndexOutput, portMode, true);
1004 // set state to executing 907 // set state to executing
1005 changeStateIdletoExecute(omxNode, observer); 908 changeStateIdletoExecute(omxNode, observer);
1006 909
1007 if (portMode[1] != PortMode::PRESET_BYTE_BUFFER) {
1008 OMX_PARAM_PORTDEFINITIONTYPE portDef;
1009
1010 status = getPortParam(omxNode, OMX_IndexParamPortDefinition,
1011 kPortIndexOutput, &portDef);
1012 ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
1013 allocateGraphicBuffers(
1014 omxNode, kPortIndexOutput, &oBuffer,
1015 portDef.format.video.nFrameWidth, portDef.format.video.nFrameHeight,
1016 &portDef.format.video.nStride, portDef.format.video.eColorFormat,
1017 portDef.nBufferCountActual);
1018 }
1019
1020 // Port Reconfiguration 910 // Port Reconfiguration
1021 eleStream.open(mURL, std::ifstream::binary); 911 eleStream.open(mURL, std::ifstream::binary);
1022 ASSERT_EQ(eleStream.is_open(), true); 912 ASSERT_EQ(eleStream.is_open(), true);
@@ -1101,7 +991,7 @@ TEST_F(VideoDecHidlTest, AdaptivePlaybackTest) {
1101 991
1102 // set state to idle 992 // set state to idle
1103 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer, 993 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
1104 kPortIndexInput, kPortIndexOutput, portMode); 994 kPortIndexInput, kPortIndexOutput, portMode, true);
1105 // set state to executing 995 // set state to executing
1106 changeStateIdletoExecute(omxNode, observer); 996 changeStateIdletoExecute(omxNode, observer);
1107 997
@@ -1211,7 +1101,7 @@ TEST_F(VideoDecHidlTest, EOSTest_M) {
1211 1101
1212 // set state to idle 1102 // set state to idle
1213 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer, 1103 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
1214 kPortIndexInput, kPortIndexOutput, portMode); 1104 kPortIndexInput, kPortIndexOutput, portMode, true);
1215 // set state to executing 1105 // set state to executing
1216 changeStateIdletoExecute(omxNode, observer); 1106 changeStateIdletoExecute(omxNode, observer);
1217 1107
@@ -1299,7 +1189,7 @@ TEST_F(VideoDecHidlTest, ThumbnailTest) {
1299 1189
1300 // set state to idle 1190 // set state to idle
1301 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer, 1191 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
1302 kPortIndexInput, kPortIndexOutput, portMode); 1192 kPortIndexInput, kPortIndexOutput, portMode, true);
1303 // set state to executing 1193 // set state to executing
1304 changeStateIdletoExecute(omxNode, observer); 1194 changeStateIdletoExecute(omxNode, observer);
1305 1195
@@ -1412,7 +1302,7 @@ TEST_F(VideoDecHidlTest, SimpleEOSTest) {
1412 1302
1413 // set state to idle 1303 // set state to idle
1414 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer, 1304 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
1415 kPortIndexInput, kPortIndexOutput, portMode); 1305 kPortIndexInput, kPortIndexOutput, portMode, true);
1416 // set state to executing 1306 // set state to executing
1417 changeStateIdletoExecute(omxNode, observer); 1307 changeStateIdletoExecute(omxNode, observer);
1418 1308
@@ -1507,7 +1397,7 @@ TEST_F(VideoDecHidlTest, FlushTest) {
1507 1397
1508 // set state to idle 1398 // set state to idle
1509 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer, 1399 changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer,
1510 kPortIndexInput, kPortIndexOutput, portMode); 1400 kPortIndexInput, kPortIndexOutput, portMode, true);
1511 // set state to executing 1401 // set state to executing
1512 changeStateIdletoExecute(omxNode, observer); 1402 changeStateIdletoExecute(omxNode, observer);
1513 1403