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 <cstdio>
17 #include <iostream>
18 #include <atomic>
19 #include <fstream>
20 #include <mutex>
21 #include <queue>
22 #include <string>
23 #include <thread>
24
25 #include "gtest/gtest.h"
26 #include "videodec_sample.h"
27 using namespace std;
28 using namespace OHOS;
29 using namespace OHOS::Media;
30 using namespace testing::ext;
31 namespace OHOS {
32 namespace Media {
33 class SwdecStateNdkTest : public testing::Test {
34 public:
35 // SetUpTestCase: Called before all test cases
36 static void SetUpTestCase(void);
37 // TearDownTestCase: Called after all test case
38 static void TearDownTestCase(void);
39 // SetUp: Called before each test cases
40 void SetUp(void);
41 // TearDown: Called after each test cases
42 void TearDown(void);
43
44 protected:
45 const ::testing::TestInfo *testInfo_ = nullptr;
46 bool createCodecSuccess_ = false;
47 };
48
SetUpTestCase(void)49 void SwdecStateNdkTest::SetUpTestCase(void) {}
TearDownTestCase(void)50 void SwdecStateNdkTest::TearDownTestCase(void) {}
51 VDecNdkSample *vDecSample = NULL;
52
SetUp(void)53 void SwdecStateNdkTest::SetUp(void)
54 {
55 vDecSample = new VDecNdkSample();
56 string codeName = "OH.Media.Codec.Decoder.Video.AVC";
57 int32_t ret = vDecSample->CreateVideoDecoder(codeName);
58 ASSERT_EQ(AV_ERR_OK, ret);
59 ret = vDecSample->SetVideoDecoderCallback();
60 ASSERT_EQ(AV_ERR_OK, ret);
61 ret = vDecSample->ConfigureVideoDecoder();
62 ASSERT_EQ(AV_ERR_OK, ret);
63 vDecSample->INP_DIR = "/data/test/media/1920_1080_10_30Mb.h264";
64 }
65
TearDown(void)66 void SwdecStateNdkTest::TearDown(void)
67 {
68 vDecSample->Release();
69 delete vDecSample;
70 vDecSample = nullptr;
71 }
72 } // namespace Media
73 } // namespace OHOS
74
75 namespace {
76 /**
77 * @tc.number : VIDEO_SWDEC_STATE_0100
78 * @tc.name : create-configure-error
79 * @tc.desc : function test
80 */
81 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0100, TestSize.Level2)
82 {
83 int32_t ret = vDecSample->Flush();
84 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
85 ret = vDecSample->SetVideoDecoderCallback();
86 ASSERT_EQ(AV_ERR_OK, ret);
87 }
88
89 /**
90 * @tc.number : VIDEO_SWDEC_STATE_0101
91 * @tc.name : create-configure-stop
92 * @tc.desc : function test
93 */
94 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0101, TestSize.Level2)
95 {
96 int32_t ret = vDecSample->Stop();
97 ASSERT_EQ(AV_ERR_OK, ret);
98 }
99
100 /**
101 * @tc.number : VIDEO_SWDEC_STATE_0200
102 * @tc.name : create-configure-start-stop-start
103 * @tc.desc : function test
104 */
105 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0200, TestSize.Level2)
106 {
107 int32_t ret = vDecSample->Start();
108 ASSERT_EQ(AV_ERR_OK, ret);
109 ret = vDecSample->Stop();
110 ASSERT_EQ(AV_ERR_OK, ret);
111 ret = vDecSample->Start();
112 ASSERT_EQ(AV_ERR_OK, ret);
113 }
114
115 /**
116 * @tc.number : VIDEO_SWDEC_STATE_0300
117 * @tc.name : create-configure-start-stop-release
118 * @tc.desc : function test
119 */
120 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0300, TestSize.Level2)
121 {
122 int32_t ret = vDecSample->Start();
123 ASSERT_EQ(AV_ERR_OK, ret);
124 ret = vDecSample->Stop();
125 ASSERT_EQ(AV_ERR_OK, ret);
126 ret = vDecSample->Release();
127 ASSERT_EQ(AV_ERR_OK, ret);
128 }
129
130 /**
131 * @tc.number : VIDEO_SWDEC_STATE_0400
132 * @tc.name : create-configure-start-stop-reset
133 * @tc.desc : function test
134 */
135 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0400, TestSize.Level2)
136 {
137 int32_t ret = vDecSample->Start();
138 ASSERT_EQ(AV_ERR_OK, ret);
139 ret = vDecSample->Stop();
140 ASSERT_EQ(AV_ERR_OK, ret);
141 ret = vDecSample->Reset();
142 ASSERT_EQ(AV_ERR_OK, ret);
143 }
144
145 /**
146 * @tc.number : VIDEO_SWDEC_STATE_0500
147 * @tc.name : create-configure-start-stop-error
148 * @tc.desc : function test
149 */
150 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0500, TestSize.Level2)
151 {
152 int32_t ret = vDecSample->Start();
153 ASSERT_EQ(AV_ERR_OK, ret);
154 ret = vDecSample->Stop();
155 ASSERT_EQ(AV_ERR_OK, ret);
156 ret = vDecSample->Flush();
157 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
158 ret = vDecSample->SetVideoDecoderCallback();
159 ASSERT_EQ(AV_ERR_OK, ret);
160 }
161
162 /**
163 * @tc.number : VIDEO_SWDEC_STATE_0600
164 * @tc.name : create-configure-start-EOS-stop-start
165 * @tc.desc : function test
166 */
167 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0600, TestSize.Level2)
168 {
169 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
170 int32_t ret = vDecSample->StartVideoDecoder();
171 ASSERT_EQ(AV_ERR_OK, ret);
172 vDecSample->WaitForEOS();
173 ASSERT_EQ(AV_ERR_OK, ret);
174 ASSERT_EQ(0, vDecSample->errCount);
175 ret = vDecSample->Stop();
176 ASSERT_EQ(AV_ERR_OK, ret);
177 ret = vDecSample->Start();
178 ASSERT_EQ(AV_ERR_OK, ret);
179 }
180
181 /**
182 * @tc.number : VIDEO_SWDEC_STATE_0700
183 * @tc.name : create-configure-start-EOS-stop-release
184 * @tc.desc : function test
185 */
186 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0700, TestSize.Level2)
187 {
188 int32_t ret = vDecSample->StartVideoDecoder();
189 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
190 vDecSample->WaitForEOS();
191 ASSERT_EQ(AV_ERR_OK, ret);
192 ASSERT_EQ(0, vDecSample->errCount);
193 ret = vDecSample->Stop();
194 ASSERT_EQ(AV_ERR_OK, ret);
195 ret = vDecSample->Release();
196 ASSERT_EQ(AV_ERR_OK, ret);
197 }
198
199 /**
200 * @tc.number : VIDEO_SWDEC_STATE_0800
201 * @tc.name : create-configure-start-EOS-stop-reset
202 * @tc.desc : function test
203 */
204 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0800, TestSize.Level2)
205 {
206 int32_t ret = vDecSample->StartVideoDecoder();
207 ASSERT_EQ(AV_ERR_OK, ret);
208 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
209 vDecSample->WaitForEOS();
210 ASSERT_EQ(AV_ERR_OK, ret);
211 ASSERT_EQ(0, vDecSample->errCount);
212 ret = vDecSample->Stop();
213 ASSERT_EQ(AV_ERR_OK, ret);
214 ret = vDecSample->Reset();
215 ASSERT_EQ(AV_ERR_OK, ret);
216 }
217
218 /**
219 * @tc.number : VIDEO_SWDEC_STATE_0900
220 * @tc.name : create-configure-start-EOS-flush
221 * @tc.desc : function test
222 */
223 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_0900, TestSize.Level2)
224 {
225 int32_t ret = vDecSample->StartVideoDecoder();
226 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
227 vDecSample->WaitForEOS();
228 ASSERT_EQ(AV_ERR_OK, ret);
229 ASSERT_EQ(0, vDecSample->errCount);
230 ret = vDecSample->Flush();
231 ASSERT_EQ(AV_ERR_OK, ret);
232 }
233
234 /**
235 * @tc.number : VIDEO_SWDEC_STATE_1000
236 * @tc.name : create-configure-start-EOS-flush-start
237 * @tc.desc : function test
238 */
239 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1000, TestSize.Level2)
240 {
241 int32_t ret = vDecSample->StartVideoDecoder();
242 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
243 vDecSample->WaitForEOS();
244 ASSERT_EQ(AV_ERR_OK, ret);
245 ASSERT_EQ(0, vDecSample->errCount);
246 ret = vDecSample->Flush();
247 ASSERT_EQ(AV_ERR_OK, ret);
248 ret = vDecSample->Start();
249 ASSERT_EQ(AV_ERR_OK, ret);
250 }
251
252 /**
253 * @tc.number : VIDEO_SWDEC_STATE_1100
254 * @tc.name : create-configure-start-EOS-flush-stop
255 * @tc.desc : function test
256 */
257 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1100, TestSize.Level2)
258 {
259 int32_t ret = vDecSample->StartVideoDecoder();
260 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
261 vDecSample->WaitForEOS();
262 ASSERT_EQ(AV_ERR_OK, ret);
263 ASSERT_EQ(0, vDecSample->errCount);
264 ret = vDecSample->Flush();
265 ASSERT_EQ(AV_ERR_OK, ret);
266 ret = vDecSample->Stop();
267 ASSERT_EQ(AV_ERR_OK, ret);
268 }
269
270 /**
271 * @tc.number : VIDEO_SWDEC_STATE_1200
272 * @tc.name : create-configure-start-EOS-flush-reset
273 * @tc.desc : function test
274 */
275 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1200, TestSize.Level2)
276 {
277 int32_t ret = vDecSample->StartVideoDecoder();
278 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
279 vDecSample->WaitForEOS();
280 ASSERT_EQ(AV_ERR_OK, ret);
281 ASSERT_EQ(0, vDecSample->errCount);
282 ret = vDecSample->Flush();
283 ASSERT_EQ(AV_ERR_OK, ret);
284 ret = vDecSample->Reset();
285 ASSERT_EQ(AV_ERR_OK, ret);
286 }
287
288 /**
289 * @tc.number : VIDEO_SWDEC_STATE_1300
290 * @tc.name : create-configure-start-EOS-flush-error
291 * @tc.desc : function test
292 */
293 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1300, TestSize.Level2)
294 {
295 int32_t ret = vDecSample->StartVideoDecoder();
296 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
297 vDecSample->WaitForEOS();
298 ASSERT_EQ(AV_ERR_OK, ret);
299 ASSERT_EQ(0, vDecSample->errCount);
300 ret = vDecSample->Flush();
301 ASSERT_EQ(AV_ERR_OK, ret);
302 ret = vDecSample->Release();
303 ASSERT_EQ(AV_ERR_OK, ret);
304 ret = vDecSample->ConfigureVideoDecoder();
305 ASSERT_EQ(AV_ERR_INVALID_VAL, ret);
306 }
307
308 /**
309 * @tc.number : VIDEO_SWDEC_STATE_1400
310 * @tc.name : create-configure-start-EOS-reset-configure
311 * @tc.desc : function test
312 */
313 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1400, TestSize.Level2)
314 {
315 int32_t ret = vDecSample->StartVideoDecoder();
316 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
317 vDecSample->WaitForEOS();
318 ASSERT_EQ(AV_ERR_OK, ret);
319 ASSERT_EQ(0, vDecSample->errCount);
320 ret = vDecSample->Reset();
321 ASSERT_EQ(AV_ERR_OK, ret);
322 ret = vDecSample->ConfigureVideoDecoder();
323 ASSERT_EQ(AV_ERR_OK, ret);
324 }
325
326 /**
327 * @tc.number : VIDEO_SWDEC_STATE_1500
328 * @tc.name : create-configure-start-EOS-reset-release
329 * @tc.desc : function test
330 */
331 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1500, TestSize.Level2)
332 {
333 int32_t ret = vDecSample->StartVideoDecoder();
334 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
335 vDecSample->WaitForEOS();
336 ASSERT_EQ(AV_ERR_OK, ret);
337 ASSERT_EQ(0, vDecSample->errCount);
338 ret = vDecSample->Reset();
339 ASSERT_EQ(AV_ERR_OK, ret);
340 ret = vDecSample->Release();
341 ASSERT_EQ(AV_ERR_OK, ret);
342 }
343
344 /**
345 * @tc.number : VIDEO_SWDEC_STATE_1600
346 * @tc.name : create-configure-start-EOS-reset-error
347 * @tc.desc : function test
348 */
349 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1600, TestSize.Level2)
350 {
351 int32_t ret = vDecSample->StartVideoDecoder();
352 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
353 vDecSample->WaitForEOS();
354 ASSERT_EQ(AV_ERR_OK, ret);
355 ASSERT_EQ(0, vDecSample->errCount);
356 ret = vDecSample->Reset();
357 ASSERT_EQ(AV_ERR_OK, ret);
358 ret = vDecSample->Start();
359 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
360 ret = vDecSample->Stop();
361 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
362 ret = vDecSample->Flush();
363 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
364 }
365
366 /**
367 * @tc.number : VIDEO_SWDEC_STATE_1700
368 * @tc.name : create-configure-start-flush-start-flush
369 * @tc.desc : function test
370 */
371 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1700, TestSize.Level2)
372 {
373 int32_t ret = vDecSample->Start();
374 ASSERT_EQ(AV_ERR_OK, ret);
375 ret = vDecSample->Flush();
376 ASSERT_EQ(AV_ERR_OK, ret);
377 ret = vDecSample->Start();
378 ASSERT_EQ(AV_ERR_OK, ret);
379 ret = vDecSample->Flush();
380 ASSERT_EQ(AV_ERR_OK, ret);
381 }
382
383 /**
384 * @tc.number : VIDEO_SWDEC_STATE_1800
385 * @tc.name : create-configure-start-flush-start-eos
386 * @tc.desc : function test
387 */
388 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1800, TestSize.Level2)
389 {
390 int32_t ret = vDecSample->Start();
391 ASSERT_EQ(AV_ERR_OK, ret);
392 ret = vDecSample->Flush();
393 ASSERT_EQ(AV_ERR_OK, ret);
394 ret = vDecSample->Start();
395 ASSERT_EQ(AV_ERR_OK, ret);
396 ret = vDecSample->state_EOS();
397 ASSERT_EQ(AV_ERR_OK, ret);
398 }
399
400 /**
401 * @tc.number : VIDEO_SWDEC_STATE_1900
402 * @tc.name : create-configure-start-flush-start-stop
403 * @tc.desc : function test
404 */
405 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_1900, TestSize.Level2)
406 {
407 int32_t ret = vDecSample->Start();
408 ASSERT_EQ(AV_ERR_OK, ret);
409 ret = vDecSample->Flush();
410 ASSERT_EQ(AV_ERR_OK, ret);
411 ret = vDecSample->Start();
412 ASSERT_EQ(AV_ERR_OK, ret);
413 ret = vDecSample->Stop();
414 ASSERT_EQ(AV_ERR_OK, ret);
415 }
416
417 /**
418 * @tc.number : VIDEO_SWDEC_STATE_2000
419 * @tc.name : create-configure-start-flush-start-reset
420 * @tc.desc : function test
421 */
422 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2000, TestSize.Level2)
423 {
424 int32_t ret = vDecSample->Start();
425 ASSERT_EQ(AV_ERR_OK, ret);
426 ret = vDecSample->Flush();
427 ASSERT_EQ(AV_ERR_OK, ret);
428 ret = vDecSample->Start();
429 ASSERT_EQ(AV_ERR_OK, ret);
430 ret = vDecSample->Reset();
431 ASSERT_EQ(AV_ERR_OK, ret);
432 }
433
434 /**
435 * @tc.number : VIDEO_SWDEC_STATE_2100
436 * @tc.name : create-configure-start-flush-start-error
437 * @tc.desc : function test
438 */
439 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2100, TestSize.Level2)
440 {
441 int32_t ret = vDecSample->Start();
442 ASSERT_EQ(AV_ERR_OK, ret);
443 ret = vDecSample->Flush();
444 ASSERT_EQ(AV_ERR_OK, ret);
445 ret = vDecSample->Start();
446 ASSERT_EQ(AV_ERR_OK, ret);
447 ret = vDecSample->ConfigureVideoDecoder();
448 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
449 ret = vDecSample->SetVideoDecoderCallback();
450 ASSERT_EQ(AV_ERR_OK, ret);
451 ret = vDecSample->Release();
452 ASSERT_EQ(AV_ERR_OK, ret);
453 }
454
455 /**
456 * @tc.number : VIDEO_SWDEC_STATE_2200
457 * @tc.name : create-configure-start-flush-start
458 * @tc.desc : function test
459 */
460 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2200, TestSize.Level2)
461 {
462 int32_t ret = vDecSample->Start();
463 ASSERT_EQ(AV_ERR_OK, ret);
464 ret = vDecSample->Flush();
465 ASSERT_EQ(AV_ERR_OK, ret);
466 ret = vDecSample->Stop();
467 ASSERT_EQ(AV_ERR_OK, ret);
468 ret = vDecSample->Start();
469 ASSERT_EQ(AV_ERR_OK, ret);
470 }
471
472 /**
473 * @tc.number : VIDEO_SWDEC_STATE_2300
474 * @tc.name : create-configure-start-flush-stop-start
475 * @tc.desc : function test
476 */
477 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2300, TestSize.Level2)
478 {
479 int32_t ret = vDecSample->Start();
480 ASSERT_EQ(AV_ERR_OK, ret);
481 ret = vDecSample->Flush();
482 ASSERT_EQ(AV_ERR_OK, ret);
483 ret = vDecSample->Stop();
484 ASSERT_EQ(AV_ERR_OK, ret);
485 ret = vDecSample->Release();
486 ASSERT_EQ(AV_ERR_OK, ret);
487 }
488
489 /**
490 * @tc.number : VIDEO_SWDEC_STATE_2400
491 * @tc.name : create-configure-start-flush-stop-reset
492 * @tc.desc : function test
493 */
494 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2400, TestSize.Level2)
495 {
496 int32_t ret = vDecSample->Start();
497 ASSERT_EQ(AV_ERR_OK, ret);
498 ret = vDecSample->Flush();
499 ASSERT_EQ(AV_ERR_OK, ret);
500 ret = vDecSample->Stop();
501 ASSERT_EQ(AV_ERR_OK, ret);
502 ret = vDecSample->Reset();
503 ASSERT_EQ(AV_ERR_OK, ret);
504 }
505
506 /**
507 * @tc.number : VIDEO_SWDEC_STATE_2500
508 * @tc.name : create-configure-start-flush-stop-error
509 * @tc.desc : function test
510 */
511 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2500, TestSize.Level2)
512 {
513 int32_t ret = vDecSample->Start();
514 ASSERT_EQ(AV_ERR_OK, ret);
515 ret = vDecSample->Flush();
516 ASSERT_EQ(AV_ERR_OK, ret);
517 ret = vDecSample->Stop();
518 ASSERT_EQ(AV_ERR_OK, ret);
519 ret = vDecSample->Flush();
520 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
521 ret = vDecSample->SetVideoDecoderCallback();
522 ASSERT_EQ(AV_ERR_OK, ret);
523 }
524
525 /**
526 * @tc.number : VIDEO_SWDEC_STATE_2600
527 * @tc.name : create-configure-start-flush-reset-configure
528 * @tc.desc : function test
529 */
530 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2600, TestSize.Level2)
531 {
532 int32_t ret = vDecSample->Start();
533 ASSERT_EQ(AV_ERR_OK, ret);
534 ret = vDecSample->Flush();
535 ASSERT_EQ(AV_ERR_OK, ret);
536 ret = vDecSample->Reset();
537 ASSERT_EQ(AV_ERR_OK, ret);
538 ret = vDecSample->ConfigureVideoDecoder();
539 ASSERT_EQ(AV_ERR_OK, ret);
540 }
541
542 /**
543 * @tc.number : VIDEO_SWDEC_STATE_2700
544 * @tc.name : create-configure-start-flush-reset-release
545 * @tc.desc : function test
546 */
547 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2700, TestSize.Level2)
548 {
549 int32_t ret = vDecSample->Start();
550 ASSERT_EQ(AV_ERR_OK, ret);
551 ret = vDecSample->Flush();
552 ASSERT_EQ(AV_ERR_OK, ret);
553 ret = vDecSample->Reset();
554 ASSERT_EQ(AV_ERR_OK, ret);
555 ret = vDecSample->Release();
556 ASSERT_EQ(AV_ERR_OK, ret);
557 }
558
559 /**
560 * @tc.number : VIDEO_SWDEC_STATE_2800
561 * @tc.name : create-configure-start-flush-reset-error
562 * @tc.desc : function test
563 */
564 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2800, TestSize.Level2)
565 {
566 int32_t ret = vDecSample->Start();
567 ASSERT_EQ(AV_ERR_OK, ret);
568 ret = vDecSample->Flush();
569 ASSERT_EQ(AV_ERR_OK, ret);
570 ret = vDecSample->Reset();
571 ASSERT_EQ(AV_ERR_OK, ret);
572 ret = vDecSample->Start();
573 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
574 ret = vDecSample->Stop();
575 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
576 ret = vDecSample->Flush();
577 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
578 ret = vDecSample->SetVideoDecoderCallback();
579 ASSERT_EQ(AV_ERR_OK, ret);
580 }
581
582 /**
583 * @tc.number : VIDEO_SWDEC_STATE_2900
584 * @tc.name : create-configure-start-reset-configure
585 * @tc.desc : function test
586 */
587 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_2900, TestSize.Level2)
588 {
589 int32_t ret = vDecSample->Start();
590 ASSERT_EQ(AV_ERR_OK, ret);
591 ret = vDecSample->Reset();
592 ASSERT_EQ(AV_ERR_OK, ret);
593 ret = vDecSample->ConfigureVideoDecoder();
594 ASSERT_EQ(AV_ERR_OK, ret);
595 }
596
597 /**
598 * @tc.number : VIDEO_SWDEC_STATE_3000
599 * @tc.name : create-configure-start-reset-release
600 * @tc.desc : function test
601 */
602 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_3000, TestSize.Level2)
603 {
604 int32_t ret = vDecSample->Start();
605 ASSERT_EQ(AV_ERR_OK, ret);
606 ret = vDecSample->Reset();
607 ASSERT_EQ(AV_ERR_OK, ret);
608 ret = vDecSample->Release();
609 ASSERT_EQ(AV_ERR_OK, ret);
610 }
611
612 /**
613 * @tc.number : VIDEO_SWDEC_STATE_3100
614 * @tc.name : create-configure-start-reset-error
615 * @tc.desc : function test
616 */
617 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_3100, TestSize.Level2)
618 {
619 int32_t ret = vDecSample->Start();
620 ASSERT_EQ(AV_ERR_OK, ret);
621 ret = vDecSample->Reset();
622 ASSERT_EQ(AV_ERR_OK, ret);
623 ret = vDecSample->Start();
624 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
625 ret = vDecSample->Stop();
626 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
627 ret = vDecSample->Flush();
628 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
629 ret = vDecSample->SetVideoDecoderCallback();
630 ASSERT_EQ(AV_ERR_OK, ret);
631 }
632
633 /**
634 * @tc.number : VIDEO_SWDEC_STATE_3200
635 * @tc.name : create-configure-start-error
636 * @tc.desc : function test
637 */
638 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_3200, TestSize.Level2)
639 {
640 int32_t ret = vDecSample->Start();
641 ASSERT_EQ(AV_ERR_OK, ret);
642 ret = vDecSample->ConfigureVideoDecoder();
643 ASSERT_EQ(AV_ERR_INVALID_STATE, ret);
644 ret = vDecSample->SetVideoDecoderCallback();
645 ASSERT_EQ(AV_ERR_OK, ret);
646 ret = vDecSample->Release();
647 ASSERT_EQ(AV_ERR_OK, ret);
648 }
649
650 /**
651 * @tc.number : VIDEO_SWDEC_STATE_3300
652 * @tc.name : create-configure-reset-configure
653 * @tc.desc : function test
654 */
655 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_3300, TestSize.Level2)
656 {
657 int32_t ret = vDecSample->Reset();
658 ASSERT_EQ(AV_ERR_OK, ret);
659 ret = vDecSample->ConfigureVideoDecoder();
660 ASSERT_EQ(AV_ERR_OK, ret);
661 }
662
663 /**
664 * @tc.number : VIDEO_SWDEC_STATE_3400
665 * @tc.name : create-configure-release
666 * @tc.desc : function test
667 */
668 HWTEST_F(SwdecStateNdkTest, VIDEO_SWDEC_STATE_3400, TestSize.Level2)
669 {
670 int32_t ret = vDecSample->Release();
671 ASSERT_EQ(AV_ERR_OK, ret);
672 }
673 } // namespace