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>
31namespace OHOS {
32namespace Media {
33class DemuxerRandomSeekNdkTest : public testing::Test {
34public:
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
45static OH_AVMemory *memory = nullptr;
46static OH_AVSource *source = nullptr;
47static OH_AVDemuxer *demuxer = nullptr;
48static OH_AVFormat *sourceFormat = nullptr;
49static OH_AVFormat *trackFormat = nullptr;
50static OH_AVBuffer *avBuffer = nullptr;
51static OH_AVFormat *format = nullptr;
52static int32_t g_trackCount;
53static int32_t g_width = 3840;
54static int32_t g_height = 2160;
55constexpr int32_t THOUSAND = 1000.0;
56constexpr int32_t SEEKTIMES = 10;
57void DemuxerRandomSeekNdkTest::SetUpTestCase() {}
58void DemuxerRandomSeekNdkTest::TearDownTestCase() {}
59void DemuxerRandomSeekNdkTest::SetUp()
60{
61    memory = OH_AVMemory_Create(g_width * g_height);
62    g_trackCount = 0;
63}
64void 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
100using namespace std;
101using namespace OHOS;
102using namespace OHOS::Media;
103using namespace testing::ext;
104std::random_device rd;
105
106static 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
118static 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 */
154HWTEST_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 */
164HWTEST_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 */
174HWTEST_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 */
184HWTEST_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 */
194HWTEST_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 */
204HWTEST_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 */
214HWTEST_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 */
224HWTEST_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 */
234HWTEST_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 */
244HWTEST_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 */
254HWTEST_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 */
264HWTEST_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 */
274HWTEST_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 */
284HWTEST_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 */
294HWTEST_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 */
304HWTEST_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 */
314HWTEST_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 */
324HWTEST_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 */
334HWTEST_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 */
344HWTEST_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 */
354HWTEST_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 */
364HWTEST_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 */
374HWTEST_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 */
384HWTEST_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 */
394HWTEST_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 */
404HWTEST_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 */
414HWTEST_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 */
424HWTEST_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 */
434HWTEST_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 */
444HWTEST_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 */
454HWTEST_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 */
464HWTEST_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 */
474HWTEST_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 */
484HWTEST_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 */
494HWTEST_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 */
504HWTEST_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 */
514HWTEST_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 */
524HWTEST_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 */
534HWTEST_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 */
544HWTEST_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 */
554HWTEST_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 */
564HWTEST_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 */
574HWTEST_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 */
584HWTEST_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 */
594HWTEST_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 */
604HWTEST_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 */
614HWTEST_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 */
624HWTEST_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 */
634HWTEST_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 */
644HWTEST_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 */
654HWTEST_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 */
664HWTEST_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 */
674HWTEST_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 */
684HWTEST_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 */
694HWTEST_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 */
704HWTEST_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 */
714HWTEST_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 */
724HWTEST_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 */
734HWTEST_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 */
744HWTEST_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 */
754HWTEST_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 */
764HWTEST_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 */
774HWTEST_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 */
784HWTEST_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 */
794HWTEST_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 */
804HWTEST_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 */
814HWTEST_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 */
824HWTEST_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 */
834HWTEST_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 */
844HWTEST_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 */
854HWTEST_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 */
864HWTEST_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 */
874HWTEST_F(DemuxerRandomSeekNdkTest, DEMUXER_RANDOM_SEEK_0085, TestSize.Level2)
875{
876    CheckSeekResult("/data/test/media/audio/wav_audio_test_202406290859.wav", SEEKTIMES);
877}