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