1 /*
2  * Copyright (C) 2024 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 "gtest/gtest.h"
17 
18 #include "native_avcodec_base.h"
19 #include "native_avdemuxer.h"
20 #include "native_avformat.h"
21 #include "native_avsource.h"
22 #include "native_avmemory.h"
23 
24 #include <iostream>
25 #include <cstdio>
26 #include <string>
27 #include <fcntl.h>
28 #include <cmath>
29 #include <thread>
30 #include <random>
31 namespace OHOS {
32 namespace Media {
33 class DemuxerRandomSeekNdkTest : 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 
45 static OH_AVMemory *memory = nullptr;
46 static OH_AVSource *source = nullptr;
47 static OH_AVDemuxer *demuxer = nullptr;
48 static OH_AVFormat *sourceFormat = nullptr;
49 static OH_AVFormat *trackFormat = nullptr;
50 static OH_AVBuffer *avBuffer = nullptr;
51 static OH_AVFormat *format = nullptr;
52 static int32_t g_trackCount;
53 static int32_t g_width = 3840;
54 static int32_t g_height = 2160;
55 constexpr int32_t THOUSAND = 1000.0;
56 constexpr int32_t SEEKTIMES = 10;
SetUpTestCase()57 void DemuxerRandomSeekNdkTest::SetUpTestCase() {}
TearDownTestCase()58 void DemuxerRandomSeekNdkTest::TearDownTestCase() {}
SetUp()59 void DemuxerRandomSeekNdkTest::SetUp()
60 {
61     memory = OH_AVMemory_Create(g_width * g_height);
62     g_trackCount = 0;
63 }
TearDown()64 void DemuxerRandomSeekNdkTest::TearDown()
65 {
66     if (trackFormat != nullptr) {
67         OH_AVFormat_Destroy(trackFormat);
68         trackFormat = nullptr;
69     }
70 
71     if (sourceFormat != nullptr) {
72         OH_AVFormat_Destroy(sourceFormat);
73         sourceFormat = nullptr;
74     }
75     if (format != nullptr) {
76         OH_AVFormat_Destroy(format);
77         format = nullptr;
78     }
79 
80     if (memory != nullptr) {
81         OH_AVMemory_Destroy(memory);
82         memory = nullptr;
83     }
84     if (source != nullptr) {
85         OH_AVSource_Destroy(source);
86         source = nullptr;
87     }
88     if (demuxer != nullptr) {
89         OH_AVDemuxer_Destroy(demuxer);
90         demuxer = nullptr;
91     }
92     if (avBuffer != nullptr) {
93         OH_AVBuffer_Destroy(avBuffer);
94         avBuffer = nullptr;
95     }
96 }
97 } // namespace Media
98 } // namespace OHOS
99 
100 using namespace std;
101 using namespace OHOS;
102 using namespace OHOS::Media;
103 using namespace testing::ext;
104 std::random_device rd;
105 
GetFileSize(const char * fileName)106 static int64_t GetFileSize(const char *fileName)
107 {
108     int64_t fileSize = 0;
109     if (fileName != nullptr) {
110         struct stat fileStatus {};
111         if (stat(fileName, &fileStatus) == 0) {
112             fileSize = static_cast<int64_t>(fileStatus.st_size);
113         }
114     }
115     return fileSize;
116 }
117 
CheckSeekResult(const char * fileName,uint32_t seekCount)118 static void CheckSeekResult(const char *fileName, uint32_t seekCount)
119 {
120     int64_t duration = 0;
121     OH_AVCodecBufferAttr attr;
122     int fd = open(fileName, O_RDONLY);
123     int64_t size = GetFileSize(fileName);
124     cout << fileName << "-------" << fd << "-------" << size << endl;
125     source = OH_AVSource_CreateWithFD(fd, 0, size);
126     ASSERT_NE(source, nullptr);
127     demuxer = OH_AVDemuxer_CreateWithSource(source);
128     ASSERT_NE(demuxer, nullptr);
129     sourceFormat = OH_AVSource_GetSourceFormat(source);
130     ASSERT_NE(sourceFormat, nullptr);
131     ASSERT_TRUE(OH_AVFormat_GetIntValue(sourceFormat, OH_MD_KEY_TRACK_COUNT, &g_trackCount));
132     cout << "g_trackCount----" << g_trackCount << endl;
133     ASSERT_TRUE(OH_AVFormat_GetLongValue(sourceFormat, OH_MD_KEY_DURATION, &duration));
134     cout << "duration----" << duration << endl;
135     srand(time(NULL));
136     for (int32_t index = 0; index < g_trackCount; index++) {
137         ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, index));
138         for (int32_t i = 0; i < seekCount; i++) {
139             if (duration != 0) {
140                 ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SeekToTime(demuxer, (rd() % duration) / THOUSAND,
141                 (OH_AVSeekMode)((rd() % 1) +1)));
142             }
143             ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_ReadSample(demuxer, index, memory, &attr));
144         }
145     }
146     close(fd);
147 }
148 
149 /**
150  * @tc.number    : DEMUXER_RANDOM_SEEK_0001
151  * @tc.name      : demuxer random seek, 01_video_audio.mp4
152  * @tc.desc      : function test
153  */
154 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0001, TestSize.Level0)
155 {
156     CheckSeekResult("/data/test/media/01_video_audio.mp4", SEEKTIMES);
157 }
158 
159 /**
160  * @tc.number    : DEMUXER_RANDOM_SEEK_0002
161  * @tc.name      : demuxer random seek, avc_mp3.flv
162  * @tc.desc      : function test
163  */
164 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0002, TestSize.Level0)
165 {
166     CheckSeekResult("/data/test/media/avc_mp3.flv", SEEKTIMES);
167 }
168 
169 /**
170  * @tc.number    : DEMUXER_RANDOM_SEEK_0003
171  * @tc.name      : demuxer random seek, avc_mp3_error.flv
172  * @tc.desc      : function test
173  */
174 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0003, TestSize.Level2)
175 {
176     CheckSeekResult("/data/test/media/avc_mp3_error.flv", SEEKTIMES);
177 }
178 
179 /**
180  * @tc.number    : DEMUXER_RANDOM_SEEK_0004
181  * @tc.name      : demuxer random seek, avcc_10sec.mp4
182  * @tc.desc      : function test
183  */
184 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0004, TestSize.Level2)
185 {
186     CheckSeekResult("/data/test/media/avcc_10sec.mp4", SEEKTIMES);
187 }
188 
189 /**
190  * @tc.number    : DEMUXER_RANDOM_SEEK_0005
191  * @tc.name      : demuxer random seek, demuxer_parser_2_layer_frame_avc.mp4
192  * @tc.desc      : function test
193  */
194 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0005, TestSize.Level0)
195 {
196     CheckSeekResult("/data/test/media/demuxer_parser_2_layer_frame_avc.mp4", SEEKTIMES);
197 }
198 
199 /**
200  * @tc.number    : DEMUXER_RANDOM_SEEK_0006
201  * @tc.name      : demuxer random seek, demuxer_parser_2_layer_frame_hevc.mp4
202  * @tc.desc      : function test
203  */
204 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0006, TestSize.Level2)
205 {
206     CheckSeekResult("/data/test/media/demuxer_parser_2_layer_frame_hevc.mp4", SEEKTIMES);
207 }
208 
209 /**
210  * @tc.number    : DEMUXER_RANDOM_SEEK_0007
211  * @tc.name      : demuxer random seek, demuxer_parser_3_layer_frame_avc.mp4
212  * @tc.desc      : function test
213  */
214 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0007, TestSize.Level2)
215 {
216     CheckSeekResult("/data/test/media/demuxer_parser_3_layer_frame_avc.mp4", SEEKTIMES);
217 }
218 
219 /**
220  * @tc.number    : DEMUXER_RANDOM_SEEK_0008
221  * @tc.name      : demuxer random seek, demuxer_parser_3_layer_frame_hevc.mp4
222  * @tc.desc      : function test
223  */
224 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0008, TestSize.Level2)
225 {
226     CheckSeekResult("/data/test/media/demuxer_parser_3_layer_frame_hevc.mp4", SEEKTIMES);
227 }
228 
229 /**
230  * @tc.number    : DEMUXER_RANDOM_SEEK_0009
231  * @tc.name      : demuxer random seek, demuxer_parser_4_layer_frame_avc.mp4
232  * @tc.desc      : function test
233  */
234 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0009, TestSize.Level2)
235 {
236     CheckSeekResult("/data/test/media/demuxer_parser_4_layer_frame_avc.mp4", SEEKTIMES);
237 }
238 
239 /**
240  * @tc.number    : DEMUXER_RANDOM_SEEK_0010
241  * @tc.name      : demuxer random seek, demuxer_parser_4_layer_frame_hevc.mp4
242  * @tc.desc      : function test
243  */
244 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0010, TestSize.Level2)
245 {
246     CheckSeekResult("/data/test/media/demuxer_parser_4_layer_frame_hevc.mp4", SEEKTIMES);
247 }
248 
249 /**
250  * @tc.number    : DEMUXER_RANDOM_SEEK_0011
251  * @tc.name      : demuxer random seek, demuxer_parser_all_i_frame_avc.mp4
252  * @tc.desc      : function test
253  */
254 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0011, TestSize.Level1)
255 {
256     CheckSeekResult("/data/test/media/demuxer_parser_all_i_frame_avc.mp4", SEEKTIMES);
257 }
258 
259 /**
260  * @tc.number    : DEMUXER_RANDOM_SEEK_0012
261  * @tc.name      : demuxer random seek, demuxer_parser_all_i_frame_hevc.mp4
262  * @tc.desc      : function test
263  */
264 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0012, TestSize.Level1)
265 {
266     CheckSeekResult("/data/test/media/demuxer_parser_all_i_frame_hevc.mp4", SEEKTIMES);
267 }
268 
269 /**
270  * @tc.number    : DEMUXER_RANDOM_SEEK_0013
271  * @tc.name      : demuxer random seek, demuxer_parser_ipb_frame_avc.mp4
272  * @tc.desc      : function test
273  */
274 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0013, TestSize.Level0)
275 {
276     CheckSeekResult("/data/test/media/demuxer_parser_ipb_frame_avc.mp4", SEEKTIMES);
277 }
278 
279 /**
280  * @tc.number    : DEMUXER_RANDOM_SEEK_0014
281  * @tc.name      : demuxer random seek, demuxer_parser_ipb_frame_hevc.mp4
282  * @tc.desc      : function test
283  */
284 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0014, TestSize.Level0)
285 {
286     CheckSeekResult("/data/test/media/demuxer_parser_ipb_frame_hevc.mp4", SEEKTIMES);
287 }
288 
289 /**
290  * @tc.number    : DEMUXER_RANDOM_SEEK_0015
291  * @tc.name      : demuxer random seek, demuxer_parser_ltr_frame_avc.mp4
292  * @tc.desc      : function test
293  */
294 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0015, TestSize.Level2)
295 {
296     CheckSeekResult("/data/test/media/demuxer_parser_ltr_frame_avc.mp4", SEEKTIMES);
297 }
298 
299 /**
300  * @tc.number    : DEMUXER_RANDOM_SEEK_0016
301  * @tc.name      : demuxer random seek, demuxer_parser_ltr_frame_hevc.mp4
302  * @tc.desc      : function test
303  */
304 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0016, TestSize.Level2)
305 {
306     CheckSeekResult("/data/test/media/demuxer_parser_ltr_frame_hevc.mp4", SEEKTIMES);
307 }
308 
309 /**
310  * @tc.number    : DEMUXER_RANDOM_SEEK_0017
311  * @tc.name      : demuxer random seek, demuxer_parser_one_i_frame_avc.mp4
312  * @tc.desc      : function test
313  */
314 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0017, TestSize.Level0)
315 {
316     CheckSeekResult("/data/test/media/demuxer_parser_one_i_frame_avc.mp4", SEEKTIMES);
317 }
318 
319 /**
320  * @tc.number    : DEMUXER_RANDOM_SEEK_0018
321  * @tc.name      : demuxer random seek, demuxer_parser_one_i_frame_hevc.mp4
322  * @tc.desc      : function test
323  */
324 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0018, TestSize.Level1)
325 {
326     CheckSeekResult("/data/test/media/demuxer_parser_one_i_frame_hevc.mp4", SEEKTIMES);
327 }
328 
329 /**
330  * @tc.number    : DEMUXER_RANDOM_SEEK_0019
331  * @tc.name      : demuxer random seek, demuxer_parser_one_i_frame_no_audio_avc.mp4
332  * @tc.desc      : function test
333  */
334 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0019, TestSize.Level2)
335 {
336     CheckSeekResult("/data/test/media/demuxer_parser_one_i_frame_no_audio_avc.mp4", SEEKTIMES);
337 }
338 
339 /**
340  * @tc.number    : DEMUXER_RANDOM_SEEK_0020
341  * @tc.name      : demuxer random seek, demuxer_parser_one_i_frame_no_audio_hevc.mp4
342  * @tc.desc      : function test
343  */
344 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0020, TestSize.Level2)
345 {
346     CheckSeekResult("/data/test/media/demuxer_parser_one_i_frame_no_audio_hevc.mp4", SEEKTIMES);
347 }
348 
349 /**
350  * @tc.number    : DEMUXER_RANDOM_SEEK_0021
351  * @tc.name      : demuxer random seek, demuxer_parser_sdtp_frame_avc.mp4
352  * @tc.desc      : function test
353  */
354 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0021, TestSize.Level2)
355 {
356     CheckSeekResult("/data/test/media/demuxer_parser_sdtp_frame_avc.mp4", SEEKTIMES);
357 }
358 
359 /**
360  * @tc.number    : DEMUXER_RANDOM_SEEK_0022
361  * @tc.name      : demuxer random seek, demuxer_parser_sdtp_frame_hevc.mp4
362  * @tc.desc      : function test
363  */
364 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0022, TestSize.Level2)
365 {
366     CheckSeekResult("/data/test/media/demuxer_parser_sdtp_frame_hevc.mp4", SEEKTIMES);
367 }
368 
369 /**
370  * @tc.number    : DEMUXER_RANDOM_SEEK_0023
371  * @tc.name      : demuxer random seek, double_hevc.mp4
372  * @tc.desc      : function test
373  */
374 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0023, TestSize.Level1)
375 {
376     CheckSeekResult("/data/test/media/double_hevc.mp4", SEEKTIMES);
377 }
378 
379 /**
380  * @tc.number    : DEMUXER_RANDOM_SEEK_0024
381  * @tc.name      : demuxer random seek, double_vivid.mp4
382  * @tc.desc      : function test
383  */
384 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0024, TestSize.Level2)
385 {
386     CheckSeekResult("/data/test/media/double_vivid.mp4", SEEKTIMES);
387 }
388 
389 /**
390  * @tc.number    : DEMUXER_RANDOM_SEEK_0026
391  * @tc.name      : demuxer random seek, h264_aac_640.ts
392  * @tc.desc      : function test
393  */
394 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0026, TestSize.Level2)
395 {
396     CheckSeekResult("/data/test/media/h264_aac_640.ts", SEEKTIMES);
397 }
398 
399 /**
400  * @tc.number    : DEMUXER_RANDOM_SEEK_0027
401  * @tc.name      : demuxer random seek, h264_aac_1280.ts
402  * @tc.desc      : function test
403  */
404 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0027, TestSize.Level2)
405 {
406     CheckSeekResult("/data/test/media/h264_aac_1280.ts", SEEKTIMES);
407 }
408 
409 /**
410  * @tc.number    : DEMUXER_RANDOM_SEEK_0028
411  * @tc.name      : demuxer random seek, h264_aac_1920.ts
412  * @tc.desc      : function test
413  */
414 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0028, TestSize.Level2)
415 {
416     CheckSeekResult("/data/test/media/h264_aac_1920.ts", SEEKTIMES);
417 }
418 
419 /**
420  * @tc.number    : DEMUXER_RANDOM_SEEK_0029
421  * @tc.name      : demuxer random seek, h264_mp3_3mevx_fmp4.mp4
422  * @tc.desc      : function test
423  */
424 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0029, TestSize.Level1)
425 {
426     CheckSeekResult("/data/test/media/h264_mp3_3mevx_fmp4.mp4", SEEKTIMES);
427 }
428 
429 /**
430  * @tc.number    : DEMUXER_RANDOM_SEEK_0030
431  * @tc.name      : demuxer random seek, h265_aac_1mvex_fmp4.mp4
432  * @tc.desc      : function test
433  */
434 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0030, TestSize.Level2)
435 {
436     CheckSeekResult("/data/test/media/h265_aac_1mvex_fmp4.mp4", SEEKTIMES);
437 }
438 
439 /**
440  * @tc.number    : DEMUXER_RANDOM_SEEK_0032
441  * @tc.name      : demuxer random seek, h265_mp3_640.ts
442  * @tc.desc      : function test
443  */
444 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0032, TestSize.Level2)
445 {
446     CheckSeekResult("/data/test/media/h265_mp3_640.ts", SEEKTIMES);
447 }
448 
449 /**
450  * @tc.number    : DEMUXER_RANDOM_SEEK_0033
451  * @tc.name      : demuxer random seek, h265_mp3_1280.ts
452  * @tc.desc      : function test
453  */
454 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0033, TestSize.Level2)
455 {
456     CheckSeekResult("/data/test/media/h265_mp3_1280.ts", SEEKTIMES);
457 }
458 
459 /**
460  * @tc.number    : DEMUXER_RANDOM_SEEK_0034
461  * @tc.name      : demuxer random seek, h265_mp3_1920.ts
462  * @tc.desc      : function test
463  */
464 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0034, TestSize.Level2)
465 {
466     CheckSeekResult("/data/test/media/h265_mp3_1920.ts", SEEKTIMES);
467 }
468 
469 /**
470  * @tc.number    : DEMUXER_RANDOM_SEEK_0035
471  * @tc.name      : demuxer random seek, hevc_pcm_a.flv
472  * @tc.desc      : function test
473  */
474 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0035, TestSize.Level2)
475 {
476     CheckSeekResult("/data/test/media/hevc_pcm_a.flv", SEEKTIMES);
477 }
478 
479 /**
480  * @tc.number    : DEMUXER_RANDOM_SEEK_0036
481  * @tc.name      : demuxer random seek, hevc_v.ts
482  * @tc.desc      : function test
483  */
484 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0036, TestSize.Level2)
485 {
486     CheckSeekResult("/data/test/media/hevc_v.ts", SEEKTIMES);
487 }
488 
489 /**
490  * @tc.number    : DEMUXER_RANDOM_SEEK_0037
491  * @tc.name      : demuxer random seek, hevc_v_a.ts
492  * @tc.desc      : function test
493  */
494 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0037, TestSize.Level2)
495 {
496     CheckSeekResult("/data/test/media/hevc_v_a.ts", SEEKTIMES);
497 }
498 
499 /**
500  * @tc.number    : DEMUXER_RANDOM_SEEK_0038
501  * @tc.name      : demuxer random seek, hvcc.mp4
502  * @tc.desc      : function test
503  */
504 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0038, TestSize.Level1)
505 {
506     CheckSeekResult("/data/test/media/hvcc.mp4", SEEKTIMES);
507 }
508 
509 /**
510  * @tc.number    : DEMUXER_RANDOM_SEEK_0039
511  * @tc.name      : demuxer random seek, m4a_fmp4.mp4
512  * @tc.desc      : function test
513  */
514 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0039, TestSize.Level2)
515 {
516     CheckSeekResult("/data/test/media/m4a_fmp4.mp4", SEEKTIMES);
517 }
518 
519 /**
520  * @tc.number    : DEMUXER_RANDOM_SEEK_0040
521  * @tc.name      : demuxer random seek, m4v_fmp4.mp4
522  * @tc.desc      : function test
523  */
524 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0040, TestSize.Level2)
525 {
526     CheckSeekResult("/data/test/media/m4v_fmp4.mp4", SEEKTIMES);
527 }
528 
529 /**
530  * @tc.number    : DEMUXER_RANDOM_SEEK_0041
531  * @tc.name      : demuxer random seek, mkv.mkv
532  * @tc.desc      : function test
533  */
534 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0041, TestSize.Level1)
535 {
536     CheckSeekResult("/data/test/media/mkv.mkv", SEEKTIMES);
537 }
538 
539 /**
540  * @tc.number    : DEMUXER_RANDOM_SEEK_0042
541  * @tc.name      : demuxer random seek, MP3_avcc_10sec.bin
542  * @tc.desc      : function test
543  */
544 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0042, TestSize.Level2)
545 {
546     CheckSeekResult("/data/test/media/MP3_avcc_10sec.bin", SEEKTIMES);
547 }
548 
549 /**
550  * @tc.number    : DEMUXER_RANDOM_SEEK_0043
551  * @tc.name      : demuxer random seek, MP3_OGG_48000_1.bin
552  * @tc.desc      : function test
553  */
554 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0043, TestSize.Level2)
555 {
556     CheckSeekResult("/data/test/media/MP3_OGG_48000_1.bin", SEEKTIMES);
557 }
558 
559 /**
560  * @tc.number    : DEMUXER_RANDOM_SEEK_0044
561  * @tc.name      : demuxer random seek, mpeg2.mp4
562  * @tc.desc      : function test
563  */
564 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0044, TestSize.Level2)
565 {
566     CheckSeekResult("/data/test/media/mpeg2.mp4", SEEKTIMES);
567 }
568 
569 /**
570  * @tc.number    : DEMUXER_RANDOM_SEEK_0045
571  * @tc.name      : demuxer random seek, noPermission.mp4
572  * @tc.desc      : function test
573  */
574 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0045, TestSize.Level2)
575 {
576     CheckSeekResult("/data/test/media/noPermission.mp4", SEEKTIMES);
577 }
578 
579 /**
580  * @tc.number    : DEMUXER_RANDOM_SEEK_0046
581  * @tc.name      : demuxer random seek, NoTimedmetadataAudio.mp4
582  * @tc.desc      : function test
583  */
584 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0046, TestSize.Level2)
585 {
586     CheckSeekResult("/data/test/media/NoTimedmetadataAudio.mp4", SEEKTIMES);
587 }
588 
589 /**
590  * @tc.number    : DEMUXER_RANDOM_SEEK_0047
591  * @tc.name      : demuxer random seek, single_60.mp4
592  * @tc.desc      : function test
593  */
594 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0047, TestSize.Level2)
595 {
596     CheckSeekResult("/data/test/media/single_60.mp4", SEEKTIMES);
597 }
598 
599 /**
600  * @tc.number    : DEMUXER_RANDOM_SEEK_0048
601  * @tc.name      : demuxer random seek, single_rk.mp4
602  * @tc.desc      : function test
603  */
604 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0048, TestSize.Level2)
605 {
606     CheckSeekResult("/data/test/media/single_rk.mp4", SEEKTIMES);
607 }
608 
609 /**
610  * @tc.number    : DEMUXER_RANDOM_SEEK_0054
611  * @tc.name      : demuxer random seek, test_264_B_Gop25_4sec.mp4
612  * @tc.desc      : function test
613  */
614 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0054, TestSize.Level2)
615 {
616     CheckSeekResult("/data/test/media/test_264_B_Gop25_4sec.mp4", SEEKTIMES);
617 }
618 
619 /**
620  * @tc.number    : DEMUXER_RANDOM_SEEK_0055
621  * @tc.name      : demuxer random seek, test_265_B_Gop25_4sec.mp4
622  * @tc.desc      : function test
623  */
624 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0055, TestSize.Level2)
625 {
626     CheckSeekResult("/data/test/media/test_265_B_Gop25_4sec.mp4", SEEKTIMES);
627 }
628 
629 /**
630  * @tc.number    : DEMUXER_RANDOM_SEEK_0056
631  * @tc.name      : demuxer random seek, test_video_avcc_10sec.bin
632  * @tc.desc      : function test
633  */
634 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0056, TestSize.Level1)
635 {
636     CheckSeekResult("/data/test/media/test_video_avcc_10sec.bin", SEEKTIMES);
637 }
638 
639 /**
640  * @tc.number    : DEMUXER_RANDOM_SEEK_0057
641  * @tc.name      : demuxer random seek, Timedmetadata1Track0.mp4
642  * @tc.desc      : function test
643  */
644 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0057, TestSize.Level2)
645 {
646     CheckSeekResult("/data/test/media/Timedmetadata1Track0.mp4", SEEKTIMES);
647 }
648 
649 /**
650  * @tc.number    : DEMUXER_RANDOM_SEEK_0058
651  * @tc.name      : demuxer random seek, Timedmetadata1Track1.mp4
652  * @tc.desc      : function test
653  */
654 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0058, TestSize.Level2)
655 {
656     CheckSeekResult("/data/test/media/Timedmetadata1Track1.mp4", SEEKTIMES);
657 }
658 
659 /**
660  * @tc.number    : DEMUXER_RANDOM_SEEK_0059
661  * @tc.name      : demuxer random seek, Timedmetadata1Track2.mp4
662  * @tc.desc      : function test
663  */
664 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0059, TestSize.Level2)
665 {
666     CheckSeekResult("/data/test/media/Timedmetadata1Track2.mp4", SEEKTIMES);
667 }
668 
669 /**
670  * @tc.number    : DEMUXER_RANDOM_SEEK_0060
671  * @tc.name      : demuxer random seek, Timedmetadata2Track2.mp4
672  * @tc.desc      : function test
673  */
674 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0060, TestSize.Level2)
675 {
676     CheckSeekResult("/data/test/media/Timedmetadata2Track2.mp4", SEEKTIMES);
677 }
678 
679 /**
680  * @tc.number    : DEMUXER_RANDOM_SEEK_0061
681  * @tc.name      : demuxer random seek, TimedmetadataAudio.mp4
682  * @tc.desc      : function test
683  */
684 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0061, TestSize.Level2)
685 {
686     CheckSeekResult("/data/test/media/TimedmetadataAudio.mp4", SEEKTIMES);
687 }
688 
689 /**
690  * @tc.number    : DEMUXER_RANDOM_SEEK_0062
691  * @tc.name      : demuxer random seek, TimedmetadataVideo.mp4
692  * @tc.desc      : function test
693  */
694 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0062, TestSize.Level2)
695 {
696     CheckSeekResult("/data/test/media/TimedmetadataVideo.mp4", SEEKTIMES);
697 }
698 
699 /**
700  * @tc.number    : DEMUXER_RANDOM_SEEK_0063
701  * @tc.name      : demuxer random seek, ts_video.ts
702  * @tc.desc      : function test
703  */
704 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0063, TestSize.Level1)
705 {
706     CheckSeekResult("/data/test/media/ts_video.ts", SEEKTIMES);
707 }
708 
709 /**
710  * @tc.number    : DEMUXER_RANDOM_SEEK_0064
711  * @tc.name      : demuxer random seek, video_2audio.mp4
712  * @tc.desc      : function test
713  */
714 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0064, TestSize.Level2)
715 {
716     CheckSeekResult("/data/test/media/video_2audio.mp4", SEEKTIMES);
717 }
718 
719 /**
720  * @tc.number    : DEMUXER_RANDOM_SEEK_0065
721  * @tc.name      : demuxer random seek, video_9audio.mp4
722  * @tc.desc      : function test
723  */
724 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0065, TestSize.Level2)
725 {
726     CheckSeekResult("/data/test/media/video_9audio.mp4", SEEKTIMES);
727 }
728 
729 /**
730  * @tc.number    : DEMUXER_RANDOM_SEEK_0071
731  * @tc.name      : demuxer random seek, xm.mp4
732  * @tc.desc      : function test
733  */
734 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0071, TestSize.Level2)
735 {
736     CheckSeekResult("/data/test/media/xm.mp4", SEEKTIMES);
737 }
738 
739 /**
740  * @tc.number    : DEMUXER_RANDOM_SEEK_0072
741  * @tc.name      : demuxer random seek, AAC_48000_1.aac
742  * @tc.desc      : function test
743  */
744 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0072, TestSize.Level2)
745 {
746     CheckSeekResult("/data/test/media/audio/AAC_48000_1.aac", SEEKTIMES);
747 }
748 
749 /**
750  * @tc.number    : DEMUXER_RANDOM_SEEK_0073
751  * @tc.name      : demuxer random seek, amr_nb_8000_1.amr
752  * @tc.desc      : function test
753  */
754 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0073, TestSize.Level2)
755 {
756     CheckSeekResult("/data/test/media/audio/amr_nb_8000_1.amr", SEEKTIMES);
757 }
758 
759 /**
760  * @tc.number    : DEMUXER_RANDOM_SEEK_0074
761  * @tc.name      : demuxer random seek, amr_wb_16000_1.amr
762  * @tc.desc      : function test
763  */
764 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0074, TestSize.Level2)
765 {
766     CheckSeekResult("/data/test/media/audio/amr_wb_16000_1.amr", SEEKTIMES);
767 }
768 
769 /**
770  * @tc.number    : DEMUXER_RANDOM_SEEK_0075
771  * @tc.name      : demuxer random seek, ape.ape
772  * @tc.desc      : function test
773  */
774 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0075, TestSize.Level2)
775 {
776     CheckSeekResult("/data/test/media/audio/ape.ape", SEEKTIMES);
777 }
778 
779 /**
780  * @tc.number    : DEMUXER_RANDOM_SEEK_0076
781  * @tc.name      : demuxer random seek, feff_bom.mp3
782  * @tc.desc      : function test
783  */
784 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0076, TestSize.Level2)
785 {
786     CheckSeekResult("/data/test/media/audio/feff_bom.mp3", SEEKTIMES);
787 }
788 
789 /**
790  * @tc.number    : DEMUXER_RANDOM_SEEK_0077
791  * @tc.name      : demuxer random seek, fffe_bom.mp3
792  * @tc.desc      : function test
793  */
794 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0077, TestSize.Level2)
795 {
796     CheckSeekResult("/data/test/media/audio/fffe_bom.mp3", SEEKTIMES);
797 }
798 
799 /**
800  * @tc.number    : DEMUXER_RANDOM_SEEK_0078
801  * @tc.name      : demuxer random seek, FLAC_48000_1.flac
802  * @tc.desc      : function test
803  */
804 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0078, TestSize.Level2)
805 {
806     CheckSeekResult("/data/test/media/audio/FLAC_48000_1.flac", SEEKTIMES);
807 }
808 
809 /**
810  * @tc.number    : DEMUXER_RANDOM_SEEK_0079
811  * @tc.name      : demuxer random seek, M4A_48000_1.m4a
812  * @tc.desc      : function test
813  */
814 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0079, TestSize.Level2)
815 {
816     CheckSeekResult("/data/test/media/audio/M4A_48000_1.m4a", SEEKTIMES);
817 }
818 
819 /**
820  * @tc.number    : DEMUXER_RANDOM_SEEK_0080
821  * @tc.name      : demuxer random seek, MP3_48000_1.mp3
822  * @tc.desc      : function test
823  */
824 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0080, TestSize.Level2)
825 {
826     CheckSeekResult("/data/test/media/audio/MP3_48000_1.mp3", SEEKTIMES);
827 }
828 
829 /**
830  * @tc.number    : DEMUXER_RANDOM_SEEK_0081
831  * @tc.name      : demuxer random seek, nonstandard_bom.mp3
832  * @tc.desc      : function test
833  */
834 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0081, TestSize.Level2)
835 {
836     CheckSeekResult("/data/test/media/audio/nonstandard_bom.mp3", SEEKTIMES);
837 }
838 
839 /**
840  * @tc.number    : DEMUXER_RANDOM_SEEK_0082
841  * @tc.name      : demuxer random seek, OGG_48000_1.ogg
842  * @tc.desc      : function test
843  */
844 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0082, TestSize.Level2)
845 {
846     CheckSeekResult("/data/test/media/audio/OGG_48000_1.ogg", SEEKTIMES);
847 }
848 
849 /**
850  * @tc.number    : DEMUXER_RANDOM_SEEK_0083
851  * @tc.name      : demuxer random seek, wav_48000_1.wav
852  * @tc.desc      : function test
853  */
854 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0083, TestSize.Level2)
855 {
856     CheckSeekResult("/data/test/media/audio/wav_48000_1.wav", SEEKTIMES);
857 }
858 
859 /**
860  * @tc.number    : DEMUXER_RANDOM_SEEK_0084
861  * @tc.name      : demuxer random seek, wav_audio_test_1562.wav
862  * @tc.desc      : function test
863  */
864 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0084, TestSize.Level2)
865 {
866     CheckSeekResult("/data/test/media/audio/wav_audio_test_1562.wav", SEEKTIMES);
867 }
868 
869 /**
870  * @tc.number    : DEMUXER_RANDOM_SEEK_0085
871  * @tc.name      : demuxer random seek, wav_audio_test_202406290859.wav
872  * @tc.desc      : function test
873  */
874 HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0085, TestSize.Level2)
875 {
876     CheckSeekResult("/data/test/media/audio/wav_audio_test_202406290859.wav", SEEKTIMES);
877 }