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