• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 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 <iostream>
17 #include <cstdio>
18 #include <atomic>
19 #include <fstream>
20 #include <thread>
21 #include <mutex>
22 #include <queue>
23 #include <string>
24 
25 #include "gtest/gtest.h"
26 #include "videodec_ndk_sample.h"
27 #include "videodec_api11_sample.h"
28 #include "native_avcodec_videodecoder.h"
29 #include "native_avformat.h"
30 #include "native_averrors.h"
31 #include "native_avcodec_base.h"
32 #include "native_avcapability.h"
33 
34 using namespace std;
35 using namespace OHOS;
36 using namespace OHOS::Media;
37 using namespace testing::ext;
38 namespace OHOS {
39 namespace Media {
40 class HwdecApiNdkTest : public testing::Test {
41 public:
42     // SetUpTestCase: Called before all test cases
43     static void SetUpTestCase(void);
44     // TearDownTestCase: Called after all test case
45     static void TearDownTestCase(void);
46     // SetUp: Called before each test cases
47     void SetUp(void);
48     // TearDown: Called after each test cases
49     void TearDown(void);
50 };
51 
52 namespace {
53 OH_AVCodec *vdec_ = NULL;
54 OH_AVCapability *cap = nullptr;
55 VDecSignal *signal_;
56 const string INVALID_CODEC_NAME = "avdec_h264";
57 string g_codecName;
58 OH_AVFormat *format;
59 constexpr uint32_t DEFAULT_WIDTH = 1920;
60 constexpr uint32_t DEFAULT_HEIGHT = 1080;
61 constexpr double DEFAULT_FRAME_RATE = 30.0;
62 } // namespace
63 
SetUpTestCase()64 void HwdecApiNdkTest::SetUpTestCase()
65 {
66     cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
67     g_codecName = OH_AVCapability_GetName(cap);
68     cout << "g_codecName: " << g_codecName << endl;
69 }
TearDownTestCase()70 void HwdecApiNdkTest::TearDownTestCase() {}
SetUp()71 void HwdecApiNdkTest::SetUp()
72 {
73     signal_ = new VDecSignal();
74 }
TearDown()75 void HwdecApiNdkTest::TearDown()
76 {
77     if (format != nullptr) {
78         OH_AVFormat_Destroy(format);
79         format = nullptr;
80     }
81     if (signal_) {
82         delete signal_;
83         signal_ = nullptr;
84     }
85     if (vdec_ != NULL) {
86         OH_VideoDecoder_Destroy(vdec_);
87         vdec_ = nullptr;
88     }
89 }
90 } // namespace Media
91 } // namespace OHOS
92 
93 namespace {
VDecNeedInputData(OH_AVCodec * codec,uint32_t index,OH_AVMemory * data,void * userData)94 void VDecNeedInputData(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData)
95 {
96     cout << "VDecNeedInputData  index:" << index << endl;
97     VDecSignal *signal = static_cast<VDecSignal *>(userData);
98     unique_lock<mutex> lock(signal->inMutex_);
99     signal->inIdxQueue_.push(index);
100     signal->inCond_.notify_all();
101 }
102 
103 /**
104  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0100
105  * @tc.name      : OH_VideoDecoder_FindDecoder para error
106  * @tc.desc      : function test
107  */
108 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0100, TestSize.Level2)
109 {
110     vdec_ = OH_VideoDecoder_CreateByMime(NULL);
111     ASSERT_EQ(NULL, vdec_);
112 }
113 
114 /**
115  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0200
116  * @tc.name      : OH_VideoDecoder_CreateByName para error
117  * @tc.desc      : function test
118  */
119 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0200, TestSize.Level2)
120 {
121     vdec_ = OH_VideoDecoder_CreateByName(NULL);
122     ASSERT_EQ(NULL, vdec_);
123 }
124 
125 /**
126  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_3300
127  * @tc.name      : OH_VideoDecoder_SetCallback para error
128  * @tc.desc      : function test
129  */
130 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_3300, TestSize.Level2)
131 {
132     OH_AVCodecAsyncCallback cb_;
133     cb_.onError = VdecError;
134     cb_.onStreamChanged = VdecFormatChanged;
135     cb_.onNeedInputData = VdecInputDataReady;
136     cb_.onNeedOutputData = VdecOutputDataReady;
137     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_SetCallback(NULL, cb_, static_cast<void *>(signal_)));
138 }
139 
140 /**
141  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1800
142  * @tc.name      : OH_VideoDecoder_SetCallback para error
143  * @tc.desc      : function test
144  */
145 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1800, TestSize.Level2)
146 {
147     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
148     ASSERT_NE(NULL, vdec_);
149 
150     OH_AVCodecAsyncCallback cb2_;
151     cb2_.onError = NULL;
152     cb2_.onStreamChanged = NULL;
153     cb2_.onNeedInputData = NULL;
154     cb2_.onNeedOutputData = NULL;
155     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_SetCallback(vdec_, cb2_, static_cast<void *>(signal_)));
156 }
157 
158 /**
159  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0300
160  * @tc.name      : OH_VideoDecoder_SetCallback para error
161  * @tc.desc      : function test
162  */
163 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0300, TestSize.Level2)
164 {
165     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
166     OH_AVCodecAsyncCallback cb_;
167     cb_.onError = VdecError;
168     cb_.onStreamChanged = VdecFormatChanged;
169     cb_.onNeedInputData = VdecInputDataReady;
170     cb_.onNeedOutputData = VdecOutputDataReady;
171     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_SetCallback(vdec_, cb_, NULL));
172 }
173 
174 /**
175  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0400
176  * @tc.name      : OH_VideoDecoder_Destroy para error
177  * @tc.desc      : function test
178  */
179 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0400, TestSize.Level2)
180 {
181     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Destroy(NULL));
182 }
183 
184 /**
185  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0500
186  * @tc.name      : OH_VideoDecoder_Configure para error
187  * @tc.desc      : function test
188  */
189 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0500, TestSize.Level2)
190 {
191     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
192     ASSERT_NE(NULL, vdec_);
193     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Configure(vdec_, NULL));
194 }
195 
196 /**
197  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1400
198  * @tc.name      : OH_VideoDecoder_Configure para error
199  * @tc.desc      : function test
200  */
201 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1400, TestSize.Level2)
202 {
203     format = OH_AVFormat_Create();
204     ASSERT_NE(NULL, format);
205     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Configure(NULL, format));
206 }
207 
208 /**
209  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1400
210  * @tc.name      : OH_VideoDecoder_Configure para error
211  * @tc.desc      : function test
212  */
213 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_5000, TestSize.Level2)
214 {
215     format = OH_AVFormat_Create();
216     ASSERT_NE(NULL, format);
217     string widthStr = "width";
218     (void)OH_AVFormat_SetIntValue(format, widthStr.c_str(), DEFAULT_WIDTH);
219     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Configure(NULL, format));
220 }
221 
222 /**
223  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1400
224  * @tc.name      : OH_VideoDecoder_Configure para error
225  * @tc.desc      : function test
226  */
227 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_5100, TestSize.Level2)
228 {
229     format = OH_AVFormat_Create();
230     ASSERT_NE(NULL, format);
231 
232     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
233     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
234     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
235     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
236     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Configure(NULL, format));
237 }
238 
239 /**
240  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0600
241  * @tc.name      : OH_VideoDecoder_Start para error
242  * @tc.desc      : function test
243  */
244 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0600, TestSize.Level2)
245 {
246     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Start(NULL));
247 }
248 
249 /**
250  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0700
251  * @tc.name      : OH_VideoDecoder_Stop para error
252  * @tc.desc      : function test
253  */
254 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0700, TestSize.Level2)
255 {
256     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Stop(NULL));
257 }
258 
259 /**
260  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0800
261  * @tc.name      : OH_VideoDecoder_Flush para error
262  * @tc.desc      : function test
263  */
264 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0800, TestSize.Level2)
265 {
266     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Flush(NULL));
267 }
268 
269 /**
270  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_0900
271  * @tc.name      : OH_VideoDecoder_Reset para error
272  * @tc.desc      : function test
273  */
274 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_0900, TestSize.Level2)
275 {
276     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Reset(NULL));
277 }
278 
279 /**
280  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1000
281  * @tc.name      : OH_VideoDecoder_GetOutputDescription para error
282  * @tc.desc      : function test
283  */
284 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1000, TestSize.Level2)
285 {
286     ASSERT_EQ(NULL, OH_VideoDecoder_GetOutputDescription(NULL));
287 }
288 
289 /**
290  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1100
291  * @tc.name      : OH_VideoDecoder_SetParameter para error
292  * @tc.desc      : function test
293  */
294 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1100, TestSize.Level2)
295 {
296     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
297     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_SetParameter(vdec_, NULL));
298 }
299 
300 /**
301  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_4100
302  * @tc.name      : OH_VideoDecoder_Prepare para error
303  * @tc.desc      : function test
304  */
305 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_4100, TestSize.Level2)
306 {
307     OH_AVErrCode ret = AV_ERR_OK;
308     ret = OH_VideoDecoder_Prepare(nullptr);
309     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
310 }
311 
312 /**
313  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1500
314  * @tc.name      : OH_VideoDecoder_SetParameter para error
315  * @tc.desc      : function test
316  */
317 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1500, TestSize.Level2)
318 {
319     format = OH_AVFormat_Create();
320     ASSERT_NE(NULL, format);
321 
322     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
323     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
324     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
325     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
326     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_SetParameter(NULL, format));
327 }
328 
329 /**
330  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1200
331  * @tc.name      : OH_VideoDecoder_SetSurface para error
332  * @tc.desc      : function test
333  */
334 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1200, TestSize.Level2)
335 {
336     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
337     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_SetSurface(vdec_, NULL));
338 }
339 
340 /**
341  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1300
342  * @tc.name      : OH_VideoDecoder_CreateByName para correct
343  * @tc.desc      : function test
344  */
345 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1300, TestSize.Level2)
346 {
347     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
348 }
349 
350 /**
351  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1600
352  * @tc.name      : OH_VideoDecoder_CreateByName para error
353  * @tc.desc      : function test
354  */
355 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1600, TestSize.Level2)
356 {
357     vdec_ = OH_VideoDecoder_CreateByName(INVALID_CODEC_NAME.c_str());
358     ASSERT_EQ(NULL, vdec_);
359 }
360 
361 /**
362  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1700
363  * @tc.name      : OH_VideoDecoder_CreateByName para error
364  * @tc.desc      : function test
365  */
366 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_1700, TestSize.Level2)
367 {
368     vdec_ = OH_VideoDecoder_CreateByMime(INVALID_CODEC_NAME.c_str());
369     ASSERT_EQ(NULL, vdec_);
370 }
371 
372 /**
373  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_1700
374  * @tc.name      : OH_VideoDecoder_IsValid para error
375  * @tc.desc      : function test
376  */
377 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_2200, TestSize.Level2)
378 {
379     bool isValid = false;
380     OH_AVErrCode ret = AV_ERR_OK;
381     ret = OH_VideoDecoder_IsValid(nullptr, &isValid);
382     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
383     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
384     ASSERT_NE(NULL, vdec_);
385     ret = OH_VideoDecoder_IsValid(vdec_, nullptr);
386     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
387 }
388 
389 /**
390  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_2500
391  * @tc.name      : OH_VideoDecoder_RenderOutputData para error
392  * @tc.desc      : function test
393  */
394 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_2500, TestSize.Level2)
395 {
396     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_RenderOutputData(NULL, 0));
397 }
398 
399 /**
400  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_2600
401  * @tc.name      : OH_VideoDecoder_RenderOutputData para error
402  * @tc.desc      : function test
403  */
404 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_2600, TestSize.Level2)
405 {
406     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
407     ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_RenderOutputData(vdec_, 0));
408 }
409 
410 /**
411  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_2700
412  * @tc.name      : OH_VideoDecoder_FreeOutputData para error
413  * @tc.desc      : function test
414  */
415 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_2700, TestSize.Level2)
416 {
417     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_FreeOutputData(NULL, 0));
418 }
419 
420 /**
421  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_2800
422  * @tc.name      : OH_VideoDecoder_FreeOutputData para error
423  * @tc.desc      : function test
424  */
425 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_2800, TestSize.Level2)
426 {
427     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
428     ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_FreeOutputData(vdec_, 0));
429 }
430 
431 /**
432  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_2900
433  * @tc.name      : OH_VideoDecoder_FreeOutputData para error
434  * @tc.desc      : function test
435  */
436 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_2900, TestSize.Level2)
437 {
438     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
439     ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_FreeOutputData(vdec_, -1));
440 }
441 
442 /**
443  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_3000
444  * @tc.name      : OH_VideoDecoder_PushInputData para error
445  * @tc.desc      : function test
446  */
447 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_3000, TestSize.Level2)
448 {
449     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
450 
451     OH_AVCodecBufferAttr attr;
452     attr.pts = -1;
453     attr.size = -1;
454     attr.offset = -1;
455     attr.flags = AVCODEC_BUFFER_FLAGS_EOS;
456 
457     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_PushInputData(vdec_, 0, attr));
458 }
459 
460 /**
461  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_3100
462  * @tc.name      : OH_VideoDecoder_PushInputData para error
463  * @tc.desc      : function test
464  */
465 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_3100, TestSize.Level2)
466 {
467     OH_AVCodecBufferAttr attr;
468     attr.pts = 0;
469     attr.size = 0;
470     attr.offset = 0;
471     attr.flags = AVCODEC_BUFFER_FLAGS_EOS;
472 
473     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_PushInputData(NULL, -1, attr));
474 }
475 
476 /**
477  * @tc.number    : VIDEO_HWDEC_ILLEGAL_PARA_3200
478  * @tc.name      : OH_VideoDecoder_PushInputData para error
479  * @tc.desc      : function test
480  */
481 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ILLEGAL_PARA_3200, TestSize.Level2)
482 {
483     OH_AVCodecBufferAttr attr;
484     attr.pts = 0;
485     attr.size = 0;
486     attr.offset = 0;
487     attr.flags = AVCODEC_BUFFER_FLAGS_EOS;
488 
489     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_PushInputData(NULL, 0, attr));
490 }
491 
492 /**
493  * @tc.number    : VIDEO_HWDEC_API_0100
494  * @tc.name      : create create
495  * @tc.desc      : function test
496  */
497 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0100, TestSize.Level2)
498 {
499     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
500     ASSERT_NE(vdec_, NULL);
501     OH_AVCodec *vdec_2 = OH_VideoDecoder_CreateByName(g_codecName.c_str());
502     ASSERT_NE(vdec_2, NULL);
503     OH_VideoDecoder_Destroy(vdec_2);
504     vdec_2 = nullptr;
505 }
506 
507 /**
508  * @tc.number    : VIDEO_HWDEC_API_0200
509  * @tc.name      : create configure configure
510  * @tc.desc      : function test
511  */
512 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0200, TestSize.Level2)
513 {
514     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
515     ASSERT_NE(NULL, vdec_);
516 
517     format = OH_AVFormat_Create();
518     ASSERT_NE(NULL, format);
519 
520     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
521     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
522     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
523     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
524 
525     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
526     ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_Configure(vdec_, format));
527 }
528 
529 /**
530  * @tc.number    : VIDEO_HWDEC_API_0300
531  * @tc.name      : create configure start start
532  * @tc.desc      : function test
533  */
534 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0300, TestSize.Level2)
535 {
536     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
537     ASSERT_NE(NULL, vdec_);
538 
539     format = OH_AVFormat_Create();
540     ASSERT_NE(NULL, format);
541 
542     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
543     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
544     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
545     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
546 
547     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
548     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Start(vdec_));
549     ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_Start(vdec_));
550 }
551 
552 /**
553  * @tc.number    : VIDEO_HWDEC_API_0400
554  * @tc.name      : create configure start stop stop
555  * @tc.desc      : function test
556  */
557 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0400, TestSize.Level2)
558 {
559     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
560     ASSERT_NE(NULL, vdec_);
561 
562     format = OH_AVFormat_Create();
563     ASSERT_NE(NULL, format);
564 
565     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
566     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
567     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
568     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
569 
570     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
571     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Start(vdec_));
572     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Stop(vdec_));
573     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Stop(vdec_));
574 }
575 
576 /**
577  * @tc.number    : VIDEO_HWDEC_API_0500
578  * @tc.name      : create configure start stop reset reset
579  * @tc.desc      : function test
580  */
581 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0500, TestSize.Level2)
582 {
583     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
584     ASSERT_NE(NULL, vdec_);
585 
586     format = OH_AVFormat_Create();
587     ASSERT_NE(NULL, format);
588 
589     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
590     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
591     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
592     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
593 
594     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
595     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Start(vdec_));
596     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Stop(vdec_));
597     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Reset(vdec_));
598     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Reset(vdec_));
599 }
600 
601 /**
602  * @tc.number    : VIDEO_HWDEC_API_0600
603  * @tc.name      : create configure start EOS EOS
604  * @tc.desc      : function test
605  */
606 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0600, TestSize.Level2)
607 {
608     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
609     ASSERT_NE(NULL, vdec_);
610     format = OH_AVFormat_Create();
611     ASSERT_NE(NULL, format);
612     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
613     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
614     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
615     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
616     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
617     OH_AVCodecAsyncCallback cb_;
618     cb_.onError = VdecError;
619     cb_.onStreamChanged = VdecFormatChanged;
620     cb_.onNeedInputData = VDecNeedInputData;
621     cb_.onNeedOutputData = VdecOutputDataReady;
622     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_SetCallback(vdec_, cb_, static_cast<void *>(signal_)));
623     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Start(vdec_));
624     for (int i = 0; i < 2; i++) {
625         unique_lock<mutex> lock(signal_->inMutex_);
__anondd8b04250302() 626         signal_->inCond_.wait(lock, []() { return signal_->inIdxQueue_.size() > 0; });
627         uint32_t index = signal_->inIdxQueue_.front();
628         OH_AVCodecBufferAttr attr;
629         attr.pts = 0;
630         attr.size = 0;
631         attr.offset = 0;
632         attr.flags = AVCODEC_BUFFER_FLAGS_EOS;
633         cout << "OH_VideoDecoder_PushInputData  index:" << index << endl;
634         if (i == 0) {
635             ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_PushInputData(vdec_, index, attr));
636         } else {
637             ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_PushInputData(vdec_, 0, attr));
638         }
639     }
640     OH_VideoDecoder_Destroy(vdec_);
641     vdec_ = nullptr;
642     signal_->inIdxQueue_.pop();
643 }
644 
645 /**
646  * @tc.number    : VIDEO_HWDEC_API_0700
647  * @tc.name      : create configure start flush flush
648  * @tc.desc      : function test
649  */
650 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0700, TestSize.Level2)
651 {
652     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
653     ASSERT_NE(NULL, vdec_);
654 
655     format = OH_AVFormat_Create();
656     ASSERT_NE(NULL, format);
657 
658     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
659     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
660     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
661     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
662 
663     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
664     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Start(vdec_));
665     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Flush(vdec_));
666     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Flush(vdec_));
667 }
668 
669 /**
670  * @tc.number    : VIDEO_HWDEC_API_0800
671  * @tc.name      : create configure start stop release release
672  * @tc.desc      : function test
673  */
674 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0800, TestSize.Level2)
675 {
676     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
677     ASSERT_NE(NULL, vdec_);
678 
679     format = OH_AVFormat_Create();
680     ASSERT_NE(NULL, format);
681 
682     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
683     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
684     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
685     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
686 
687     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
688     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Start(vdec_));
689     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Stop(vdec_));
690     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_Destroy(vdec_));
691     vdec_ = nullptr;
692     ASSERT_EQ(AV_ERR_INVALID_VAL, OH_VideoDecoder_Destroy(vdec_));
693 }
694 
695 /**
696  * @tc.number    : VIDEO_HWDEC_API_0900
697  * @tc.name      : create create
698  * @tc.desc      : function test
699  */
700 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_0900, TestSize.Level2)
701 {
702     vdec_ = OH_VideoDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_AVC);
703     ASSERT_NE(vdec_, NULL);
704     OH_AVCodec *vdec_2 = OH_VideoDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_AVC);
705     ASSERT_NE(vdec_2, NULL);
706     OH_VideoDecoder_Destroy(vdec_2);
707     vdec_2 = nullptr;
708 }
709 
710 /**
711  * @tc.number    : VIDEO_HWDEC_API_1000
712  * @tc.name      : repeat OH_VideoDecoder_SetCallback
713  * @tc.desc      : function test
714  */
715 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_1000, TestSize.Level2)
716 {
717     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
718     OH_AVCodecAsyncCallback cb_;
719     cb_.onError = VdecError;
720     cb_.onStreamChanged = VdecFormatChanged;
721     cb_.onNeedInputData = VdecInputDataReady;
722     cb_.onNeedOutputData = VdecOutputDataReady;
723     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_SetCallback(vdec_, cb_, NULL));
724     ASSERT_EQ(AV_ERR_OK, OH_VideoDecoder_SetCallback(vdec_, cb_, NULL));
725 }
726 
727 /**
728  * @tc.number    : VIDEO_HWDEC_API_1100
729  * @tc.name      : repeat OH_VideoDecoder_GetOutputDescription
730  * @tc.desc      : function test
731  */
732 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_1100, TestSize.Level2)
733 {
734     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
735     format = OH_VideoDecoder_GetOutputDescription(vdec_);
736     ASSERT_NE(NULL, format);
737     format = OH_VideoDecoder_GetOutputDescription(vdec_);
738     ASSERT_NE(NULL, format);
739 }
740 
741 /**
742  * @tc.number    : VIDEO_HWDEC_API_1200
743  * @tc.name      : repeat OH_VideoDecoder_SetParameter
744  * @tc.desc      : function test
745  */
746 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_API_1200, TestSize.Level2)
747 {
748     vdec_ = OH_VideoDecoder_CreateByName(g_codecName.c_str());
749     ASSERT_NE(NULL, vdec_);
750 
751     format = OH_AVFormat_Create();
752     ASSERT_NE(NULL, format);
753 
754     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
755     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
756     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_NV12);
757     (void)OH_AVFormat_SetDoubleValue(format, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAME_RATE);
758 
759     ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_SetParameter(vdec_, format));
760     ASSERT_EQ(AV_ERR_INVALID_STATE, OH_VideoDecoder_SetParameter(vdec_, format));
761 }
762 
763 /**
764  * @tc.number    : VIDEO_HWDEC_CAP_API_0100
765  * @tc.name      : OH_AVCodec_GetCapability
766  * @tc.desc      : function test
767  */
768 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0100, TestSize.Level2)
769 {
770     cap = OH_AVCodec_GetCapability(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false);
771     ASSERT_NE(cap, nullptr);
772 }
773 
774 /**
775  * @tc.number    : VIDEO_HWDEC_CAP_API_0200
776  * @tc.name      : OH_AVCodec_GetCapability
777  * @tc.desc      : function test
778  */
779 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0200, TestSize.Level2)
780 {
781     cap = OH_AVCodec_GetCapability(nullptr, false);
782     ASSERT_EQ(cap, nullptr);
783 }
784 
785 /**
786  * @tc.number    : VIDEO_HWDEC_CAP_API_0300
787  * @tc.name      : OH_AVCodec_GetCapability
788  * @tc.desc      : function test
789  */
790 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0300, TestSize.Level2)
791 {
792     cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
793     ASSERT_NE(cap, nullptr);
794 }
795 
796 /**
797  * @tc.number    : VIDEO_HWDEC_CAP_API_0400
798  * @tc.name      : OH_AVCodec_GetCapability
799  * @tc.desc      : function test
800  */
801 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0400, TestSize.Level2)
802 {
803     cap = OH_AVCodec_GetCapabilityByCategory(nullptr, false, HARDWARE);
804     ASSERT_EQ(cap, nullptr);
805 }
806 
807 /**
808  * @tc.number    : VIDEO_HWDEC_CAP_API_0500
809  * @tc.name      : OH_AVCodec_GetCapability
810  * @tc.desc      : function test
811  */
812 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0500, TestSize.Level2)
813 {
814     cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
815     ASSERT_NE(cap, nullptr);
816     ASSERT_TRUE(OH_AVCapability_IsHardware(cap));
817 }
818 
819 /**
820  * @tc.number    : VIDEO_HWDEC_CAP_API_0600
821  * @tc.name      : OH_AVCodec_GetCapability
822  * @tc.desc      : function test
823  */
824 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0600, TestSize.Level2)
825 {
826     ASSERT_FALSE(OH_AVCapability_IsHardware(nullptr));
827 }
828 
829 /**
830  * @tc.number    : VIDEO_HWDEC_CAP_API_0700
831  * @tc.name      : OH_AVCodec_GetCapability
832  * @tc.desc      : function test
833  */
834 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0700, TestSize.Level2)
835 {
836     ASSERT_EQ(0, OH_AVCapability_GetMaxSupportedInstances(nullptr));
837 }
838 
839 /**
840  * @tc.number    : VIDEO_HWDEC_CAP_API_0800
841  * @tc.name      : OH_AVCodec_GetCapability
842  * @tc.desc      : function test, 不同平台解码器数量不一致, 改为不校验具体数量
843  */
844 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0800, TestSize.Level2)
845 {
846     cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
847     ASSERT_NE(cap, nullptr);
848     string codec_name = OH_AVCapability_GetName(cap);
849     if (codec_name == "OMX.hisi.video.decoder.avc") {
850         ASSERT_LT(1, OH_AVCapability_GetMaxSupportedInstances(cap));
851     } else {
852         ASSERT_EQ(6, OH_AVCapability_GetMaxSupportedInstances(cap));
853     }
854 }
855 
856 /**
857  * @tc.number    : VIDEO_HWDEC_CAP_API_0900
858  * @tc.name      : OH_AVCodec_GetCapability
859  * @tc.desc      : function test
860  */
861 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_0900, TestSize.Level2)
862 {
863     cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
864     ASSERT_NE(cap, nullptr);
865     ASSERT_EQ(g_codecName, OH_AVCapability_GetName(cap));
866 }
867 
868 /**
869  * @tc.number    : VIDEO_HWDEC_CAP_API_1000
870  * @tc.name      : OH_AVCodec_GetCapability
871  * @tc.desc      : function test
872  */
873 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_1000, TestSize.Level2)
874 {
875     const char *name = OH_AVCapability_GetName(nullptr);
876     ASSERT_NE(name, nullptr);
877     ASSERT_EQ(strlen(name), 0);
878 }
879 
880 /**
881  * @tc.number    : VIDEO_HWDEC_CAP_API_3100
882  * @tc.name      : OH_AVCapability_GetVideoWidthAlignment param error
883  * @tc.desc      : api test
884  */
885 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3100, TestSize.Level2)
886 {
887     OH_AVErrCode ret = AV_ERR_OK;
888     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
889     ASSERT_NE(nullptr, capability);
890     ret = OH_AVCapability_GetVideoWidthAlignment(capability, nullptr);
891     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
892 }
893 
894 /**
895  * @tc.number    : VIDEO_HWDEC_CAP_API_3200
896  * @tc.name      : OH_AVCapability_GetVideoWidthAlignment param error
897  * @tc.desc      : api test
898  */
899 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3200, TestSize.Level2)
900 {
901     OH_AVErrCode ret = AV_ERR_OK;
902     int32_t alignment = 0;
903     ret = OH_AVCapability_GetVideoWidthAlignment(nullptr, &alignment);
904     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
905 }
906 
907 /**
908  * @tc.number    : VIDEO_HWDEC_CAP_API_3300
909  * @tc.name      : OH_AVCapability_GetVideoWidthAlignment param correct
910  * @tc.desc      : api test
911  */
912 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3300, TestSize.Level2)
913 {
914     OH_AVErrCode ret = AV_ERR_OK;
915     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
916     ASSERT_NE(nullptr, capability);
917     int32_t alignment = 0;
918     ret = OH_AVCapability_GetVideoWidthAlignment(capability, &alignment);
919     cout << "WidthAlignment " << alignment << endl;
920     ASSERT_EQ(AV_ERR_OK, ret);
921     ASSERT_GE(alignment, 0);
922 }
923 
924 /**
925  * @tc.number    : VIDEO_HWDEC_CAP_API_3400
926  * @tc.name      : OH_AVCapability_GetVideoHeightAlignment param error
927  * @tc.desc      : api test
928  */
929 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3400, TestSize.Level2)
930 {
931     OH_AVErrCode ret = AV_ERR_OK;
932     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
933     ASSERT_NE(nullptr, capability);
934     ret = OH_AVCapability_GetVideoHeightAlignment(capability, nullptr);
935     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
936 }
937 
938 /**
939  * @tc.number    : VIDEO_HWDEC_CAP_API_3500
940  * @tc.name      : OH_AVCapability_GetVideoHeightAlignment param error
941  * @tc.desc      : api test
942  */
943 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3500, TestSize.Level2)
944 {
945     OH_AVErrCode ret = AV_ERR_OK;
946     int32_t alignment = 0;
947     ret = OH_AVCapability_GetVideoHeightAlignment(nullptr, &alignment);
948     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
949 }
950 
951 /**
952  * @tc.number    : VIDEO_HWDEC_CAP_API_3600
953  * @tc.name      : OH_AVCapability_GetVideoHeightAlignment param correct
954  * @tc.desc      : api test
955  */
956 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3600, TestSize.Level2)
957 {
958     OH_AVErrCode ret = AV_ERR_OK;
959     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
960     ASSERT_NE(nullptr, capability);
961     int32_t alignment = 0;
962     ret = OH_AVCapability_GetVideoHeightAlignment(capability, &alignment);
963     cout << "HeightAlignment " << alignment << endl;
964     ASSERT_EQ(AV_ERR_OK, ret);
965     ASSERT_GE(alignment, 0);
966 }
967 
968 /**
969  * @tc.number    : VIDEO_HWDEC_CAP_API_3700
970  * @tc.name      : OH_AVCapability_GetVideoWidthRangeForHeight param error
971  * @tc.desc      : api test
972  */
973 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3700, TestSize.Level2)
974 {
975     OH_AVErrCode ret = AV_ERR_OK;
976     OH_AVRange range;
977     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
978     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
979     ASSERT_NE(nullptr, capability);
980     ret = OH_AVCapability_GetVideoWidthRangeForHeight(nullptr, DEFAULT_HEIGHT, &range);
981     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
982 }
983 
984 /**
985  * @tc.number    : VIDEO_HWDEC_CAP_API_3800
986  * @tc.name      : OH_AVCapability_GetVideoWidthRangeForHeight param error
987  * @tc.desc      : api test
988  */
989 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3800, TestSize.Level2)
990 {
991     OH_AVErrCode ret = AV_ERR_OK;
992     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
993     ASSERT_NE(nullptr, capability);
994     ret = OH_AVCapability_GetVideoWidthRangeForHeight(capability, DEFAULT_HEIGHT, nullptr);
995     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
996 }
997 
998 /**
999  * @tc.number    : VIDEO_HWDEC_CAP_API_3900
1000  * @tc.name      : OH_AVCapability_GetVideoWidthRangeForHeight param error
1001  * @tc.desc      : api test
1002  */
1003 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_3900, TestSize.Level2)
1004 {
1005     OH_AVErrCode ret = AV_ERR_OK;
1006     OH_AVRange range;
1007     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1008     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1009     ASSERT_NE(nullptr, capability);
1010     ret = OH_AVCapability_GetVideoWidthRangeForHeight(capability, 0, &range);
1011     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1012 }
1013 
1014 /**
1015  * @tc.number    : VIDEO_HWDEC_CAP_API_4000
1016  * @tc.name      : OH_AVCapability_GetVideoWidthRangeForHeight param correct
1017  * @tc.desc      : api test
1018  */
1019 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4000, TestSize.Level2)
1020 {
1021     OH_AVErrCode ret = AV_ERR_OK;
1022     OH_AVRange range;
1023     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1024     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1025     ASSERT_NE(nullptr, capability);
1026     ret = OH_AVCapability_GetVideoWidthRangeForHeight(capability, DEFAULT_HEIGHT, &range);
1027     cout << "minval=" << range.minVal << "  maxval=" << range.maxVal << endl;
1028     ASSERT_EQ(AV_ERR_OK, ret);
1029     ASSERT_GE(range.minVal, 0);
1030     ASSERT_GT(range.maxVal, 0);
1031 }
1032 
1033 /**
1034  * @tc.number    : VIDEO_HWDEC_CAP_API_4100
1035  * @tc.name      : OH_AVCapability_GetVideoHeightRangeForWidth param error
1036  * @tc.desc      : api test
1037  */
1038 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4100, TestSize.Level2)
1039 {
1040     OH_AVErrCode ret = AV_ERR_OK;
1041     OH_AVRange range;
1042     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1043     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1044     ASSERT_NE(nullptr, capability);
1045     ret = OH_AVCapability_GetVideoHeightRangeForWidth(nullptr, DEFAULT_WIDTH, &range);
1046     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1047 }
1048 
1049 /**
1050  * @tc.number    : VIDEO_HWDEC_CAP_API_4200
1051  * @tc.name      : OH_AVCapability_GetVideoHeightRangeForWidth param error
1052  * @tc.desc      : api test
1053  */
1054 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4200, TestSize.Level2)
1055 {
1056     OH_AVErrCode ret = AV_ERR_OK;
1057     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1058     ASSERT_NE(nullptr, capability);
1059     ret = OH_AVCapability_GetVideoHeightRangeForWidth(capability, DEFAULT_WIDTH, nullptr);
1060     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1061 }
1062 
1063 /**
1064  * @tc.number    : VIDEO_HWDEC_CAP_API_4300
1065  * @tc.name      : OH_AVCapability_GetVideoHeightRangeForWidth param error
1066  * @tc.desc      : api test
1067  */
1068 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4300, TestSize.Level2)
1069 {
1070     OH_AVErrCode ret = AV_ERR_OK;
1071     OH_AVRange range;
1072     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1073     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1074     ASSERT_NE(nullptr, capability);
1075     ret = OH_AVCapability_GetVideoHeightRangeForWidth(capability, 0, &range);
1076     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1077 }
1078 
1079 /**
1080  * @tc.number    : VIDEO_HWDEC_CAP_API_4400
1081  * @tc.name      : OH_AVCapability_GetVideoHeightRangeForWidth param correct
1082  * @tc.desc      : api test
1083  */
1084 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4400, TestSize.Level2)
1085 {
1086     OH_AVErrCode ret = AV_ERR_OK;
1087     OH_AVRange range;
1088     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1089     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1090     ASSERT_NE(nullptr, capability);
1091     ret = OH_AVCapability_GetVideoHeightRangeForWidth(capability, DEFAULT_WIDTH, &range);
1092     ASSERT_EQ(AV_ERR_OK, ret);
1093     cout << "minval=" << range.minVal << "  maxval=" << range.maxVal << endl;
1094     ASSERT_GE(range.minVal, 0);
1095     ASSERT_GT(range.maxVal, 0);
1096 }
1097 
1098 /**
1099  * @tc.number    : VIDEO_HWDEC_CAP_API_4500
1100  * @tc.name      : OH_AVCapability_GetVideoWidthRange param error
1101  * @tc.desc      : api test
1102  */
1103 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4500, TestSize.Level2)
1104 {
1105     OH_AVErrCode ret = AV_ERR_OK;
1106     OH_AVRange range;
1107     ret = OH_AVCapability_GetVideoWidthRange(nullptr, &range);
1108     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1109 }
1110 
1111 /**
1112  * @tc.number    : VIDEO_HWDEC_CAP_API_4600
1113  * @tc.name      : OH_AVCapability_GetVideoWidthRange param error
1114  * @tc.desc      : api test
1115  */
1116 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4600, TestSize.Level2)
1117 {
1118     OH_AVErrCode ret = AV_ERR_OK;
1119     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1120     ASSERT_NE(nullptr, capability);
1121     ret = OH_AVCapability_GetVideoWidthRange(capability, nullptr);
1122     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1123 }
1124 
1125 /**
1126  * @tc.number    : VIDEO_HWDEC_CAP_API_4700
1127  * @tc.name      : OH_AVCapability_GetVideoWidthRange param correct
1128  * @tc.desc      : api test
1129  */
1130 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4700, TestSize.Level2)
1131 {
1132     OH_AVErrCode ret = AV_ERR_OK;
1133     OH_AVRange range;
1134     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1135     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1136     ASSERT_NE(nullptr, capability);
1137     ret = OH_AVCapability_GetVideoWidthRange(capability, &range);
1138     ASSERT_EQ(AV_ERR_OK, ret);
1139     cout << "minval=" << range.minVal << "  maxval=" << range.maxVal << endl;
1140     ASSERT_GE(range.minVal, 0);
1141     ASSERT_GT(range.maxVal, 0);
1142 }
1143 
1144 /**
1145  * @tc.number    : VIDEO_HWDEC_CAP_API_4800
1146  * @tc.name      : OH_AVCapability_GetVideoHeightRange param error
1147  * @tc.desc      : api test
1148  */
1149 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4800, TestSize.Level2)
1150 {
1151     OH_AVErrCode ret = AV_ERR_OK;
1152     OH_AVRange range;
1153     ret = OH_AVCapability_GetVideoHeightRange(nullptr, &range);
1154     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1155 }
1156 
1157 /**
1158  * @tc.number    : VIDEO_HWDEC_CAP_API_4900
1159  * @tc.name      : OH_AVCapability_GetVideoHeightRange param error
1160  * @tc.desc      : api test
1161  */
1162 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_4900, TestSize.Level2)
1163 {
1164     OH_AVErrCode ret = AV_ERR_OK;
1165     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1166     ASSERT_NE(nullptr, capability);
1167     ret = OH_AVCapability_GetVideoHeightRange(capability, nullptr);
1168     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1169 }
1170 
1171 /**
1172  * @tc.number    : VIDEO_HWDEC_CAP_API_5000
1173  * @tc.name      : OH_AVCapability_GetVideoHeightRange param correct
1174  * @tc.desc      : api test
1175  */
1176 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5000, TestSize.Level2)
1177 {
1178     OH_AVErrCode ret = AV_ERR_OK;
1179     OH_AVRange widthRange;
1180     OH_AVRange heightRange;
1181     memset_s(&widthRange, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1182     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1183     ASSERT_NE(nullptr, capability);
1184     ret = OH_AVCapability_GetVideoHeightRange(capability, &heightRange);
1185     ASSERT_EQ(AV_ERR_OK, ret);
1186     cout << "minval=" << heightRange.minVal << "  maxval=" << heightRange.maxVal << endl;
1187     ASSERT_GE(heightRange.minVal, 0);
1188     ASSERT_GT(heightRange.maxVal, 0);
1189     ret = OH_AVCapability_GetVideoWidthRange(capability, &widthRange);
1190     ASSERT_EQ(AV_ERR_OK, ret);
1191     ASSERT_GE(widthRange.minVal, 0);
1192     ASSERT_GT(widthRange.maxVal, 0);
1193 }
1194 
1195 /**
1196  * @tc.number    : VIDEO_HWDEC_CAP_API_1700
1197  * @tc.name      : OH_AVCapability_GetVideoHeightRange param correct
1198  * @tc.desc      : api test
1199  */
1200 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_1700, TestSize.Level2)
1201 {
1202     OH_AVErrCode ret = AV_ERR_OK;
1203     OH_AVRange widthRange;
1204     OH_AVRange heightRange;
1205     memset_s(&widthRange, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1206     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
1207     if (capability) {
1208         ret = OH_AVCapability_GetVideoHeightRange(capability, &heightRange);
1209         ASSERT_EQ(AV_ERR_OK, ret);
1210         cout << "minval=" << heightRange.minVal << "  maxval=" << heightRange.maxVal << endl;
1211         ASSERT_GE(heightRange.minVal, 0);
1212         ASSERT_GT(heightRange.maxVal, 0);
1213         ret = OH_AVCapability_GetVideoWidthRange(capability, &widthRange);
1214         ASSERT_EQ(AV_ERR_OK, ret);
1215         ASSERT_GE(widthRange.minVal, 0);
1216         ASSERT_GT(widthRange.maxVal, 0);
1217     } else {
1218         return;
1219     }
1220 }
1221 
1222 /**
1223  * @tc.number    : VIDEO_HWDEC_CAP_API_5100
1224  * @tc.name      : OH_AVCapability_IsVideoSizeSupported param error
1225  * @tc.desc      : api test
1226  */
1227 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5100, TestSize.Level2)
1228 {
1229     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1230     ASSERT_NE(nullptr, capability);
1231     ASSERT_EQ(false, OH_AVCapability_IsVideoSizeSupported(capability, 0, DEFAULT_HEIGHT));
1232 }
1233 
1234 /**
1235  * @tc.number    : VIDEO_HWDEC_CAP_API_5200
1236  * @tc.name      : OH_AVCapability_IsVideoSizeSupported param error
1237  * @tc.desc      : api test
1238  */
1239 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5200, TestSize.Level2)
1240 {
1241     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1242     ASSERT_NE(nullptr, capability);
1243     ASSERT_EQ(false, OH_AVCapability_IsVideoSizeSupported(capability, DEFAULT_WIDTH, 0));
1244 }
1245 /**
1246  * @tc.number    : VIDEO_HWDEC_CAP_API_5300
1247  * @tc.name      : OH_AVCapability_IsVideoSizeSupported param error
1248  * @tc.desc      : api test
1249  */
1250 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5300, TestSize.Level2)
1251 {
1252     ASSERT_EQ(false, OH_AVCapability_IsVideoSizeSupported(nullptr, DEFAULT_WIDTH, DEFAULT_HEIGHT));
1253 }
1254 /**
1255  * @tc.number    : VIDEO_HWDEC_CAP_API_9400
1256  * @tc.name      : OH_AVCapability_IsVideoSizeSupported param correct
1257  * @tc.desc      : api test
1258  */
1259 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_9400, TestSize.Level2)
1260 {
1261     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1262     ASSERT_NE(nullptr, capability);
1263     OH_AVRange heightRange;
1264     OH_AVRange widthRange;
1265     ASSERT_EQ(AV_ERR_OK, OH_AVCapability_GetVideoHeightRange(capability, &heightRange));
1266     ASSERT_EQ(AV_ERR_OK, OH_AVCapability_GetVideoWidthRange(capability, &widthRange));
1267     ASSERT_EQ(false, OH_AVCapability_IsVideoSizeSupported(capability, widthRange.maxVal + 1, heightRange.maxVal + 1));
1268 }
1269 /**
1270  * @tc.number    : VIDEO_HWDEC_CAP_API_5400
1271  * @tc.name      : OH_AVCapability_IsVideoSizeSupported param correct
1272  * @tc.desc      : api test
1273  */
1274 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5400, TestSize.Level2)
1275 {
1276     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1277     ASSERT_NE(nullptr, capability);
1278     ASSERT_EQ(true, OH_AVCapability_IsVideoSizeSupported(capability, DEFAULT_WIDTH, DEFAULT_HEIGHT));
1279 }
1280 
1281 /**
1282  * @tc.number    : VIDEO_HWDEC_CAP_API_5500
1283  * @tc.name      : OH_AVCapability_GetVideoFrameRateRange param error
1284  * @tc.desc      : api test
1285  */
1286 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5500, TestSize.Level2)
1287 {
1288     OH_AVErrCode ret = AV_ERR_OK;
1289     OH_AVRange range;
1290     ret = OH_AVCapability_GetVideoFrameRateRange(nullptr, &range);
1291     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1292 }
1293 
1294 /**
1295  * @tc.number    : VIDEO_HWDEC_CAP_API_5600
1296  * @tc.name      : OH_AVCapability_GetVideoFrameRateRange param error
1297  * @tc.desc      : api test
1298  */
1299 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5600, TestSize.Level2)
1300 {
1301     OH_AVErrCode ret = AV_ERR_OK;
1302     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1303     ASSERT_NE(nullptr, capability);
1304     ret = OH_AVCapability_GetVideoFrameRateRange(capability, nullptr);
1305     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1306 }
1307 
1308 /**
1309  * @tc.number    : VIDEO_HWDEC_CAP_API_5700
1310  * @tc.name      : OH_AVCapability_GetVideoFrameRateRange param correct
1311  * @tc.desc      : api test
1312  */
1313 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5700, TestSize.Level2)
1314 {
1315     OH_AVErrCode ret = AV_ERR_OK;
1316     OH_AVRange range;
1317     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1318     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1319     ASSERT_NE(nullptr, capability);
1320     ret = OH_AVCapability_GetVideoFrameRateRange(capability, &range);
1321     ASSERT_EQ(AV_ERR_OK, ret);
1322     ASSERT_GE(range.minVal, 0);
1323     ASSERT_GT(range.maxVal, 0);
1324 }
1325 
1326 /**
1327  * @tc.number    : VIDEO_HWDEC_CAP_API_1600
1328  * @tc.name      : OH_AVCapability_GetVideoFrameRateRange param correct
1329  * @tc.desc      : api test
1330  */
1331 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_1600, TestSize.Level2)
1332 {
1333     OH_AVErrCode ret = AV_ERR_OK;
1334     OH_AVRange range;
1335     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1336     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
1337     if (capability) {
1338         ret = OH_AVCapability_GetVideoFrameRateRange(capability, &range);
1339         ASSERT_EQ(AV_ERR_OK, ret);
1340         ASSERT_GE(range.minVal, 0);
1341         ASSERT_GT(range.maxVal, 0);
1342     } else {
1343         return;
1344     }
1345 }
1346 
1347 /**
1348  * @tc.number    : VIDEO_HWDEC_CAP_API_5800
1349  * @tc.name      : OH_AVCapability_GetVideoFrameRateRangeForSize param error
1350  * @tc.desc      : api test
1351  */
1352 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5800, TestSize.Level2)
1353 {
1354     OH_AVErrCode ret = AV_ERR_OK;
1355     OH_AVRange range;
1356     ret = OH_AVCapability_GetVideoFrameRateRangeForSize(nullptr, DEFAULT_WIDTH, DEFAULT_HEIGHT, &range);
1357     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1358 }
1359 
1360 /**
1361  * @tc.number    : VIDEO_HWDEC_CAP_API_5900
1362  * @tc.name      : OH_AVCapability_GetVideoFrameRateRangeForSize param error
1363  * @tc.desc      : api test
1364  */
1365 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_5900, TestSize.Level2)
1366 {
1367     OH_AVErrCode ret = AV_ERR_OK;
1368     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1369     ASSERT_NE(nullptr, capability);
1370     ret = OH_AVCapability_GetVideoFrameRateRangeForSize(capability, DEFAULT_WIDTH, DEFAULT_HEIGHT, nullptr);
1371     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1372 }
1373 
1374 /**
1375  * @tc.number    : VIDEO_HWDEC_CAP_API_6000
1376  * @tc.name      : OH_AVCapability_GetVideoFrameRateRangeForSize param error
1377  * @tc.desc      : api test
1378  */
1379 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6000, TestSize.Level2)
1380 {
1381     OH_AVErrCode ret = AV_ERR_OK;
1382     OH_AVRange range;
1383     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1384     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1385     ASSERT_NE(nullptr, capability);
1386     ret = OH_AVCapability_GetVideoFrameRateRangeForSize(capability, 0, DEFAULT_HEIGHT, &range);
1387     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1388 }
1389 
1390 /**
1391  * @tc.number    : VIDEO_HWDEC_CAP_API_6100
1392  * @tc.name      : OH_AVCapability_GetVideoFrameRateRangeForSize param error
1393  * @tc.desc      : api test
1394  */
1395 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6100, TestSize.Level2)
1396 {
1397     OH_AVErrCode ret = AV_ERR_OK;
1398     OH_AVRange range;
1399     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1400     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1401     ASSERT_NE(nullptr, capability);
1402     ret = OH_AVCapability_GetVideoFrameRateRangeForSize(capability, DEFAULT_WIDTH, 0, &range);
1403     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1404 }
1405 
1406 /**
1407  * @tc.number    : VIDEO_HWDEC_CAP_API_6200
1408  * @tc.name      : OH_AVCapability_GetVideoFrameRateRangeForSize param correct
1409  * @tc.desc      : api test
1410  */
1411 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6200, TestSize.Level2)
1412 {
1413     OH_AVErrCode ret = AV_ERR_OK;
1414     OH_AVRange range;
1415     OH_AVRange heightRange;
1416     OH_AVRange widthRange;
1417     memset_s(&range, sizeof(OH_AVRange), 0, sizeof(OH_AVRange));
1418     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1419     ASSERT_NE(nullptr, capability);
1420     ret = OH_AVCapability_GetVideoHeightRange(capability, &heightRange);
1421     cout << "minval=" << heightRange.minVal << "  maxval=" << heightRange.maxVal << endl;
1422     ret = OH_AVCapability_GetVideoWidthRangeForHeight(capability, heightRange.maxVal, &widthRange);
1423     cout << "minval=" << widthRange.minVal << "  maxval=" << widthRange.maxVal << endl;
1424     ret = OH_AVCapability_GetVideoFrameRateRangeForSize(capability, 1280, 720, &range);
1425     ASSERT_EQ(AV_ERR_OK, ret);
1426     cout << "minval=" << range.minVal << "  maxval=" << range.maxVal << endl;
1427     ASSERT_GE(range.minVal, 0);
1428     ASSERT_GT(range.maxVal, 0);
1429     ret = OH_AVCapability_GetVideoFrameRateRangeForSize(capability, DEFAULT_WIDTH, DEFAULT_HEIGHT, &range);
1430     ASSERT_EQ(AV_ERR_OK, ret);
1431     cout << "minval=" << range.minVal << "  maxval=" << range.maxVal << endl;
1432     ASSERT_GE(range.minVal, 0);
1433     ASSERT_GT(range.maxVal, 0);
1434     ret = OH_AVCapability_GetVideoFrameRateRangeForSize(capability, widthRange.maxVal, heightRange.maxVal, &range);
1435     ASSERT_EQ(AV_ERR_OK, ret);
1436     cout << "minval=" << range.minVal << "  maxval=" << range.maxVal << endl;
1437     ASSERT_GE(range.minVal, 0);
1438     ASSERT_GT(range.maxVal, 0);
1439 }
1440 
1441 /**
1442  * @tc.number    : VIDEO_HWDEC_CAP_API_6300
1443  * @tc.name      : OH_AVCapability_AreVideoSizeAndFrameRateSupported param error
1444  * @tc.desc      : api test
1445  */
1446 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6300, TestSize.Level2)
1447 {
1448     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1449     ASSERT_NE(nullptr, capability);
1450     ASSERT_EQ(false, OH_AVCapability_AreVideoSizeAndFrameRateSupported(capability, 0, DEFAULT_HEIGHT, 30));
1451 }
1452 
1453 /**
1454  * @tc.number    : VIDEO_HWDEC_CAP_API_6400
1455  * @tc.name      : OH_AVCapability_AreVideoSizeAndFrameRateSupported param error
1456  * @tc.desc      : api test
1457  */
1458 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6400, TestSize.Level2)
1459 {
1460     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1461     ASSERT_NE(nullptr, capability);
1462     ASSERT_EQ(false, OH_AVCapability_AreVideoSizeAndFrameRateSupported(capability, DEFAULT_WIDTH, 0, 30));
1463 }
1464 
1465 /**
1466  * @tc.number    : VIDEO_HWDEC_CAP_API_6500
1467  * @tc.name      : OH_AVCapability_AreVideoSizeAndFrameRateSupported param error
1468  * @tc.desc      : api test
1469  */
1470 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6500, TestSize.Level2)
1471 {
1472     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1473     ASSERT_NE(nullptr, capability);
1474     ASSERT_EQ(false, OH_AVCapability_AreVideoSizeAndFrameRateSupported(capability, DEFAULT_WIDTH, DEFAULT_HEIGHT, 0));
1475 }
1476 
1477 /**
1478  * @tc.number    : VIDEO_HWDEC_CAP_API_6600
1479  * @tc.name      : OH_AVCapability_AreVideoSizeAndFrameRateSupported param error
1480  * @tc.desc      : api test
1481  */
1482 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6600, TestSize.Level2)
1483 {
1484     ASSERT_EQ(false, OH_AVCapability_AreVideoSizeAndFrameRateSupported(nullptr, DEFAULT_WIDTH, DEFAULT_HEIGHT, 30));
1485 }
1486 
1487 /**
1488  * @tc.number    : VIDEO_HWDEC_CAP_API_6700
1489  * @tc.name      : OH_AVCapability_AreVideoSizeAndFrameRateSupported param correct
1490  * @tc.desc      : api test
1491  */
1492 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6700, TestSize.Level2)
1493 {
1494     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1495     ASSERT_NE(nullptr, capability);
1496     ASSERT_EQ(true, OH_AVCapability_AreVideoSizeAndFrameRateSupported(capability, DEFAULT_WIDTH, DEFAULT_HEIGHT, 30));
1497 }
1498 
1499 /**
1500  * @tc.number    : VIDEO_HWDEC_CAP_API_6800
1501  * @tc.name      : OH_AVCapability_GetVideoSupportedPixelFormats param error
1502  * @tc.desc      : api test
1503  */
1504 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6800, TestSize.Level2)
1505 {
1506     OH_AVErrCode ret = AV_ERR_OK;
1507     const int32_t *pixelFormat = nullptr;
1508     uint32_t pixelFormatNum = 0;
1509     ret = OH_AVCapability_GetVideoSupportedPixelFormats(nullptr, &pixelFormat, &pixelFormatNum);
1510     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1511 }
1512 
1513 /**
1514  * @tc.number    : VIDEO_HWDEC_CAP_API_6900
1515  * @tc.name      : OH_AVCapability_GetVideoSupportedPixelFormats param error
1516  * @tc.desc      : api test
1517  */
1518 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_6900, TestSize.Level2)
1519 {
1520     OH_AVErrCode ret = AV_ERR_OK;
1521     uint32_t pixelFormatNum = 0;
1522     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1523     ASSERT_NE(nullptr, capability);
1524     ret = OH_AVCapability_GetVideoSupportedPixelFormats(capability, nullptr, &pixelFormatNum);
1525     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1526 }
1527 
1528 /**
1529  * @tc.number    : VIDEO_HWDEC_CAP_API_7000
1530  * @tc.name      : OH_AVCapability_GetVideoSupportedPixelFormats param error
1531  * @tc.desc      : api test
1532  */
1533 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7000, TestSize.Level2)
1534 {
1535     OH_AVErrCode ret = AV_ERR_OK;
1536     const int32_t *pixelFormat = nullptr;
1537     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1538     ASSERT_NE(nullptr, capability);
1539     ret = OH_AVCapability_GetVideoSupportedPixelFormats(capability, &pixelFormat, nullptr);
1540     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1541 }
1542 
1543 /**
1544  * @tc.number    : VIDEO_HWDEC_CAP_API_7100
1545  * @tc.name      : OH_AVCapability_GetVideoSupportedPixelFormats param correct
1546  * @tc.desc      : api test
1547  */
1548 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7100, TestSize.Level2)
1549 {
1550     OH_AVErrCode ret = AV_ERR_OK;
1551     const int32_t *pixelFormat = nullptr;
1552     uint32_t pixelFormatNum = 0;
1553     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1554     ASSERT_NE(nullptr, capability);
1555     ret = OH_AVCapability_GetVideoSupportedPixelFormats(capability, &pixelFormat, &pixelFormatNum);
1556     ASSERT_NE(nullptr, pixelFormat);
1557     ASSERT_GT(pixelFormatNum, 0);
1558     ASSERT_EQ(AV_ERR_OK, ret);
1559     for (int i = 0; i < pixelFormatNum; i++) {
1560         vdec_ = OH_VideoDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_AVC);
1561         ASSERT_NE(nullptr, vdec_);
1562         format = OH_AVFormat_Create();
1563         ASSERT_NE(nullptr, format);
1564         (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
1565         (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
1566         EXPECT_GE(pixelFormat[i], 0);
1567         (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, pixelFormat[i]);
1568         EXPECT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
1569         OH_AVFormat_Destroy(format);
1570         OH_VideoDecoder_Destroy(vdec_);
1571     }
1572     vdec_ = OH_VideoDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_AVC);
1573     ASSERT_NE(nullptr, vdec_);
1574     format = OH_AVFormat_Create();
1575     ASSERT_NE(nullptr, format);
1576     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
1577     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
1578     (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_RGBA + AV_PIXEL_FORMAT_RGBA);
1579     ASSERT_NE(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
1580 }
1581 
1582 /**
1583  * @tc.number    : VIDEO_HWDEC_CAP_API_1200
1584  * @tc.name      : OH_AVCapability_GetVideoSupportedPixelFormats param correct
1585  * @tc.desc      : api test
1586  */
1587 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_1200, TestSize.Level2)
1588 {
1589     OH_AVErrCode ret = AV_ERR_OK;
1590     const int32_t *pixelFormat = nullptr;
1591     uint32_t pixelFormatNum = 0;
1592     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
1593     if (capability) {
1594          ret = OH_AVCapability_GetVideoSupportedPixelFormats(capability, &pixelFormat, &pixelFormatNum);
1595         ASSERT_NE(nullptr, pixelFormat);
1596         ASSERT_GT(pixelFormatNum, 0);
1597         ASSERT_EQ(AV_ERR_OK, ret);
1598         for (int i = 0; i < pixelFormatNum; i++) {
1599             vdec_ = OH_VideoDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_HEVC);
1600             ASSERT_NE(nullptr, vdec_);
1601             format = OH_AVFormat_Create();
1602             ASSERT_NE(nullptr, format);
1603             (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
1604             (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
1605             EXPECT_GE(pixelFormat[i], 0);
1606             (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, pixelFormat[i]);
1607             EXPECT_EQ(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
1608             OH_AVFormat_Destroy(format);
1609             OH_VideoDecoder_Destroy(vdec_);
1610         }
1611         vdec_ = OH_VideoDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_HEVC);
1612         ASSERT_NE(nullptr, vdec_);
1613         format = OH_AVFormat_Create();
1614         ASSERT_NE(nullptr, format);
1615         (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_WIDTH, DEFAULT_WIDTH);
1616         (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
1617         (void)OH_AVFormat_SetIntValue(format, OH_MD_KEY_PIXEL_FORMAT, AV_PIXEL_FORMAT_RGBA + AV_PIXEL_FORMAT_RGBA);
1618         ASSERT_NE(AV_ERR_OK, OH_VideoDecoder_Configure(vdec_, format));
1619     } else {
1620         return;
1621     }
1622 }
1623 
1624 /**
1625  * @tc.number    : VIDEO_HWDEC_CAP_API_7200
1626  * @tc.name      : OH_AVCapability_GetSupportedProfiles param error
1627  * @tc.desc      : api test
1628  */
1629 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7200, TestSize.Level2)
1630 {
1631     OH_AVErrCode ret = AV_ERR_OK;
1632     const int32_t *profiles = nullptr;
1633     uint32_t profileNum = 0;
1634     ret = OH_AVCapability_GetSupportedProfiles(nullptr, &profiles, &profileNum);
1635     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1636 }
1637 
1638 /**
1639  * @tc.number    : VIDEO_HWDEC_CAP_API_7300
1640  * @tc.name      : OH_AVCapability_GetSupportedProfiles param error
1641  * @tc.desc      : api test
1642  */
1643 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7300, TestSize.Level2)
1644 {
1645     OH_AVErrCode ret = AV_ERR_OK;
1646     uint32_t profileNum = 0;
1647     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1648     ASSERT_NE(nullptr, capability);
1649     ret = OH_AVCapability_GetSupportedProfiles(capability, nullptr, &profileNum);
1650     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1651 }
1652 
1653 /**
1654  * @tc.number    : VIDEO_HWDEC_CAP_API_7400
1655  * @tc.name      : OH_AVCapability_GetSupportedProfiles param error
1656  * @tc.desc      : api test
1657  */
1658 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7400, TestSize.Level2)
1659 {
1660     OH_AVErrCode ret = AV_ERR_OK;
1661     const int32_t *profiles = nullptr;
1662     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1663     ASSERT_NE(nullptr, capability);
1664     ret = OH_AVCapability_GetSupportedProfiles(capability, &profiles, nullptr);
1665     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1666 }
1667 
1668 /**
1669  * @tc.number    : VIDEO_HWDEC_CAP_API_7500
1670  * @tc.name      : OH_AVCapability_GetSupportedProfiles param correct
1671  * @tc.desc      : api test
1672  */
1673 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7500, TestSize.Level2)
1674 {
1675     OH_AVErrCode ret = AV_ERR_OK;
1676     const int32_t *profiles = nullptr;
1677     uint32_t profileNum = 0;
1678     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1679     ASSERT_NE(nullptr, capability);
1680     ret = OH_AVCapability_GetSupportedProfiles(capability, &profiles, &profileNum);
1681     ASSERT_EQ(AV_ERR_OK, ret);
1682     ASSERT_GT(profileNum, 0);
1683     ASSERT_NE(nullptr, profiles);
1684     for (int i = 0; i < profileNum; i++) {
1685         EXPECT_GE(profiles[i], 0);
1686     }
1687 }
1688 
1689 /**
1690  * @tc.number    : VIDEO_HWDEC_CAP_API_1300
1691  * @tc.name      : OH_AVCapability_GetSupportedProfiles param correct
1692  * @tc.desc      : api test
1693  */
1694 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_1300, TestSize.Level2)
1695 {
1696     OH_AVErrCode ret = AV_ERR_OK;
1697     const int32_t *profiles = nullptr;
1698     uint32_t profileNum = 0;
1699     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
1700     if (capability) {
1701         ret = OH_AVCapability_GetSupportedProfiles(capability, &profiles, &profileNum);
1702         ASSERT_EQ(AV_ERR_OK, ret);
1703         ASSERT_GT(profileNum, 0);
1704         ASSERT_NE(nullptr, profiles);
1705         for (int i = 0; i < profileNum; i++) {
1706             EXPECT_GE(profiles[i], 0);
1707         }
1708     } else {
1709         return;
1710     }
1711 
1712 }
1713 
1714 /**
1715  * @tc.number    : VIDEO_HWDEC_CAP_API_7600
1716  * @tc.name      : OH_AVCapability_GetSupportedLevelsForProfile param error
1717  * @tc.desc      : api test
1718  */
1719 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7600, TestSize.Level2)
1720 {
1721     OH_AVErrCode ret = AV_ERR_OK;
1722     const int32_t *levels = nullptr;
1723     uint32_t levelNum = 0;
1724     ret = OH_AVCapability_GetSupportedLevelsForProfile(nullptr, AVC_PROFILE_BASELINE, &levels, &levelNum);
1725     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1726 }
1727 
1728 /**
1729  * @tc.number    : VIDEO_HWDEC_CAP_API_7700
1730  * @tc.name      : OH_AVCapability_GetSupportedLevelsForProfile param error
1731  * @tc.desc      : api test
1732  */
1733 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7700, TestSize.Level2)
1734 {
1735     OH_AVErrCode ret = AV_ERR_OK;
1736     const int32_t *levels = nullptr;
1737     uint32_t levelNum = 0;
1738     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1739     ASSERT_NE(nullptr, capability);
1740     ret = OH_AVCapability_GetSupportedLevelsForProfile(capability, 1, &levels, &levelNum);
1741     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1742 }
1743 
1744 /**
1745  * @tc.number    : VIDEO_HWDEC_CAP_API_7800
1746  * @tc.name      : OH_AVCapability_GetSupportedLevelsForProfile param error
1747  * @tc.desc      : api test
1748  */
1749 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7800, TestSize.Level2)
1750 {
1751     OH_AVErrCode ret = AV_ERR_OK;
1752     uint32_t levelNum = 0;
1753     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1754     ASSERT_NE(nullptr, capability);
1755     ret = OH_AVCapability_GetSupportedLevelsForProfile(capability, AVC_PROFILE_BASELINE, nullptr, &levelNum);
1756     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1757 }
1758 
1759 /**
1760  * @tc.number    : VIDEO_HWDEC_CAP_API_7900
1761  * @tc.name      : OH_AVCapability_GetSupportedLevelsForProfile param error
1762  * @tc.desc      : api test
1763  */
1764 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_7900, TestSize.Level2)
1765 {
1766     OH_AVErrCode ret = AV_ERR_OK;
1767     const int32_t *levels = nullptr;
1768     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1769     ASSERT_NE(nullptr, capability);
1770     ret = OH_AVCapability_GetSupportedLevelsForProfile(capability, AVC_PROFILE_BASELINE, &levels, nullptr);
1771     ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
1772 }
1773 
1774 /**
1775  * @tc.number    : VIDEO_HWDEC_CAP_API_8000
1776  * @tc.name      : OH_AVCapability_GetSupportedLevelsForProfile param correct
1777  * @tc.desc      : api test
1778  */
1779 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_8000, TestSize.Level2)
1780 {
1781     OH_AVErrCode ret = AV_ERR_OK;
1782     const int32_t *levels = nullptr;
1783     uint32_t levelNum = 0;
1784     const int32_t *profiles = nullptr;
1785     uint32_t profileNum = 0;
1786     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1787     ASSERT_NE(nullptr, capability);
1788     ret = OH_AVCapability_GetSupportedProfiles(capability, &profiles, &profileNum);
1789     ASSERT_EQ(AV_ERR_OK, ret);
1790     ASSERT_GT(profileNum, 0);
1791     ASSERT_NE(nullptr, profiles);
1792     for (int i = 0; i < profileNum; i++) {
1793         EXPECT_GE(profiles[i], 0);
1794         ret = OH_AVCapability_GetSupportedLevelsForProfile(capability, profiles[i], &levels, &levelNum);
1795         ASSERT_EQ(AV_ERR_OK, ret);
1796         ASSERT_NE(nullptr, levels);
1797         EXPECT_GT(levelNum, 0);
1798         for (int j = 0; j < levelNum; j++) {
1799             EXPECT_GE(levels[j], 0);
1800         }
1801     }
1802 }
1803 
1804 /**
1805  * @tc.number    : VIDEO_HWDEC_CAP_API_1400
1806  * @tc.name      : OH_AVCapability_GetSupportedLevelsForProfile param correct
1807  * @tc.desc      : api test
1808  */
1809 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_1400, TestSize.Level2)
1810 {
1811     OH_AVErrCode ret = AV_ERR_OK;
1812     const int32_t *levels = nullptr;
1813     uint32_t levelNum = 0;
1814     uint32_t profileNum = 0;
1815     const int32_t *profiles = nullptr;
1816     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
1817     if (capability) {
1818         ret = OH_AVCapability_GetSupportedProfiles(capability, &profiles, &profileNum);
1819         ASSERT_EQ(AV_ERR_OK, ret);
1820         ASSERT_GT(profileNum, 0);
1821         ASSERT_NE(nullptr, profiles);
1822         for (int i = 0; i < profileNum; i++) {
1823             ASSERT_GE(profiles[i], 0);
1824             ret = OH_AVCapability_GetSupportedLevelsForProfile(capability, profiles[i], &levels, &levelNum);
1825             ASSERT_EQ(AV_ERR_OK, ret);
1826             ASSERT_NE(nullptr, levels);
1827             ASSERT_GT(levelNum, 0);
1828             for (int j = 0; j < levelNum; j++) {
1829                 EXPECT_GE(levels[j], 0);
1830             }
1831         }
1832     } else {
1833         return;
1834     }
1835 
1836 }
1837 
1838 /**
1839  * @tc.number    : VIDEO_HWDEC_CAP_API_8100
1840  * @tc.name      : OH_AVCapability_AreProfileAndLevelSupported param error
1841  * @tc.desc      : api test
1842  */
1843 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_8100, TestSize.Level2)
1844 {
1845     ASSERT_EQ(false, OH_AVCapability_AreProfileAndLevelSupported(nullptr, AVC_PROFILE_BASELINE, 1));
1846 }
1847 
1848 /**
1849  * @tc.number    : VIDEO_HWDEC_CAP_API_8200
1850  * @tc.name      : OH_AVCapability_AreProfileAndLevelSupported param error
1851  * @tc.desc      : api test
1852  */
1853 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_8200, TestSize.Level2)
1854 {
1855     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1856     ASSERT_NE(nullptr, capability);
1857     ASSERT_EQ(false, OH_AVCapability_AreProfileAndLevelSupported(capability, 1, 1));
1858 }
1859 
1860 /**
1861  * @tc.number    : VIDEO_HWDEC_CAP_API_8300
1862  * @tc.name      : OH_AVCapability_AreProfileAndLevelSupported param correct
1863  * @tc.desc      : api test
1864  */
1865 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_CAP_API_8300, TestSize.Level2)
1866 {
1867     OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
1868     ASSERT_NE(nullptr, capability);
1869     ASSERT_EQ(true, OH_AVCapability_AreProfileAndLevelSupported(capability, AVC_PROFILE_BASELINE, 1));
1870 }
1871 
1872 /**
1873  * @tc.number    : VIDEO_HWDEC_ATTIME_API_0010
1874  * @tc.name      : OH_VideoDecoder_RenderOutputBufferAtTime use renderTimestampNs of < 0
1875  * @tc.desc      : api test
1876  */
1877 HWTEST_F(HwdecApiNdkTest, VIDEO_HWDEC_ATTIME_API_0010, TestSize.Level1)
1878 {
1879     shared_ptr<VDecAPI11Sample> vDecSample = make_shared<VDecAPI11Sample>();
1880     const char *INP_DIR_720_30 = "/data/test/media/1280_720_30_10Mb.h264";
1881     vDecSample->INP_DIR = INP_DIR_720_30;
1882     vDecSample->SF_OUTPUT = true;
1883     vDecSample->DEFAULT_WIDTH = 1280;
1884     vDecSample->DEFAULT_HEIGHT = 720;
1885     vDecSample->DEFAULT_FRAME_RATE = 30;
1886     vDecSample->rsAtTime = true;
1887     vDecSample->isAPI = true;
1888     ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName));
1889     vDecSample->WaitForEOS();
1890     ASSERT_EQ(AV_ERR_INVALID_VAL, vDecSample->errCount);
1891 }
1892 } // namespace