• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <OMX_Component.h>
17 #include <OMX_Core.h>
18 #include <OMX_Video.h>
19 #include <OMX_VideoExt.h>
20 #include <ashmem.h>
21 #include <gtest/gtest.h>
22 #include <hdf_log.h>
23 #include <osal_mem.h>
24 #include <securec.h>
25 #include <servmgr_hdi.h>
26 
27 #include "codec_component_manager.h"
28 #include "codec_component_type.h"
29 #include "hdf_io_service_if.h"
30 #include "codec_omx_ext.h"
31 
32 #define HDF_LOG_TAG codec_hdi_test
33 
34 using namespace std;
35 using namespace testing::ext;
36 
37 namespace {
38 struct CodecComponentManager *g_manager = nullptr;
39 struct CodecComponentType *g_component = nullptr;
40 uint32_t g_componentId = 0;
41 struct CodecCallbackType *g_callback = nullptr;
42 int32_t g_count = 0;
43 
44 constexpr const char *ENCODER_AVC = "rk.video_encoder.avc";
45 constexpr const char *DECODER_AVC = "rk.video_decoder.avc";
46 
47 constexpr int32_t INT_TO_STR_LEN = 32;
48 constexpr int32_t ARRAY_TO_STR_LEN = 1000;
49 
50 union OMX_VERSIONTYPE g_version;
51 constexpr int32_t BUFFER_SIZE = (640 * 480 * 3);
52 constexpr int32_t ROLE_LEN = 240;
53 constexpr int32_t FRAMERATE = (30 << 16);
54 constexpr uint32_t BUFFER_ID_ERROR = 65000;
55 constexpr int64_t APP_DATA = 64;
56 constexpr int64_t APP_DATA_MAX = 9223372036854775807;
57 constexpr int64_t APP_DATA_MIN = -9223372036854775807;
58 enum class PortIndex { PORT_INDEX_INPUT = 0, PORT_INDEX_OUTPUT = 1, PORT_INDEX_ERROR_INPUT = 2 };
59 
60 template <typename T>
InitParam(T & param)61 void InitParam(T &param)
62 {
63     memset_s(&param, sizeof(param), 0x0, sizeof(param));
64     param.nSize = sizeof(param);
65     param.nVersion = g_version;
66 }
67 
68 struct BufferInfo {
69     std::shared_ptr<OmxCodecBuffer> omxBuffer;
70     std::shared_ptr<OHOS::Ashmem> sharedMem;
BufferInfo__anona714dde40111::BufferInfo71     BufferInfo()
72     {
73         omxBuffer = nullptr;
74         sharedMem = nullptr;
75     }
~BufferInfo__anona714dde40111::BufferInfo76     ~BufferInfo()
77     {
78         omxBuffer = nullptr;
79         if (sharedMem != nullptr) {
80             sharedMem->UnmapAshmem();
81             sharedMem->CloseAshmem();
82             sharedMem = nullptr;
83         }
84     }
85 };
86 std::map<int32_t, std::shared_ptr<BufferInfo>> inputBuffers;
87 std::map<int32_t, std::shared_ptr<BufferInfo>> outputBuffers;
InitCodecBufferWithAshMem(enum PortIndex portIndex,int bufferSize,shared_ptr<OmxCodecBuffer> omxBuffer,shared_ptr<OHOS::Ashmem> sharedMem)88 static void InitCodecBufferWithAshMem(
89     enum PortIndex portIndex, int bufferSize, shared_ptr<OmxCodecBuffer> omxBuffer, shared_ptr<OHOS::Ashmem> sharedMem)
90 {
91     omxBuffer->size = sizeof(OmxCodecBuffer);
92     omxBuffer->version = g_version;
93     omxBuffer->bufferType = CODEC_BUFFER_TYPE_AVSHARE_MEM_FD;
94     omxBuffer->bufferLen = sizeof(int);
95     omxBuffer->buffer = (uint8_t *)(uintptr_t)sharedMem->GetAshmemFd();
96     omxBuffer->allocLen = bufferSize;
97     omxBuffer->fenceFd = -1;
98     omxBuffer->pts = 0;
99     omxBuffer->flag = 0;
100     if (portIndex == PortIndex::PORT_INDEX_INPUT) {
101         omxBuffer->type = READ_ONLY_TYPE;
102         sharedMem->MapReadAndWriteAshmem();
103     } else {
104         omxBuffer->type = READ_WRITE_TYPE;
105         sharedMem->MapReadOnlyAshmem();
106     }
107 }
108 
UseBufferOnPort(enum PortIndex portIndex,int bufferCount,int bufferSize)109 static bool UseBufferOnPort(enum PortIndex portIndex, int bufferCount, int bufferSize)
110 {
111     for (int i = 0; i < bufferCount; i++) {
112         std::shared_ptr<OmxCodecBuffer> omxBuffer = std::make_shared<OmxCodecBuffer>();
113         if (omxBuffer == nullptr) {
114             HDF_LOGE("%{public}s omxBuffer is null", __func__);
115             return false;
116         }
117 
118         int fd = OHOS::AshmemCreate(0, bufferSize);
119         shared_ptr<OHOS::Ashmem> sharedMem = make_shared<OHOS::Ashmem>(fd, bufferSize);
120         if (sharedMem == nullptr) {
121             HDF_LOGE("%{public}s sharedMem is null", __func__);
122             if (fd >= 0) {
123                 close(fd);
124                 fd = -1;
125             }
126             return false;
127         }
128         InitCodecBufferWithAshMem(portIndex, bufferSize, omxBuffer, sharedMem);
129         auto err = g_component->UseBuffer(g_component, (uint32_t)portIndex, omxBuffer.get());
130         if (err != HDF_SUCCESS) {
131             HDF_LOGE("%{public}s failed to UseBuffer with portIndex[%{public}d]", __func__, portIndex);
132             sharedMem->UnmapAshmem();
133             sharedMem->CloseAshmem();
134             sharedMem = nullptr;
135             omxBuffer = nullptr;
136             return false;
137         }
138         omxBuffer->bufferLen = 0;
139         HDF_LOGI("UseBuffer returned bufferID [%{public}d]", omxBuffer->bufferId);
140         std::shared_ptr<BufferInfo> bufferInfo = std::make_shared<BufferInfo>();
141         bufferInfo->omxBuffer = omxBuffer;
142         bufferInfo->sharedMem = sharedMem;
143         if (portIndex == PortIndex::PORT_INDEX_INPUT) {
144             inputBuffers.emplace(std::make_pair(omxBuffer->bufferId, bufferInfo));
145         } else {
146             outputBuffers.emplace(std::make_pair(omxBuffer->bufferId, bufferInfo));
147         }
148     }
149     return true;
150 }
151 
152 class CodecHdiAdapterTest : public testing::Test {
153 public:
SetUpTestCase()154     static void SetUpTestCase() {}
TearDownTestCase()155     static void TearDownTestCase() {}
SetUp()156     void SetUp() {}
TearDown()157     void TearDown() {}
158 };
159 
160 static char g_arrayStr[ARRAY_TO_STR_LEN];
GetArrayStr(int32_t * array,int32_t arrayLen,int32_t endValue)161 static char *GetArrayStr(int32_t *array, int32_t arrayLen, int32_t endValue)
162 {
163     int32_t len = 0;
164     int32_t totalLen = 0;
165     int32_t ret;
166     char value[INT_TO_STR_LEN];
167     ret = memset_s(g_arrayStr, sizeof(g_arrayStr), 0, sizeof(g_arrayStr));
168     if (ret != EOK) {
169         HDF_LOGE("%{public}s: memset_s g_arrayStr failed, error code: %{public}d", __func__, ret);
170         return g_arrayStr;
171     }
172     for (int32_t i = 0; i < arrayLen; i++) {
173         if (array[i] == endValue) {
174             break;
175         }
176         ret = memset_s(value, sizeof(value), 0, sizeof(value));
177         if (ret != EOK) {
178             HDF_LOGE("%{public}s: memset_s value failed, error code: %{public}d", __func__, ret);
179             return g_arrayStr;
180         }
181         ret = sprintf_s(value, sizeof(value), "0x0%X, ", array[i]);
182         if (ret < 0) {
183             HDF_LOGE("%{public}s: sprintf_s value failed, error code: %{public}d", __func__, ret);
184             return g_arrayStr;
185         }
186         len = strnlen(value, ARRAY_TO_STR_LEN);
187         ret = memcpy_s(g_arrayStr + totalLen, len, value, len);
188         if (ret != EOK) {
189             HDF_LOGE("%{public}s: memcpy_s g_arrayStr failed, error code: %{public}d", __func__, ret);
190             return g_arrayStr;
191         }
192         totalLen += len;
193     }
194     return g_arrayStr;
195 }
196 
PrintCapability(CodecCompCapability * cap,int32_t index)197 static void PrintCapability(CodecCompCapability *cap, int32_t index)
198 {
199     HDF_LOGI("---------------------- component capability %{public}d ---------------------", index + 1);
200     HDF_LOGI("role:%{public}d", cap->role);
201     HDF_LOGI("type:%{public}d", cap->type);
202     HDF_LOGI("compName:%{public}s", cap->compName);
203     HDF_LOGI("supportProfiles:%{public}s", GetArrayStr(cap->supportProfiles, PROFILE_NUM, INVALID_PROFILE));
204     HDF_LOGI("maxInst:%{public}d", cap->maxInst);
205     HDF_LOGI("isSoftwareCodec:%{public}d", cap->isSoftwareCodec);
206     HDF_LOGI("processModeMask:0x0%{public}x", cap->processModeMask);
207     HDF_LOGI("capsMask:0x0%{public}x", cap->capsMask);
208     HDF_LOGI("bitRate.min:%{public}d", cap->bitRate.min);
209     HDF_LOGI("bitRate.max:%{public}d", cap->bitRate.max);
210     if (strstr(cap->compName, "video") != NULL) {
211         HDF_LOGI("minSize.width:%{public}d", cap->port.video.minSize.width);
212         HDF_LOGI("minSize.height:%{public}d", cap->port.video.minSize.height);
213         HDF_LOGI("maxSize.width:%{public}d", cap->port.video.maxSize.width);
214         HDF_LOGI("maxSize.height:%{public}d", cap->port.video.maxSize.height);
215         HDF_LOGI("widthAlignment:%{public}d", cap->port.video.whAlignment.widthAlignment);
216         HDF_LOGI("heightAlignment:%{public}d", cap->port.video.whAlignment.heightAlignment);
217         HDF_LOGI("blockCount.min:%{public}d", cap->port.video.blockCount.min);
218         HDF_LOGI("blockCount.max:%{public}d", cap->port.video.blockCount.max);
219         HDF_LOGI("blocksPerSecond.min:%{public}d", cap->port.video.blocksPerSecond.min);
220         HDF_LOGI("blocksPerSecond.max:%{public}d", cap->port.video.blocksPerSecond.max);
221         HDF_LOGI("blockSize.width:%{public}d", cap->port.video.blockSize.width);
222         HDF_LOGI("blockSize.height:%{public}d", cap->port.video.blockSize.height);
223         HDF_LOGI("supportPixFmts:%{public}s", GetArrayStr(cap->port.video.supportPixFmts, PIX_FORMAT_NUM, 0));
224     } else {
225         HDF_LOGI(":%{public}s", GetArrayStr(cap->port.audio.sampleFormats, SAMPLE_FMT_NUM, AUDIO_SAMPLE_FMT_INVALID));
226         HDF_LOGI(":%{public}s", GetArrayStr(cap->port.audio.sampleRate, SAMPLE_RATE_NUM, AUD_SAMPLE_RATE_INVALID));
227         HDF_LOGI(":%{public}s", GetArrayStr(cap->port.audio.channelLayouts, CHANNEL_NUM, -1));
228         HDF_LOGI(":%{public}s", GetArrayStr(cap->port.audio.channelCount, CHANNEL_NUM, -1));
229     }
230     HDF_LOGI("-------------------------------------------------------------------");
231 }
232 
233 /**
234   * @tc.name: HdfCodecHdiGetCodecComponentManagerTest_001
235   * @tc.desc: Get codec component manager test.
236   * @tc.type: FUNC
237   * @tc.require: issueI5HAII
238   */
239 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetCodecComponentManagerTest_001, TestSize.Level1)
240 {
241     g_manager = GetCodecComponentManager();
242     ASSERT_TRUE(g_manager != nullptr);
243     g_callback = CodecCallbackTypeGet(nullptr);
244     ASSERT_TRUE(g_callback != nullptr);
245 }
246 
247 /**
248   * @tc.name: HdfCodecHdiGetComponentNumTest_001
249   * @tc.desc: Get codec component num test.
250   * @tc.type: FUNC
251   * @tc.require: issueI5HAII
252   */
253 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetComponentNumTest_001, TestSize.Level1)
254 {
255     ASSERT_TRUE(g_manager != nullptr);
256     g_count = g_manager->GetComponentNum();
257     ASSERT_GT(g_count, 0);
258 }
259 
260 /**
261   * @tc.name: HdfCodecHdiGetComponentCapabilityListTest_001
262   * @tc.desc: Get codec component capability list test.
263   * @tc.type: FUNC
264   * @tc.require: issueI5HAII
265   */
266 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetComponentCapabilityListTest_001, TestSize.Level1)
267 {
268     ASSERT_GT(g_count, 0);
269     ASSERT_TRUE(g_manager != nullptr);
270     CodecCompCapability *capList = (CodecCompCapability *)OsalMemAlloc(sizeof(CodecCompCapability) * g_count);
271     ASSERT_TRUE(capList != nullptr);
272     g_manager->GetComponentCapabilityList(capList, g_count);
273     for (int32_t i = 0; i < g_count; i++) {
274         PrintCapability(&capList[i], i);
275     }
276     OsalMemFree(capList);
277     capList = nullptr;
278 }
279 
280 // Test CreateComponent
281 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiCreateComponentCompNameErrorTest_001, TestSize.Level1)
282 {
283     ASSERT_TRUE(g_manager != nullptr);
284     ASSERT_TRUE(g_callback != nullptr);
285     char name[] = "test";
286     int32_t ret = g_manager->CreateComponent(&g_component, &g_componentId, (char *)name, APP_DATA, g_callback);
287     ASSERT_NE(ret, HDF_SUCCESS);
288     ASSERT_TRUE(g_component == nullptr);
289 }
290 
291 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiCreateComponentCompNameNullptrTest_002, TestSize.Level1)
292 {
293     ASSERT_TRUE(g_manager != nullptr);
294     ASSERT_TRUE(g_callback != nullptr);
295     int32_t ret = g_manager->CreateComponent(&g_component, &g_componentId, nullptr, APP_DATA, g_callback);
296     ASSERT_NE(ret, HDF_SUCCESS);
297     ASSERT_TRUE(g_component == nullptr);
298 }
299 
300 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiCreateComponentAppdataMaxTest_003, TestSize.Level1)
301 {
302     ASSERT_TRUE(g_manager != nullptr);
303     struct CodecCallbackType *callback = CodecCallbackTypeGet(nullptr);
304     ASSERT_TRUE(callback != nullptr);
305     struct CodecComponentType *component = nullptr;
306     uint32_t componentId = 0;
307     int32_t ret =
308         g_manager->CreateComponent(&component, &componentId, const_cast<char *>(DECODER_AVC), APP_DATA_MAX, callback);
309     ASSERT_EQ(ret, HDF_SUCCESS);
310     ASSERT_TRUE(component != nullptr);
311     ret = g_manager->DestroyComponent(componentId);
312     ASSERT_EQ(ret, HDF_SUCCESS);
313     CodecCallbackTypeRelease(callback);
314     callback = nullptr;
315 }
316 
317 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiCreateComponentAppdataMinTest_004, TestSize.Level1)
318 {
319     ASSERT_TRUE(g_manager != nullptr);
320     struct CodecCallbackType *callback = CodecCallbackTypeGet(nullptr);
321     ASSERT_TRUE(callback != nullptr);
322     struct CodecComponentType *component = nullptr;
323     uint32_t componentId = 0;
324     int32_t ret =
325         g_manager->CreateComponent(&component, &componentId, const_cast<char *>(DECODER_AVC), APP_DATA_MIN, callback);
326     ASSERT_EQ(ret, HDF_SUCCESS);
327     ASSERT_TRUE(component != nullptr);
328     ret = g_manager->DestroyComponent(componentId);
329     ASSERT_EQ(ret, HDF_SUCCESS);
330     CodecCallbackTypeRelease(callback);
331     callback = nullptr;
332 }
333 
334 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiCreateComponentCallbackIsNullptrTest_005, TestSize.Level1)
335 {
336     ASSERT_TRUE(g_manager != nullptr);
337     struct CodecCallbackType *callback = nullptr;
338     struct CodecComponentType *component = nullptr;
339     uint32_t componentId = 0;
340     int32_t ret =
341         g_manager->CreateComponent(&component, &componentId, const_cast<char *>(DECODER_AVC), APP_DATA, callback);
342     ASSERT_NE(ret, HDF_SUCCESS);
343 }
344 
345 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiCreateComponentSuccessTest_006, TestSize.Level1)
346 {
347     ASSERT_TRUE(g_manager != nullptr);
348     ASSERT_TRUE(g_callback != nullptr);
349     int32_t ret =
350         g_manager->CreateComponent(&g_component, &g_componentId, const_cast<char *>(ENCODER_AVC), APP_DATA, g_callback);
351     ASSERT_EQ(ret, HDF_SUCCESS);
352     ASSERT_TRUE(g_component != nullptr);
353 }
354 
355 // Test GetComponentVersion Adapter not support
356 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetComponentVersionUnsupportedTest_001, TestSize.Level1)
357 {
358     ASSERT_TRUE(g_component != nullptr);
359     struct CompVerInfo verInfo;
360     int32_t ret = g_component->GetComponentVersion(g_component, &verInfo);
361     g_version = verInfo.compVersion;
362     ASSERT_NE(ret, HDF_SUCCESS);
363 }
364 
365 // Test GetParameter
366 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetParameterParamStructNullptrTest_001, TestSize.Level1)
367 {
368     ASSERT_TRUE(g_component != nullptr);
369     auto ret = g_component->GetParameter(g_component, OMX_IndexParamVideoPortFormat, nullptr, 0);
370     ASSERT_NE(ret, HDF_SUCCESS);
371 }
372 
373 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetParameterSuccessTest_002, TestSize.Level1)
374 {
375     ASSERT_TRUE(g_component != nullptr);
376     OMX_VIDEO_PARAM_PORTFORMATTYPE param;
377     InitParam(param);
378     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
379     param.eCompressionFormat = OMX_VIDEO_CodingAVC;
380     auto ret = g_component->GetParameter(
381         g_component, OMX_IndexParamVideoPortFormat, reinterpret_cast<int8_t *>(&param), sizeof(param));
382     ASSERT_EQ(ret, HDF_SUCCESS);
383 }
384 
385 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetParameterParamIndexNotMatchParamStructTest_003, TestSize.Level1)
386 {
387     ASSERT_TRUE(g_component != nullptr);
388     OMX_VIDEO_CONFIG_BITRATETYPE param;
389     InitParam(param);
390     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
391     auto ret = g_component->GetParameter(
392         g_component, OMX_IndexParamVideoPortFormat, reinterpret_cast<int8_t *>(&param), sizeof(param));
393     ASSERT_NE(ret, HDF_SUCCESS);
394 }
395 
396 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetParameterParamIndexUnusedTest_004, TestSize.Level1)
397 {
398     ASSERT_TRUE(g_component != nullptr);
399     OMX_VIDEO_CONFIG_BITRATETYPE param;
400     InitParam(param);
401     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
402     auto ret = g_component->GetParameter(
403         g_component, OMX_IndexVideoStartUnused, reinterpret_cast<int8_t *>(&param), sizeof(param));
404     ASSERT_NE(ret, HDF_SUCCESS);
405 }
406 
407 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetParameterSuccessTest_001, TestSize.Level1)
408 {
409     ASSERT_TRUE(g_component != nullptr);
410     OMX_VIDEO_PARAM_PORTFORMATTYPE param;
411     InitParam(param);
412     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
413     int32_t ret = g_component->SetParameter(
414         g_component, OMX_IndexParamVideoPortFormat, reinterpret_cast<int8_t *>(&param), sizeof(param));
415     ASSERT_EQ(ret, HDF_SUCCESS);
416 }
417 
418 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetParameterParamStructNullptrTest_002, TestSize.Level1)
419 {
420     ASSERT_TRUE(g_component != nullptr);
421     int32_t ret = g_component->SetParameter(g_component, OMX_IndexParamVideoPortFormat, nullptr, 0);
422     ASSERT_NE(ret, HDF_SUCCESS);
423 }
424 
425 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetParameterParamIndexNotMatchParamStructTest_003, TestSize.Level1)
426 {
427     ASSERT_TRUE(g_component != nullptr);
428     OMX_VIDEO_CONFIG_BITRATETYPE param;
429     InitParam(param);
430     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
431     int32_t ret = g_component->SetParameter(
432         g_component, OMX_IndexParamVideoPortFormat, reinterpret_cast<int8_t *>(&param), sizeof(param));
433     ASSERT_NE(ret, HDF_SUCCESS);
434 }
435 
436 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetParameterParamIndexUnusedTest_004, TestSize.Level1)
437 {
438     ASSERT_TRUE(g_component != nullptr);
439     OMX_VIDEO_PARAM_PORTFORMATTYPE param;
440     InitParam(param);
441     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
442     int32_t ret = g_component->SetParameter(
443         g_component, OMX_IndexVideoStartUnused, reinterpret_cast<int8_t *>(&param), sizeof(param));
444     ASSERT_NE(ret, HDF_SUCCESS);
445 }
446 
447 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetParameterCodecComponentTypeNullptrTest_005, TestSize.Level1)
448 {
449     ASSERT_TRUE(g_component != nullptr);
450     OMX_VIDEO_PARAM_PORTFORMATTYPE param;
451     InitParam(param);
452     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
453     int32_t ret = g_component->SetParameter(
454         nullptr, OMX_IndexParamVideoPortFormat, reinterpret_cast<int8_t *>(&param), sizeof(param));
455     ASSERT_NE(ret, HDF_SUCCESS);
456 }
457 
458 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetParameterParamStructLenNotMatchTest_006, TestSize.Level1)
459 {
460     ASSERT_TRUE(g_component != nullptr);
461     OMX_VIDEO_PARAM_PORTFORMATTYPE param;
462     InitParam(param);
463     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_INPUT;
464     int32_t ret =
465         g_component->SetParameter(g_component, OMX_IndexParamVideoPortFormat, reinterpret_cast<int8_t *>(&param), 0);
466     ASSERT_NE(ret, HDF_SUCCESS);
467 }
468 
469 // Test GetConfig Adapter not support
470 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetConfigUnsupportedTest_001, TestSize.Level1)
471 {
472     ASSERT_TRUE(g_component != nullptr);
473     OMX_VIDEO_CONFIG_BITRATETYPE param;
474     InitParam(param);
475     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_OUTPUT;
476     int32_t ret = g_component->GetConfig(
477         g_component, OMX_IndexConfigVideoBitrate, reinterpret_cast<int8_t *>(&param), sizeof(param));
478     ASSERT_NE(ret, HDF_SUCCESS);
479 }
480 
481 // Test SetConfig Adapter not support
482 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetConfigUnsupportedTest_001, TestSize.Level1)
483 {
484     ASSERT_TRUE(g_component != nullptr);
485     OMX_VIDEO_CONFIG_BITRATETYPE param;
486     InitParam(param);
487     param.nPortIndex = (uint32_t)PortIndex::PORT_INDEX_OUTPUT;
488     param.nEncodeBitrate = FRAMERATE;
489     int32_t ret = g_component->SetConfig(
490         g_component, OMX_IndexConfigVideoBitrate, reinterpret_cast<int8_t *>(&param), sizeof(param));
491     ASSERT_NE(ret, HDF_SUCCESS);
492 }
493 
494 // Test GetExtensionIndex Adapter not support
495 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetExtensionIndexUnsupportedTest_001, TestSize.Level1)
496 {
497     ASSERT_TRUE(g_component != nullptr);
498     OMX_INDEXTYPE indexType;
499     int32_t ret =
500         g_component->GetExtensionIndex(g_component, "OMX.Topaz.index.param.extended_video", (uint32_t *)&indexType);
501     ASSERT_NE(ret, HDF_SUCCESS);
502 }
503 
504 // Test GetState
505 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetStateSuccessTest_001, TestSize.Level1)
506 {
507     ASSERT_TRUE(g_component != nullptr);
508     OMX_STATETYPE state;
509     int32_t ret = g_component->GetState(g_component, &state);
510     ASSERT_EQ(state, OMX_StateLoaded);
511     ASSERT_EQ(ret, HDF_SUCCESS);
512 }
513 
514 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiGetStateStateNullptrTest_002, TestSize.Level1)
515 {
516     ASSERT_TRUE(g_component != nullptr);
517     int32_t ret = g_component->GetState(g_component, nullptr);
518     ASSERT_NE(ret, HDF_SUCCESS);
519 }
520 
521 // Test ComponentTunnelRequest Adapter not support
522 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiTunnelRequestUnsupportedTest_001, TestSize.Level1)
523 {
524     ASSERT_TRUE(g_component != nullptr);
525     const int32_t tunneledComp = 1002;
526     const uint32_t tunneledPort = 101;
527     OMX_TUNNELSETUPTYPE tunnelSetup;
528     tunnelSetup.eSupplier = OMX_BufferSupplyInput;
529 
530     int32_t ret = g_component->ComponentTunnelRequest(
531         g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, tunneledComp, tunneledPort, &tunnelSetup);
532     ASSERT_NE(ret, HDF_SUCCESS);
533 }
534 
535 struct OmxCodecBuffer allocBuffer;
536 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiAllocateBufferInvalidInputBufferTypeTest_001, TestSize.Level1)
537 {
538     ASSERT_TRUE(g_component != nullptr);
539     allocBuffer.bufferType = CODEC_BUFFER_TYPE_INVALID;
540     allocBuffer.fenceFd = -1;
541     allocBuffer.version = g_version;
542     allocBuffer.allocLen = BUFFER_SIZE;
543     allocBuffer.buffer = 0;
544     allocBuffer.bufferLen = 0;
545     allocBuffer.pts = 0;
546     allocBuffer.flag = 0;
547     allocBuffer.type = READ_ONLY_TYPE;
548     int32_t ret = g_component->AllocateBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_INPUT, &allocBuffer);
549     ASSERT_NE(ret, HDF_SUCCESS);
550 }
551 
552 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiAllocateBufferInputBufferNotInitTest_002, TestSize.Level1)
553 {
554     ASSERT_TRUE(g_component != nullptr);
555     allocBuffer.bufferType = CODEC_BUFFER_TYPE_VIRTUAL_ADDR;
556     int32_t ret = g_component->AllocateBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_INPUT, &allocBuffer);
557     ASSERT_NE(ret, HDF_SUCCESS);
558 }
559 
560 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiAllocateBufferInvalidOutputBufferTypeTest_003, TestSize.Level1)
561 {
562     ASSERT_TRUE(g_component != nullptr);
563     allocBuffer.bufferType = CODEC_BUFFER_TYPE_INVALID;
564     int32_t ret = g_component->AllocateBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, &allocBuffer);
565     ASSERT_NE(ret, HDF_SUCCESS);
566 }
567 
568 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiAllocateBufferOutputBufferNotInitTest_004, TestSize.Level1)
569 {
570     ASSERT_TRUE(g_component != nullptr);
571     allocBuffer.bufferType = CODEC_BUFFER_TYPE_VIRTUAL_ADDR;
572     int32_t ret = g_component->AllocateBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, &allocBuffer);
573     ASSERT_NE(ret, HDF_SUCCESS);
574 }
575 
576 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiAllocateBufferAvshareMemFdInputNotInitTest_005, TestSize.Level1)
577 {
578     ASSERT_TRUE(g_component != nullptr);
579     allocBuffer.bufferType = CODEC_BUFFER_TYPE_AVSHARE_MEM_FD;
580     int32_t ret = g_component->AllocateBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_INPUT, &allocBuffer);
581     ASSERT_NE(ret, HDF_SUCCESS);
582 }
583 
584 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiAllocateBufferAvshareMemFdOutputNotInitTest_006, TestSize.Level1)
585 {
586     ASSERT_TRUE(g_component != nullptr);
587     allocBuffer.bufferType = CODEC_BUFFER_TYPE_AVSHARE_MEM_FD;
588     int32_t ret = g_component->AllocateBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, &allocBuffer);
589     ASSERT_NE(ret, HDF_SUCCESS);
590 }
591 
592 // Test UseBuffer
593 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferInvalidInputBufferTypeTest_001, TestSize.Level1)
594 {
595     ASSERT_TRUE(g_component != nullptr);
596     std::shared_ptr<OmxCodecBuffer> omxBuffer = std::make_shared<OmxCodecBuffer>();
597     ASSERT_TRUE(omxBuffer != nullptr);
598     omxBuffer->size = sizeof(OmxCodecBuffer);
599     omxBuffer->version = g_version;
600     omxBuffer->bufferType = CODEC_BUFFER_TYPE_INVALID;
601     omxBuffer->bufferLen = 0;
602     omxBuffer->buffer = nullptr;
603     omxBuffer->allocLen = 0;
604     omxBuffer->fenceFd = -1;
605     omxBuffer->pts = 0;
606     omxBuffer->flag = 0;
607 
608     auto err = g_component->UseBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_INPUT, omxBuffer.get());
609     ASSERT_NE(err, HDF_SUCCESS);
610 }
611 
612 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferInvalidOutputBufferTypeTest_002, TestSize.Level1)
613 {
614     ASSERT_TRUE(g_component != nullptr);
615     std::shared_ptr<OmxCodecBuffer> omxBuffer = std::make_shared<OmxCodecBuffer>();
616     ASSERT_TRUE(omxBuffer != nullptr);
617     omxBuffer->size = sizeof(OmxCodecBuffer);
618     omxBuffer->version = g_version;
619     omxBuffer->bufferType = CODEC_BUFFER_TYPE_INVALID;
620     omxBuffer->bufferLen = 0;
621     omxBuffer->buffer = nullptr;
622     omxBuffer->allocLen = 0;
623     omxBuffer->fenceFd = -1;
624     omxBuffer->pts = 0;
625     omxBuffer->flag = 0;
626 
627     auto err = g_component->UseBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, omxBuffer.get());
628     ASSERT_NE(err, HDF_SUCCESS);
629 }
630 
631 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferTestVirtualAddrInputTest_003, TestSize.Level1)
632 {
633     ASSERT_TRUE(g_component != nullptr);
634     std::shared_ptr<OmxCodecBuffer> omxBuffer = std::make_shared<OmxCodecBuffer>();
635     ASSERT_TRUE(omxBuffer != nullptr);
636     omxBuffer->size = sizeof(OmxCodecBuffer);
637     omxBuffer->version = g_version;
638     omxBuffer->bufferType = CODEC_BUFFER_TYPE_VIRTUAL_ADDR;
639     omxBuffer->bufferLen = 0;
640     omxBuffer->buffer = nullptr;
641     omxBuffer->allocLen = 0;
642     omxBuffer->fenceFd = -1;
643     omxBuffer->pts = 0;
644     omxBuffer->flag = 0;
645 
646     auto err = g_component->UseBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_INPUT, omxBuffer.get());
647     ASSERT_NE(err, HDF_SUCCESS);
648 }
649 
650 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferTestVirtualAddrOutput_004, TestSize.Level1)
651 {
652     ASSERT_TRUE(g_component != nullptr);
653     std::shared_ptr<OmxCodecBuffer> omxBuffer = std::make_shared<OmxCodecBuffer>();
654     ASSERT_TRUE(omxBuffer != nullptr);
655     omxBuffer->size = sizeof(OmxCodecBuffer);
656     omxBuffer->version = g_version;
657     omxBuffer->bufferType = CODEC_BUFFER_TYPE_VIRTUAL_ADDR;
658     omxBuffer->bufferLen = 0;
659     omxBuffer->buffer = nullptr;
660     omxBuffer->allocLen = 0;
661     omxBuffer->fenceFd = -1;
662     omxBuffer->pts = 0;
663     omxBuffer->flag = 0;
664 
665     auto err = g_component->UseBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, omxBuffer.get());
666     ASSERT_NE(err, HDF_SUCCESS);
667 }
668 
669 // Use buffer on input index
670 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferInputSuccessTest_005, TestSize.Level1)
671 {
672     ASSERT_TRUE(g_component != nullptr);
673     OMX_PARAM_PORTDEFINITIONTYPE param;
674     InitParam(param);
675     param.nPortIndex = (OMX_U32)PortIndex::PORT_INDEX_INPUT;
676     auto err = g_component->GetParameter(g_component, OMX_IndexParamPortDefinition, (int8_t *)&param, sizeof(param));
677     ASSERT_EQ(err, HDF_SUCCESS);
678 
679     int bufferSize = param.nBufferSize;
680     int bufferCount = param.nBufferCountActual;
681     bool ret = UseBufferOnPort(PortIndex::PORT_INDEX_INPUT, bufferCount, bufferSize);
682     ASSERT_TRUE(ret);
683 }
684 
685 // Use Buffer on output index
686 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferOutputSuccessTest_006, TestSize.Level1)
687 {
688     ASSERT_TRUE(g_component != nullptr);
689     OMX_PARAM_PORTDEFINITIONTYPE param;
690     InitParam(param);
691     param.nPortIndex = (OMX_U32)PortIndex::PORT_INDEX_OUTPUT;
692     auto err = g_component->GetParameter(g_component, OMX_IndexParamPortDefinition, (int8_t *)&param, sizeof(param));
693     ASSERT_EQ(err, HDF_SUCCESS);
694 
695     int bufferSize = param.nBufferSize;
696     int bufferCount = param.nBufferCountActual;
697     bool ret = UseBufferOnPort(PortIndex::PORT_INDEX_OUTPUT, bufferCount, bufferSize);
698     ASSERT_TRUE(ret);
699 }
700 
701 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferDynamicHandleOutputTest_007, TestSize.Level1)
702 {
703     ASSERT_TRUE(g_component != nullptr);
704     std::shared_ptr<OmxCodecBuffer> omxBuffer = std::make_shared<OmxCodecBuffer>();
705     ASSERT_TRUE(omxBuffer != nullptr);
706     omxBuffer->size = sizeof(OmxCodecBuffer);
707     omxBuffer->version = g_version;
708     omxBuffer->bufferType = CODEC_BUFFER_TYPE_DYNAMIC_HANDLE;
709 
710     omxBuffer->bufferLen = 0;
711     omxBuffer->buffer = nullptr;
712     omxBuffer->allocLen = 0;
713     omxBuffer->fenceFd = -1;
714     omxBuffer->pts = 0;
715     omxBuffer->flag = 0;
716 
717     auto err = g_component->UseBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, omxBuffer.get());
718     if (err != HDF_SUCCESS) {
719         HDF_LOGE("%{public}s failed to UseBuffer with input port", __func__);
720         omxBuffer = nullptr;
721     }
722     ASSERT_NE(err, HDF_SUCCESS);
723 }
724 
725 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseBufferAbnormalPortIndexTest_008, TestSize.Level1)
726 {
727     ASSERT_TRUE(g_component != nullptr);
728     OMX_PARAM_PORTDEFINITIONTYPE param;
729     InitParam(param);
730     param.nPortIndex = (OMX_U32)PortIndex::PORT_INDEX_INPUT;
731     auto err = g_component->GetParameter(g_component, OMX_IndexParamPortDefinition, (int8_t *)&param, sizeof(param));
732     ASSERT_EQ(err, HDF_SUCCESS);
733 
734     int bufferSize = param.nBufferSize;
735     int bufferCount = param.nBufferCountActual;
736     bool ret = UseBufferOnPort(PortIndex::PORT_INDEX_ERROR_INPUT, bufferCount, bufferSize);
737     ASSERT_FALSE(ret);
738 }
739 
740 // Test SendCommand
741 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetStateLoadedToIdleTest_001, TestSize.Level1)
742 {
743     ASSERT_TRUE(g_component != nullptr);
744     int32_t ret = g_component->SendCommand(g_component, OMX_CommandStateSet, OMX_StateIdle, nullptr, 0);
745     ASSERT_EQ(ret, HDF_SUCCESS);
746 }
747 
748 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetStateIdleToExecutingTest_002, TestSize.Level1)
749 {
750     ASSERT_TRUE(g_component != nullptr);
751     int32_t ret = g_component->SendCommand(g_component, OMX_CommandStateSet, OMX_StateExecuting, nullptr, 0);
752     ASSERT_EQ(ret, HDF_SUCCESS);
753 }
754 
755 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetStateExecutingToPauseTest_003, TestSize.Level1)
756 {
757     ASSERT_TRUE(g_component != nullptr);
758     int32_t ret = g_component->SendCommand(g_component, OMX_CommandStateSet, OMX_StatePause, nullptr, 0);
759     ASSERT_EQ(ret, HDF_SUCCESS);
760 }
761 
762 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetStatePauseToIdleTest_004, TestSize.Level1)
763 {
764     ASSERT_TRUE(g_component != nullptr);
765     int32_t ret = g_component->SendCommand(g_component, OMX_CommandStateSet, OMX_StateIdle, nullptr, 0);
766     ASSERT_EQ(ret, HDF_SUCCESS);
767 
768     OMX_STATETYPE state;
769     ret = g_component->GetState(g_component, &state);
770     ASSERT_EQ(ret, HDF_SUCCESS);
771 }
772 
773 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSendCommandCodecComponentTypeNullptrTest_005, TestSize.Level1)
774 {
775     ASSERT_TRUE(g_component != nullptr);
776     int32_t ret = g_component->SendCommand(nullptr, OMX_CommandStateSet, OMX_StateIdle, nullptr, 0);
777     ASSERT_NE(ret, HDF_SUCCESS);
778 }
779 
780 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSendCommandAbnormalCommandTest_006, TestSize.Level1)
781 {
782     ASSERT_TRUE(g_component != nullptr);
783     int32_t ret = g_component->SendCommand(g_component, OMX_CommandMax, OMX_StatePause, nullptr, 0);
784     ASSERT_NE(ret, HDF_SUCCESS);
785 }
786 
787 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSendCommandAbnormalParamTest_007, TestSize.Level1)
788 {
789     ASSERT_TRUE(g_component != nullptr);
790     int32_t ret = g_component->SendCommand(g_component, OMX_CommandStateSet, OMX_StateMax, nullptr, 0);
791     ASSERT_NE(ret, HDF_SUCCESS);
792 }
793 
794 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiUseEglImageUnsupportedTest_001, TestSize.Level1)
795 {
796     ASSERT_TRUE(g_component != nullptr);
797     struct OmxCodecBuffer buffer;
798     buffer.fenceFd = -1;
799     buffer.version = g_version;
800     buffer.bufferType = CODEC_BUFFER_TYPE_AVSHARE_MEM_FD;
801     buffer.allocLen = BUFFER_SIZE;
802     buffer.buffer = 0;
803     buffer.bufferLen = 0;
804     buffer.pts = 0;
805     buffer.flag = 0;
806     buffer.type = READ_ONLY_TYPE;
807     auto eglImage = std::make_unique<int8_t[]>(BUFFER_SIZE);
808     ASSERT_TRUE(eglImage != nullptr);
809     int32_t ret = g_component->UseEglImage(
810         g_component, &buffer, (uint32_t)PortIndex::PORT_INDEX_INPUT, eglImage.get(), BUFFER_SIZE);
811     ASSERT_NE(ret, HDF_SUCCESS);
812     eglImage = nullptr;
813 }
814 
815 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiWaitStateIdleTest_001, TestSize.Level1)
816 {
817     ASSERT_TRUE(g_component != nullptr);
818     // wait for Idle status
819     OMX_STATETYPE state = OMX_StateInvalid;
820     do {
821         usleep(100);
822         auto ret = g_component->GetState(g_component, &state);
823         ASSERT_EQ(ret, HDF_SUCCESS);
824     } while (state != OMX_StateIdle);
825 }
826 
827 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiFillThisBufferSuccessTest_001, TestSize.Level1)
828 {
829     ASSERT_TRUE(g_component != nullptr);
830     auto iter = outputBuffers.begin();
831     if (iter != outputBuffers.end()) {
832         int32_t ret = g_component->FillThisBuffer(g_component, iter->second->omxBuffer.get());
833         ASSERT_EQ(ret, HDF_SUCCESS);
834     }
835 }
836 
837 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiFillThisBufferUseErrorBufferIdTest_002, TestSize.Level1)
838 {
839     ASSERT_TRUE(g_component != nullptr);
840     auto iter = outputBuffers.begin();
841     if (iter != outputBuffers.end()) {
842         auto omxBuffer = iter->second->omxBuffer;
843         auto tempId = omxBuffer->bufferId;
844         omxBuffer->bufferId = BUFFER_ID_ERROR;
845         int32_t ret = g_component->FillThisBuffer(g_component, omxBuffer.get());
846         ASSERT_NE(ret, HDF_SUCCESS);
847         omxBuffer->bufferId = tempId;
848     }
849 }
850 
851 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiEmptyThisBufferSuccessTest_001, TestSize.Level1)
852 {
853     ASSERT_TRUE(g_component != nullptr);
854     auto iter = inputBuffers.begin();
855     if (iter != inputBuffers.end()) {
856         int32_t ret = g_component->EmptyThisBuffer(g_component, iter->second->omxBuffer.get());
857         ASSERT_EQ(ret, HDF_SUCCESS);
858     }
859 }
860 
861 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiEmptyThisBufferUseErrorBufferIdTest_002, TestSize.Level1)
862 {
863     ASSERT_TRUE(g_component != nullptr);
864     auto iter = inputBuffers.begin();
865     if (iter != inputBuffers.end()) {
866         auto omxBuffer = iter->second->omxBuffer;
867         auto tempId = omxBuffer->bufferId;
868         omxBuffer->bufferId = BUFFER_ID_ERROR;
869         int32_t ret = g_component->EmptyThisBuffer(g_component, iter->second->omxBuffer.get());
870         ASSERT_NE(ret, HDF_SUCCESS);
871         omxBuffer->bufferId = tempId;
872     }
873 }
874 
875 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetCallbackSuccessTest_001, TestSize.Level1)
876 {
877     ASSERT_TRUE(g_component != nullptr);
878     if (g_callback != nullptr) {
879         CodecCallbackTypeRelease(g_callback);
880     }
881     g_callback = CodecCallbackTypeGet(nullptr);
882     ASSERT_TRUE(g_callback != nullptr);
883     int32_t ret = g_component->SetCallbacks(g_component, g_callback, APP_DATA);
884     ASSERT_EQ(ret, HDF_SUCCESS);
885 }
886 
887 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetCallbackAppDataLenMaxTest_002, TestSize.Level1)
888 {
889     ASSERT_TRUE(g_component != nullptr);
890     if (g_callback != nullptr) {
891         CodecCallbackTypeRelease(g_callback);
892     }
893     g_callback = CodecCallbackTypeGet(nullptr);
894     ASSERT_TRUE(g_callback != nullptr);
895     int32_t ret = g_component->SetCallbacks(g_component, g_callback, APP_DATA_MAX);
896     ASSERT_EQ(ret, HDF_SUCCESS);
897 }
898 
899 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetCallbackAppDataLenMinTest_003, TestSize.Level1)
900 {
901     ASSERT_TRUE(g_component != nullptr);
902     if (g_callback != nullptr) {
903         CodecCallbackTypeRelease(g_callback);
904     }
905     g_callback = CodecCallbackTypeGet(nullptr);
906     ASSERT_TRUE(g_callback != nullptr);
907     int32_t ret = g_component->SetCallbacks(g_component, g_callback, APP_DATA_MIN);
908     ASSERT_EQ(ret, HDF_SUCCESS);
909 }
910 
911 // Test ComponentRoleEnum Adapter not support
912 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiRoleEnumUnsupportedTest_001, TestSize.Level1)
913 {
914     ASSERT_TRUE(g_component != nullptr);
915     uint8_t role[ROLE_LEN] = {0};
916     int32_t ret = g_component->ComponentRoleEnum(g_component, role, ROLE_LEN, 0);
917     ASSERT_NE(ret, HDF_SUCCESS);
918 }
919 
920 // Test FreeBuffer Adapter not support
921 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiFreeBufferPortIndexOutputUnsupportedTest_001, TestSize.Level1)
922 {
923     ASSERT_TRUE(g_component != nullptr);
924     auto iter = outputBuffers.begin();
925     while (iter != outputBuffers.end()) {
926         int32_t ret =
927             g_component->FreeBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_OUTPUT, iter->second->omxBuffer.get());
928         ASSERT_NE(ret, HDF_SUCCESS);
929         iter = outputBuffers.erase(iter);
930     }
931 }
932 
933 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiFreeBufferPortIndexInputUnsupportedTest_002, TestSize.Level1)
934 {
935     ASSERT_TRUE(g_component != nullptr);
936     auto iter = inputBuffers.begin();
937     while (iter != inputBuffers.end()) {
938         int32_t ret =
939             g_component->FreeBuffer(g_component, (uint32_t)PortIndex::PORT_INDEX_INPUT, iter->second->omxBuffer.get());
940         ASSERT_NE(ret, HDF_SUCCESS);
941         iter = inputBuffers.erase(iter);
942     }
943 }
944 
945 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiSetStateIdleToLoadedTest_001, TestSize.Level1)
946 {
947     ASSERT_TRUE(g_component != nullptr);
948     int32_t ret = g_component->SendCommand(g_component, OMX_CommandStateSet, OMX_StateLoaded, nullptr, 0);
949     ASSERT_EQ(ret, HDF_SUCCESS);
950 
951     OMX_STATETYPE state = OMX_StateInvalid;
952     do {
953         usleep(100);
954         auto ret = g_component->GetState(g_component, &state);
955         ASSERT_EQ(ret, HDF_SUCCESS);
956     } while (state != OMX_StateLoaded);
957 }
958 
959 // Test ComponentDeInit Adapter not support
960 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiDeInitUnsupportedTest_001, TestSize.Level1)
961 {
962     ASSERT_TRUE(g_component != nullptr);
963     int32_t ret = g_component->ComponentDeInit(g_component);
964     ASSERT_NE(ret, HDF_SUCCESS);
965 }
966 
967 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiDestoryComponentSuccessTest_001, TestSize.Level1)
968 {
969     ASSERT_TRUE(g_component != nullptr);
970     ASSERT_TRUE(g_manager != nullptr);
971     int ret = g_manager->DestroyComponent(g_componentId);
972     ASSERT_EQ(ret, HDF_SUCCESS);
973 }
974 
975 HWTEST_F(CodecHdiAdapterTest, HdfCodecHdiCallbackTypeReleaseAndManagerReleaseTest_001, TestSize.Level1)
976 {
977     ASSERT_TRUE(g_manager != nullptr);
978     ASSERT_TRUE(g_callback != nullptr);
979     CodecCallbackTypeRelease(g_callback);
980     CodecComponentManagerRelease();
981     g_callback = nullptr;
982     g_manager = nullptr;
983 }
984 }  // namespace
985