• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 namespace OHOS {
31 namespace Media {
32 class DemuxerSeek2NdkTest : public testing::Test {
33 public:
34     // SetUpTestCase: Called before all test cases
35     static void SetUpTestCase(void);
36     // TearDownTestCase: Called after all test case
37     static void TearDownTestCase(void);
38     // SetUp: Called before each test cases
39     void SetUp(void);
40     // TearDown: Called after each test cases
41     void TearDown(void);
42 };
43 
44 static OH_AVMemory *memory = nullptr;
45 static OH_AVSource *source = nullptr;
46 static OH_AVDemuxer *demuxer = nullptr;
47 static OH_AVFormat *sourceFormat = nullptr;
48 static OH_AVFormat *trackFormat = nullptr;
49 static OH_AVBuffer *avBuffer = nullptr;
50 static OH_AVFormat *format = nullptr;
51 static int32_t g_trackCount;
52 static int32_t g_width = 3840;
53 static int32_t g_height = 2160;
54 constexpr int32_t THOUSAND = 1000.0;
SetUpTestCase()55 void DemuxerSeek2NdkTest::SetUpTestCase() {}
TearDownTestCase()56 void DemuxerSeek2NdkTest::TearDownTestCase() {}
SetUp()57 void DemuxerSeek2NdkTest::SetUp()
58 {
59     memory = OH_AVMemory_Create(g_width * g_height);
60     g_trackCount = 0;
61 }
TearDown()62 void DemuxerSeek2NdkTest::TearDown()
63 {
64     if (trackFormat != nullptr) {
65         OH_AVFormat_Destroy(trackFormat);
66         trackFormat = nullptr;
67     }
68 
69     if (sourceFormat != nullptr) {
70         OH_AVFormat_Destroy(sourceFormat);
71         sourceFormat = nullptr;
72     }
73     if (format != nullptr) {
74         OH_AVFormat_Destroy(format);
75         format = nullptr;
76     }
77 
78     if (memory != nullptr) {
79         OH_AVMemory_Destroy(memory);
80         memory = nullptr;
81     }
82     if (source != nullptr) {
83         OH_AVSource_Destroy(source);
84         source = nullptr;
85     }
86     if (demuxer != nullptr) {
87         OH_AVDemuxer_Destroy(demuxer);
88         demuxer = nullptr;
89     }
90     if (avBuffer != nullptr) {
91         OH_AVBuffer_Destroy(avBuffer);
92         avBuffer = nullptr;
93     }
94 }
95 } // namespace Media
96 } // namespace OHOS
97 
98 using namespace std;
99 using namespace OHOS;
100 using namespace OHOS::Media;
101 using namespace testing::ext;
102 
GetFileSize(const char * fileName)103 static int64_t GetFileSize(const char *fileName)
104 {
105     int64_t fileSize = 0;
106     if (fileName != nullptr) {
107         struct stat fileStatus {};
108         if (stat(fileName, &fileStatus) == 0) {
109             fileSize = static_cast<int64_t>(fileStatus.st_size);
110         }
111     }
112     return fileSize;
113 }
114 
115 struct seekInfo {
116     const char *fileName;
117     OH_AVSeekMode seekmode;
118     int64_t millisecond;
119     int32_t videoCount;
120     int32_t audioCount;
121     int32_t subtitleCount;
122 };
123 
CheckSeekMode(seekInfo seekInfo)124 static void CheckSeekMode(seekInfo seekInfo)
125 {
126     int tarckType = 0;
127     OH_AVCodecBufferAttr attr;
128     int fd = open(seekInfo.fileName, O_RDONLY);
129     int64_t size = GetFileSize(seekInfo.fileName);
130     cout << seekInfo.fileName << "-------" << fd << "-------" << size << endl;
131     source = OH_AVSource_CreateWithFD(fd, 0, size);
132     ASSERT_NE(source, nullptr);
133 
134     demuxer = OH_AVDemuxer_CreateWithSource(source);
135     ASSERT_NE(demuxer, nullptr);
136 
137     sourceFormat = OH_AVSource_GetSourceFormat(source);
138     ASSERT_NE(sourceFormat, nullptr);
139     ASSERT_TRUE(OH_AVFormat_GetIntValue(sourceFormat, OH_MD_KEY_TRACK_COUNT, &g_trackCount));
140     cout << "g_trackCount----" << g_trackCount << endl;
141 
142     for (int32_t index = 0; index < g_trackCount; index++) {
143         ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, index));
144     }
145 
146     for (int32_t index = 0; index < g_trackCount; index++) {
147         trackFormat = OH_AVSource_GetTrackFormat(source, index);
148         ASSERT_NE(trackFormat, nullptr);
149         ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
150         ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SeekToTime(demuxer, seekInfo.millisecond / THOUSAND, seekInfo.seekmode));
151         bool readEnd = false;
152         int32_t frameNum = 0;
153         while (!readEnd) {
154             ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_ReadSample(demuxer, index, memory, &attr));
155             //cout << "frameNum---" << frameNum << "---PTS---" << attr.pts << "---tarckType---" << tarckType << endl;
156             if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_EOS) {
157                 readEnd = true;
158                 break;
159             }
160             frameNum++;
161         }
162         if (tarckType == MEDIA_TYPE_VID) {
163             ASSERT_EQ(seekInfo.videoCount, frameNum);
164         } else if (tarckType == MEDIA_TYPE_AUD) {
165             ASSERT_EQ(seekInfo.audioCount, frameNum);
166         } else if (tarckType == MEDIA_TYPE_SUBTITLE) {
167             ASSERT_EQ(seekInfo.subtitleCount, frameNum);
168         }
169     }
170     close(fd);
171     fd = -1;
172 }
173 
174 
175 /**
176  * @tc.number    : DEMUXER_SEEK_0087
177  * @tc.name      : demuxer seek, H264_base@5_1920_1080_30_AAC_48K_1.mov
178  * @tc.desc      : function test
179  */
180 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0087, TestSize.Level0)
181 {
182     seekInfo fileTest1{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
183      SEEK_MODE_NEXT_SYNC, 0, 60, 94, 0};
184     CheckSeekMode(fileTest1);
185     seekInfo fileTest2{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
186      SEEK_MODE_NEXT_SYNC, 900000, 30, 47, 0};
187     CheckSeekMode(fileTest2);
188     seekInfo fileTest3{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
189      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 94, 0};
190     CheckSeekMode(fileTest3);
191     seekInfo fileTest4{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
192      SEEK_MODE_PREVIOUS_SYNC, 900000, 40, 63, 0};
193     CheckSeekMode(fileTest4);
194     seekInfo fileTest5{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
195      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 16, 0};
196     CheckSeekMode(fileTest5);
197     seekInfo fileTest6{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
198      SEEK_MODE_CLOSEST_SYNC, 0, 60, 94, 0};
199     CheckSeekMode(fileTest6);
200     seekInfo fileTest7{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
201      SEEK_MODE_CLOSEST_SYNC, 900000, 30, 47, 0};
202     CheckSeekMode(fileTest7);
203     seekInfo fileTest8{"/data/test/media/H264_base@5_1920_1080_30_AAC_48K_1.mov",
204      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 16, 0};
205     CheckSeekMode(fileTest8);
206 }
207 
208 /**
209  * @tc.number    : DEMUXER_SEEK_0088
210  * @tc.name      : demuxer seek, H264_high@5.1_3840_2160_30_MP3_48K_1.mov
211  * @tc.desc      : function test
212  */
213 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0088, TestSize.Level0)
214 {
215     seekInfo fileTest1{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
216      SEEK_MODE_NEXT_SYNC, 0, 60, 85, 0};
217     CheckSeekMode(fileTest1);
218     seekInfo fileTest2{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
219      SEEK_MODE_NEXT_SYNC, 866667, 30, 45, 0};
220     CheckSeekMode(fileTest2);
221     seekInfo fileTest3{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
222      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 85, 0};
223     CheckSeekMode(fileTest3);
224     seekInfo fileTest4{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
225      SEEK_MODE_PREVIOUS_SYNC, 866667, 40, 60, 0};
226     CheckSeekMode(fileTest4);
227     seekInfo fileTest5{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
228      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 18, 0};
229     CheckSeekMode(fileTest5);
230     seekInfo fileTest6{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
231      SEEK_MODE_CLOSEST_SYNC, 0, 60, 85, 0};
232     CheckSeekMode(fileTest6);
233     seekInfo fileTest7{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
234      SEEK_MODE_CLOSEST_SYNC, 866667, 30, 45, 0};
235     CheckSeekMode(fileTest7);
236     seekInfo fileTest8{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_48K_1.mov",
237      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 18, 0};
238     CheckSeekMode(fileTest8);
239 }
240 
241 /**
242  * @tc.number    : DEMUXER_SEEK_0089
243  * @tc.name      : demuxer seek, H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov
244  * @tc.desc      : function test
245  */
246 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0089, TestSize.Level0)
247 {
248     seekInfo fileTest1{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
249      SEEK_MODE_NEXT_SYNC, 0, 119, 72, 0};
250     CheckSeekMode(fileTest1);
251     seekInfo fileTest2{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
252      SEEK_MODE_NEXT_SYNC, 1300000, 39, 27, 0};
253     CheckSeekMode(fileTest2);
254     seekInfo fileTest3{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
255      SEEK_MODE_PREVIOUS_SYNC, 0, 119, 72, 0};
256     CheckSeekMode(fileTest3);
257     seekInfo fileTest4{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
258      SEEK_MODE_PREVIOUS_SYNC, 1300000, 49, 33, 0};
259     CheckSeekMode(fileTest4);
260     seekInfo fileTest5{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
261      SEEK_MODE_PREVIOUS_SYNC, 1966667, 9, 7, 0};
262     CheckSeekMode(fileTest5);
263     seekInfo fileTest6{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
264      SEEK_MODE_CLOSEST_SYNC, 0, 119, 72, 0};
265     CheckSeekMode(fileTest6);
266     seekInfo fileTest7{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
267      SEEK_MODE_CLOSEST_SYNC, 1300000, 39, 27, 0};
268     CheckSeekMode(fileTest7);
269     seekInfo fileTest8{"/data/test/media/H264_h444@5.1_1920_1080_60_vorbis_32K_2.mov",
270      SEEK_MODE_CLOSEST_SYNC, 1966667, 9, 7, 0};
271     CheckSeekMode(fileTest8);
272 }
273 
274 /**
275  * @tc.number    : DEMUXER_SEEK_0090
276  * @tc.name      : demuxer seek, H264_main@3_720_480_30_PCM_48K_24_1.mov
277  * @tc.desc      : function test
278  */
279 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0090, TestSize.Level0)
280 {
281     seekInfo fileTest1{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
282      SEEK_MODE_NEXT_SYNC, 0, 60, 144, 0};
283     CheckSeekMode(fileTest1);
284     seekInfo fileTest2{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
285      SEEK_MODE_NEXT_SYNC, 1266667, 20, 52, 0};
286     CheckSeekMode(fileTest2);
287     seekInfo fileTest3{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
288      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 144, 0};
289     CheckSeekMode(fileTest3);
290     seekInfo fileTest4{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
291      SEEK_MODE_PREVIOUS_SYNC, 1266667, 30, 77, 0};
292     CheckSeekMode(fileTest4);
293     seekInfo fileTest5{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
294      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 28, 0};
295     CheckSeekMode(fileTest5);
296     seekInfo fileTest6{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
297      SEEK_MODE_CLOSEST_SYNC, 0, 60, 144, 0};
298     CheckSeekMode(fileTest6);
299     seekInfo fileTest7{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
300      SEEK_MODE_CLOSEST_SYNC, 1266667, 20, 52, 0};
301     CheckSeekMode(fileTest7);
302     seekInfo fileTest8{"/data/test/media/H264_main@3_720_480_30_PCM_48K_24_1.mov",
303      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 28, 0};
304     CheckSeekMode(fileTest8);
305 }
306 
307 /**
308  * @tc.number    : DEMUXER_SEEK_0091
309  * @tc.name      : demuxer seek, H264_main@4_1280_720_60_MP2_44.1K_2.mov
310  * @tc.desc      : function test
311  */
312 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0091, TestSize.Level0)
313 {
314     seekInfo fileTest1{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
315      SEEK_MODE_NEXT_SYNC, 0, 119, 77, 0};
316     CheckSeekMode(fileTest1);
317     seekInfo fileTest2{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
318      SEEK_MODE_NEXT_SYNC, 1366667, 29, 21, 0};
319     CheckSeekMode(fileTest2);
320     seekInfo fileTest3{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
321      SEEK_MODE_PREVIOUS_SYNC, 0, 119, 77, 0};
322     CheckSeekMode(fileTest3);
323     seekInfo fileTest4{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
324      SEEK_MODE_PREVIOUS_SYNC, 1366667, 39, 28, 0};
325     CheckSeekMode(fileTest4);
326     seekInfo fileTest5{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
327      SEEK_MODE_PREVIOUS_SYNC, 1966667, 9, 9, 0};
328     CheckSeekMode(fileTest5);
329     seekInfo fileTest6{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
330      SEEK_MODE_CLOSEST_SYNC, 0, 119, 77, 0};
331     CheckSeekMode(fileTest6);
332     seekInfo fileTest7{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
333      SEEK_MODE_CLOSEST_SYNC, 1366667, 39, 28, 0};
334     CheckSeekMode(fileTest7);
335     seekInfo fileTest8{"/data/test/media/H264_main@4_1280_720_60_MP2_44.1K_2.mov",
336      SEEK_MODE_CLOSEST_SYNC, 1966667, 9, 9, 0};
337     CheckSeekMode(fileTest8);
338 }
339 
340 /**
341  * @tc.number    : DEMUXER_SEEK_0092
342  * @tc.name      : demuxer seek, H265_main@4_1920_1080_30_AAC_44.1K_2.mov
343  * @tc.desc      : function test
344  */
345 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0092, TestSize.Level0)
346 {
347     seekInfo fileTest1{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
348      SEEK_MODE_NEXT_SYNC, 0, 60, 88, 0};
349     CheckSeekMode(fileTest1);
350     seekInfo fileTest2{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
351      SEEK_MODE_NEXT_SYNC, 1133333, 24, 38, 0};
352     CheckSeekMode(fileTest2);
353     seekInfo fileTest3{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
354      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 88, 0};
355     CheckSeekMode(fileTest3);
356     seekInfo fileTest4{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
357      SEEK_MODE_PREVIOUS_SYNC, 1133333, 34, 53, 0};
358     CheckSeekMode(fileTest4);
359     seekInfo fileTest5{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
360      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 19, 0};
361     CheckSeekMode(fileTest5);
362     seekInfo fileTest6{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
363      SEEK_MODE_CLOSEST_SYNC, 0, 60, 88, 0};
364     CheckSeekMode(fileTest6);
365     seekInfo fileTest7{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
366      SEEK_MODE_CLOSEST_SYNC, 1133333, 24, 38, 0};
367     CheckSeekMode(fileTest7);
368     seekInfo fileTest8{"/data/test/media/H265_main@4_1920_1080_30_AAC_44.1K_2.mov",
369      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 19, 0};
370     CheckSeekMode(fileTest8);
371 }
372 
373 /**
374  * @tc.number    : DEMUXER_SEEK_0093
375  * @tc.name      : demuxer seek, H265_main@5_3840_2160_30_vorbis_48K_1.mov
376  * @tc.desc      : function test
377  */
378 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0093, TestSize.Level0)
379 {
380     seekInfo fileTest1{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
381      SEEK_MODE_NEXT_SYNC, 0, 60, 96, 0};
382     CheckSeekMode(fileTest1);
383     seekInfo fileTest2{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
384      SEEK_MODE_NEXT_SYNC, 1233333, 22, 38, 0};
385     CheckSeekMode(fileTest2);
386     seekInfo fileTest3{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
387      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 96, 0};
388     CheckSeekMode(fileTest3);
389     seekInfo fileTest4{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
390      SEEK_MODE_PREVIOUS_SYNC, 1233333, 33, 56, 0};
391     CheckSeekMode(fileTest4);
392     seekInfo fileTest5{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
393      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 20, 0};
394     CheckSeekMode(fileTest5);
395     seekInfo fileTest6{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
396      SEEK_MODE_CLOSEST_SYNC, 0, 60, 96, 0};
397     CheckSeekMode(fileTest6);
398     seekInfo fileTest7{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
399      SEEK_MODE_CLOSEST_SYNC, 1233333, 33, 56, 0};
400     CheckSeekMode(fileTest7);
401     seekInfo fileTest8{"/data/test/media/H265_main@5_3840_2160_30_vorbis_48K_1.mov",
402      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 20, 0};
403     CheckSeekMode(fileTest8);
404 }
405 
406 /**
407  * @tc.number    : DEMUXER_SEEK_0094
408  * @tc.name      : demuxer seek, H265_main10@4.1_1280_720_60_MP2_48K_1.mov
409  * @tc.desc      : function test
410  */
411 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0094, TestSize.Level0)
412 {
413     seekInfo fileTest1{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
414      SEEK_MODE_NEXT_SYNC, 0, 119, 84, 0};
415     CheckSeekMode(fileTest1);
416     seekInfo fileTest2{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
417      SEEK_MODE_NEXT_SYNC, 983333, 53, 39, 0};
418     CheckSeekMode(fileTest2);
419     seekInfo fileTest3{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
420      SEEK_MODE_PREVIOUS_SYNC, 0, 119, 84, 0};
421     CheckSeekMode(fileTest3);
422     seekInfo fileTest4{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
423      SEEK_MODE_PREVIOUS_SYNC, 983333, 63, 47, 0};
424     CheckSeekMode(fileTest4);
425     seekInfo fileTest5{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
426      SEEK_MODE_PREVIOUS_SYNC, 1966667, 13, 12, 0};
427     CheckSeekMode(fileTest5);
428     seekInfo fileTest6{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
429      SEEK_MODE_CLOSEST_SYNC, 0, 119, 84, 0};
430     CheckSeekMode(fileTest6);
431     seekInfo fileTest7{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
432      SEEK_MODE_CLOSEST_SYNC, 983333, 63, 47, 0};
433     CheckSeekMode(fileTest7);
434     seekInfo fileTest8{"/data/test/media/H265_main10@4.1_1280_720_60_MP2_48K_1.mov",
435      SEEK_MODE_CLOSEST_SYNC, 1966667, 13, 12, 0};
436     CheckSeekMode(fileTest8);
437 }
438 
439 /**
440  * @tc.number    : DEMUXER_SEEK_0095
441  * @tc.name      : demuxer seek, H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov
442  * @tc.desc      : function test
443  */
444 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0095, TestSize.Level0)
445 {
446     seekInfo fileTest1{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
447      SEEK_MODE_NEXT_SYNC, 0, 119, 171, 0};
448     CheckSeekMode(fileTest1);
449     seekInfo fileTest2{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
450      SEEK_MODE_NEXT_SYNC, 1433333, 30, 46, 0};
451     CheckSeekMode(fileTest2);
452     seekInfo fileTest3{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
453      SEEK_MODE_PREVIOUS_SYNC, 0, 119, 171, 0};
454     CheckSeekMode(fileTest3);
455     seekInfo fileTest4{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
456      SEEK_MODE_PREVIOUS_SYNC, 1433333, 40, 61, 0};
457     CheckSeekMode(fileTest4);
458     seekInfo fileTest5{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
459      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 19, 0};
460     CheckSeekMode(fileTest5);
461     seekInfo fileTest6{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
462      SEEK_MODE_CLOSEST_SYNC, 0, 119, 171, 0};
463     CheckSeekMode(fileTest6);
464     seekInfo fileTest7{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
465      SEEK_MODE_CLOSEST_SYNC, 1433333, 30, 46, 0};
466     CheckSeekMode(fileTest7);
467     seekInfo fileTest8{"/data/test/media/H265_main10@5.1_3840_2160_60_PCM(mulaw)_48K_16_2.mov",
468      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 19, 0};
469     CheckSeekMode(fileTest8);
470 }
471 
472 /**
473  * @tc.number    : DEMUXER_SEEK_0096
474  * @tc.name      : demuxer seek, H265_main10@5_1920_1080_60_MP3_44.1K_2.mov
475  * @tc.desc      : function test
476  */
477 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0096, TestSize.Level0)
478 {
479     seekInfo fileTest1{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
480      SEEK_MODE_NEXT_SYNC, 0, 119, 78, 0};
481     CheckSeekMode(fileTest1);
482     seekInfo fileTest2{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
483      SEEK_MODE_NEXT_SYNC, 1300000, 40, 27, 0};
484     CheckSeekMode(fileTest2);
485     seekInfo fileTest3{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
486      SEEK_MODE_PREVIOUS_SYNC, 0, 119, 78, 0};
487     CheckSeekMode(fileTest3);
488     seekInfo fileTest4{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
489      SEEK_MODE_PREVIOUS_SYNC, 1300000, 53, 37, 0};
490     CheckSeekMode(fileTest4);
491     seekInfo fileTest5{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
492      SEEK_MODE_PREVIOUS_SYNC, 1966667, 9, 9, 0};
493     CheckSeekMode(fileTest5);
494     seekInfo fileTest6{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
495      SEEK_MODE_CLOSEST_SYNC, 0, 119, 78, 0};
496     CheckSeekMode(fileTest6);
497     seekInfo fileTest7{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
498      SEEK_MODE_CLOSEST_SYNC, 1300000, 53, 37, 0};
499     CheckSeekMode(fileTest7);
500     seekInfo fileTest8{"/data/test/media/H265_main10@5_1920_1080_60_MP3_44.1K_2.mov",
501      SEEK_MODE_CLOSEST_SYNC, 1966667, 9, 9, 0};
502     CheckSeekMode(fileTest8);
503 }
504 
505 /**
506  * @tc.number    : DEMUXER_SEEK_0097
507  * @tc.name      : demuxer seek, MPEG4_ASP@3_352_288_30_MP3_32K_1.mov
508  * @tc.desc      : function test
509  */
510 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0097, TestSize.Level0)
511 {
512     seekInfo fileTest1{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
513      SEEK_MODE_NEXT_SYNC, 0, 60, 57, 0};
514     CheckSeekMode(fileTest1);
515     seekInfo fileTest2{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
516      SEEK_MODE_NEXT_SYNC, 500000, 40, 37, 0};
517     CheckSeekMode(fileTest2);
518     seekInfo fileTest3{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
519      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 57, 0};
520     CheckSeekMode(fileTest3);
521     seekInfo fileTest4{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
522      SEEK_MODE_PREVIOUS_SYNC, 500000, 50, 47, 0};
523     CheckSeekMode(fileTest4);
524     seekInfo fileTest5{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
525      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 10, 0};
526     CheckSeekMode(fileTest5);
527     seekInfo fileTest6{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
528      SEEK_MODE_CLOSEST_SYNC, 0, 60, 57, 0};
529     CheckSeekMode(fileTest6);
530     seekInfo fileTest7{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
531      SEEK_MODE_CLOSEST_SYNC, 500000, 50, 47, 0};
532     CheckSeekMode(fileTest7);
533     seekInfo fileTest8{"/data/test/media/MPEG4_ASP@3_352_288_30_MP3_32K_1.mov",
534      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 10, 0};
535     CheckSeekMode(fileTest8);
536 }
537 
538 /**
539  * @tc.number    : DEMUXER_SEEK_0098
540  * @tc.name      : demuxer seek, MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov
541  * @tc.desc      : function test
542  */
543 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0098, TestSize.Level0)
544 {
545     seekInfo fileTest1{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
546      SEEK_MODE_NEXT_SYNC, 0, 60, 90, 0};
547     CheckSeekMode(fileTest1);
548     seekInfo fileTest2{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
549      SEEK_MODE_NEXT_SYNC, 933333, 30, 46, 0};
550     CheckSeekMode(fileTest2);
551     seekInfo fileTest3{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
552      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 90, 0};
553     CheckSeekMode(fileTest3);
554     seekInfo fileTest4{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
555      SEEK_MODE_PREVIOUS_SYNC, 933333, 40, 61, 0};
556     CheckSeekMode(fileTest4);
557     seekInfo fileTest5{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
558      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 16, 0};
559     CheckSeekMode(fileTest5);
560     seekInfo fileTest6{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
561      SEEK_MODE_CLOSEST_SYNC, 0, 60, 90, 0};
562     CheckSeekMode(fileTest6);
563     seekInfo fileTest7{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
564      SEEK_MODE_CLOSEST_SYNC, 933333, 30, 46, 0};
565     CheckSeekMode(fileTest7);
566     seekInfo fileTest8{"/data/test/media/MPEG4_ASP@4_720_576_30_Vorbis_44.1K_2.mov",
567      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 16, 0};
568     CheckSeekMode(fileTest8);
569 }
570 
571 /**
572  * @tc.number    : DEMUXER_SEEK_0099
573  * @tc.name      : demuxer seek, MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov
574  * @tc.desc      : function test
575  */
576 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0099, TestSize.Level0)
577 {
578     seekInfo fileTest1{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
579      SEEK_MODE_NEXT_SYNC, 0, 45, 65, 0};
580     CheckSeekMode(fileTest1);
581     seekInfo fileTest2{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
582      SEEK_MODE_NEXT_SYNC, 700000, 15, 21, 0};
583     CheckSeekMode(fileTest2);
584     seekInfo fileTest3{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
585      SEEK_MODE_PREVIOUS_SYNC, 0, 45, 65, 0};
586     CheckSeekMode(fileTest3);
587     seekInfo fileTest4{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
588      SEEK_MODE_PREVIOUS_SYNC, 700000, 25, 37, 0};
589     CheckSeekMode(fileTest4);
590     seekInfo fileTest5{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
591      SEEK_MODE_PREVIOUS_SYNC, 1466667, 5, 8, 0};
592     CheckSeekMode(fileTest5);
593     seekInfo fileTest6{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
594      SEEK_MODE_CLOSEST_SYNC, 0, 45, 65, 0};
595     CheckSeekMode(fileTest6);
596     seekInfo fileTest7{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
597      SEEK_MODE_CLOSEST_SYNC, 700000, 25, 37, 0};
598     CheckSeekMode(fileTest7);
599     seekInfo fileTest8{"/data/test/media/MPEG4_Core@2_1920_1080_30_PCM(mulaw)_44.1K_16_1.mov",
600      SEEK_MODE_CLOSEST_SYNC, 1466667, 5, 8, 0};
601     CheckSeekMode(fileTest8);
602 }
603 
604 /**
605  * @tc.number    : DEMUXER_SEEK_0100
606  * @tc.name      : demuxer seek, MPEG4_SP@5_720_480_30_AAC_32K_1.mov
607  * @tc.desc      : function test
608  */
609 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0100, TestSize.Level0)
610 {
611     seekInfo fileTest1{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
612      SEEK_MODE_NEXT_SYNC, 0, 60, 63, 0};
613     CheckSeekMode(fileTest1);
614     seekInfo fileTest2{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
615      SEEK_MODE_NEXT_SYNC, 1466667, 10, 10, 0};
616     CheckSeekMode(fileTest2);
617     seekInfo fileTest3{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
618      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 63, 0};
619     CheckSeekMode(fileTest3);
620     seekInfo fileTest4{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
621      SEEK_MODE_PREVIOUS_SYNC, 1466667, 20, 22, 0};
622     CheckSeekMode(fileTest4);
623     seekInfo fileTest5{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
624      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 11, 0};
625     CheckSeekMode(fileTest5);
626     seekInfo fileTest6{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
627      SEEK_MODE_CLOSEST_SYNC, 0, 60, 63, 0};
628     CheckSeekMode(fileTest6);
629     seekInfo fileTest7{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
630      SEEK_MODE_CLOSEST_SYNC, 1466667, 20, 22, 0};
631     CheckSeekMode(fileTest7);
632     seekInfo fileTest8{"/data/test/media/MPEG4_SP@5_720_480_30_AAC_32K_1.mov",
633      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 11, 0};
634     CheckSeekMode(fileTest8);
635 }
636 
637 /**
638  * @tc.number    : DEMUXER_SEEK_0101
639  * @tc.name      : demuxer seek, MPEG4_SP@6_1280_720_30_MP2_32K_2.mov
640  * @tc.desc      : function test
641  */
642 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0101, TestSize.Level0)
643 {
644     seekInfo fileTest1{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
645      SEEK_MODE_NEXT_SYNC, 0, 60, 56, 0};
646     CheckSeekMode(fileTest1);
647     seekInfo fileTest2{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
648      SEEK_MODE_NEXT_SYNC, 1100000, 20, 19, 0};
649     CheckSeekMode(fileTest2);
650     seekInfo fileTest3{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
651      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 56, 0};
652     CheckSeekMode(fileTest3);
653     seekInfo fileTest4{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
654      SEEK_MODE_PREVIOUS_SYNC, 1100000, 30, 29, 0};
655     CheckSeekMode(fileTest4);
656     seekInfo fileTest5{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
657      SEEK_MODE_PREVIOUS_SYNC, 1966667, 10, 10, 0};
658     CheckSeekMode(fileTest5);
659     seekInfo fileTest6{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
660      SEEK_MODE_CLOSEST_SYNC, 0, 60, 56, 0};
661     CheckSeekMode(fileTest6);
662     seekInfo fileTest7{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
663      SEEK_MODE_CLOSEST_SYNC, 1100000, 30, 29, 0};
664     CheckSeekMode(fileTest7);
665     seekInfo fileTest8{"/data/test/media/MPEG4_SP@6_1280_720_30_MP2_32K_2.mov",
666      SEEK_MODE_CLOSEST_SYNC, 1966667, 10, 10, 0};
667     CheckSeekMode(fileTest8);
668 }
669 
670 /**
671  * @tc.number    : DEMUXER_SEEK_0102
672  * @tc.name      : demuxer seek, H264_base@5_1920_1080_30_MP2_44.1K_1.mpg
673  * @tc.desc      : function test
674  */
675 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0102, TestSize.Level0)
676 {
677     seekInfo fileTest1{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
678      SEEK_MODE_NEXT_SYNC, 0, 60, 77, 0};
679     CheckSeekMode(fileTest1);
680     seekInfo fileTest2{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
681      SEEK_MODE_NEXT_SYNC, 800000, 36, 72, 0};
682     CheckSeekMode(fileTest2);
683     seekInfo fileTest3{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
684      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 77, 0};
685     CheckSeekMode(fileTest3);
686     seekInfo fileTest4{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
687      SEEK_MODE_PREVIOUS_SYNC, 800000, 36, 72, 0};
688     CheckSeekMode(fileTest4);
689     seekInfo fileTest5{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
690      SEEK_MODE_PREVIOUS_SYNC, 2000000, 2, 28, 0};
691     CheckSeekMode(fileTest5);
692     seekInfo fileTest6{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
693      SEEK_MODE_CLOSEST_SYNC, 0, 60, 77, 0};
694     CheckSeekMode(fileTest6);
695     seekInfo fileTest7{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
696      SEEK_MODE_CLOSEST_SYNC, 800000, 36, 72, 0};
697     CheckSeekMode(fileTest7);
698     seekInfo fileTest8{"/data/test/media/H264_base@5_1920_1080_30_MP2_44.1K_1.mpg",
699      SEEK_MODE_CLOSEST_SYNC, 2000000, 2, 28, 0};
700     CheckSeekMode(fileTest8);
701 }
702 
703 /**
704  * @tc.number    : DEMUXER_SEEK_0103
705  * @tc.name      : demuxer seek, H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg
706  * @tc.desc      : function test
707  */
708 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0103, TestSize.Level0)
709 {
710     seekInfo fileTest1{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
711      SEEK_MODE_NEXT_SYNC, 0, 118, 82, 0};
712     CheckSeekMode(fileTest1);
713     seekInfo fileTest2{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
714      SEEK_MODE_NEXT_SYNC, 940000, 59, 69, 0};
715     CheckSeekMode(fileTest2);
716     seekInfo fileTest3{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
717      SEEK_MODE_PREVIOUS_SYNC, 0, 118, 82, 0};
718     CheckSeekMode(fileTest3);
719     seekInfo fileTest4{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
720      SEEK_MODE_PREVIOUS_SYNC, 940000, 62, 73, 0};
721     CheckSeekMode(fileTest4);
722     seekInfo fileTest5{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
723      SEEK_MODE_PREVIOUS_SYNC, 1950000, 2, 29, 0};
724     CheckSeekMode(fileTest5);
725     seekInfo fileTest6{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
726      SEEK_MODE_CLOSEST_SYNC, 0, 118, 82, 0};
727     CheckSeekMode(fileTest6);
728     seekInfo fileTest7{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
729      SEEK_MODE_CLOSEST_SYNC, 940000, 62, 73, 0};
730     CheckSeekMode(fileTest7);
731     seekInfo fileTest8{"/data/test/media/H264_h444p@5.1_1920_1080_60_MP2_48K_2.mpg",
732      SEEK_MODE_CLOSEST_SYNC, 1950000, 2, 29, 0};
733     CheckSeekMode(fileTest8);
734 }
735 
736 /**
737  * @tc.number    : DEMUXER_SEEK_0104
738  * @tc.name      : demuxer seek, H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg
739  * @tc.desc      : function test
740  */
741 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0104, TestSize.Level0)
742 {
743     seekInfo fileTest1{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
744      SEEK_MODE_NEXT_SYNC, 0, 59, 68, 0};
745     CheckSeekMode(fileTest1);
746     seekInfo fileTest2{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
747      SEEK_MODE_NEXT_SYNC, 940000, 29, 48, 0};
748     CheckSeekMode(fileTest2);
749     seekInfo fileTest3{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
750      SEEK_MODE_PREVIOUS_SYNC, 0, 59, 68, 0};
751     CheckSeekMode(fileTest3);
752     seekInfo fileTest4{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
753      SEEK_MODE_PREVIOUS_SYNC, 940000, 30, 58, 0};
754     CheckSeekMode(fileTest4);
755     seekInfo fileTest5{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
756      SEEK_MODE_PREVIOUS_SYNC, 2000000, 1, 17, 0};
757     CheckSeekMode(fileTest5);
758     seekInfo fileTest6{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
759      SEEK_MODE_CLOSEST_SYNC, 0, 59, 68, 0};
760     CheckSeekMode(fileTest6);
761     seekInfo fileTest7{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
762      SEEK_MODE_CLOSEST_SYNC, 940000, 30, 58, 0};
763     CheckSeekMode(fileTest7);
764     seekInfo fileTest8{"/data/test/media/H264_high@5.1_3840_2160_30_MP3_44.1K_1.mpg",
765      SEEK_MODE_CLOSEST_SYNC, 2000000, 1, 17, 0};
766     CheckSeekMode(fileTest8);
767 }
768 
769 /**
770  * @tc.number    : DEMUXER_SEEK_0105
771  * @tc.name      : demuxer seek, H264_main@4.2_1280_720_60_MP3_32K_2.mpg
772  * @tc.desc      : function test
773  */
774 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0105, TestSize.Level0)
775 {
776     seekInfo fileTest1{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
777      SEEK_MODE_NEXT_SYNC, 0, 118, 53, 0};
778     CheckSeekMode(fileTest1);
779     seekInfo fileTest2{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
780      SEEK_MODE_NEXT_SYNC, 700000, 74, 46, 0};
781     CheckSeekMode(fileTest2);
782     seekInfo fileTest3{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
783      SEEK_MODE_PREVIOUS_SYNC, 0, 118, 53, 0};
784     CheckSeekMode(fileTest3);
785     seekInfo fileTest4{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
786      SEEK_MODE_PREVIOUS_SYNC, 700000, 78, 46, 0};
787     CheckSeekMode(fileTest4);
788     seekInfo fileTest5{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
789      SEEK_MODE_PREVIOUS_SYNC, 1983333, 3, 15, 0};
790     CheckSeekMode(fileTest5);
791     seekInfo fileTest6{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
792      SEEK_MODE_CLOSEST_SYNC, 0, 118, 53, 0};
793     CheckSeekMode(fileTest6);
794     seekInfo fileTest7{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
795      SEEK_MODE_CLOSEST_SYNC, 700000, 74, 46, 0};
796     CheckSeekMode(fileTest7);
797     seekInfo fileTest8{"/data/test/media/H264_main@4.2_1280_720_60_MP3_32K_2.mpg",
798      SEEK_MODE_CLOSEST_SYNC, 1983333, 3, 15, 0};
799     CheckSeekMode(fileTest8);
800 }
801 
802 /**
803  * @tc.number    : DEMUXER_SEEK_0106
804  * @tc.name      : demuxer seek, MPEG2_422p_1280_720_60_MP3_32K_1.mpg
805  * @tc.desc      : function test
806  */
807 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0106, TestSize.Level0)
808 {
809     seekInfo fileTest1{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
810      SEEK_MODE_NEXT_SYNC, 0, 118, 47, 0};
811     CheckSeekMode(fileTest1);
812     seekInfo fileTest2{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
813      SEEK_MODE_NEXT_SYNC, 700000, 76, 38, 0};
814     CheckSeekMode(fileTest2);
815     seekInfo fileTest3{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
816      SEEK_MODE_PREVIOUS_SYNC, 0, 118, 47, 0};
817     CheckSeekMode(fileTest3);
818     seekInfo fileTest4{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
819      SEEK_MODE_PREVIOUS_SYNC, 700000, 78, 38, 0};
820     CheckSeekMode(fileTest4);
821     seekInfo fileTest5{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
822      SEEK_MODE_PREVIOUS_SYNC, 1983333, 2, 1, 0};
823     CheckSeekMode(fileTest5);
824     seekInfo fileTest6{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
825      SEEK_MODE_CLOSEST_SYNC, 0, 118, 47, 0};
826     CheckSeekMode(fileTest6);
827     seekInfo fileTest7{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
828      SEEK_MODE_CLOSEST_SYNC, 700000, 78, 38, 0};
829     CheckSeekMode(fileTest7);
830     seekInfo fileTest8{"/data/test/media/MPEG2_422p_1280_720_60_MP3_32K_1.mpg",
831      SEEK_MODE_CLOSEST_SYNC, 1983333, 2, 1, 0};
832     CheckSeekMode(fileTest8);
833 }
834 
835 /**
836  * @tc.number    : DEMUXER_SEEK_0107
837  * @tc.name      : demuxer seek, MPEG2_high_720_480_30_MP2_32K_2.mpg
838  * @tc.desc      : function test
839  */
840 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0107, TestSize.Level0)
841 {
842     seekInfo fileTest1{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
843      SEEK_MODE_NEXT_SYNC, 0, 59, 57, 0};
844     CheckSeekMode(fileTest1);
845     seekInfo fileTest2{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
846      SEEK_MODE_NEXT_SYNC, 790000, 36, 52, 0};
847     CheckSeekMode(fileTest2);
848     seekInfo fileTest3{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
849      SEEK_MODE_PREVIOUS_SYNC, 0, 59, 57, 0};
850     CheckSeekMode(fileTest3);
851     seekInfo fileTest4{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
852      SEEK_MODE_PREVIOUS_SYNC, 790000, 38, 55, 0};
853     CheckSeekMode(fileTest4);
854     seekInfo fileTest5{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
855      SEEK_MODE_PREVIOUS_SYNC, 2000000, 2, 20, 0};
856     CheckSeekMode(fileTest5);
857     seekInfo fileTest6{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
858      SEEK_MODE_CLOSEST_SYNC, 0, 59, 57, 0};
859     CheckSeekMode(fileTest6);
860     seekInfo fileTest7{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
861      SEEK_MODE_CLOSEST_SYNC, 790000, 36, 52, 0};
862     CheckSeekMode(fileTest7);
863     seekInfo fileTest8{"/data/test/media/MPEG2_high_720_480_30_MP2_32K_2.mpg",
864      SEEK_MODE_CLOSEST_SYNC, 2000000, 2, 20, 0};
865     CheckSeekMode(fileTest8);
866 }
867 
868 /**
869  * @tc.number    : DEMUXER_SEEK_0108
870  * @tc.name      : demuxer seek, MPEG2_main_352_288_30_MP2_44.1K_1.mpg
871  * @tc.desc      : function test
872  */
873 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0108, TestSize.Level0)
874 {
875     seekInfo fileTest1{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
876      SEEK_MODE_NEXT_SYNC, 0, 60, 79, 0};
877     CheckSeekMode(fileTest1);
878     seekInfo fileTest2{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
879      SEEK_MODE_NEXT_SYNC, 1260000, 20, 52, 0};
880     CheckSeekMode(fileTest2);
881     seekInfo fileTest3{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
882      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 79, 0};
883     CheckSeekMode(fileTest3);
884     seekInfo fileTest4{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
885      SEEK_MODE_PREVIOUS_SYNC, 1260000, 23, 54, 0};
886     CheckSeekMode(fileTest4);
887     seekInfo fileTest5{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
888      SEEK_MODE_PREVIOUS_SYNC, 1933333, 3, 31, 0};
889     CheckSeekMode(fileTest5);
890     seekInfo fileTest6{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
891      SEEK_MODE_CLOSEST_SYNC, 0, 60, 79, 0};
892     CheckSeekMode(fileTest6);
893     seekInfo fileTest7{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
894      SEEK_MODE_CLOSEST_SYNC, 1260000, 23, 54, 0};
895     CheckSeekMode(fileTest7);
896     seekInfo fileTest8{"/data/test/media/MPEG2_main_352_288_30_MP2_44.1K_1.mpg",
897      SEEK_MODE_CLOSEST_SYNC, 1933333, 3, 31, 0};
898     CheckSeekMode(fileTest8);
899 }
900 
901 /**
902  * @tc.number    : DEMUXER_SEEK_0109
903  * @tc.name      : demuxer seek, MPEG2_main_1920_1080_30_MP3_48K_2.mpg
904  * @tc.desc      : function test
905  */
906 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0109, TestSize.Level0)
907 {
908     seekInfo fileTest1{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
909      SEEK_MODE_NEXT_SYNC, 0, 60, 79, 0};
910     CheckSeekMode(fileTest1);
911     seekInfo fileTest2{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
912      SEEK_MODE_NEXT_SYNC, 1190000, 24, 48, 0};
913     CheckSeekMode(fileTest2);
914     seekInfo fileTest3{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
915      SEEK_MODE_PREVIOUS_SYNC, 0, 60, 79, 0};
916     CheckSeekMode(fileTest3);
917     seekInfo fileTest4{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
918      SEEK_MODE_PREVIOUS_SYNC, 1190000, 25, 48, 0};
919     CheckSeekMode(fileTest4);
920     seekInfo fileTest5{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
921      SEEK_MODE_PREVIOUS_SYNC, 2000000, 2, 16, 0};
922     CheckSeekMode(fileTest5);
923     seekInfo fileTest6{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
924      SEEK_MODE_CLOSEST_SYNC, 0, 60, 79, 0};
925     CheckSeekMode(fileTest6);
926     seekInfo fileTest7{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
927      SEEK_MODE_CLOSEST_SYNC, 1190000, 24, 48, 0};
928     CheckSeekMode(fileTest7);
929     seekInfo fileTest8{"/data/test/media/MPEG2_main_1920_1080_30_MP3_48K_2.mpg",
930      SEEK_MODE_CLOSEST_SYNC, 2000000, 2, 16, 0};
931     CheckSeekMode(fileTest8);
932 }
933 
934 /**
935  * @tc.number    : DEMUXER_SEEK_0110
936  * @tc.name      : demuxer seek, MPEG2_simple_320_240_24_MP3_48K_2.mpg
937  * @tc.desc      : function test
938  */
939 HWTEST_F(DemuxerSeek2NdkTest, DEMUXER_SEEK_0110, TestSize.Level0)
940 {
941     seekInfo fileTest1{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
942      SEEK_MODE_NEXT_SYNC, 0, 48, 79, 0};
943     CheckSeekMode(fileTest1);
944     seekInfo fileTest2{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
945      SEEK_MODE_NEXT_SYNC, 833333, 28, 74, 0};
946     CheckSeekMode(fileTest2);
947     seekInfo fileTest3{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
948      SEEK_MODE_PREVIOUS_SYNC, 0, 48, 79, 0};
949     CheckSeekMode(fileTest3);
950     seekInfo fileTest4{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
951      SEEK_MODE_PREVIOUS_SYNC, 833333, 34, 74, 0};
952     CheckSeekMode(fileTest4);
953     seekInfo fileTest5{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
954      SEEK_MODE_PREVIOUS_SYNC, 1939689, 5, 32, 0};
955     CheckSeekMode(fileTest5);
956     seekInfo fileTest6{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
957      SEEK_MODE_CLOSEST_SYNC, 0, 48, 79, 0};
958     CheckSeekMode(fileTest6);
959     seekInfo fileTest7{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
960      SEEK_MODE_CLOSEST_SYNC, 833333, 28, 74, 0};
961     CheckSeekMode(fileTest7);
962     seekInfo fileTest8{"/data/test/media/MPEG2_simple_320_240_24_MP3_48K_2.mpg",
963      SEEK_MODE_CLOSEST_SYNC, 1939689, 5, 32, 0};
964     CheckSeekMode(fileTest8);
965 }