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