• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "player_unit_test.h"
17 #include <unistd.h>
18 #include <securec.h>
19 #include "media_errors.h"
20 #include "media_errors.cpp"
21 #include "audio_effect.h"
22 #include "av_common.h"
23 #include "meta/video_types.h"
24 
25 using namespace std;
26 using namespace testing::ext;
27 using namespace OHOS::Media::PlayerTestParam;
28 
29 namespace OHOS {
30 namespace Media {
31 
SetUpTestCase(void)32 void PlayerUnitTest::SetUpTestCase(void)
33 {
34 }
35 
TearDownTestCase(void)36 void PlayerUnitTest::TearDownTestCase(void)
37 {
38 }
39 
SetUp(void)40 void PlayerUnitTest::SetUp(void)
41 {
42     callback_ = std::make_shared<PlayerCallbackTest>();
43     ASSERT_NE(nullptr, callback_);
44     player_ = std::make_shared<PlayerMock>(callback_);
45     ASSERT_NE(nullptr, player_);
46     EXPECT_TRUE(player_->CreatePlayer());
47     EXPECT_EQ(MSERR_OK, player_->SetPlayerCallback(callback_));
48 }
49 
TearDown(void)50 void PlayerUnitTest::TearDown(void)
51 {
52     if (player_ != nullptr) {
53         player_->Release();
54     }
55 }
56 
PlayFunTest(const std::string & protocol)57 void PlayerUnitTest::PlayFunTest(const std::string &protocol)
58 {
59     int32_t duration = 0;
60     if (player_ != nullptr) {
61         EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
62         EXPECT_EQ(MSERR_OK, player_->Play());
63         EXPECT_TRUE(player_->IsPlaying());
64         EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
65         EXPECT_EQ(MSERR_OK, player_->Pause());
66         int32_t time;
67         EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
68         std::vector<Format> videoTrack;
69         std::vector<Format> audioTrack;
70         EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
71         EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
72         PlaybackRateMode mode;
73         player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X);
74         player_->GetPlaybackSpeed(mode);
75         EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
76         EXPECT_EQ(true, player_->IsLooping());
77         EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
78         EXPECT_EQ(MSERR_OK, player_->Play());
79         sleep(PLAYING_TIME_2_SEC);
80         if (protocol == PlayerTestParam::HLS_PLAY) {
81             EXPECT_EQ(MSERR_OK, player_->SelectBitRate(200000));  // 200000:bitrate
82             sleep(PLAYING_TIME_2_SEC);
83         }
84         EXPECT_EQ(MSERR_OK, player_->SetLooping(false));
85         EXPECT_EQ(false, player_->IsLooping());
86         EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
87         EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
88         EXPECT_EQ(MSERR_OK, player_->Stop());
89         EXPECT_EQ(MSERR_OK, player_->Reset());
90     }
91 }
92 
NoRunPlayFunTest(const std::string & protocol)93 void PlayerUnitTest::NoRunPlayFunTest(const std::string &protocol)
94 {
95     int32_t duration = 0;
96     if (player_ != nullptr) {
97         EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
98         EXPECT_NE(MSERR_OK, player_->Play());
99         EXPECT_FALSE(player_->IsPlaying());
100         EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
101         EXPECT_NE(MSERR_OK, player_->Pause());
102         int32_t time;
103         EXPECT_NE(MSERR_OK, player_->GetCurrentTime(time));
104         std::vector<Format> videoTrack;
105         std::vector<Format> audioTrack;
106         EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
107         EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
108         PlaybackRateMode mode;
109         player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X);
110         player_->GetPlaybackSpeed(mode);
111         EXPECT_NE(MSERR_OK, player_->SetLooping(true));
112         EXPECT_NE(true, player_->IsLooping());
113         EXPECT_NE(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
114         EXPECT_NE(MSERR_OK, player_->Play());
115         sleep(PLAYING_TIME_2_SEC);
116         if (protocol == PlayerTestParam::HLS_PLAY) {
117             EXPECT_NE(MSERR_OK, player_->SelectBitRate(200000));  // 200000:bitrate
118             sleep(PLAYING_TIME_2_SEC);
119         }
120         EXPECT_NE(MSERR_OK, player_->SetLooping(false));
121         EXPECT_EQ(false, player_->IsLooping());
122         EXPECT_NE(MSERR_OK, player_->SetVolume(1, 1));
123         EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
124         EXPECT_NE(MSERR_OK, player_->Stop());
125         EXPECT_NE(MSERR_OK, player_->Reset());
126     }
127 }
128 
129 
GetSetParaFunTest()130 void PlayerUnitTest::GetSetParaFunTest()
131 {
132     if (player_ != nullptr) {
133         int32_t duration = 0;
134         int32_t time = 0;
135         PlaybackRateMode mode;
136         std::vector<Format> videoTrack;
137         std::vector<Format> audioTrack;
138         player_->GetVideoTrackInfo(videoTrack);
139         player_->GetAudioTrackInfo(audioTrack);
140         player_->GetCurrentTime(time);
141         player_->GetDuration(duration);
142         player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X);
143         player_->GetPlaybackSpeed(mode);
144         player_->SetLooping(true);
145         player_->IsLooping();
146         player_->SetVolume(1, 1);
147     }
148 }
149 
MediaServiceErrCodeTest(MediaServiceErrCode code)150 void PlayerUnitTest::MediaServiceErrCodeTest(MediaServiceErrCode code)
151 {
152     if (MSERRCODE_INFOS.count(code) != 0) {
153         EXPECT_EQ(MSERRCODE_INFOS.at(code), MSErrorToString(code));
154     } else if (code > MSERR_EXTEND_START) {
155         EXPECT_EQ("extend error:" + std::to_string(static_cast<int32_t>(code - MSERR_EXTEND_START)),
156             MSErrorToString(code));
157     } else {
158         EXPECT_EQ("invalid error code:" + std::to_string(static_cast<int32_t>(code)), MSErrorToString(code));
159     }
160 
161     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODE.count(code) != 0 &&
162         MSEXTERRCODE_INFOS.count(MSERRCODE_TO_EXTERRORCODE.at(code)) != 0) {
163         EXPECT_EQ(MSEXTERRCODE_INFOS.at(MSERRCODE_TO_EXTERRORCODE.at(code)), MSErrorToExtErrorString(code));
164     } else {
165         EXPECT_EQ("unkown error", MSErrorToExtErrorString(code));
166     }
167 
168     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODE.count(code) != 0) {
169         EXPECT_EQ(MSERRCODE_TO_EXTERRORCODE.at(code), MSErrorToExtError(code));
170     } else {
171         EXPECT_EQ(MSERR_EXT_UNKNOWN, MSErrorToExtError(code));
172     }
173 
174     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODEAPI9.count(code) != 0 &&
175         MSEXTERRAPI9CODE_FUNCS.count(MSERRCODE_TO_EXTERRORCODEAPI9.at(code)) != 0) {
176         EXPECT_EQ(MSEXTERRAPI9CODE_FUNCS.at(MSERRCODE_TO_EXTERRORCODEAPI9.at(code))("test1", "test2"),
177             MSErrorToExtErrorAPI9String(code, "test1", "test2"));
178     } else {
179         EXPECT_EQ("unkown error", MSErrorToExtErrorAPI9String(code, "test1", "test2"));
180     }
181 
182     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODEAPI9.count(code) != 0) {
183         EXPECT_EQ(MSERRCODE_TO_EXTERRORCODEAPI9.at(code), MSErrorToExtErrorAPI9(code));
184     } else {
185         EXPECT_EQ(MSERR_EXT_API9_IO, MSErrorToExtErrorAPI9(code));
186     }
187 }
188 
MediaServiceExtErrCodeAPI9Test(MediaServiceExtErrCodeAPI9 code)189 void PlayerUnitTest::MediaServiceExtErrCodeAPI9Test(MediaServiceExtErrCodeAPI9 code)
190 {
191     if (MSEXTERRAPI9CODE_FUNCS.count(code) != 0) {
192         EXPECT_EQ(MSEXTERRAPI9CODE_FUNCS.at(code)("test1", "test2"),
193             MSExtErrorAPI9ToString(code, "test1", "test2"));
194     } else {
195         EXPECT_EQ("invalid error code:" + std::to_string(code), MSExtErrorAPI9ToString(code, "test1", "test2"));
196     }
197 
198     if (MSEXTERRCODE_API9_INFOS.count(code) != 0) {
199         EXPECT_EQ(MSEXTERRCODE_API9_INFOS.at(code), MSExtAVErrorToString(code));
200     } else {
201         EXPECT_EQ("invalid error code:", MSExtAVErrorToString(code));
202     }
203 }
204 
205 /**
206  * @tc.name  : Test Player SetMediaSource API
207  * @tc.number: Player_SetMediaSource_001
208  * @tc.desc  : Test Player SetMediaSource interface
209  */
210 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_001, TestSize.Level0)
211 {
212     std::map<std::string, std::string> header = {
213         {"key1", "value1"},
214         {"key2", "value2"},
215     };
216     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
217     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(VIDEO_FILE1, header);
218     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
219     EXPECT_EQ(MSERR_OK, ret);
220 }
221 
222 /**
223  * @tc.name  : Test Player SetMediaSource API
224  * @tc.number: Player_SetMediaSource_002
225  * @tc.desc  : Test Player SetMediaSource interface
226  */
227 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_002, TestSize.Level0)
228 {
229     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
230     int32_t ret = player_->SetMediaSource(nullptr, strategy);
231     EXPECT_NE(MSERR_OK, ret);
232 }
233 
234 /**
235  * @tc.name  : Test Player SetMediaSource API
236  * @tc.number: Player_SetMediaSource_003
237  * @tc.desc  : Test Player SetMediaSource interface
238  */
239 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_003, TestSize.Level0)
240 {
241     std::map<std::string, std::string> header = {
242         {"key1", "value1"},
243         {"key2", "value2"},
244     };
245     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
246     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
247     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
248     EXPECT_EQ(MSERR_OK, ret);
249     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
250 }
251 
252 /**
253  * @tc.name  : Test Player SetMediaSource API
254  * @tc.number: Player_SetMediaSource_004
255  * @tc.desc  : Test Player SetMediaSource interface
256  */
257 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_004, TestSize.Level0)
258 {
259     std::map<std::string, std::string> header = {
260         {"key1", "value1"},
261         {"key2", "value2"},
262     };
263     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
264     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
265     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
266     EXPECT_EQ(MSERR_OK, ret);
267     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
268     EXPECT_NE(MSERR_OK, player_->Prepare());
269 }
270 
271 /**
272  * @tc.name  : Test Player SetMediaSource API
273  * @tc.number: Player_SetMediaSource_005
274  * @tc.desc  : Test Player SetMediaSource interface
275  */
276 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_005, TestSize.Level0)
277 {
278     std::map<std::string, std::string> header = {
279         {"key1", "value1"},
280         {"key2", "value2"},
281     };
282     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
283     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
284     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
285     EXPECT_EQ(MSERR_OK, ret);
286     EXPECT_NE(MSERR_OK, player_->Play());
287     EXPECT_EQ(false, player_->IsPlaying());
288 }
289 
290 /**
291  * @tc.name  : Test Player SetMediaSource API
292  * @tc.number: Player_SetMediaSource_006
293  * @tc.desc  : Test Player SetMediaSource interface
294  */
295 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_006, TestSize.Level0)
296 {
297     std::map<std::string, std::string> header = {
298     };
299     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
300     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
301     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
302     EXPECT_EQ(MSERR_OK, ret);
303     EXPECT_NE(MSERR_OK, player_->Play());
304     EXPECT_EQ(false, player_->IsPlaying());
305 }
306 
307 /**
308  * @tc.name  : Test Player SetMediaSource API
309  * @tc.number: Player_SetMediaSource_007
310  * @tc.desc  : Test Player SetMediaSource interface pre_download
311  */
312 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_007, TestSize.Level0)
313 {
314     std::map<std::string, std::string> header = {
315         {"key1", "value1"},
316         {"key2", "value2"},
317     };
318     struct AVPlayStrategy strategy = {1080, 920, 0, false};
319     std::shared_ptr<LoaderCallback> mediaSourceLoaderCb = std::make_shared<MockLoaderCallback>();
320     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(VIDEO_URL, header);
321     mediaSource->mediaSourceLoaderCb_ = mediaSourceLoaderCb;
322     EXPECT_EQ(MSERR_OK, player_->SetMediaSource(mediaSource, strategy));
323 
324     sptr<Surface> videoSurface = player_->GetVideoSurface();
325     ASSERT_NE(nullptr, videoSurface);
326     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
327     int32_t ret = player_->PrepareAsync();
328     if (ret == MSERR_OK) {
329         PlayFunTest(PRE_DOWNLOAD);
330     }
331 }
332 
333 /**
334  * @tc.name  : Test Player SetMediaSource API
335  * @tc.number: Player_SetMediaSource_008
336  * @tc.desc  : Test Player SetMediaSource with MediaStream
337  */
338 HWTEST_F(PlayerUnitTest, Player_SetMediaSource_008, TestSize.Level0)
339 {
340     std::map<std::string, std::string> header = {
341     };
342     struct AVPlayStrategy strategy = {720, 1280, 0, false};
343     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>("", header);
344     AVPlayMediaStream mediaStream;
345     mediaStream.url = "http://media.iyuns.top:1003/live/SEI-H264.flv";
346     mediaStream.width = 720;
347     mediaStream.height = 1280;
348     mediaStream.bitrate = 1024*1024;
349     mediaSource->AddMediaStream(mediaStream);
350     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
351     EXPECT_EQ(MSERR_OK, ret);
352 }
353 
354 /**
355  * @tc.name  : Test Player SetSource API
356  * @tc.number: Player_SetSource_001
357  * @tc.desc  : Test Player SetSource interface
358  */
359 HWTEST_F(PlayerUnitTest, Player_SetSource_001, TestSize.Level0)
360 {
361     int32_t ret = player_->SetSource(VIDEO_FILE1);
362     EXPECT_EQ(MSERR_OK, ret);
363 }
364 
365 /**
366  * @tc.name  : Test Player SetSource API
367  * @tc.number: Player_SetSource_002
368  * @tc.desc  : Test Player SetSource interface with invalid path
369  */
370 HWTEST_F(PlayerUnitTest, Player_SetSource_002, TestSize.Level1)
371 {
372     int32_t ret = player_->SetSource(MEDIA_ROOT + "kong.mp4");
373     EXPECT_NE(MSERR_OK, ret);
374 }
375 
376 /**
377  * @tc.name  : Test Player SetSource API
378  * @tc.number: Player_SetSource_003
379  * @tc.desc  : Test Player SetSource interface with wrong mp3
380  */
381 HWTEST_F(PlayerUnitTest, Player_SetSource_003, TestSize.Level2)
382 {
383     system("param set sys.media.player.buffering.enable TRUE");
384     PlaybackRateMode mode;
385     int32_t time = 0;
386     int32_t duration = 0;
387     std::vector<Format> videoTrack;
388     std::vector<Format> audioTrack;
389     int32_t ret = player_->SetSource(MEDIA_ROOT + "1kb.mp3");
390     EXPECT_EQ(MSERR_OK, ret);
391     sptr<Surface> videoSurface = player_->GetVideoSurface();
392     ASSERT_NE(nullptr, videoSurface);
393     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
394     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
395     EXPECT_NE(MSERR_OK, player_->Prepare());
396     Format format;
397     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
398         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT));
399     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
400     EXPECT_NE(MSERR_OK, player_->SetVolume(1, 1));
401     EXPECT_NE(MSERR_OK, player_->Play());
402     EXPECT_EQ(false, player_->IsPlaying());
403     EXPECT_NE(MSERR_OK, player_->Pause());
404     EXPECT_NE(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
405     EXPECT_NE(MSERR_OK, player_->SetLooping(true));
406     EXPECT_EQ(false, player_->IsLooping());
407     EXPECT_NE(MSERR_OK, player_->SetVolume(1, 1));
408     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
409     EXPECT_NE(MSERR_OK, player_->GetPlaybackSpeed(mode));
410     EXPECT_NE(MSERR_OK, player_->GetCurrentTime(time));
411     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
412     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
413     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
414     EXPECT_NE(480, player_->GetVideoHeight());
415     EXPECT_NE(720, player_->GetVideoWidth());
416     EXPECT_NE(MSERR_OK, player_->Stop());
417     EXPECT_EQ(MSERR_OK, player_->Reset());
418     system("param set sys.media.player.buffering.enable FALSE");
419 }
420 
421 /**
422  * @tc.name  : Test Player SetSource API
423  * @tc.number: Player_SetSource_004
424  * @tc.desc  : Test Player SetSource interface with txt
425  */
426 HWTEST_F(PlayerUnitTest, Player_SetSource_004, TestSize.Level2)
427 {
428     int32_t ret = player_->SetSource(MEDIA_ROOT + "error.mp4");
429     EXPECT_EQ(MSERR_OK, ret);
430     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
431 }
432 
433 /**
434  * @tc.name  : Test Player SetSource
435  * @tc.number: Player_SetSource_005
436  * @tc.desc  : Test Player SetSource interface
437  */
438 HWTEST_F(PlayerUnitTest, Player_SetSource_005, TestSize.Level3)
439 {
440     PlaybackRateMode mode;
441     int32_t duration = 0;
442     std::vector<Format> videoTrack;
443     std::vector<Format> audioTrack;
444     Format format;
445     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
446         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT));
447     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
448     sptr<Surface> videoSurface = player_->GetVideoSurface();
449     ASSERT_NE(nullptr, videoSurface);
450     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
451     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
452     EXPECT_NE(MSERR_OK, player_->Prepare());
453     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
454     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
455     EXPECT_NE(MSERR_OK, player_->Play());
456     EXPECT_NE(MSERR_OK, player_->Pause());
457     EXPECT_NE(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
458     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
459     EXPECT_EQ(true, player_->IsLooping());
460     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
461     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
462     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
463     EXPECT_EQ(SPEED_FORWARD_1_00_X, mode);
464     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
465     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
466     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
467     EXPECT_NE(480, player_->GetVideoHeight());
468     EXPECT_NE(720, player_->GetVideoWidth());
469     EXPECT_NE(MSERR_OK, player_->Stop());
470     EXPECT_NE(MSERR_OK, player_->Reset());
471 }
472 
473 /**
474  * @tc.name  : Test Player SetSource API
475  * @tc.number: Player_SetSource_006
476  * @tc.desc  : Test Player SetSource interface
477  */
478 HWTEST_F(PlayerUnitTest, Player_SetSource_006, TestSize.Level2)
479 {
480     int32_t ret = player_->SetSource(VIDEO_FILE1);
481     EXPECT_EQ(MSERR_OK, ret);
482     EXPECT_EQ(MSERR_OK, player_->Reset());
483     EXPECT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
484 }
485 
486 /**
487  * @tc.name  : Test Player SetSource API
488  * @tc.number: Player_SetSource_007
489  * @tc.desc  : Test Player SetSource interface
490  */
491 HWTEST_F(PlayerUnitTest, Player_SetSource_007, TestSize.Level2)
492 {
493     EXPECT_NE(MSERR_OK, player_->SetSource(INVALID_FILE));
494 }
495 
496 /**
497  * @tc.name  : Test Player SetSource API
498  * @tc.number: Player_SetSource_009
499  * @tc.desc  : Test Player SetSource interface
500  */
501 HWTEST_F(PlayerUnitTest, Player_SetSource_009, TestSize.Level2)
502 {
503     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
504     sptr<Surface> videoSurface = player_->GetVideoSurface();
505     ASSERT_NE(nullptr, videoSurface);
506     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
507     int32_t ret = player_->PrepareAsync();
508     ASSERT_NE(MSERR_OK, player_->SetSource(MEDIA_ROOT + "AVC_Baseline@L1.2_81.0Kbps_320x240.mp4"));
509     if (ret == MSERR_OK) {
510         PlayFunTest(LOCAL_PLAY);
511     }
512 }
513 
514 /**
515  * @tc.name  : Test Player SetSource API
516  * @tc.number: Player_SetSource_012
517  * @tc.desc  : Test Player SetSource interface
518  */
519 HWTEST_F(PlayerUnitTest, Player_SetSource_012, TestSize.Level2)
520 {
521     int32_t ret = player_->SetSource(VIDEO_FILE1, 0, 0);
522     ASSERT_EQ(MSERR_OK, ret);
523 }
524 
525 /**
526  * @tc.name  : Test Player Local
527  * @tc.number: Player_Local_001
528  * @tc.desc  : Test Player Local source
529  */
530 HWTEST_F(PlayerUnitTest, Player_Local_001, TestSize.Level2)
531 {
532     int32_t ret = player_->SetSource(MEDIA_ROOT + "AVC_Baseline@L1.2_81.0Kbps_320x240.mp4");
533     EXPECT_EQ(MSERR_OK, ret);
534     sptr<Surface> videoSurface = player_->GetVideoSurface();
535     ASSERT_NE(nullptr, videoSurface);
536     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
537     ret = player_->PrepareAsync();
538     if (ret == MSERR_OK) {
539         PlayFunTest(LOCAL_PLAY);
540     }
541 }
542 
543 /**
544  * @tc.name  : Test Player Local
545  * @tc.number: Player_Local_003
546  * @tc.desc  : Test Player Local source
547  */
548 HWTEST_F(PlayerUnitTest, Player_Local_003, TestSize.Level2)
549 {
550     int32_t ret = player_->SetSource(MEDIA_ROOT + "H264_MP3.mp4");
551     EXPECT_EQ(MSERR_OK, ret);
552     sptr<Surface> videoSurface = player_->GetVideoSurface();
553     ASSERT_NE(nullptr, videoSurface);
554     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
555     ret = player_->PrepareAsync();
556     if (ret == MSERR_OK) {
557         PlayFunTest(LOCAL_PLAY);
558     }
559 }
560 
561 /**
562  * @tc.name  : Test Player Local
563  * @tc.number: Player_Local_008
564  * @tc.desc  : Test Player Local source
565  */
566 HWTEST_F(PlayerUnitTest, Player_Local_008, TestSize.Level2)
567 {
568     int32_t ret = player_->SetSource(MEDIA_ROOT + "out_170_170.mp4");
569     EXPECT_EQ(MSERR_OK, ret);
570     sptr<Surface> videoSurface = player_->GetVideoSurface();
571     ASSERT_NE(nullptr, videoSurface);
572     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
573     ret = player_->PrepareAsync();
574     if (ret == MSERR_OK) {
575         PlayFunTest(LOCAL_PLAY);
576     }
577 }
578 
579 /**
580  * @tc.name  : Test Player Local
581  * @tc.number: Player_Local_009
582  * @tc.desc  : Test Player Local source
583  */
584 HWTEST_F(PlayerUnitTest, Player_Local_009, TestSize.Level2)
585 {
586     int32_t ret = player_->SetSource(MEDIA_ROOT + "H264_AAC_320x240.mp4");
587     EXPECT_EQ(MSERR_OK, ret);
588     sptr<Surface> videoSurface = player_->GetVideoSurface();
589     ASSERT_NE(nullptr, videoSurface);
590     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
591     ret = player_->PrepareAsync();
592     if (ret == MSERR_OK) {
593         PlayFunTest(LOCAL_PLAY);
594     }
595 }
596 
597 /**
598  * @tc.name  : Test Player Local
599  * @tc.number: Player_Local_010
600  * @tc.desc  : Test Player Local source
601  */
602 HWTEST_F(PlayerUnitTest, Player_Local_010, TestSize.Level2)
603 {
604     int32_t ret = player_->SetSource(MEDIA_ROOT + "aac_44100Hz_143kbs_stereo.aac");
605     EXPECT_EQ(MSERR_OK, ret);
606     sptr<Surface> videoSurface = player_->GetVideoSurface();
607     ASSERT_NE(nullptr, videoSurface);
608     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
609     ret = player_->PrepareAsync();
610     if (ret == MSERR_OK) {
611         PlayFunTest(LOCAL_PLAY);
612     }
613 }
614 
615 /**
616  * @tc.name  : Test Player Local
617  * @tc.number: Player_Local_011
618  * @tc.desc  : Test Player Local source
619  */
620 HWTEST_F(PlayerUnitTest, Player_Local_011, TestSize.Level2)
621 {
622     int32_t ret = player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3");
623     EXPECT_EQ(MSERR_OK, ret);
624     sptr<Surface> videoSurface = player_->GetVideoSurface();
625     ASSERT_NE(nullptr, videoSurface);
626     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
627     ret = player_->PrepareAsync();
628     if (ret == MSERR_OK) {
629         PlayFunTest(LOCAL_PLAY);
630     }
631 }
632 
633 /**
634  * @tc.name  : Test Player Local
635  * @tc.number: Player_Local_013
636  * @tc.desc  : Test Player Local source
637  */
638 HWTEST_F(PlayerUnitTest, Player_Local_013, TestSize.Level2)
639 {
640     int32_t ret = player_->SetSource(MEDIA_ROOT + "pcm_s16le_48000Hz_768kbs_mono.wav");
641     EXPECT_EQ(MSERR_OK, ret);
642     sptr<Surface> videoSurface = player_->GetVideoSurface();
643     ASSERT_NE(nullptr, videoSurface);
644     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
645     ret = player_->PrepareAsync();
646     if (ret == MSERR_OK) {
647         PlayFunTest(LOCAL_PLAY);
648     }
649 }
650 
651 /**
652  * @tc.name  : Test Player Local
653  * @tc.number: Player_Local_014
654  * @tc.desc  : Test Player Local source
655  */
656 HWTEST_F(PlayerUnitTest, Player_Local_014, TestSize.Level2)
657 {
658     int32_t ret = player_->SetSource(MEDIA_ROOT + "vorbis_48000Hz_80kbs_mono.ogg");
659     EXPECT_EQ(MSERR_OK, ret);
660     sptr<Surface> videoSurface = player_->GetVideoSurface();
661     ASSERT_NE(nullptr, videoSurface);
662     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
663     ret = player_->PrepareAsync();
664     if (ret == MSERR_OK) {
665         PlayFunTest(LOCAL_PLAY);
666     }
667 }
668 
669 /**
670  * @tc.name  : Test Player Local
671  * @tc.number: Player_Local_015
672  * @tc.desc  : Test Player Local source
673  */
674 HWTEST_F(PlayerUnitTest, Player_Local_015, TestSize.Level2)
675 {
676     int32_t ret = player_->SetSource(MEDIA_ROOT + "aac_48000Hz_70kbs_mono.m4a");
677     EXPECT_EQ(MSERR_OK, ret);
678     sptr<Surface> videoSurface = player_->GetVideoSurface();
679     ASSERT_NE(nullptr, videoSurface);
680     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
681     ret = player_->PrepareAsync();
682     if (ret == MSERR_OK) {
683         PlayFunTest(LOCAL_PLAY);
684     }
685 }
686 
687 #ifdef SUBSCRIBE_HISTREAMER_EXT
688 /**
689  * @tc.name  : Test Player Local
690  * @tc.number: Player_Local_016
691  * @tc.desc  : Test Player Local source
692  */
693 HWTEST_F(PlayerUnitTest, Player_Local_016, TestSize.Level2)
694 {
695     int32_t ret = player_->SetSource(MEDIA_ROOT + "H265_AAC.mp4");
696     EXPECT_EQ(MSERR_OK, ret);
697     sptr<Surface> videoSurface = player_->GetVideoSurface();
698     ASSERT_NE(nullptr, videoSurface);
699     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
700     ret = player_->PrepareAsync();
701     if (ret == MSERR_OK) {
702         PlayFunTest(LOCAL_PLAY);
703     }
704 }
705 #endif
706 
707 /**
708  * @tc.name  : Test Player Local
709  * @tc.number: Player_Local_017
710  * @tc.desc  : Test Player Local source
711  */
712 HWTEST_F(PlayerUnitTest, Player_Local_017, TestSize.Level2)
713 {
714     int32_t ret = player_->SetSource(MEDIA_ROOT + "amr_nb_8ksr_7400kbr_1ch.amr");
715     EXPECT_EQ(MSERR_OK, ret);
716     sptr<Surface> videoSurface = player_->GetVideoSurface();
717     ASSERT_NE(nullptr, videoSurface);
718     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
719     ret = player_->PrepareAsync();
720     if (ret == MSERR_OK) {
721         PlayFunTest(LOCAL_PLAY);
722     }
723 }
724 
725 /**
726  * @tc.name  : Test Player SetPlayerCallback API
727  * @tc.number: Player_SetPlayerCallback_001
728  * @tc.desc  : Test Player SetPlayerCallback interface
729  */
730 HWTEST_F(PlayerUnitTest, Player_SetPlayerCallback_001, TestSize.Level0)
731 {
732     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
733     sptr<Surface> videoSurface = player_->GetVideoSurface();
734     ASSERT_NE(nullptr, videoSurface);
735     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
736     EXPECT_EQ(MSERR_OK, player_->Prepare());
737     std::shared_ptr<PlayerCallbackTest> callback = std::make_shared<PlayerCallbackTest>();
738     ASSERT_NE(nullptr, callback);
739     EXPECT_NE(MSERR_OK, player_->SetPlayerCallback(callback));
740     player_->Reset();
741     player_->SetPlayerCallback(callback);
742 }
743 
744 /**
745  * @tc.name  : Test Player Prepare API
746  * @tc.number: Player_Prepare_001
747  * @tc.desc  : Test Player Prepare interface
748  */
749 HWTEST_F(PlayerUnitTest, Player_Prepare_001, TestSize.Level0)
750 {
751     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
752     sptr<Surface> videoSurface = player_->GetVideoSurface();
753     ASSERT_NE(nullptr, videoSurface);
754     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
755     EXPECT_EQ(MSERR_OK, player_->Prepare());
756 }
757 
758 /**
759  * @tc.name  : Test Player Prepare API
760  * @tc.number: Player_Prepare_002
761  * @tc.desc  : Test Player Prepare->Prepare
762  */
763 HWTEST_F(PlayerUnitTest, Player_Prepare_002, TestSize.Level2)
764 {
765     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
766     sptr<Surface> videoSurface = player_->GetVideoSurface();
767     ASSERT_NE(nullptr, videoSurface);
768     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
769     EXPECT_EQ(MSERR_OK, player_->Prepare());
770     EXPECT_NE(MSERR_OK, player_->Prepare());
771 }
772 
773 /**
774  * @tc.name  : Test Player Prepare API
775  * @tc.number: Player_Prepare_003
776  * @tc.desc  : Test Player SetVolume/SetLooping/SetPlaybackSpeed->Prepare
777  */
778 HWTEST_F(PlayerUnitTest, Player_Prepare_003, TestSize.Level2)
779 {
780     PlaybackRateMode rateMode;
781     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
782     sptr<Surface> renderSurface = player_->GetVideoSurface();
783     ASSERT_NE(nullptr, renderSurface);
784     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(renderSurface));
785     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
786     bool ret = player_->IsLooping();
787     EXPECT_EQ(true, ret);
788     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
789     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
790     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(rateMode));
791     EXPECT_NE(SPEED_FORWARD_2_00_X, rateMode);
792     EXPECT_EQ(MSERR_OK, player_->Prepare());
793     EXPECT_EQ(true, player_->IsLooping());
794     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(rateMode));
795     EXPECT_NE(SPEED_FORWARD_2_00_X, rateMode);
796 }
797 
798 /**
799  * @tc.name  : Test Player Prepare API
800  * @tc.number: Player_Prepare_004
801  * @tc.desc  : Test Player Stop->Prepare
802  */
803 HWTEST_F(PlayerUnitTest, Player_Prepare_004, TestSize.Level2)
804 {
805     PlaybackRateMode mode;
806     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
807     sptr<Surface> videoSurface = player_->GetVideoSurface();
808     ASSERT_NE(nullptr, videoSurface);
809     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
810     EXPECT_EQ(MSERR_OK, player_->Prepare());
811     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
812     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
813     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
814     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
815     EXPECT_EQ(mode, SPEED_FORWARD_2_00_X);
816     EXPECT_EQ(MSERR_OK, player_->Stop());
817     EXPECT_EQ(MSERR_OK, player_->Prepare());
818     EXPECT_EQ(true, player_->IsLooping());
819     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
820     EXPECT_EQ(mode, SPEED_FORWARD_2_00_X);
821 }
822 
823 /**
824  * @tc.name  : Test Player Prepare API
825  * @tc.number: Player_Prepare_005
826  * @tc.desc  : Test Player Play->Prepare
827  */
828 HWTEST_F(PlayerUnitTest, Player_Prepare_005, TestSize.Level2)
829 {
830     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
831     sptr<Surface> videoSurface = player_->GetVideoSurface();
832     ASSERT_NE(nullptr, videoSurface);
833     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
834     EXPECT_EQ(MSERR_OK, player_->Prepare());
835     EXPECT_EQ(MSERR_OK, player_->Play());
836     EXPECT_NE(MSERR_OK, player_->Prepare());
837 }
838 
839 /**
840  * @tc.name  : Test Player PrepareAsync API
841  * @tc.number: Player_PrepareAsync_001
842  * @tc.desc  : Test Player PrepareAsync interface
843  */
844 HWTEST_F(PlayerUnitTest, Player_PrepareAsync_001, TestSize.Level0)
845 {
846     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
847     sptr<Surface> videoSurface = player_->GetVideoSurface();
848     ASSERT_NE(nullptr, videoSurface);
849     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
850     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
851 }
852 
853 /**
854  * @tc.name  : Test Player PrepareAsync API
855  * @tc.number: Player_PrepareAsync_002
856  * @tc.desc  : Test Player PrepareAsync->PrepareAsync
857  */
858 HWTEST_F(PlayerUnitTest, Player_PrepareAsync_002, TestSize.Level2)
859 {
860     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
861     sptr<Surface> videoSurface = player_->GetVideoSurface();
862     ASSERT_NE(nullptr, videoSurface);
863     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
864     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
865     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
866 }
867 
868 /**
869  * @tc.name  : Test Player PrepareAsync API
870  * @tc.number: Player_PrepareAsync_003
871  * @tc.desc  : Test Player SetVolume/SetLooping/SetPlaybackSpeed->PrepareAsync
872  */
873 HWTEST_F(PlayerUnitTest, Player_PrepareAsync_003, TestSize.Level2)
874 {
875     PlaybackRateMode mode;
876     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
877     sptr<Surface> videoSurface = player_->GetVideoSurface();
878     ASSERT_NE(nullptr, videoSurface);
879     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
880     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
881     EXPECT_EQ(true, player_->IsLooping());
882     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
883     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
884     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
885     EXPECT_NE(SPEED_FORWARD_2_00_X, mode);
886     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
887     EXPECT_EQ(true, player_->IsLooping());
888     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
889     EXPECT_NE(SPEED_FORWARD_2_00_X, mode);
890 }
891 
892 /**
893  * @tc.name  : Test Player PrepareAsync API
894  * @tc.number: Player_PrepareAsync_004
895  * @tc.desc  : Test Player Stop->PrepareAsync
896  */
897 HWTEST_F(PlayerUnitTest, Player_PrepareAsync_004, TestSize.Level2)
898 {
899     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
900     sptr<Surface> videoSurface = player_->GetVideoSurface();
901     ASSERT_NE(nullptr, videoSurface);
902     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
903     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
904     EXPECT_EQ(MSERR_OK, player_->Stop());
905     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
906 }
907 
908 /**
909  * @tc.name  : Test Player PrepareAsync API
910  * @tc.number: Player_PrepareAsync_005
911  * @tc.desc  : Test Player Play->PrepareAsync
912  */
913 HWTEST_F(PlayerUnitTest, Player_PrepareAsync_005, TestSize.Level2)
914 {
915     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
916     sptr<Surface> videoSurface = player_->GetVideoSurface();
917     ASSERT_NE(nullptr, videoSurface);
918     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
919     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
920     EXPECT_EQ(MSERR_OK, player_->Play());
921     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
922 }
923 
924 /**
925  * @tc.name  : Test Player PrepareAsync API
926  * @tc.number: Player_PrepareAsync_006
927  * @tc.desc  : Test Player Play->PrepareAsync
928  */
929 HWTEST_F(PlayerUnitTest, Player_PrepareAsync_006, TestSize.Level2)
930 {
931     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC_DRM.ts"));
932     sptr<Surface> videoSurface = player_->GetVideoSurface();
933     ASSERT_NE(nullptr, videoSurface);
934     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
935     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
936 }
937 
938 /**
939  * @tc.name  : Test Player SetVideoSurface API
940  * @tc.number: Player_SetVideoSurface_001
941  * @tc.desc  : Test Player SetVideoSurface interface
942  */
943 HWTEST_F(PlayerUnitTest, Player_SetVideoSurface_001, TestSize.Level0)
944 {
945     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
946     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(player_->GetVideoSurface()));
947 }
948 
949 /**
950  * @tc.name  : Test Player SetVideoSurface API
951  * @tc.number: Player_SetVideoSurface_002
952  * @tc.desc  : Test Player PrepareAsync->SetVideoSurface
953  */
954 HWTEST_F(PlayerUnitTest, Player_SetVideoSurface_002, TestSize.Level2)
955 {
956     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
957     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
958     sptr<Surface> videoSurface = player_->GetVideoSurface();
959     ASSERT_NE(nullptr, videoSurface);
960     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
961 }
962 
963 /**
964  * @tc.name  : Test Player SetVideoSurface API
965  * @tc.number: Player_SetVideoSurface_003
966  * @tc.desc  : Test Player SetVideoSurface interface
967  */
968 HWTEST_F(PlayerUnitTest, Player_SetVideoSurface_003, TestSize.Level0)
969 {
970     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
971     EXPECT_EQ(MSERR_OK, player_->Prepare());
972     sptr<Surface> videoSurface = player_->GetVideoSurface();
973     ASSERT_NE(nullptr, videoSurface);
974     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
975 }
976 
977 /**
978  * @tc.name  : Test Player Play API
979  * @tc.number: Player_Play_001
980  * @tc.desc  : Test Player Play interface
981  */
982 HWTEST_F(PlayerUnitTest, Player_Play_001, TestSize.Level0)
983 {
984     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
985     sptr<Surface> videoSurface = player_->GetVideoSurface();
986     ASSERT_NE(nullptr, videoSurface);
987     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
988     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
989     EXPECT_EQ(MSERR_OK, player_->Play());
990     EXPECT_TRUE(player_->IsPlaying());
991     EXPECT_EQ(MSERR_OK, player_->Pause());
992     EXPECT_EQ(MSERR_OK, player_->Play());
993 }
994 
995 /**
996  * @tc.name  : Test Player Play API
997  * @tc.number: Player_Play_002
998  * @tc.desc  : Test Player Reset->Play
999  */
1000 HWTEST_F(PlayerUnitTest, Player_Play_002, TestSize.Level2)
1001 {
1002     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1003     sptr<Surface> videoSurface = player_->GetVideoSurface();
1004     ASSERT_NE(nullptr, videoSurface);
1005     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1006     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1007     EXPECT_EQ(MSERR_OK, player_->Play());
1008     EXPECT_TRUE(player_->IsPlaying());
1009     EXPECT_EQ(MSERR_OK, player_->Reset());
1010     EXPECT_NE(MSERR_OK, player_->Play());
1011 }
1012 
1013 /**
1014  * @tc.name  : Test Player Play API
1015  * @tc.number: Player_Play_003
1016  * @tc.desc  : Test Player complete->Play
1017  */
1018 HWTEST_F(PlayerUnitTest, Player_Play_003, TestSize.Level2)
1019 {
1020     int32_t duration = 0;
1021     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1022     sptr<Surface> videoSurface = player_->GetVideoSurface();
1023     ASSERT_NE(nullptr, videoSurface);
1024     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1025     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1026     EXPECT_EQ(MSERR_OK, player_->Play());
1027     EXPECT_TRUE(player_->IsPlaying());
1028     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1029     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1030     sleep(PLAYING_TIME_2_SEC);
1031     EXPECT_EQ(MSERR_OK, player_->Play());
1032 }
1033 
1034 /**
1035  * @tc.name  : Test Player Play API
1036  * @tc.number: Player_Play_004
1037  * @tc.desc  : Test Player Play->Play
1038  */
1039 HWTEST_F(PlayerUnitTest, Player_Play_004, TestSize.Level2)
1040 {
1041     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1042     sptr<Surface> videoSurface = player_->GetVideoSurface();
1043     ASSERT_NE(nullptr, videoSurface);
1044     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1045     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1046     EXPECT_EQ(MSERR_OK, player_->Play());
1047     EXPECT_TRUE(player_->IsPlaying());
1048     EXPECT_NE(MSERR_OK, player_->Play());
1049 }
1050 
1051 /**
1052  * @tc.name  : Test Player Play API
1053  * @tc.number: Player_Play_005
1054  * @tc.desc  : Test Player is killed Play
1055  */
1056 HWTEST_F(PlayerUnitTest, Player_Play_005, TestSize.Level2)
1057 {
1058     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1059     sptr<Surface> videoSurface = player_->GetVideoSurface();
1060     ASSERT_NE(nullptr, videoSurface);
1061     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1062     int32_t ret = player_->PrepareAsync();
1063     EXPECT_EQ(MSERR_OK, player_->Release());
1064     if (ret == MSERR_OK) {
1065         NoRunPlayFunTest(LOCAL_PLAY);
1066     }
1067 }
1068 
1069 /**
1070  * @tc.name  : Test Player Stop API
1071  * @tc.number: Player_Stop_001
1072  * @tc.desc  : Test Player Stop Play->Stop
1073  */
1074 HWTEST_F(PlayerUnitTest, Player_Stop_001, TestSize.Level0)
1075 {
1076     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1077     sptr<Surface> videoSurface = player_->GetVideoSurface();
1078     ASSERT_NE(nullptr, videoSurface);
1079     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1080     EXPECT_EQ(MSERR_OK, player_->Prepare());
1081     EXPECT_EQ(MSERR_OK, player_->Play());
1082     EXPECT_TRUE(player_->IsPlaying());
1083     EXPECT_EQ(MSERR_OK, player_->Stop());
1084 }
1085 
1086 /**
1087  * @tc.name  : Test Player Stop API
1088  * @tc.number: Player_Stop_002
1089  * @tc.desc  : Test Player Stop Prepare->Stop
1090  */
1091 HWTEST_F(PlayerUnitTest, Player_Stop_002, TestSize.Level2)
1092 {
1093     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1094     sptr<Surface> videoSurface = player_->GetVideoSurface();
1095     ASSERT_NE(nullptr, videoSurface);
1096     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1097     EXPECT_EQ(MSERR_OK, player_->Prepare());
1098     EXPECT_EQ(MSERR_OK, player_->Stop());
1099 }
1100 
1101 /**
1102  * @tc.name  : Test Player Stop API
1103  * @tc.number: Player_Stop_003
1104  * @tc.desc  : Test Player Stop complete/stop->Stop
1105  */
1106 HWTEST_F(PlayerUnitTest, Player_Stop_003, TestSize.Level2)
1107 {
1108     int32_t duration = 0;
1109     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1110     sptr<Surface> videoSurface = player_->GetVideoSurface();
1111     ASSERT_NE(nullptr, videoSurface);
1112     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1113     EXPECT_EQ(MSERR_OK, player_->Prepare());
1114     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1115     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1116     sleep(PLAYING_TIME_2_SEC);
1117     EXPECT_EQ(MSERR_OK, player_->Stop());
1118     EXPECT_NE(MSERR_OK, player_->Stop());
1119 }
1120 
1121 /**
1122  * @tc.name  : Test Player Stop API
1123  * @tc.number: Player_Stop_004
1124  * @tc.desc  : Test Player Stop Reset->Stop
1125  */
1126 HWTEST_F(PlayerUnitTest, Player_Stop_004, TestSize.Level2)
1127 {
1128     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1129     sptr<Surface> videoSurface = player_->GetVideoSurface();
1130     ASSERT_NE(nullptr, videoSurface);
1131     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1132     EXPECT_EQ(MSERR_OK, player_->Prepare());
1133     EXPECT_EQ(MSERR_OK, player_->Play());
1134     EXPECT_EQ(MSERR_OK, player_->Reset());
1135     EXPECT_NE(MSERR_OK, player_->Stop());
1136 }
1137 
1138 /**
1139  * @tc.name  : Test Player Stop API
1140  * @tc.number: Player_Stop_005
1141  * @tc.desc  : Test Player Reset->Stop
1142  */
1143 HWTEST_F(PlayerUnitTest, Player_Stop_005, TestSize.Level2)
1144 {
1145     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1146     sptr<Surface> videoSurface = player_->GetVideoSurface();
1147     ASSERT_NE(nullptr, videoSurface);
1148     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1149     EXPECT_EQ(MSERR_OK, player_->Prepare());
1150     EXPECT_EQ(MSERR_OK, player_->Play());
1151     EXPECT_TRUE(player_->IsPlaying());
1152     EXPECT_EQ(MSERR_OK, player_->Reset());
1153     EXPECT_NE(MSERR_OK, player_->Stop());
1154 }
1155 
1156 /**
1157  * @tc.name  : Test Player Pause API
1158  * @tc.number: Player_Pause_001
1159  * @tc.desc  : Test Player Pause interface
1160  */
1161 HWTEST_F(PlayerUnitTest, Player_Pause_001, TestSize.Level0)
1162 {
1163     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1164     sptr<Surface> videoSurface = player_->GetVideoSurface();
1165     ASSERT_NE(nullptr, videoSurface);
1166     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1167     EXPECT_EQ(MSERR_OK, player_->Prepare());
1168     EXPECT_EQ(MSERR_OK, player_->Play());
1169     EXPECT_TRUE(player_->IsPlaying());
1170     EXPECT_EQ(MSERR_OK, player_->Pause());
1171     EXPECT_FALSE(player_->IsPlaying());
1172     EXPECT_EQ(MSERR_OK, player_->Pause());
1173 }
1174 
1175 /**
1176  * @tc.name  : Test Player Pause API
1177  * @tc.number: Player_Pause_002
1178  * @tc.desc  : Test Player Pause interface
1179  */
1180 HWTEST_F(PlayerUnitTest, Player_Pause_002, TestSize.Level2)
1181 {
1182     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1183     sptr<Surface> videoSurface = player_->GetVideoSurface();
1184     ASSERT_NE(nullptr, videoSurface);
1185     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1186     EXPECT_EQ(MSERR_OK, player_->Prepare());
1187     EXPECT_NE(MSERR_OK, player_->Pause());
1188 }
1189 
1190 /**
1191  * @tc.name  : Test Player Pause API
1192  * @tc.number: Player_Pause_003
1193  * @tc.desc  : Test Player Pause interface, Stop -> Pause
1194  */
1195 HWTEST_F(PlayerUnitTest, Player_Pause_003, TestSize.Level2)
1196 {
1197     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1198     sptr<Surface> videoSurface = player_->GetVideoSurface();
1199     ASSERT_NE(nullptr, videoSurface);
1200     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1201     EXPECT_EQ(MSERR_OK, player_->Prepare());
1202     EXPECT_EQ(MSERR_OK, player_->Stop());
1203     EXPECT_NE(MSERR_OK, player_->Pause());
1204 }
1205 
1206 /**
1207  * @tc.name  : Test Player Reset API
1208  * @tc.number: Player_Reset_001
1209  * @tc.desc  : Test Player Reset interface
1210  */
1211 HWTEST_F(PlayerUnitTest, Player_Reset_001, TestSize.Level0)
1212 {
1213     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1214     sptr<Surface> videoSurface = player_->GetVideoSurface();
1215     ASSERT_NE(nullptr, videoSurface);
1216     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1217     EXPECT_EQ(MSERR_OK, player_->Prepare());
1218     EXPECT_EQ(MSERR_OK, player_->Reset());
1219     EXPECT_NE(MSERR_OK, player_->Reset());
1220 }
1221 
1222 /**
1223  * @tc.name  : Test Player Seek API
1224  * @tc.number: Player_Seek_001
1225  * @tc.desc  : Test Player Seek interface with valid parameters
1226  */
1227 HWTEST_F(PlayerUnitTest, Player_Seek_001, TestSize.Level0)
1228 {
1229     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1230     sptr<Surface> videoSurface = player_->GetVideoSurface();
1231     ASSERT_NE(nullptr, videoSurface);
1232     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1233     EXPECT_EQ(MSERR_OK, player_->Prepare());
1234     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_4_SEC, SEEK_NEXT_SYNC));
1235     EXPECT_EQ(MSERR_OK, player_->Play());
1236     EXPECT_TRUE(player_->IsPlaying());
1237     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_4_SEC, SEEK_CLOSEST));
1238     int32_t time = 0;
1239     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
1240     EXPECT_NEAR(SEEK_TIME_4_SEC, time, DELTA_TIME);
1241     EXPECT_EQ(MSERR_OK, player_->Pause());
1242     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_4_SEC, SEEK_NEXT_SYNC));
1243 }
1244 
1245 /**
1246  * @tc.name  : Test Player Seek API
1247  * @tc.number: Player_Seek_002
1248  * @tc.desc  : Test Player Seek interface with seek mode
1249  */
1250 HWTEST_F(PlayerUnitTest, Player_Seek_002, TestSize.Level1)
1251 {
1252     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1253     sptr<Surface> videoSurface = player_->GetVideoSurface();
1254     ASSERT_NE(nullptr, videoSurface);
1255     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1256     EXPECT_EQ(MSERR_OK, player_->Prepare());
1257     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_NEXT_SYNC));
1258     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_PREVIOUS_SYNC));
1259     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_CLOSEST_SYNC));
1260     EXPECT_EQ(MSERR_OK, player_->Play());
1261     EXPECT_TRUE(player_->IsPlaying());
1262     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1263     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1264     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST_SYNC));
1265     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, (PlayerSeekMode)5));
1266 }
1267 
1268 /**
1269  * @tc.name  : Test Player Seek API
1270  * @tc.number: Player_Seek_002
1271  * @tc.desc  : Test Player Seek out of duration
1272  */
1273 HWTEST_F(PlayerUnitTest, Player_Seek_003, TestSize.Level2)
1274 {
1275     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1276     sptr<Surface> videoSurface = player_->GetVideoSurface();
1277     ASSERT_NE(nullptr, videoSurface);
1278     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1279     EXPECT_EQ(MSERR_OK, player_->Prepare());
1280     EXPECT_EQ(MSERR_OK, player_->Play());
1281     EXPECT_TRUE(player_->IsPlaying());
1282     EXPECT_EQ(MSERR_OK, player_->Seek(1000000, SEEK_NEXT_SYNC));
1283 }
1284 
1285 /**
1286  * @tc.name  : Test Seek API
1287  * @tc.number: Player_Seek_004
1288  * @tc.desc  : Test Player Seek
1289  */
1290 HWTEST_F(PlayerUnitTest, Player_Seek_004, TestSize.Level2)
1291 {
1292     int32_t duration = 0;
1293     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1294     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1295     sptr<Surface> videoSurface = player_->GetVideoSurface();
1296     ASSERT_NE(nullptr, videoSurface);
1297     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1298     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1299     EXPECT_EQ(MSERR_OK, player_->Prepare());
1300     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1301     EXPECT_EQ(MSERR_OK, player_->Play());
1302     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1303     EXPECT_EQ(MSERR_OK, player_->Pause());
1304     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1305     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1306     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1307     EXPECT_EQ(MSERR_OK, player_->Play());
1308     sleep(PLAYING_TIME_2_SEC);
1309     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1310     EXPECT_EQ(MSERR_OK, player_->Stop());
1311     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1312     EXPECT_EQ(MSERR_OK, player_->Reset());
1313     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1314 }
1315 
1316 /**
1317  * @tc.name  : Test Player Seek API
1318  * @tc.number: Player_Seek_005
1319  * @tc.desc  : Test Player Seek interface
1320  */
1321 HWTEST_F(PlayerUnitTest, Player_Seek_005, TestSize.Level0)
1322 {
1323     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1324     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1325     sptr<Surface> videoSurface = player_->GetVideoSurface();
1326     ASSERT_NE(nullptr, videoSurface);
1327     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1328     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1329     EXPECT_EQ(MSERR_OK, player_->Prepare());
1330     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1331 }
1332 
1333 /**
1334  * @tc.name  : Test Player Seek API
1335  * @tc.number: Player_Seek_006
1336  * @tc.desc  : Test Player Seek interface
1337  */
1338 HWTEST_F(PlayerUnitTest, Player_Seek_006, TestSize.Level0)
1339 {
1340     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1341     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1342     sptr<Surface> videoSurface = player_->GetVideoSurface();
1343     ASSERT_NE(nullptr, videoSurface);
1344     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1345     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1346     EXPECT_EQ(MSERR_OK, player_->Prepare());
1347     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1348 }
1349 
1350 /**
1351  * @tc.name  : Test Player Seek API
1352  * @tc.number: Player_Seek_007
1353  * @tc.desc  : Test Player Seek interface
1354  */
1355 HWTEST_F(PlayerUnitTest, Player_Seek_007, TestSize.Level0)
1356 {
1357     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1358     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1359     sptr<Surface> videoSurface = player_->GetVideoSurface();
1360     ASSERT_NE(nullptr, videoSurface);
1361     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1362     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1363     EXPECT_EQ(MSERR_OK, player_->Prepare());
1364     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1365 }
1366 
1367 /**
1368  * @tc.name  : Test Player Seek API
1369  * @tc.number: Player_Seek_008
1370  * @tc.desc  : Test Player Seek interface
1371  */
1372 HWTEST_F(PlayerUnitTest, Player_Seek_008, TestSize.Level0)
1373 {
1374     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1375     sptr<Surface> videoSurface = player_->GetVideoSurface();
1376     ASSERT_NE(nullptr, videoSurface);
1377     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1378     EXPECT_EQ(MSERR_OK, player_->Prepare());
1379     EXPECT_EQ(MSERR_OK, player_->Play());
1380     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
1381     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1382     int32_t duration = 0;
1383     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1384     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1385     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1386     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
1387 }
1388 
1389 /**
1390  * @tc.name  : Test Player Seek API
1391  * @tc.number: Player_Seek_009
1392  * @tc.desc  : Test Player Seek interface
1393  */
1394 HWTEST_F(PlayerUnitTest, Player_Seek_009, TestSize.Level0)
1395 {
1396     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1397     sptr<Surface> videoSurface = player_->GetVideoSurface();
1398     ASSERT_NE(nullptr, videoSurface);
1399     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1400     EXPECT_EQ(MSERR_OK, player_->Prepare());
1401     EXPECT_EQ(MSERR_OK, player_->Play());
1402     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_PREVIOUS_SYNC));
1403     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1404     int32_t duration = 0;
1405     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1406     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_PREVIOUS_SYNC));
1407     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1408     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_PREVIOUS_SYNC));
1409 }
1410 
1411 /**
1412  * @tc.name  : Test Player Seek API
1413  * @tc.number: Player_Seek_010
1414  * @tc.desc  : Test Player Seek interface
1415  */
1416 HWTEST_F(PlayerUnitTest, Player_Seek_010, TestSize.Level0)
1417 {
1418     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1419     sptr<Surface> videoSurface = player_->GetVideoSurface();
1420     ASSERT_NE(nullptr, videoSurface);
1421     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1422     EXPECT_EQ(MSERR_OK, player_->Prepare());
1423     EXPECT_EQ(MSERR_OK, player_->Play());
1424     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_NEXT_SYNC));
1425     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1426     int32_t duration = 0;
1427     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1428     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
1429     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1430     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_NEXT_SYNC));
1431 }
1432 
1433 /**
1434  * @tc.name  : Test GetVideoTrackInfo API
1435  * @tc.number: Player_GetVideoTrackInfo_001
1436  * @tc.desc  : Test Player GetVideoTrackInfo
1437  */
1438 HWTEST_F(PlayerUnitTest, Player_GetVideoTrackInfo_001, TestSize.Level0)
1439 {
1440     std::vector<Format> videoTrack;
1441     std::vector<Format> audioTrack;
1442     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1443     sptr<Surface> videoSurface = player_->GetVideoSurface();
1444     ASSERT_NE(nullptr, videoSurface);
1445     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1446     EXPECT_EQ(MSERR_OK, player_->Prepare());
1447     EXPECT_EQ(MSERR_OK, player_->Play());
1448     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1449     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1450 }
1451 
1452 /**
1453  * @tc.name  : Test GetVideoTrackInfo API
1454  * @tc.number: Player_GetVideoTrackInfo_002
1455  * @tc.desc  : Test Player GetVideoTrackInfo
1456  */
1457 HWTEST_F(PlayerUnitTest, Player_GetVideoTrackInfo_002, TestSize.Level2)
1458 {
1459     std::vector<Format> videoTrack;
1460     std::vector<Format> audioTrack;
1461     int32_t duration = 0;
1462     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1463     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1464     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1465     sptr<Surface> videoSurface = player_->GetVideoSurface();
1466     ASSERT_NE(nullptr, videoSurface);
1467     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1468     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1469     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1470     EXPECT_EQ(MSERR_OK, player_->Prepare());
1471     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1472     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1473     EXPECT_EQ(MSERR_OK, player_->Play());
1474     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1475     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1476     EXPECT_EQ(MSERR_OK, player_->Pause());
1477     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1478     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1479     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1480     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1481     EXPECT_EQ(MSERR_OK, player_->Play());
1482     sleep(PLAYING_TIME_2_SEC);
1483     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1484     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1485     EXPECT_EQ(MSERR_OK, player_->Stop());
1486     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1487     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1488     EXPECT_EQ(MSERR_OK, player_->Reset());
1489     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1490     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1491 }
1492 
1493 /**
1494  * @tc.name  : Test GetAudioTrackInfo API
1495  * @tc.number: Player_GetAudioTrackInfo_001
1496  * @tc.desc  : Test Player GetAudioTrackInfo
1497  */
1498 HWTEST_F(PlayerUnitTest, Player_GetAudioTrackInfo_001, TestSize.Level2)
1499 {
1500     std::vector<Format> audioTrack;
1501     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1502     EXPECT_EQ(MSERR_OK, player_->Prepare());
1503     EXPECT_EQ(MSERR_OK, player_->Play());
1504     sleep(PLAYING_TIME_2_SEC);
1505     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1506     EXPECT_EQ(1, audioTrack.size());
1507     Format audioTrackFormat = audioTrack.front();
1508     int32_t sampleDepth;
1509     audioTrackFormat.GetIntValue("sample_depth", sampleDepth);
1510     EXPECT_EQ(16, sampleDepth);
1511 }
1512 
1513 /**
1514  * @tc.name  : Test SelectTrack and DeselectTrack API
1515  * @tc.number: Player_SelectTrack_001
1516  * @tc.desc  : Test Player SelectTrack and DeselectTrack
1517  */
1518 HWTEST_F(PlayerUnitTest, Player_SelectTrack_001, TestSize.Level0)
1519 {
1520     bool trackChange = false;
1521     std::vector<Format> audioTrack;
1522     std::vector<int32_t> audioTrackIds;
1523     int32_t currentAudioTrackIndex = -1;
1524     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
1525     EXPECT_EQ(MSERR_OK, player_->Prepare());
1526     EXPECT_EQ(MSERR_OK, player_->Play());
1527     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1528     sleep(PLAYING_TIME_2_SEC);
1529     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1530     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1531     for (Format audioTrackFormat: audioTrack) {
1532         int32_t trackIndex = -1;
1533         audioTrackFormat.GetIntValue("track_index", trackIndex);
1534         audioTrackIds.push_back(trackIndex);
1535     }
1536     for (int32_t trackIndex: audioTrackIds) {
1537         if (trackIndex != currentAudioTrackIndex) {
1538             trackChange = false;
1539             EXPECT_EQ(MSERR_OK, player_->SelectTrack(trackIndex, trackChange));
1540             EXPECT_EQ(trackChange, true);
1541             EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1542             sleep(PLAYING_TIME_2_SEC);
1543             trackChange = false;
1544             EXPECT_EQ(MSERR_OK, player_->DeselectTrack(currentAudioTrackIndex, trackChange));
1545             EXPECT_EQ(trackChange, true);
1546             EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1547             sleep(PLAYING_TIME_2_SEC);
1548         }
1549     }
1550     EXPECT_EQ(MSERR_OK, player_->Stop());
1551 }
1552 
1553 /**
1554  * @tc.name  : Test SelectTrack API
1555  * @tc.number: Player_SelectTrack_002
1556  * @tc.desc  : Test Player SelectTrack invalid trackId
1557  */
1558 HWTEST_F(PlayerUnitTest, Player_SelectTrack_002, TestSize.Level0)
1559 {
1560     bool trackChange = false;
1561     int32_t currentAudioTrackIndex = -1;
1562     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
1563     EXPECT_EQ(MSERR_OK, player_->Prepare());
1564     EXPECT_EQ(MSERR_OK, player_->Play());
1565     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1566     sleep(PLAYING_TIME_2_SEC);
1567     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1568     EXPECT_NE(MSERR_OK, player_->SelectTrack(currentAudioTrackIndex, trackChange));
1569     EXPECT_EQ(trackChange, false);
1570     sleep(PLAYING_TIME_2_SEC);
1571     EXPECT_EQ(MSERR_OK, player_->Stop());
1572 }
1573 
1574 /**
1575  * @tc.name  : Test DeselectTrack API
1576  * @tc.number: Player_DeselectTrack_001
1577  * @tc.desc  : Test Player DeselectTrack invalid trackId
1578  */
1579 HWTEST_F(PlayerUnitTest, Player_DeselectTrack_001, TestSize.Level0)
1580 {
1581     std::vector<Format> audioTrack;
1582     std::vector<int32_t> audioTrackIds;
1583     int32_t defaultAudioTrackIndex = -1;
1584     bool trackChange = false;
1585     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
1586     EXPECT_EQ(MSERR_OK, player_->Prepare());
1587     EXPECT_EQ(MSERR_OK, player_->Play());
1588     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1589     sleep(PLAYING_TIME_2_SEC);
1590     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1591     EXPECT_GT(audioTrack.size(), 0);
1592     audioTrack[0].GetIntValue("track_index", defaultAudioTrackIndex);
1593     EXPECT_GT(defaultAudioTrackIndex, -1);
1594     EXPECT_NE(MSERR_OK, player_->DeselectTrack(defaultAudioTrackIndex, trackChange));
1595     EXPECT_EQ(trackChange, false);
1596     sleep(PLAYING_TIME_2_SEC);
1597     EXPECT_EQ(MSERR_OK, player_->Stop());
1598 }
1599 
1600 /**
1601  * @tc.name  : Test GetVideoHeight API
1602  * @tc.number: Player_GetVideoHeight_001
1603  * @tc.desc  : Test Player GetVideoHeight
1604  */
1605 HWTEST_F(PlayerUnitTest, Player_GetVideoHeight_001, TestSize.Level0)
1606 {
1607     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1608     sptr<Surface> videoSurface = player_->GetVideoSurface();
1609     ASSERT_NE(nullptr, videoSurface);
1610     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1611     EXPECT_EQ(MSERR_OK, player_->Prepare());
1612     EXPECT_EQ(MSERR_OK, player_->Play());
1613     EXPECT_EQ(480, player_->GetVideoHeight());
1614     EXPECT_EQ(720, player_->GetVideoWidth());
1615 }
1616 
1617 /**
1618  * @tc.name  : Test GetVideoHeight API
1619  * @tc.number: Player_GetVideoHeight_002
1620  * @tc.desc  : Test Player GetVideoHeight
1621  */
1622 HWTEST_F(PlayerUnitTest, Player_GetVideoHeight_002, TestSize.Level2)
1623 {
1624     int32_t duration = 0;
1625     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1626     EXPECT_NE(480, player_->GetVideoHeight());
1627     EXPECT_NE(720, player_->GetVideoWidth());
1628     sptr<Surface> videoSurface = player_->GetVideoSurface();
1629     ASSERT_NE(nullptr, videoSurface);
1630     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1631     EXPECT_NE(480, player_->GetVideoHeight());
1632     EXPECT_NE(720, player_->GetVideoWidth());
1633     EXPECT_EQ(MSERR_OK, player_->Prepare());
1634     EXPECT_EQ(480, player_->GetVideoHeight());
1635     EXPECT_EQ(720, player_->GetVideoWidth());
1636     EXPECT_EQ(MSERR_OK, player_->Play());
1637     EXPECT_EQ(480, player_->GetVideoHeight());
1638     EXPECT_EQ(720, player_->GetVideoWidth());
1639     EXPECT_EQ(MSERR_OK, player_->Pause());
1640     EXPECT_EQ(480, player_->GetVideoHeight());
1641     EXPECT_EQ(720, player_->GetVideoWidth());
1642     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1643     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1644     EXPECT_EQ(MSERR_OK, player_->Play());
1645     sleep(PLAYING_TIME_2_SEC);
1646     EXPECT_EQ(480, player_->GetVideoHeight());
1647     EXPECT_EQ(720, player_->GetVideoWidth());
1648     EXPECT_EQ(MSERR_OK, player_->Stop());
1649     EXPECT_EQ(480, player_->GetVideoHeight());
1650     EXPECT_EQ(720, player_->GetVideoWidth());
1651     EXPECT_EQ(MSERR_OK, player_->Reset());
1652     EXPECT_NE(480, player_->GetVideoHeight());
1653     EXPECT_NE(720, player_->GetVideoWidth());
1654 }
1655 
1656 /**
1657  * @tc.name  : Test GetDuration API
1658  * @tc.number: Player_GetDuration_001
1659  * @tc.desc  : Test Player GetDuration
1660  */
1661 HWTEST_F(PlayerUnitTest, Player_GetDuration_001, TestSize.Level0)
1662 {
1663     int32_t duration = 0;
1664     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1665     sptr<Surface> videoSurface = player_->GetVideoSurface();
1666     ASSERT_NE(nullptr, videoSurface);
1667     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1668     EXPECT_EQ(MSERR_OK, player_->Prepare());
1669     EXPECT_EQ(MSERR_OK, player_->Play());
1670     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1671     EXPECT_NEAR(10000, duration, DELTA_TIME); // duration 10000ms
1672 }
1673 
1674 /**
1675  * @tc.name  : Test GetDuration API
1676  * @tc.number: Player_GetDuration_002
1677  * @tc.desc  : Test Player GetDuration
1678  */
1679 HWTEST_F(PlayerUnitTest, Player_GetDuration_002, TestSize.Level2)
1680 {
1681     int32_t duration = 0;
1682     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1683     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
1684     sptr<Surface> videoSurface = player_->GetVideoSurface();
1685     ASSERT_NE(nullptr, videoSurface);
1686     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1687     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
1688     EXPECT_EQ(MSERR_OK, player_->Prepare());
1689     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1690     EXPECT_EQ(MSERR_OK, player_->Play());
1691     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1692     EXPECT_EQ(MSERR_OK, player_->Pause());
1693     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1694     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1695     EXPECT_EQ(MSERR_OK, player_->Play());
1696     sleep(PLAYING_TIME_2_SEC);
1697     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1698     EXPECT_EQ(MSERR_OK, player_->Stop());
1699     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1700     EXPECT_EQ(MSERR_OK, player_->Reset());
1701     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
1702 }
1703 
1704 /**
1705  * @tc.name  : Test SetPlaybackSpeed API
1706  * @tc.number: Player_SetPlaybackSpeed_001
1707  * @tc.desc  : Test Player SetPlaybackSpeed
1708  */
1709 HWTEST_F(PlayerUnitTest, Player_SetPlaybackSpeed_001, TestSize.Level0)
1710 {
1711     PlaybackRateMode mode;
1712     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1713     sptr<Surface> videoSurface = player_->GetVideoSurface();
1714     ASSERT_NE(nullptr, videoSurface);
1715     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1716     EXPECT_EQ(MSERR_OK, player_->Prepare());
1717     EXPECT_EQ(MSERR_OK, player_->Play());
1718     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1719     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1720     EXPECT_EQ(SPEED_FORWARD_2_00_X, mode);
1721 }
1722 
1723 /**
1724  * @tc.name  : Test SetPlaybackSpeed API
1725  * @tc.number: Player_SetPlaybackSpeed_002
1726  * @tc.desc  : Test Player SetPlaybackSpeed
1727  */
1728 HWTEST_F(PlayerUnitTest, Player_SetPlaybackSpeed_002, TestSize.Level2)
1729 {
1730     int32_t duration = 0;
1731     PlaybackRateMode mode;
1732     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1733     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1734     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1735     sptr<Surface> videoSurface = player_->GetVideoSurface();
1736     ASSERT_NE(nullptr, videoSurface);
1737     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1738     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1739     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1740     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1741     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1742     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1743     EXPECT_EQ(MSERR_OK, player_->Play());
1744     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1745     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1746     EXPECT_EQ(MSERR_OK, player_->Pause());
1747     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_1_75_X));
1748     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1749     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1750     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1751     EXPECT_EQ(MSERR_OK, player_->Play());
1752     sleep(PLAYING_TIME_2_SEC);
1753     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_0_75_X));
1754     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1755     EXPECT_EQ(MSERR_OK, player_->Stop());
1756     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_1_25_X));
1757     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1758     EXPECT_EQ(MSERR_OK, player_->Reset());
1759     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1760     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1761 }
1762 
1763 /**
1764  * @tc.name  : Test SetLooping API
1765  * @tc.number: Player_SetLooping_001
1766  * @tc.desc  : Test Player SetLooping
1767  */
1768 HWTEST_F(PlayerUnitTest, Player_SetLooping_001, TestSize.Level0)
1769 {
1770     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1771     sptr<Surface> videoSurface = player_->GetVideoSurface();
1772     ASSERT_NE(nullptr, videoSurface);
1773     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1774     EXPECT_EQ(MSERR_OK, player_->Prepare());
1775     EXPECT_EQ(MSERR_OK, player_->Play());
1776     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
1777     EXPECT_EQ(true, player_->IsLooping());
1778     EXPECT_EQ(MSERR_OK, player_->SetLooping(false));
1779     EXPECT_EQ(false, player_->IsLooping());
1780 }
1781 
1782 /**
1783  * @tc.name  : Test SetVolume API
1784  * @tc.number: Player_SetVolume_001
1785  * @tc.desc  : Test Player SetVolume
1786  */
1787 HWTEST_F(PlayerUnitTest, Player_SetVolume_001, TestSize.Level0)
1788 {
1789     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1790     sptr<Surface> videoSurface = player_->GetVideoSurface();
1791     ASSERT_NE(nullptr, videoSurface);
1792     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1793     EXPECT_EQ(MSERR_OK, player_->Prepare());
1794     EXPECT_EQ(MSERR_OK, player_->Play());
1795     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1796 }
1797 
1798 /**
1799  * @tc.name  : Test SetVolume API
1800  * @tc.number: Player_SetVolume_002
1801  * @tc.desc  : Test Player SetVolume
1802  */
1803 HWTEST_F(PlayerUnitTest, Player_SetVolume_002, TestSize.Level0)
1804 {
1805     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1806     sptr<Surface> videoSurface = player_->GetVideoSurface();
1807     ASSERT_NE(nullptr, videoSurface);
1808     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1809     EXPECT_EQ(MSERR_OK, player_->Prepare());
1810     EXPECT_EQ(MSERR_OK, player_->Play());
1811     EXPECT_NE(MSERR_OK, player_->SetVolume(1.1, 0.1));
1812     EXPECT_NE(MSERR_OK, player_->SetVolume(0.1, 1.1));
1813     EXPECT_NE(MSERR_OK, player_->SetVolume(1.1, 1.1));
1814     EXPECT_NE(MSERR_OK, player_->SetVolume(-0.1, 0.1));
1815     EXPECT_NE(MSERR_OK, player_->SetVolume(0.1, -0.1));
1816     EXPECT_NE(MSERR_OK, player_->SetVolume(-0.1, -0.1));
1817 }
1818 
1819 /**
1820  * @tc.name  : Test SetVolume API
1821  * @tc.number: Player_SetVolume_003
1822  * @tc.desc  : Test Player SetVolume
1823  */
1824 HWTEST_F(PlayerUnitTest, Player_SetVolume_003, TestSize.Level2)
1825 {
1826     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1827     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1828     sptr<Surface> videoSurface = player_->GetVideoSurface();
1829     ASSERT_NE(nullptr, videoSurface);
1830     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1831     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1832     EXPECT_EQ(MSERR_OK, player_->Prepare());
1833     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1834     EXPECT_EQ(MSERR_OK, player_->Play());
1835     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1836     EXPECT_EQ(MSERR_OK, player_->Pause());
1837     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1838     EXPECT_EQ(MSERR_OK, player_->Stop());
1839     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1840     EXPECT_EQ(MSERR_OK, player_->Reset());
1841     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1842 }
1843 
1844 /**
1845  * @tc.name  : Test SetVolume API
1846  * @tc.number: Player_SetVolume_004
1847  * @tc.desc  : Test Player SetVolume
1848  */
1849 HWTEST_F(PlayerUnitTest, Player_SetVolume_004, TestSize.Level2)
1850 {
1851     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1852     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1853     sptr<Surface> videoSurface = player_->GetVideoSurface();
1854     ASSERT_NE(nullptr, videoSurface);
1855     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1856     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1857     EXPECT_EQ(MSERR_OK, player_->Play());
1858     EXPECT_EQ(MSERR_OK, player_->SetVolume(1e-7, 1));
1859     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1e-7));
1860     EXPECT_EQ(MSERR_OK, player_->SetVolume(1e-7, 1e-7));
1861 }
1862 
1863 /**
1864  * @tc.name  : Test SetVideoScaleType API
1865  * @tc.number: Player_SetVideoScaleType_001
1866  * @tc.desc  : Test Player SetVideoScaleType
1867  */
1868 HWTEST_F(PlayerUnitTest, Player_SetVideoScaleType_001, TestSize.Level0)
1869 {
1870     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1871     sptr<Surface> videoSurface = player_->GetVideoSurface();
1872     ASSERT_NE(nullptr, videoSurface);
1873     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1874     EXPECT_EQ(MSERR_OK, player_->Prepare());
1875     EXPECT_EQ(MSERR_OK, player_->Play());
1876     Format format;
1877     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
1878         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT));
1879     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
1880     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
1881         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT_CROP));
1882     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
1883 }
1884 
1885 /**
1886  * @tc.name  : Test SetRendererInfo API
1887  * @tc.number: Player_SetRendererInfo_001
1888  * @tc.desc  : Test Player SetRendererInfo
1889  */
1890 HWTEST_F(PlayerUnitTest, Player_SetRendererInfo_001, TestSize.Level0)
1891 {
1892     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1893     Format format;
1894     sptr<Surface> videoSurface = player_->GetVideoSurface();
1895     ASSERT_NE(nullptr, videoSurface);
1896     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1897     int32_t contentType = 1;
1898     int32_t streamUsage = 1;
1899     int32_t rendererFlags = 0;
1900     (void)format.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
1901     (void)format.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
1902     (void)format.PutIntValue(PlayerKeys::RENDERER_FLAG, rendererFlags);
1903     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
1904     EXPECT_EQ(MSERR_OK, player_->Prepare());
1905     EXPECT_EQ(MSERR_OK, player_->Play());
1906 }
1907 
1908 /**
1909  * @tc.name  : Test SetVolumeMode API
1910  * @tc.number: Player_SetVolumeMode_001
1911  * @tc.desc  : Test Player SetVolumeMode
1912  */
1913 HWTEST_F(PlayerUnitTest, Player_SetVolumeMode_001, TestSize.Level0)
1914 {
1915     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1916     Format format;
1917     sptr<Surface> videoSurface = player_->GetVideoSurface();
1918     ASSERT_NE(nullptr, videoSurface);
1919     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1920     int32_t contentType = 1;
1921     int32_t streamUsage = 1;
1922     int32_t rendererFlags = 0;
1923     int32_t mode = 1;
1924     (void)format.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
1925     (void)format.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
1926     (void)format.PutIntValue(PlayerKeys::RENDERER_FLAG, rendererFlags);
1927     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
1928     EXPECT_EQ(MSERR_OK, player_->SetVolumeMode(mode));
1929     EXPECT_EQ(MSERR_OK, player_->Prepare());
1930     EXPECT_EQ(MSERR_OK, player_->Play());
1931 }
1932 
1933 /**
1934  * @tc.name  : Test SetInterrupt API
1935  * @tc.number: Player_SetInterrupt_001
1936  * @tc.desc  : Test Player SetInterrupt
1937  */
1938 HWTEST_F(PlayerUnitTest, Player_SetInterrupt_001, TestSize.Level0)
1939 {
1940     Format format;
1941     int32_t mode = 1;
1942     int32_t type = 1;
1943     std::shared_ptr<PlayerMock> player = nullptr;
1944     std::shared_ptr<PlayerCallbackTest> callback = nullptr;
1945     callback = std::make_shared<PlayerCallbackTest>();
1946     ASSERT_NE(nullptr, callback);
1947     player = std::make_shared<PlayerMock>(callback);
1948     ASSERT_NE(nullptr, player);
1949     EXPECT_TRUE(player->CreatePlayer());
1950     EXPECT_EQ(MSERR_OK, player->SetPlayerCallback(callback));
1951     ASSERT_EQ(MSERR_OK, player->SetSource(MEDIA_ROOT + "01.mp3"));
1952     EXPECT_EQ(MSERR_OK, player->Prepare());
1953 
1954     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1955     EXPECT_EQ(MSERR_OK, player_->Prepare());
1956     (void)format.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_MODE, mode);
1957     (void)format.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_TYPE, type);
1958     EXPECT_EQ(MSERR_OK, player->SetParameter(format));
1959     EXPECT_EQ(MSERR_OK, player->Play());
1960     sleep(PLAYING_TIME_2_SEC);
1961     EXPECT_EQ(MSERR_OK, player_->Play());
1962     sleep(PLAYING_TIME_2_SEC);
1963     EXPECT_EQ(MSERR_OK, player->ReleaseSync());
1964 }
1965 
1966 /**
1967  * @tc.name  : Test SetDataSource API
1968  * @tc.number: Player_SetDataSource_003
1969  * @tc.desc  : Test Player SetDataSource
1970  */
1971 HWTEST_F(PlayerUnitTest, Player_SetDataSource_003, TestSize.Level0)
1972 {
1973     system("param set sys.media.datasrc.set.copymode TRUE");
1974     ASSERT_EQ(MSERR_OK, player_->SetDataSrc("/data/test/H264_AAC.mp4", 1894386, true));  // 1894386 file size
1975     sptr<Surface> renderSurface = player_->GetVideoSurface();
1976     ASSERT_NE(nullptr, renderSurface);
1977     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(renderSurface));
1978     EXPECT_EQ(MSERR_OK, player_->Prepare());
1979     EXPECT_EQ(MSERR_OK, player_->Play());
1980     sleep(PLAYING_TIME_2_SEC);
1981     int32_t ret = player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC);
1982     EXPECT_EQ(MSERR_OK, ret);
1983     sleep(PLAYING_TIME_2_SEC);
1984     EXPECT_EQ(MSERR_OK, player_->Pause());
1985     ret = player_->Play();
1986     EXPECT_EQ(MSERR_OK, ret);
1987     sleep(PLAYING_TIME_2_SEC);
1988     ret = player_->Stop();
1989     EXPECT_EQ(MSERR_OK, ret);
1990     EXPECT_EQ(MSERR_OK, player_->Reset());
1991     ret = player_->Release();
1992     EXPECT_EQ(MSERR_OK, ret);
1993     system("param set sys.media.datasrc.set.copymode FALSE");
1994 }
1995 
1996 /**
1997  * @tc.name  : Test Player SelectBitRate API
1998  * @tc.number: Player_SelectBitRate_001
1999  * @tc.desc  : Test Player SelectBitRate interface
2000  */
2001 HWTEST_F(PlayerUnitTest, Player_SelectBitRate_001, TestSize.Level0)
2002 {
2003     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2004     sptr<Surface> videoSurface = player_->GetVideoSurface();
2005     ASSERT_NE(nullptr, videoSurface);
2006     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2007     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2008     EXPECT_EQ(MSERR_OK, player_->Play());
2009     EXPECT_EQ(MSERR_OK, player_->SelectBitRate(0));
2010 }
2011 
2012 /**
2013  * @tc.name: Player_Performance_Prepared_001
2014  * @tc.desc: test player start
2015  * @tc.type: PERFORMANCE
2016  * @tc.require: issueI5NYBJ
2017  */
2018 HWTEST_F(PlayerUnitTest, Player_Performance_Prepared_001, TestSize.Level0)
2019 {
2020     struct timeval startTime = {};
2021     struct timeval finishTime = {};
2022     int32_t runTimes = 10;
2023     float timeConv = 1000;
2024     float deltaTime = 0;
2025     sptr<Surface> videoSurface = player_->GetVideoSurface();
2026     ASSERT_NE(nullptr, videoSurface);
2027     for (int32_t i = 0; i < runTimes; i++) {
2028         EXPECT_EQ(MSERR_OK, gettimeofday(&startTime, nullptr));
2029         ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2030         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2031         EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2032         EXPECT_EQ(MSERR_OK, gettimeofday(&finishTime, nullptr));
2033         EXPECT_EQ(MSERR_OK, player_->Play());
2034         deltaTime += (finishTime.tv_sec - startTime.tv_sec) * timeConv +
2035             (finishTime.tv_usec - startTime.tv_usec) / timeConv;
2036         EXPECT_EQ(MSERR_OK, player_->Reset());
2037     }
2038     EXPECT_LE(deltaTime / runTimes, 1000); // less than 1000 ms
2039 }
2040 
2041 /**
2042  * @tc.name  : Test Player Play mp4 with rotation
2043  * @tc.number: Player_Rotate_001
2044  * @tc.desc  : Test Player Play interface
2045  */
2046 HWTEST_F(PlayerUnitTest, Player_Rotate_001, TestSize.Level0)
2047 {
2048     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2049     sptr<Surface> videoSurface = player_->GetVideoSurface();
2050     ASSERT_NE(nullptr, videoSurface);
2051     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2052     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2053     EXPECT_EQ(MSERR_OK, player_->Play());
2054     EXPECT_TRUE(player_->IsPlaying());
2055 }
2056 
2057 /**
2058  * @tc.name  : Test Player Dump Dot
2059  * @tc.number: Player_Dump_Dot_001
2060  * @tc.desc  : Test Player Dump Dot
2061  */
2062 HWTEST_F(PlayerUnitTest, Player_Dump_Dot_001, TestSize.Level0)
2063 {
2064     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2065     sptr<Surface> videoSurface = player_->GetVideoSurface();
2066     ASSERT_NE(nullptr, videoSurface);
2067     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2068     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2069     EXPECT_EQ(MSERR_OK, player_->Play());
2070     system("param set sys.media.dump.dot.path /data/test/media");
2071     EXPECT_TRUE(player_->IsPlaying());
2072     EXPECT_EQ(MSERR_OK, player_->Pause());
2073     EXPECT_EQ(MSERR_OK, player_->Play());
2074 }
2075 
2076 /**
2077  * @tc.name  : Test Player Dump Dot
2078  * @tc.number: Player_Dump_Dot_002
2079  * @tc.desc  : Test Player Dump Dot
2080  */
2081 HWTEST_F(PlayerUnitTest, Player_Dump_Dot_002, TestSize.Level0)
2082 {
2083     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2084     sptr<Surface> videoSurface = player_->GetVideoSurface();
2085     ASSERT_NE(nullptr, videoSurface);
2086     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2087     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2088     EXPECT_EQ(MSERR_OK, player_->Play());
2089     system("param set sys.media.dump.dot.path /xx");
2090     EXPECT_TRUE(player_->IsPlaying());
2091     EXPECT_EQ(MSERR_OK, player_->Pause());
2092     EXPECT_EQ(MSERR_OK, player_->Play());
2093 }
2094 
2095 /**
2096  * @tc.name  : Test Player Dump GlibMem
2097  * @tc.number: Player_Dump_GlibMem_001
2098  * @tc.desc  : Test Player Dump GlibMem
2099  */
2100 HWTEST_F(PlayerUnitTest, Player_Dump_GlibMem_001, TestSize.Level0)
2101 {
2102     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2103     sptr<Surface> videoSurface = player_->GetVideoSurface();
2104     ASSERT_NE(nullptr, videoSurface);
2105     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2106     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2107     EXPECT_EQ(MSERR_OK, player_->Play());
2108     system("hidumper -s 3002 -a glibmem");
2109     system("param set sys.media.dump.codec.vdec ALL");
2110     EXPECT_TRUE(player_->IsPlaying());
2111     EXPECT_EQ(MSERR_OK, player_->Pause());
2112 }
2113 
2114 /**
2115  * @tc.name  : Test Player Dump GlibPool
2116  * @tc.number: Player_Dump_GlibPool_001
2117  * @tc.desc  : Test Player Dump GlibPool
2118  */
2119 HWTEST_F(PlayerUnitTest, Player_Dump_GlibPool_001, TestSize.Level0)
2120 {
2121     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2122     sptr<Surface> videoSurface = player_->GetVideoSurface();
2123     ASSERT_NE(nullptr, videoSurface);
2124     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2125     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2126     system("param set sys.media.dump.frame.enable true");
2127     system("param set sys.media.set.mute TRUE");
2128     system("param set sys.media.kpi.avsync.log.enable true");
2129     system("param set sys.media.kpi.opt.renderdelay.enable true");
2130     EXPECT_EQ(MSERR_OK, player_->Play());
2131     system("hidumper -s 3002 -a glibpool");
2132     system("param set sys.media.dump.codec.vdec ALL");
2133     EXPECT_TRUE(player_->IsPlaying());
2134     EXPECT_EQ(MSERR_OK, player_->Pause());
2135 }
2136 
2137 /**
2138  * @tc.name  : Test Player Dump Log
2139  * @tc.number: Player_Dump_Log_001
2140  * @tc.desc  : Test Player Dump Log
2141  */
2142 HWTEST_F(PlayerUnitTest, Player_Dump_Log_001, TestSize.Level0)
2143 {
2144     system("mkdir /data/media/log");
2145     system("chmod 777 -R /data/media");
2146     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2147     sptr<Surface> videoSurface = player_->GetVideoSurface();
2148     ASSERT_NE(nullptr, videoSurface);
2149     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2150     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2151     system("param set sys.media.log.level *:l,multiqueue,decodecbin:,tsdemux:D,multiqueue:D,hlsdemux:D,souphttpsrc:W");
2152     system("param set sys.media.log.level *:l,basesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmm" \
2153         "basesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmm:D");
2154     system("param set sys.media.dump.frame.enable false");
2155     system("param set sys.media.set.mute FALSE");
2156     system("param set sys.media.kpi.avsync.log.enable false");
2157     system("param set sys.media.kpi.opt.renderdelay.enable false");
2158     EXPECT_EQ(MSERR_OK, player_->Play());
2159     system("param set sys.media.dump.codec.vdec NULL");
2160     EXPECT_TRUE(player_->IsPlaying());
2161     EXPECT_EQ(MSERR_OK, player_->Pause());
2162     system("rm -rf /data/media/log");
2163 }
2164 
2165 /**
2166  * @tc.name  : Test Player Dump gstbuffer
2167  * @tc.number: Player_Dump_GstBuffer_001
2168  * @tc.desc  : Test Player Dump gstbuffer
2169  */
2170 HWTEST_F(PlayerUnitTest, Player_Dump_GstBuffer_001, TestSize.Level0)
2171 {
2172     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2173     sptr<Surface> videoSurface = player_->GetVideoSurface();
2174     ASSERT_NE(nullptr, videoSurface);
2175     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2176     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2177     system("param set sys.media.dump.gstbuffer 1");
2178     system("param set sys.media.set.mute null");
2179     EXPECT_EQ(MSERR_OK, player_->Play());
2180     EXPECT_TRUE(player_->IsPlaying());
2181     EXPECT_EQ(MSERR_OK, player_->Pause());
2182     system("param set sys.media.dump.gstbuffer 0");
2183 }
2184 
2185 /**
2186  * @tc.name  : Test Player With Not Performance
2187  * @tc.number: Player_Not_Performance_001
2188  * @tc.desc  : Test Player Not Performance
2189  */
2190 HWTEST_F(PlayerUnitTest, Player_Not_Performance_001, TestSize.Level2)
2191 {
2192     system("param set sys.media.player.performance.enable FALSE");
2193     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2194     sptr<Surface> videoSurface = player_->GetVideoSurface();
2195     ASSERT_NE(nullptr, videoSurface);
2196     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2197     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2198     system("param set sys.media.player.performance.enable TRUE");
2199 }
2200 
2201 /**
2202  * @tc.name  : Test Player Mem Recycle
2203  * @tc.number: Player_Mem_Recycle_001
2204  * @tc.desc  : Test Player Mem Recycle
2205  */
2206 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_001, TestSize.Level0)
2207 {
2208     sptr<Surface> renderSurface = player_->GetVideoSurface();
2209     ASSERT_NE(nullptr, renderSurface);
2210     std::vector<std::string> srcVector = {MEDIA_ROOT + "H264_MP3.mp4"};
2211     for (int32_t i = 0; i < static_cast<int32_t>(srcVector.size()); i++) {
2212         if (srcVector[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2213             system("param set sys.media.player.resource.type NetWork");
2214         }
2215         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVector[i]));
2216         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(renderSurface));
2217         char text[100]; // 100: text len
2218         sprintf_s(text, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", 0, 0, 4);
2219         system(text);
2220         sprintf_s(text, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), 0, 4);
2221         system(text);
2222         system("hidumper -s 1909 -a \"-t 6\"");
2223         system("hidumper -s 1909 -a \"-t 3\"");
2224         int32_t ret = player_->Prepare();
2225         EXPECT_EQ(MSERR_OK, ret);
2226         EXPECT_EQ(MSERR_OK, player_->Reset());
2227         system("param set sys.media.player.resource.type Local");
2228     }
2229 }
2230 
2231 /**
2232  * @tc.name  : Test Player Mem Recycle
2233  * @tc.number: Player_Mem_Recycle_002
2234  * @tc.desc  : Test Player Mem Recycle
2235  */
2236 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_002, TestSize.Level0)
2237 {
2238     sptr<Surface> vSurface = player_->GetVideoSurface();
2239     ASSERT_NE(nullptr, vSurface);
2240     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2241     for (uint32_t i = 0; i < srcVec.size(); i++) {
2242         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2243             system("param set sys.media.player.resource.type NetWork");
2244         }
2245         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2246         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(vSurface));
2247         EXPECT_EQ(MSERR_OK, player_->Prepare());
2248         char str[100]; // 100: str len
2249         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2250         system(str);
2251         system("hidumper -s 1909 -a \"-t 3\"");
2252         EXPECT_EQ(MSERR_OK, player_->Play());
2253         EXPECT_EQ(MSERR_OK, player_->Reset());
2254         system("param set sys.media.player.resource.type Local");
2255     }
2256 }
2257 
2258 /**
2259  * @tc.name  : Test Player Mem Recycle
2260  * @tc.number: Player_Mem_Recycle_003
2261  * @tc.desc  : Test Player Mem Recycle
2262  */
2263 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_003, TestSize.Level0)
2264 {
2265     sptr<Surface> videoSurface = player_->GetVideoSurface();
2266     ASSERT_NE(nullptr, videoSurface);
2267     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2268     for (uint32_t i = 0; i < srcVec.size(); i++) {
2269         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2270             system("param set sys.media.player.resource.type NetWork");
2271         }
2272         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2273         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2274         EXPECT_EQ(MSERR_OK, player_->Prepare());
2275         EXPECT_EQ(MSERR_OK, player_->Play());
2276         sleep(15);
2277         char str[100]; // 100: str len
2278         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2279         system(str);
2280         system("hidumper -s 1909 -a \"-t 3\"");
2281         EXPECT_EQ(MSERR_OK, player_->Play());
2282         EXPECT_EQ(MSERR_OK, player_->Reset());
2283         system("param set sys.media.player.resource.type Local");
2284     }
2285 }
2286 
2287 /**
2288  * @tc.name  : Test Player Mem Recycle
2289  * @tc.number: Player_Mem_Recycle_004
2290  * @tc.desc  : Test Player Mem Recycle
2291  */
2292 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_004, TestSize.Level0)
2293 {
2294     sptr<Surface> videoSurface = player_->GetVideoSurface();
2295     ASSERT_NE(nullptr, videoSurface);
2296     std::vector<std::string> vec = {MEDIA_ROOT + "H264_MP3.mp4"};
2297     for (uint32_t i = 0; i < vec.size(); i++) {
2298         if (vec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2299             system("param set sys.media.player.resource.type NetWork");
2300         }
2301         const auto ret = MSERR_OK;
2302         ASSERT_EQ(ret, player_->SetSource(vec[i]));
2303         EXPECT_EQ(ret, player_->SetVideoSurface(videoSurface));
2304         EXPECT_EQ(ret, player_->Prepare());
2305         EXPECT_EQ(ret, player_->Play());
2306         EXPECT_EQ(ret, player_->Pause());
2307         char str[100]; // 100: str len
2308         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2309         system(str);
2310         system("hidumper -s 1909 -a \"-t 3\"");
2311         int32_t currentTime = 0;
2312         std::vector<Format> videoTrack;
2313         std::vector<Format> audioTrack;
2314         int32_t duration = 0;
2315         PlaybackRateMode mode;
2316         EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
2317         EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
2318         EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(currentTime));
2319         EXPECT_NE(0, player_->GetVideoWidth());
2320         EXPECT_NE(0, player_->GetVideoHeight());
2321         EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2322         EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2323         int32_t index;
2324         EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, index));
2325         EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_VID, index));
2326         EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_SUBTITLE, index));
2327         EXPECT_NE(MSERR_OK, player_->GetCurrentTrack(100, index));
2328         EXPECT_EQ(false, player_->IsPlaying());
2329         EXPECT_EQ(false, player_->IsLooping());
2330         EXPECT_EQ(MSERR_OK, player_->Seek(1000, SEEK_NEXT_SYNC));
2331         EXPECT_EQ(MSERR_OK, player_->Reset());
2332         system("param set sys.media.player.resource.type Local");
2333     }
2334 }
2335 
2336 /**
2337  * @tc.name  : Test Player Mem Recycle
2338  * @tc.number: Player_Mem_Recycle_005
2339  * @tc.desc  : Test Player Mem Recycle
2340  */
2341 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_005, TestSize.Level0)
2342 {
2343     sptr<Surface> videoSurface = player_->GetVideoSurface();
2344     ASSERT_NE(nullptr, videoSurface);
2345     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2346     for (uint32_t i = 0; i < srcVec.size(); i++) {
2347         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2348             system("param set sys.media.player.resource.type NetWork");
2349         }
2350         const auto result = MSERR_OK;
2351         ASSERT_EQ(result, player_->SetSource(srcVec[i]));
2352         EXPECT_EQ(result, player_->SetVideoSurface(videoSurface));
2353         EXPECT_EQ(result, player_->Prepare());
2354         EXPECT_EQ(result, player_->Play());
2355         EXPECT_EQ(result, player_->Pause());
2356         char str[100]; // 100: str len
2357         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2358         system(str);
2359         system("hidumper -s 1909 -a \"-t 3\"");
2360         EXPECT_EQ(result, player_->Reset());
2361         system("param set sys.media.player.resource.type Local");
2362     }
2363 }
2364 
2365 /**
2366  * @tc.name  : Test Player Mem Recycle
2367  * @tc.number: Player_Mem_Recycle_006
2368  * @tc.desc  : Test Player Mem Recycle
2369  */
2370 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_006, TestSize.Level0)
2371 {
2372     sptr<Surface> videoSurface = player_->GetVideoSurface();
2373     ASSERT_NE(nullptr, videoSurface);
2374     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2375     for (uint32_t i = 0; i < srcVec.size(); i++) {
2376         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2377             system("param set sys.media.player.resource.type NetWork");
2378         }
2379         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2380         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2381         EXPECT_EQ(MSERR_OK, player_->Prepare());
2382         EXPECT_EQ(MSERR_OK, player_->Play());
2383         EXPECT_EQ(MSERR_OK, player_->Pause());
2384         char str[100]; // 100: str len
2385         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2386         system(str);
2387         system("hidumper -s 1909 -a \"-t 3\"");
2388         EXPECT_EQ(MSERR_OK, player_->Reset());
2389         system("param set sys.media.player.resource.type Local");
2390     }
2391 }
2392 
2393 /**
2394  * @tc.name  : Test Player Mem Recycle
2395  * @tc.number: Player_Mem_Recycle_007
2396  * @tc.desc  : Test Player Mem Recycle
2397  */
2398 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_007, TestSize.Level0)
2399 {
2400     sptr<Surface> videoSurface = player_->GetVideoSurface();
2401     ASSERT_NE(nullptr, videoSurface);
2402     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2403     std::vector<PlaybackRateMode> speedMode = {SPEED_FORWARD_2_00_X, SPEED_FORWARD_1_25_X};
2404     for (uint32_t i = 0; i < srcVec.size(); i++) {
2405         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2406             system("param set sys.media.player.resource.type NetWork");
2407         }
2408         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2409         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2410         EXPECT_EQ(MSERR_OK, player_->Prepare());
2411         EXPECT_EQ(MSERR_OK, player_->Play());
2412         EXPECT_EQ(MSERR_OK, player_->Pause());
2413         char str[100]; // 100: str len
2414         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2415         system(str);
2416         system("hidumper -s 1909 -a \"-t 3\"");
2417         EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(speedMode[i]));
2418         EXPECT_EQ(MSERR_OK, player_->Reset());
2419         system("param set sys.media.player.resource.type Local");
2420     }
2421 }
2422 
2423 /**
2424  * @tc.name  : Test Player Mem Recycle
2425  * @tc.number: Player_Mem_Recycle_008
2426  * @tc.desc  : Test Player Mem Recycle
2427  */
2428 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_008, TestSize.Level0)
2429 {
2430     sptr<Surface> videoSurface = player_->GetVideoSurface();
2431     ASSERT_NE(nullptr, videoSurface);
2432     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2433     for (uint32_t i = 0; i < srcVec.size(); i++) {
2434         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2435             system("param set sys.media.player.resource.type NetWork");
2436         }
2437         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2438         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2439         EXPECT_EQ(MSERR_OK, player_->Prepare());
2440         EXPECT_EQ(MSERR_OK, player_->Play());
2441         EXPECT_EQ(MSERR_OK, player_->Pause());
2442         EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2443         EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
2444         EXPECT_EQ(MSERR_OK, player_->SetVolume(0.5, 0.5));
2445         char str[100]; // 100: str len
2446         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2447         system(str);
2448         system("hidumper -s 1909 -a \"-t 3\"");
2449         EXPECT_EQ(MSERR_OK, player_->SetLooping(false));
2450         EXPECT_EQ(MSERR_OK, player_->Reset());
2451         system("param set sys.media.player.resource.type Local");
2452     }
2453 }
2454 
2455 /**
2456  * @tc.name  : Test Player Mem Recycle
2457  * @tc.number: Player_Mem_Recycle_009
2458  * @tc.desc  : Test Player Mem Recycle
2459  */
2460 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_009, TestSize.Level0)
2461 {
2462     sptr<Surface> videoSurface = player_->GetVideoSurface();
2463     ASSERT_NE(nullptr, videoSurface);
2464     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2465     for (uint32_t i = 0; i < srcVec.size(); i++) {
2466         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2467             system("param set sys.media.player.resource.type NetWork");
2468         }
2469         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2470         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2471         EXPECT_EQ(MSERR_OK, player_->Prepare());
2472         EXPECT_EQ(MSERR_OK, player_->Play());
2473         EXPECT_EQ(MSERR_OK, player_->Pause());
2474         char str[100]; // 100: str len
2475         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2476         system(str);
2477         system("hidumper -s 1909 -a \"-t 3\"");
2478         EXPECT_EQ(MSERR_OK, player_->SelectBitRate(0));
2479         EXPECT_EQ(MSERR_OK, player_->Reset());
2480         system("param set sys.media.player.resource.type Local");
2481     }
2482 }
2483 
2484 /**
2485  * @tc.name  : Test Player Mem Recycle
2486  * @tc.number: Player_Mem_Recycle_010
2487  * @tc.desc  : Test Player Mem Recycle
2488  */
2489 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_010, TestSize.Level0)
2490 {
2491     sptr<Surface> videoSurface = player_->GetVideoSurface();
2492     ASSERT_NE(nullptr, videoSurface);
2493     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2494     for (uint32_t i = 0; i < srcVec.size(); i++) {
2495         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2496             system("param set sys.media.player.resource.type NetWork");
2497         }
2498         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2499         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2500         EXPECT_EQ(MSERR_OK, player_->Prepare());
2501         EXPECT_EQ(MSERR_OK, player_->Play());
2502         EXPECT_EQ(MSERR_OK, player_->Stop());
2503         char str[100]; // 100: str len
2504         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2505         system(str);
2506         system("hidumper -s 1909 -a \"-t 3\"");
2507         EXPECT_EQ(MSERR_OK, player_->Reset());
2508         system("param set sys.media.player.resource.type Local");
2509     }
2510 }
2511 
2512 /**
2513  * @tc.name  : Test Player Mem Recycle
2514  * @tc.number: Player_Mem_Recycle_011
2515  * @tc.desc  : Test Player Mem Recycle
2516  */
2517 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_011, TestSize.Level0)
2518 {
2519     sptr<Surface> videoSurface = player_->GetVideoSurface();
2520     ASSERT_NE(nullptr, videoSurface);
2521     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2522     for (uint32_t i = 0; i < srcVec.size(); i++) {
2523         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2524             system("param set sys.media.player.resource.type NetWork");
2525         }
2526         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2527         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2528         EXPECT_EQ(MSERR_OK, player_->Prepare());
2529         EXPECT_EQ(MSERR_OK, player_->Play());
2530         EXPECT_EQ(MSERR_OK, player_->Pause());
2531         char str[100]; // 100: str len
2532         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2533         system(str);
2534         system("hidumper -s 1909 -a \"-t 2\"");
2535         EXPECT_EQ(MSERR_OK, player_->Reset());
2536         system("param set sys.media.player.resource.type Local");
2537     }
2538 }
2539 
2540 /**
2541  * @tc.name  : Test Player Mem Recycle
2542  * @tc.number: Player_Mem_Recycle_012
2543  * @tc.desc  : Test Player Mem Recycle
2544  */
2545 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_012, TestSize.Level0)
2546 {
2547     sptr<Surface> videoSurface = player_->GetVideoSurface();
2548     ASSERT_NE(nullptr, videoSurface);
2549     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2550     for (uint32_t i = 0; i < srcVec.size(); i++) {
2551         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2552             system("param set sys.media.player.resource.type NetWork");
2553         }
2554         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2555         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2556         EXPECT_EQ(MSERR_OK, player_->Prepare());
2557         EXPECT_EQ(MSERR_OK, player_->Play());
2558         EXPECT_EQ(MSERR_OK, player_->Pause());
2559         char str[100]; // 100: str len
2560         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2561         system(str);
2562         system("hidumper -s 1909 -a \"-t 4\"");
2563         EXPECT_EQ(MSERR_OK, player_->Reset());
2564         system("param set sys.media.player.resource.type Local");
2565     }
2566 }
2567 
2568 /**
2569  * @tc.name  : Test Player Mem Recycle
2570  * @tc.number: Player_Mem_Recycle_013
2571  * @tc.desc  : Test Player Mem Recycle
2572  */
2573 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_013, TestSize.Level0)
2574 {
2575     sptr<Surface> videoSurface = player_->GetVideoSurface();
2576     ASSERT_NE(nullptr, videoSurface);
2577     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2578     for (uint32_t i = 0; i < srcVec.size(); i++) {
2579         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2580             system("param set sys.media.player.resource.type NetWork");
2581         }
2582         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2583         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2584         EXPECT_EQ(MSERR_OK, player_->Prepare());
2585         EXPECT_EQ(MSERR_OK, player_->Play());
2586         EXPECT_EQ(MSERR_OK, player_->Pause());
2587         char str[100]; // 100: str len
2588         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2589         system(str);
2590         system("hidumper -s 1909 -a \"-f 3\"");
2591         EXPECT_EQ(MSERR_OK, player_->Reset());
2592         system("param set sys.media.player.resource.type Local");
2593         system("killall memmgrservice");
2594         sleep(1);
2595     }
2596 }
2597 
2598 /**
2599  * @tc.name  : Test Player Mem Recycle
2600  * @tc.number: Player_Mem_Recycle_014
2601  * @tc.desc  : Test Player Mem Recycle
2602  */
2603 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_014, TestSize.Level0)
2604 {
2605     sptr<Surface> videoSurface = player_->GetVideoSurface();
2606     ASSERT_NE(nullptr, videoSurface);
2607     std::vector<std::string> srcVector = {MEDIA_ROOT + "H264_AAC.mp4"};
2608     for (uint32_t i = 0; i < srcVector.size(); i++) {
2609         if (srcVector[i] == MEDIA_ROOT + "H264_AAC.mp4") {
2610             system("param set sys.media.player.resource.type NetWork");
2611         }
2612         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVector[i]));
2613         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2614         EXPECT_EQ(MSERR_OK, player_->Prepare());
2615         char str[100]; // 100: str len
2616         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2617         system(str);
2618         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 2);
2619         system(str);
2620         sleep(30);
2621         EXPECT_EQ(MSERR_OK, player_->Play());
2622         EXPECT_EQ(MSERR_OK, player_->Reset());
2623         system("param set sys.media.player.resource.type Local");
2624     }
2625 }
2626 
2627 /**
2628  * @tc.name  : Test Player Mem Recycle
2629  * @tc.number: Player_Mem_Recycle_015
2630  * @tc.desc  : Test Player Mem Recycle
2631  */
2632 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_015, TestSize.Level0)
2633 {
2634     sptr<Surface> videoSurface = player_->GetVideoSurface();
2635     ASSERT_NE(nullptr, videoSurface);
2636     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_AAC.mp4"};
2637     for (uint32_t i = 0; i < srcVec.size(); i++) {
2638         if (srcVec[i] == MEDIA_ROOT + "H264_AAC.mp4") {
2639             system("param set sys.media.player.resource.type NetWork");
2640         }
2641         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2642         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2643         EXPECT_EQ(MSERR_OK, player_->Prepare());
2644         char str[100]; // 100: str len
2645         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2646         system(str);
2647         system("hidumper -s 3002 -a \"player\"");
2648         sleep(30);
2649         system("hidumper -s 3002 -a \"player\"");
2650         EXPECT_EQ(MSERR_OK, player_->Play());
2651         EXPECT_EQ(MSERR_OK, player_->Stop());
2652         EXPECT_EQ(MSERR_OK, player_->Reset());
2653         system("param set sys.media.player.resource.type Local");
2654     }
2655 }
2656 
2657 /**
2658  * @tc.name  : Test Player Mem Recycle
2659  * @tc.number: Player_Mem_Recycle_016
2660  * @tc.desc  : Test Player Mem Recycle
2661  */
2662 HWTEST_F(PlayerUnitTest, Player_Mem_Recycle_016, TestSize.Level0)
2663 {
2664     int32_t duration = 0;
2665     std::vector<Format> videoTrack;
2666     std::vector<Format> audioTrack;
2667     PlaybackRateMode mode;
2668     int32_t index = 0;
2669     EXPECT_EQ(MSERR_OK, player_->SetVolume(0.9, 0.9));
2670     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
2671     sptr<Surface> videoSurface = player_->GetVideoSurface();
2672     ASSERT_NE(nullptr, videoSurface);
2673     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2674     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
2675     EXPECT_EQ(true, player_->IsLooping());
2676     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2677     char str[100]; // 100: str len
2678     sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2679     system(str);
2680     system("hidumper -s 1909 -a \"-t 4\"");
2681     EXPECT_EQ(720, player_->GetVideoWidth());
2682     EXPECT_EQ(480, player_->GetVideoHeight());
2683     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
2684     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
2685     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2686     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2687     EXPECT_EQ(SPEED_FORWARD_1_00_X, mode);
2688     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_0_50_X));
2689     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2690     EXPECT_EQ(SPEED_FORWARD_0_50_X, mode);
2691     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2692     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2693     EXPECT_EQ(SPEED_FORWARD_2_00_X, mode);
2694 
2695     EXPECT_EQ(false, player_->IsPlaying());
2696     EXPECT_EQ(true, player_->IsLooping());
2697 
2698     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, index));
2699     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_VID, index));
2700     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_SUBTITLE, index));
2701     EXPECT_NE(MSERR_OK, player_->GetCurrentTrack(100, index));
2702 
2703     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2704     EXPECT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_PREVIOUS_SYNC));
2705     EXPECT_EQ(MSERR_OK, player_->Reset());
2706     EXPECT_EQ(MSERR_OK, player_->Release());
2707 }
2708 
2709 /**
2710  * @tc.name  : Test SetEffect API
2711  * @tc.number: Player_SetEffect_001
2712  * @tc.desc  : Test Player SetEffect state machine
2713  */
2714 HWTEST_F(PlayerUnitTest, Player_SetEffect_001, TestSize.Level0)
2715 {
2716     Format format;
2717     const float FLOAT_VALUE = 1.0;
2718     const double DOUBLE_VALUE = 2.5;
2719     const std::string STRING_VALUE = "player_test";
2720     const int32_t INT_VALUE = 1;
2721     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, OHOS::AudioStandard::AudioEffectMode::EFFECT_NONE);
2722     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2723     (void)format.PutFloatValue(PlayerKeys::AUDIO_EFFECT_MODE, FLOAT_VALUE);
2724     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2725     (void)format.PutDoubleValue(PlayerKeys::AUDIO_EFFECT_MODE, DOUBLE_VALUE);
2726     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2727     (void)format.PutStringValue(PlayerKeys::AUDIO_EFFECT_MODE, STRING_VALUE);
2728     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2729     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, INT_VALUE);
2730     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2731 
2732     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "01.mp3"));
2733     sptr<Surface> videoSurface = player_->GetVideoSurface();
2734     ASSERT_NE(nullptr, videoSurface);
2735     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2736 
2737     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2738     EXPECT_EQ(MSERR_OK, player_->Prepare());
2739     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2740     EXPECT_EQ(MSERR_OK, player_->Play());
2741     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2742     EXPECT_EQ(MSERR_OK, player_->Pause());
2743     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2744     EXPECT_EQ(MSERR_OK, player_->Stop());
2745     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2746     EXPECT_EQ(MSERR_OK, player_->Prepare());
2747     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2748     EXPECT_EQ(MSERR_OK, player_->Reset());
2749     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2750     EXPECT_EQ(MSERR_OK, player_->Release());
2751     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2752 }
2753 
2754 /**
2755  * @tc.name  : Test SetEffect API
2756  * @tc.number: Player_SetEffect_002
2757  * @tc.desc  : Test Player SetEffect param
2758  */
2759 HWTEST_F(PlayerUnitTest, Player_SetEffect_002, TestSize.Level0)
2760 {
2761     Format format;
2762     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "01.mp3"));
2763     sptr<Surface> videoSurface = player_->GetVideoSurface();
2764     ASSERT_NE(nullptr, videoSurface);
2765     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2766     EXPECT_EQ(MSERR_OK, player_->Prepare());
2767 
2768     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, OHOS::AudioStandard::AudioEffectMode::EFFECT_DEFAULT);
2769     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2770     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, OHOS::AudioStandard::AudioEffectMode::EFFECT_NONE);
2771     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2772     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, 100); // 100 is an invalid parameter.
2773     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2774     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, -1); // -1 is an invalid parameter.
2775     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
2776 
2777     EXPECT_EQ(MSERR_OK, player_->Release());
2778 }
2779 
2780 /**
2781  * @tc.name  : Test media error
2782  * @tc.number: Player_Media_Error
2783  * @tc.desc  : Test Player Media Error
2784  */
2785 HWTEST_F(PlayerUnitTest, Player_Media_Error, TestSize.Level0)
2786 {
2787     std::array<MediaServiceErrCode, 5> errCodes = {MSERR_OK, MSERR_NO_MEMORY, MSERR_INVALID_OPERATION,
2788         MSERR_INVALID_VAL, MSERR_UNKNOWN};
2789     for (const auto& code : errCodes) {
2790         MediaServiceErrCodeTest(code);
2791     }
2792     for (MediaServiceErrCode code = MSERR_SERVICE_DIED; code < MSERR_EXTEND_START;
2793         code = (MediaServiceErrCode)(code + 1)) {
2794         MediaServiceErrCodeTest(code);
2795     }
2796     MediaServiceErrCodeTest(MSERR_EXTEND_START);
2797 
2798     for (auto code = MSERR_EXT_OK; code <= MSERR_EXT_UNSUPPORT; code = (MediaServiceExtErrCode)(code + 1)) {
2799         EXPECT_EQ(MSEXTERRCODE_INFOS.at(code), MSExtErrorToString(code));
2800     }
2801     EXPECT_EQ(MSEXTERRCODE_INFOS.at(MSERR_EXT_EXTEND_START), MSExtErrorToString(MSERR_EXT_EXTEND_START));
2802 
2803     std::array<MediaServiceExtErrCodeAPI9, 5> errCodesAPI9 = {MSERR_EXT_API9_OK, MSERR_EXT_API9_NO_PERMISSION,
2804         MSERR_EXT_API9_PERMISSION_DENIED, MSERR_EXT_API9_INVALID_PARAMETER, MSERR_EXT_API9_UNSUPPORT_CAPABILITY};
2805     for (const auto& errCodeApi9 : errCodesAPI9) {
2806         MediaServiceExtErrCodeAPI9Test(errCodeApi9);
2807     }
2808     for (auto code = MSERR_EXT_API9_NO_MEMORY;
2809         code <= MSERR_EXT_API9_AUDIO_INTERRUPTED; code = (MediaServiceExtErrCodeAPI9)(code + 1)) {
2810         MediaServiceExtErrCodeAPI9Test(code);
2811     }
2812 }
2813 
2814 /**
2815  * @tc.name  : Test media error
2816  * @tc.number: Player_Media_Error_002
2817  * @tc.desc  : Test Player Media Error
2818  */
2819 HWTEST_F(PlayerUnitTest, Player_Media_Error_002, TestSize.Level0)
2820 {
2821     for (MediaServiceErrCode code = MSERR_IO_CANNOT_FIND_HOST; code <= MSERR_IO_UNSUPPORTTED_REQUEST;
2822         code = (MediaServiceErrCode)(code + 1)) {
2823         MediaServiceErrCodeTest(code);
2824     }
2825     MediaServiceErrCodeTest(MSERR_EXTEND_START);
2826 
2827     for (auto code = MSERR_EXT_API14_IO_CANNOT_FIND_HOST;
2828         code <= MSERR_EXT_API14_IO_UNSUPPORTTED_REQUEST; code = (MediaServiceExtErrCodeAPI9)(code + 1)) {
2829         EXPECT_EQ(MSEXTERRCODE_API9_INFOS.at(code), MSExtAVErrorToString(code));
2830         MediaServiceExtErrCodeAPI9Test(code);
2831     }
2832 }
2833 
2834 /**
2835  * @tc.name  : Test ChangeSurface
2836  * @tc.number: Player_ChangeSurface_001
2837  * @tc.desc  : Test video player change surface in idle state
2838  */
2839 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_001, TestSize.Level0)
2840 {
2841     sptr<Surface> videoSurface = player_->GetVideoSurface();
2842     ASSERT_NE(nullptr, videoSurface);
2843     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
2844 }
2845 
2846 /**
2847  * @tc.name  : Test ChangeSurface
2848  * @tc.number: Player_ChangeSurface_002
2849  * @tc.desc  : Test video player change surface in released state
2850  */
2851 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_002, TestSize.Level0)
2852 {
2853     sptr<Surface> videoSurface = player_->GetVideoSurface();
2854     ASSERT_NE(nullptr, videoSurface);
2855     player_->Release();
2856     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
2857 }
2858 
2859 /**
2860  * @tc.name  : Test ChangeSurface
2861  * @tc.number: Player_ChangeSurface_003
2862  * @tc.desc  : Test video player change surface in error state
2863  */
2864 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_003, TestSize.Level0)
2865 {
2866     int32_t ret = player_->SetSource(MEDIA_ROOT + "error.mp4");
2867     EXPECT_EQ(MSERR_OK, ret);
2868     sptr<Surface> videoSurface = player_->GetVideoSurface();
2869     ASSERT_NE(nullptr, videoSurface);
2870     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2871     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
2872     sleep(PLAYING_TIME_2_SEC);
2873     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
2874     ASSERT_NE(nullptr, nextVideoSurface);
2875     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
2876 }
2877 
2878 /**
2879  * @tc.name  : Test ChangeSurface
2880  * @tc.number: Player_ChangeSurface_004
2881  * @tc.desc  : Test video player change surface in initialized state
2882  */
2883 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_004, TestSize.Level0)
2884 {
2885     int32_t ret = player_->SetSource(VIDEO_FILE1);
2886     EXPECT_EQ(MSERR_OK, ret);
2887     sptr<Surface> videoSurface = player_->GetVideoSurface();
2888     ASSERT_NE(nullptr, videoSurface);
2889     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2890     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
2891     ASSERT_NE(nullptr, nextVideoSurface);
2892     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
2893 }
2894 
2895 /**
2896  * @tc.name  : Test ChangeSurface
2897  * @tc.number: Player_ChangeSurface_005
2898  * @tc.desc  : Test video player change surface in prepared state
2899  */
2900 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_005, TestSize.Level0)
2901 {
2902     int32_t ret = player_->SetSource(VIDEO_FILE1);
2903     EXPECT_EQ(MSERR_OK, ret);
2904     sptr<Surface> videoSurface = player_->GetVideoSurface();
2905     ASSERT_NE(nullptr, videoSurface);
2906     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2907     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2908     sleep(PLAYING_TIME_2_SEC);
2909     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
2910     ASSERT_NE(nullptr, nextVideoSurface);
2911     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
2912 }
2913 
2914 /**
2915  * @tc.name  : Test ChangeSurface
2916  * @tc.number: Player_ChangeSurface_006
2917  * @tc.desc  : Test video player change surface in playing state
2918  */
2919 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_006, TestSize.Level0)
2920 {
2921     int32_t ret = player_->SetSource(VIDEO_FILE1);
2922     EXPECT_EQ(MSERR_OK, ret);
2923     sptr<Surface> videoSurface = player_->GetVideoSurface();
2924     ASSERT_NE(nullptr, videoSurface);
2925     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2926     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2927     sleep(PLAYING_TIME_2_SEC);
2928     EXPECT_EQ(MSERR_OK, player_->Play());
2929     sleep(PLAYING_TIME_2_SEC);
2930     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
2931     ASSERT_NE(nullptr, nextVideoSurface);
2932     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
2933 }
2934 
2935 /**
2936  * @tc.name  : Test ChangeSurface
2937  * @tc.number: Player_ChangeSurface_007
2938  * @tc.desc  : Test video player change surface in paused state
2939  */
2940 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_007, TestSize.Level0)
2941 {
2942     int32_t ret = player_->SetSource(VIDEO_FILE1);
2943     EXPECT_EQ(MSERR_OK, ret);
2944     sptr<Surface> videoSurface = player_->GetVideoSurface();
2945     ASSERT_NE(nullptr, videoSurface);
2946     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2947     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2948     sleep(PLAYING_TIME_2_SEC);
2949     EXPECT_EQ(MSERR_OK, player_->Play());
2950     sleep(PLAYING_TIME_2_SEC);
2951     EXPECT_EQ(MSERR_OK, player_->Pause());
2952     sleep(PLAYING_TIME_2_SEC);
2953     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
2954     ASSERT_NE(nullptr, nextVideoSurface);
2955     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
2956 }
2957 
2958 /**
2959  * @tc.name  : Test ChangeSurface
2960  * @tc.number: Player_ChangeSurface_008
2961  * @tc.desc  : Test video player change surface in stopped state
2962  */
2963 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_008, TestSize.Level0)
2964 {
2965     int32_t ret = player_->SetSource(VIDEO_FILE1);
2966     EXPECT_EQ(MSERR_OK, ret);
2967     sptr<Surface> videoSurface = player_->GetVideoSurface();
2968     ASSERT_NE(nullptr, videoSurface);
2969     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2970     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2971     sleep(PLAYING_TIME_2_SEC);
2972     EXPECT_EQ(MSERR_OK, player_->Play());
2973     sleep(PLAYING_TIME_2_SEC);
2974     EXPECT_EQ(MSERR_OK, player_->Stop());
2975     sleep(PLAYING_TIME_2_SEC);
2976     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
2977     ASSERT_NE(nullptr, nextVideoSurface);
2978     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
2979 }
2980 
2981 /**
2982  * @tc.name  : Test ChangeSurface
2983  * @tc.number: Player_ChangeSurface_009
2984  * @tc.desc  : Test video player change surface in completed state
2985  */
2986 HWTEST_F(PlayerUnitTest, Player_ChangeSurface_009, TestSize.Level0)
2987 {
2988     int32_t ret = player_->SetSource(VIDEO_FILE1);
2989     EXPECT_EQ(MSERR_OK, ret);
2990     sptr<Surface> videoSurface = player_->GetVideoSurface();
2991     ASSERT_NE(nullptr, videoSurface);
2992     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2993     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2994     sleep(PLAYING_TIME_2_SEC);
2995     EXPECT_EQ(MSERR_OK, player_->Play());
2996     int32_t duration = 0;
2997     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
2998     sleep(PLAYING_TIME_10_SEC);
2999     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3000     ASSERT_NE(nullptr, nextVideoSurface);
3001     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3002 }
3003 
3004 /**
3005  * @tc.name  : Test SetPlaybackSpeed API
3006  * @tc.number: Player_SetPlaybackSpeed_003
3007  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_0_50_X
3008  */
3009 HWTEST_F(PlayerUnitTest, Player_SetPlaybackSpeed_003, TestSize.Level0)
3010 {
3011     PlaybackRateMode mode;
3012     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3013     sptr<Surface> videoSurface = player_->GetVideoSurface();
3014     ASSERT_NE(nullptr, videoSurface);
3015     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3016     EXPECT_EQ(MSERR_OK, player_->Prepare());
3017     EXPECT_EQ(MSERR_OK, player_->Play());
3018     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_0_50_X));
3019     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3020     EXPECT_EQ(SPEED_FORWARD_0_50_X, mode);
3021 }
3022 
3023 /**
3024  * @tc.name  : Test SetPlaybackSpeed API
3025  * @tc.number: Player_SetPlaybackSpeed_004
3026  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_1_50_X
3027  */
3028 HWTEST_F(PlayerUnitTest, Player_SetPlaybackSpeed_004, TestSize.Level0)
3029 {
3030     PlaybackRateMode mode;
3031     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3032     sptr<Surface> videoSurface = player_->GetVideoSurface();
3033     ASSERT_NE(nullptr, videoSurface);
3034     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3035     EXPECT_EQ(MSERR_OK, player_->Prepare());
3036     EXPECT_EQ(MSERR_OK, player_->Play());
3037     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_1_50_X));
3038     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3039     EXPECT_EQ(SPEED_FORWARD_1_50_X, mode);
3040 }
3041 
3042 /**
3043  * @tc.name  : Test SetPlaybackSpeed API
3044  * @tc.number: Player_SetPlaybackSpeed_005
3045  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_1_50_X
3046  */
3047 HWTEST_F(PlayerUnitTest, Player_SetPlaybackSpeed_005, TestSize.Level0)
3048 {
3049     PlaybackRateMode mode;
3050     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3051     sptr<Surface> videoSurface = player_->GetVideoSurface();
3052     ASSERT_NE(nullptr, videoSurface);
3053     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3054     EXPECT_EQ(MSERR_OK, player_->Prepare());
3055     EXPECT_EQ(MSERR_OK, player_->Play());
3056     int32_t speed = -1;
3057     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(static_cast<OHOS::Media::PlaybackRateMode>(speed)));
3058     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3059     EXPECT_EQ(-1, mode);
3060 }
3061 
3062 /**
3063  * @tc.name  : Test SetSurface API
3064  * @tc.number: Player_SetSurface_001
3065  * @tc.desc  : Test Player SetSurface->SetSurface
3066  */
3067 HWTEST_F(PlayerUnitTest, Player_SetSurface_001, TestSize.Level0)
3068 {
3069     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3070     sptr<Surface> videoSurface = player_->GetVideoSurface();
3071     ASSERT_NE(nullptr, videoSurface);
3072     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3073     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3074     int32_t ret = player_->PrepareAsync();
3075     if (ret == MSERR_OK) {
3076         PlayFunTest(LOCAL_PLAY);
3077     }
3078 }
3079 
3080 /**
3081  * @tc.name  : Test AddSubSource
3082  * @tc.number: Player_AddSubSource_001
3083  * @tc.desc  : Test Player AddSubSource state machine
3084  */
3085 HWTEST_F(PlayerUnitTest, Player_AddSubSource_001, TestSize.Level0)
3086 {
3087     ASSERT_NE(MSERR_OK, player_->AddSubSource(SUBTITLE_SRT_FIELE, 0, 0));
3088     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3089     sptr<Surface> videoSurface = player_->GetVideoSurface();
3090     ASSERT_NE(nullptr, videoSurface);
3091     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3092     EXPECT_NE(MSERR_OK, player_->AddSubSource(SUBTITLE_SRT_FIELE));    // Illegal state machine
3093     EXPECT_EQ(MSERR_OK, player_->Prepare());
3094     EXPECT_EQ(MSERR_OK, player_->Play());
3095     EXPECT_NE(SUBTITLE_0_SEC, player_->GetSubtitleText(SUBTITLE_0_SEC));
3096     EXPECT_EQ(MSERR_OK, player_->Pause());
3097     EXPECT_EQ(MSERR_OK, player_->Stop());
3098     EXPECT_EQ(MSERR_OK, player_->Reset());
3099     EXPECT_EQ(MSERR_OK, player_->Release());
3100 }
3101 
3102 /**
3103  * @tc.name  : Test AddSubSource
3104  * @tc.number: Player_AddSubSource_002
3105  * @tc.desc  : Test Player AddSubSource behavior
3106  */
3107 HWTEST_F(PlayerUnitTest, Player_AddSubSource_002, TestSize.Level0)
3108 {
3109     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3110     sptr<Surface> videoSurface = player_->GetVideoSurface();
3111     ASSERT_NE(nullptr, videoSurface);
3112     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3113     EXPECT_NE(MSERR_OK, player_->AddSubSource(SUBTITLE_SRT_FIELE, 0, 0));
3114     EXPECT_EQ(MSERR_OK, player_->Prepare());
3115     EXPECT_EQ(MSERR_OK, player_->Play());
3116     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_5_SEC, SEEK_CLOSEST));
3117     EXPECT_EQ("", player_->GetSubtitleText(""));
3118     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
3119     EXPECT_EQ("", player_->GetSubtitleText(""));
3120     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_5_SEC, SEEK_NEXT_SYNC));
3121     EXPECT_EQ("", player_->GetSubtitleText(""));
3122     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_5_SEC, SEEK_PREVIOUS_SYNC));
3123     EXPECT_EQ("", player_->GetSubtitleText(""));
3124     int duration = 0;
3125     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3126     EXPECT_EQ(MSERR_OK, player_->Play());
3127     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
3128     EXPECT_EQ("", player_->GetSubtitleText(""));
3129 }
3130 
3131 /**
3132  * @tc.name  : Test PlayerServer Stop
3133  * @tc.number: PlayerServer_Stop_001
3134  * @tc.desc  : Test PlayerServer Stop on different status
3135  */
3136 HWTEST_F(PlayerUnitTest, PlayerServer_Stop_001, TestSize.Level0)
3137 {
3138     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3139     sptr<Surface> videoSurface = player_->GetVideoSurface();
3140     ASSERT_NE(nullptr, videoSurface);
3141     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3142     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3143     EXPECT_EQ(MSERR_OK, player_->Stop());
3144 }
3145 
3146 /**
3147  * @tc.name  : Test PlayerServer Stop
3148  * @tc.number: PlayerServer_Stop_002
3149  * @tc.desc  : Test PlayerServer Stop on different status
3150  */
3151 HWTEST_F(PlayerUnitTest, PlayerServer_Stop_002, TestSize.Level0)
3152 {
3153     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3154     sptr<Surface> videoSurface = player_->GetVideoSurface();
3155     ASSERT_NE(nullptr, videoSurface);
3156     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3157     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3158     EXPECT_EQ(MSERR_OK, player_->Play());
3159     EXPECT_TRUE(player_->IsPlaying());
3160     EXPECT_EQ(MSERR_OK, player_->Stop());
3161 }
3162 
3163 /**
3164  * @tc.name  : Test PlayerServer Stop
3165  * @tc.number: PlayerServer_Stop_003
3166  * @tc.desc  : Test PlayerServer Stop on different status
3167  */
3168 HWTEST_F(PlayerUnitTest, PlayerServer_Stop_003, TestSize.Level0)
3169 {
3170     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3171     sptr<Surface> videoSurface = player_->GetVideoSurface();
3172     int32_t duration = 0;
3173     ASSERT_NE(nullptr, videoSurface);
3174     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3175     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3176     EXPECT_EQ(MSERR_OK, player_->Play());
3177     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3178     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
3179     EXPECT_TRUE(player_->IsPlaying());
3180     sleep(PLAYING_TIME_2_SEC);
3181     EXPECT_EQ(MSERR_OK, player_->Stop());
3182 }
3183 
3184 /**
3185  * @tc.name  : Test PlayerServer Stop
3186  * @tc.number: PlayerServer_Stop_004
3187  * @tc.desc  : Test PlayerServer Stop on different status
3188  */
3189 HWTEST_F(PlayerUnitTest, PlayerServer_Stop_004, TestSize.Level0)
3190 {
3191     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3192     sptr<Surface> videoSurface = player_->GetVideoSurface();
3193     ASSERT_NE(nullptr, videoSurface);
3194     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3195     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3196     EXPECT_EQ(MSERR_OK, player_->Play());
3197     EXPECT_TRUE(player_->IsPlaying());
3198     EXPECT_EQ(MSERR_OK, player_->Pause());
3199     EXPECT_EQ(MSERR_OK, player_->Stop());
3200 }
3201 
3202 /**
3203  * @tc.name  : Test PlayerServer Stop
3204  * @tc.number: PlayerServer_Stop_005
3205  * @tc.desc  : Test PlayerServer Stop on different status
3206  */
3207 HWTEST_F(PlayerUnitTest, PlayerServer_Stop_005, TestSize.Level0)
3208 {
3209     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3210     sptr<Surface> videoSurface = player_->GetVideoSurface();
3211     ASSERT_NE(nullptr, videoSurface);
3212     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3213     EXPECT_NE(MSERR_OK, player_->Stop());
3214 }
3215 
3216 /**
3217  * @tc.name  : Test SetParameter Stop
3218  * @tc.number: Player_SetParameter_001
3219  * @tc.desc  : Test Player SetParameter
3220  */
3221 HWTEST_F(PlayerUnitTest, Player_SetParameter_001, TestSize.Level0)
3222 {
3223     std::vector<Format> videoTrack;
3224     std::vector<Format> audioTrack;
3225     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3226     sptr<Surface> videoSurface = player_->GetVideoSurface();
3227     ASSERT_NE(nullptr, videoSurface);
3228     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3229     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3230     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
3231     Format format;
3232     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3233     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
3234     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
3235 }
3236 
3237 /**
3238  * @tc.name  : Test SetParameter Stop
3239  * @tc.number: Player_SetParameter_002
3240  * @tc.desc  : Test Player SetParameter
3241  */
3242 HWTEST_F(PlayerUnitTest, Player_SetParameter_002, TestSize.Level0)
3243 {
3244     std::vector<Format> videoTrack;
3245     std::vector<Format> audioTrack;
3246     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3247     sptr<Surface> videoSurface = player_->GetVideoSurface();
3248     ASSERT_NE(nullptr, videoSurface);
3249     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3250     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3251     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
3252     Format format;
3253     int32_t contentType = 1;
3254     int32_t scaleType = 1;
3255     int32_t streamUsage = 1;
3256     int32_t rendererFlags = 1;
3257     int32_t audioInterruptMode = 1;
3258     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE, scaleType);
3259     format.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
3260     format.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
3261     format.PutIntValue(PlayerKeys::RENDERER_FLAG, rendererFlags);
3262     format.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_MODE, audioInterruptMode);
3263     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3264     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
3265     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
3266 }
3267 
3268 /**
3269  * @tc.name  : Test SetParameter Stop
3270  * @tc.number: Player_SetParameter_003
3271  * @tc.desc  : Test Player SetParameter
3272  */
3273 HWTEST_F(PlayerUnitTest, Player_SetParameter_003, TestSize.Level0)
3274 {
3275     Format formatScaleType;
3276     Format formatContentType;
3277     Format formatStreamUsage;
3278     Format formatStreamUsageAndContentType;
3279     Format formatInterruptMode;
3280     std::vector<Format> videoTrack;
3281     std::vector<Format> audioTrack;
3282     int32_t contentType = 1;
3283     int32_t scaleType = 1;
3284     int32_t streamUsage = 1;
3285     int32_t audioInterruptMode = 1;
3286     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3287     sptr<Surface> videoSurface = player_->GetVideoSurface();
3288     ASSERT_NE(nullptr, videoSurface);
3289     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3290     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3291     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
3292 
3293     formatScaleType.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE, scaleType);
3294     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatScaleType));
3295 
3296     formatContentType.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
3297     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatContentType));
3298 
3299     formatStreamUsage.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
3300     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatStreamUsage));
3301 
3302     formatStreamUsageAndContentType.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
3303     formatStreamUsageAndContentType.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
3304     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatStreamUsageAndContentType));
3305 
3306     formatInterruptMode.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_MODE, audioInterruptMode);
3307     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatInterruptMode));
3308 
3309     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
3310     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
3311 }
3312 
3313 /**
3314  * @tc.name  : Test Player state machine, invalid operation on stopped
3315  * @tc.number: Player_State_Machine_001
3316  * @tc.desc  : Test Player state machine, invalid operation on stopped
3317  */
3318 HWTEST_F(PlayerUnitTest, Player_State_Machine_001, TestSize.Level0)
3319 {
3320     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3321     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3322     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3323     sleep(1);
3324     ASSERT_EQ(PlayerStates::PLAYER_PREPARED, player_->GetState());
3325     int32_t duration = 0;
3326     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3327     ASSERT_EQ(MSERR_OK, player_->Play());
3328     sleep(1);
3329     ASSERT_EQ(true, player_->IsPlaying());
3330     ASSERT_EQ(PlayerStates::PLAYER_STARTED, player_->GetState());
3331     ASSERT_EQ(MSERR_OK, player_->Stop());
3332     sleep(1);
3333     ASSERT_EQ(PlayerStates::PLAYER_STOPPED, player_->GetState());
3334     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3335     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3336     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3337 }
3338 
3339 /**
3340  * @tc.name  : Test Player state machine, invalid operation on error
3341  * @tc.number: Player_State_Machine_002
3342  * @tc.desc  : Test Player state machine, invalid operation on error
3343  */
3344 HWTEST_F(PlayerUnitTest, Player_State_Machine_002, TestSize.Level0)
3345 {
3346     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3347     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "1kb.mp3"));
3348     ASSERT_NE(MSERR_OK, player_->PrepareAsync());
3349     sleep(1);
3350     ASSERT_EQ(PlayerStates::PLAYER_STATE_ERROR, player_->GetState());
3351     int32_t duration = 0;
3352     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->GetDuration(duration));
3353     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Seek(0, PlayerSeekMode::SEEK_NEXT_SYNC));
3354     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3355     sleep(1);
3356     ASSERT_EQ(false, player_->IsPlaying());
3357     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Stop());
3358     sleep(1);
3359     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3360     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3361     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3362     ASSERT_EQ(MSERR_OK, player_->Reset());
3363     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3364     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Reset());
3365 }
3366 
3367 /**
3368  * @tc.name  : Test Player state machine, invalid operation on idle
3369  * @tc.number: Player_State_Machine_003
3370  * @tc.desc  : Test Player state machine, invalid operation on idle
3371  */
3372 HWTEST_F(PlayerUnitTest, Player_State_Machine_003, TestSize.Level0)
3373 {
3374     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3375     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->PrepareAsync());
3376     sleep(1);
3377     int32_t duration = 0;
3378     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->GetDuration(duration));
3379     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3380     sleep(1);
3381     ASSERT_EQ(false, player_->IsPlaying());
3382     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3383     ASSERT_EQ(MSERR_NO_MEMORY, player_->Seek(0, PlayerSeekMode::SEEK_NEXT_SYNC));
3384     sleep(1);
3385     ASSERT_EQ(false, player_->IsPlaying());
3386     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3387     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Stop());
3388 }
3389 
3390 /**
3391  * @tc.name  : Test Player state machine, invalid operation on initialized
3392  * @tc.number: Player_State_Machine_004
3393  * @tc.desc  : Test Player state machine, invalid operation on initialized
3394  */
3395 HWTEST_F(PlayerUnitTest, Player_State_Machine_004, TestSize.Level0)
3396 {
3397     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3398     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3399     sleep(1);
3400     int32_t duration = 0;
3401     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->GetDuration(duration));
3402     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3403     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3404     sleep(1);
3405     ASSERT_EQ(false, player_->IsPlaying());
3406     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Stop());
3407     sleep(1);
3408     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3409     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3410 }
3411 
3412 /**
3413  * @tc.name  : Test Player state machine, invalid operation on prepared
3414  * @tc.number: Player_State_Machine_005
3415  * @tc.desc  : Test Player state machine, invalid operation on prepared
3416  */
3417 HWTEST_F(PlayerUnitTest, Player_State_Machine_005, TestSize.Level0)
3418 {
3419     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3420     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3421     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3422     sleep(1);
3423     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3424     int32_t duration = 0;
3425     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3426     ASSERT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3427     ASSERT_EQ(PlayerStates::PLAYER_PREPARED, player_->GetState());
3428     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3429     sleep(1);
3430     ASSERT_EQ(false, player_->IsPlaying());
3431     ASSERT_EQ(MSERR_OK, player_->Stop());
3432 }
3433 
3434 /**
3435  * @tc.name  : Test Player state machine, invalid operation on playing
3436  * @tc.number: Player_State_Machine_006
3437  * @tc.desc  : Test Player state machine, invalid operation on playing
3438  */
3439 HWTEST_F(PlayerUnitTest, Player_State_Machine_006, TestSize.Level0)
3440 {
3441     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3442     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3443     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3444     ASSERT_EQ(MSERR_OK, player_->SetLooping(true));
3445     sleep(1);
3446     int32_t duration = 0;
3447     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3448     ASSERT_EQ(MSERR_OK, player_->Play());
3449     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3450     ASSERT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3451     sleep(1);
3452     ASSERT_EQ(true, player_->IsPlaying());
3453     ASSERT_EQ(MSERR_OK, player_->Stop());
3454 }
3455 
3456 /**
3457  * @tc.name  : Test Player state machine, invalid operation on completed
3458  * @tc.number: Player_State_Machine_007
3459  * @tc.desc  : Test Player state machine, invalid operation on completed
3460  */
3461 HWTEST_F(PlayerUnitTest, Player_State_Machine_007, TestSize.Level0)
3462 {
3463     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3464     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3465     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3466     sleep(1);
3467     int32_t duration = 0;
3468     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3469     ASSERT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3470     ASSERT_EQ(MSERR_OK, player_->Play());
3471     sleep(1);
3472     ASSERT_EQ(false, player_->IsPlaying());
3473     ASSERT_EQ(PlayerStates::PLAYER_PLAYBACK_COMPLETE, player_->GetState());
3474     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3475     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->PrepareAsync());
3476     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3477 }
3478 
3479 /**
3480  * @tc.name  : Test Player state machine, invalid operation on paused
3481  * @tc.number: Player_State_Machine_008
3482  * @tc.desc  : Test Player state machine, invalid operation on paused
3483  */
3484 HWTEST_F(PlayerUnitTest, Player_State_Machine_008, TestSize.Level0)
3485 {
3486     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3487     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3488     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3489     sleep(1);
3490     int32_t duration = 0;
3491     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3492     ASSERT_EQ(MSERR_OK, player_->Play());
3493     ASSERT_EQ(MSERR_OK, player_->Pause());
3494     sleep(1);
3495     ASSERT_EQ(PlayerStates::PLAYER_PAUSED, player_->GetState());
3496     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3497     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->PrepareAsync());
3498 }
3499 
3500 /**
3501  * @tc.name  : Test SetPlayRange [0, 600]
3502  * @tc.number: Player_SetPlayRange_001
3503  * @tc.desc  : Test Player SetPlayRange interface
3504  */
3505 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_001, TestSize.Level0)
3506 {
3507     int32_t duration = 0;
3508     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3509     sptr<Surface> videoSurface = player_->GetVideoSurface();
3510     ASSERT_NE(nullptr, videoSurface);
3511     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3512     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(0, 600));
3513     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3514     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3515     EXPECT_EQ(MSERR_OK, player_->Play());
3516     EXPECT_TRUE(player_->IsPlaying());
3517     EXPECT_EQ(MSERR_OK, player_->Pause());
3518     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(0, duration));
3519     EXPECT_EQ(MSERR_OK, player_->Play());
3520     EXPECT_EQ(MSERR_OK, player_->Pause());
3521 }
3522 
3523 /**
3524  * @tc.name  : Test SetPlayRange [0, 600]
3525  * @tc.number: Player_SetPlayRange_002
3526  * @tc.desc  : Test Player SetPlayRange interface
3527  */
3528 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_002, TestSize.Level0)
3529 {
3530     int32_t duration = 0;
3531     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3532     sptr<Surface> videoSurface = player_->GetVideoSurface();
3533     ASSERT_NE(nullptr, videoSurface);
3534     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3535     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3536     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3537     EXPECT_EQ(MSERR_OK, player_->Play());
3538     EXPECT_TRUE(player_->IsPlaying());
3539     EXPECT_EQ(MSERR_OK, player_->Pause());
3540     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(0, 600));
3541     EXPECT_EQ(MSERR_OK, player_->Play());
3542     EXPECT_EQ(MSERR_OK, player_->Pause());
3543 }
3544 
3545 /**
3546  * @tc.name  : Test SetPlayRange [-2, -1]
3547  * @tc.number: Player_SetPlayRange_003
3548  * @tc.desc  : Test Player SetPlayRange interface
3549  */
3550 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_003, TestSize.Level0)
3551 {
3552     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3553     sptr<Surface> videoSurface = player_->GetVideoSurface();
3554     ASSERT_NE(nullptr, videoSurface);
3555     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3556     ASSERT_NE(MSERR_OK, player_->SetPlayRange(-2, -1));
3557 }
3558 
3559 /**
3560  * @tc.name  : Test SetPlayRange [-1, -2]
3561  * @tc.number: Player_SetPlayRange_004
3562  * @tc.desc  : Test Player SetPlayRange interface
3563  */
3564 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_004, TestSize.Level0)
3565 {
3566     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3567     sptr<Surface> videoSurface = player_->GetVideoSurface();
3568     ASSERT_NE(nullptr, videoSurface);
3569     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3570     ASSERT_NE(MSERR_OK, player_->SetPlayRange(-1, -2));
3571 }
3572 
3573 /**
3574  * @tc.name  : Test SetPlayRange [-1, 0]
3575  * @tc.number: Player_SetPlayRange_005
3576  * @tc.desc  : Test Player SetPlayRange interface
3577  */
3578 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_005, TestSize.Level0)
3579 {
3580     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3581     sptr<Surface> videoSurface = player_->GetVideoSurface();
3582     ASSERT_NE(nullptr, videoSurface);
3583     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3584     ASSERT_NE(MSERR_OK, player_->SetPlayRange(-1, 0));
3585 }
3586 
3587 /**
3588  * @tc.name  : Test SetPlayRange [-1, -1]
3589  * @tc.number: Player_SetPlayRange_006
3590  * @tc.desc  : Test Player SetPlayRange interface
3591  */
3592 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_006, TestSize.Level0)
3593 {
3594     int32_t duration = 0;
3595     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3596     sptr<Surface> videoSurface = player_->GetVideoSurface();
3597     ASSERT_NE(nullptr, videoSurface);
3598     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3599     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3600     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3601     EXPECT_EQ(MSERR_OK, player_->Play());
3602     EXPECT_TRUE(player_->IsPlaying());
3603     EXPECT_EQ(MSERR_OK, player_->Pause());
3604     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(-1, 600));
3605     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(-1, -1));
3606     EXPECT_EQ(MSERR_OK, player_->Play());
3607     EXPECT_EQ(MSERR_OK, player_->Pause());
3608 }
3609 
3610 /**
3611  * @tc.name  : Test SetPlayRange [100, 2]
3612  * @tc.number: Player_SetPlayRange_007
3613  * @tc.desc  : Test Player SetPlayRange interface
3614  */
3615 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_007, TestSize.Level0)
3616 {
3617     int32_t duration = 0;
3618     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3619     sptr<Surface> videoSurface = player_->GetVideoSurface();
3620     ASSERT_NE(nullptr, videoSurface);
3621     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3622     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3623     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3624     EXPECT_EQ(MSERR_OK, player_->Play());
3625     EXPECT_TRUE(player_->IsPlaying());
3626     EXPECT_EQ(MSERR_OK, player_->Pause());
3627     ASSERT_NE(MSERR_OK, player_->SetPlayRange(100, 2));
3628 }
3629 
3630 /**
3631  * @tc.name  : Test SetPlayRange [duration + 1, duration + 2]
3632  * @tc.number: Player_SetPlayRange_008
3633  * @tc.desc  : Test Player SetPlayRange interface
3634  */
3635 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_008, TestSize.Level0)
3636 {
3637     int32_t duration = 0;
3638     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3639     sptr<Surface> videoSurface = player_->GetVideoSurface();
3640     ASSERT_NE(nullptr, videoSurface);
3641     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3642     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3643     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3644     EXPECT_EQ(MSERR_OK, player_->Play());
3645     EXPECT_TRUE(player_->IsPlaying());
3646     EXPECT_EQ(MSERR_OK, player_->Pause());
3647     int32_t start = duration + 1;
3648     int32_t end = duration + 2;
3649     ASSERT_NE(MSERR_OK, player_->SetPlayRange(start, end));
3650 }
3651 
3652 /**
3653  * @tc.name  : Test SetPlayRange [100, duration + 1]
3654  * @tc.number: Player_SetPlayRange_009
3655  * @tc.desc  : Test Player SetPlayRange interface
3656  */
3657 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_009, TestSize.Level0)
3658 {
3659     int32_t duration = 0;
3660     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3661     sptr<Surface> videoSurface = player_->GetVideoSurface();
3662     ASSERT_NE(nullptr, videoSurface);
3663     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3664     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3665     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3666     EXPECT_EQ(MSERR_OK, player_->Play());
3667     EXPECT_TRUE(player_->IsPlaying());
3668     EXPECT_EQ(MSERR_OK, player_->Pause());
3669     int32_t end = duration + 1;
3670     ASSERT_NE(MSERR_OK, player_->SetPlayRange(100, end));
3671 }
3672 
3673 /**
3674  * @tc.name  : Test SetPlayRange [10035, 10037]
3675  * @tc.number: Player_SetPlayRange_010
3676  * @tc.desc  : Test Player SetPlayRange interface, duration 10034
3677  */
3678 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_010, TestSize.Level0)
3679 {
3680     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3681     sptr<Surface> videoSurface = player_->GetVideoSurface();
3682     ASSERT_NE(nullptr, videoSurface);
3683     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3684     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(10035, 10037));
3685     ASSERT_NE(MSERR_OK, player_->PrepareAsync());
3686 }
3687 
3688 /**
3689  * @tc.name  : Test SetPlayRange [100, 10037]
3690  * @tc.number: Player_SetPlayRange_011
3691  * @tc.desc  : Test Player SetPlayRange interface, duration 10034
3692  */
3693 HWTEST_F(PlayerUnitTest, Player_SetPlayRange_011, TestSize.Level0)
3694 {
3695     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3696     sptr<Surface> videoSurface = player_->GetVideoSurface();
3697     ASSERT_NE(nullptr, videoSurface);
3698     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3699     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(100, 10037));
3700     ASSERT_NE(MSERR_OK, player_->PrepareAsync());
3701 }
3702 
3703 /**
3704  * @tc.name  : Test SeekContinuous in prepared
3705  * @tc.number: Player_SeekContinuous_001
3706  * @tc.desc  : Test Player SeekContinuous
3707  */
3708 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_001, TestSize.Level0)
3709 {
3710     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3711     sptr<Surface> videoSurface = player_->GetVideoSurface();
3712     ASSERT_NE(nullptr, videoSurface);
3713     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3714     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3715     for (int i = 0; i < 10; i++) {
3716         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
3717         usleep(SEEK_CONTINUOUS_WAIT_US);
3718     }
3719     EXPECT_EQ(MSERR_OK, player_->Play());
3720 }
3721 
3722 /**
3723  * @tc.name  : Test SeekContinuous in playing
3724  * @tc.number: Player_SeekContinuous_002
3725  * @tc.desc  : Test Player SeekContinuous
3726  */
3727 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_002, TestSize.Level0)
3728 {
3729     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3730     sptr<Surface> videoSurface = player_->GetVideoSurface();
3731     ASSERT_NE(nullptr, videoSurface);
3732     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3733     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3734     EXPECT_EQ(MSERR_OK, player_->Play());
3735     sleep(PLAYING_TIME_2_SEC);
3736     for (int i = 0; i < 30; i++) {
3737         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
3738         usleep(SEEK_CONTINUOUS_WAIT_US);
3739     }
3740     EXPECT_EQ(MSERR_OK, player_->Play());
3741     EXPECT_EQ(MSERR_OK, player_->Stop());
3742 }
3743 
3744 /**
3745  * @tc.name  : Test SeekContinuous in paused
3746  * @tc.number: Player_SeekContinuous_003
3747  * @tc.desc  : Test Player SeekContinuous
3748  */
3749 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_003, TestSize.Level0)
3750 {
3751     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3752     sptr<Surface> videoSurface = player_->GetVideoSurface();
3753     ASSERT_NE(nullptr, videoSurface);
3754     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3755     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3756     EXPECT_EQ(MSERR_OK, player_->Play());
3757     sleep(PLAYING_TIME_2_SEC);
3758     EXPECT_EQ(MSERR_OK, player_->Pause());
3759     for (int i = 0; i < 30; i++) {
3760         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
3761         usleep(SEEK_CONTINUOUS_WAIT_US);
3762     }
3763     EXPECT_EQ(MSERR_OK, player_->Play());
3764     EXPECT_EQ(MSERR_OK, player_->Stop());
3765 }
3766 
3767 /**
3768  * @tc.name  : Test SeekContinuous in completed
3769  * @tc.number: Player_SeekContinuous_004
3770  * @tc.desc  : Test Player SeekContinuous
3771  */
3772 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_004, TestSize.Level0)
3773 {
3774     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3775     sptr<Surface> videoSurface = player_->GetVideoSurface();
3776     ASSERT_NE(nullptr, videoSurface);
3777     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3778     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3779     EXPECT_EQ(MSERR_OK, player_->Play());
3780     sleep(PLAYING_TIME_2_SEC);
3781     EXPECT_EQ(MSERR_OK, player_->Seek(9000, SEEK_PREVIOUS_SYNC));
3782     sleep(PLAYING_TIME_10_SEC);
3783     for (int i = 0; i < 30; i++) {
3784         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
3785         usleep(SEEK_CONTINUOUS_WAIT_US);
3786     }
3787     EXPECT_EQ(MSERR_OK, player_->Play());
3788     EXPECT_EQ(MSERR_OK, player_->Stop());
3789 }
3790 
3791 /**
3792  * @tc.name  : Test SeekContinuous backward
3793  * @tc.number: Player_SeekContinuous_005
3794  * @tc.desc  : Test Player SeekContinuous
3795  */
3796 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_005, TestSize.Level0)
3797 {
3798     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3799     sptr<Surface> videoSurface = player_->GetVideoSurface();
3800     ASSERT_NE(nullptr, videoSurface);
3801     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3802     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3803     EXPECT_EQ(MSERR_OK, player_->Play());
3804     sleep(PLAYING_TIME_2_SEC);
3805     for (int i = 0; i < 30; i++) {
3806         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
3807         usleep(SEEK_CONTINUOUS_WAIT_US);
3808     }
3809     EXPECT_EQ(MSERR_OK, player_->Play());
3810     EXPECT_EQ(MSERR_OK, player_->Stop());
3811 }
3812 
3813 /**
3814  * @tc.name  : Test SeekContinuous forward and backward
3815  * @tc.number: Player_SeekContinuous_006
3816  * @tc.desc  : Test Player SeekContinuous
3817  */
3818 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_006, TestSize.Level0)
3819 {
3820     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3821     sptr<Surface> videoSurface = player_->GetVideoSurface();
3822     ASSERT_NE(nullptr, videoSurface);
3823     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3824     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3825     EXPECT_EQ(MSERR_OK, player_->Play());
3826     sleep(PLAYING_TIME_2_SEC);
3827     for (int i = 0; i < 30; i++) {
3828         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
3829         usleep(SEEK_CONTINUOUS_WAIT_US);
3830     }
3831     for (int i = 0; i < 30; i++) {
3832         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
3833         usleep(SEEK_CONTINUOUS_WAIT_US);
3834     }
3835     EXPECT_EQ(MSERR_OK, player_->Play());
3836     EXPECT_EQ(MSERR_OK, player_->Stop());
3837 }
3838 
3839 /**
3840  * @tc.name  : Test SetPlaybackSpeed API
3841  * @tc.number: Player_SetPlaybackSpeed_006
3842  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_3_00_X
3843  */
3844 HWTEST_F(PlayerUnitTest, Player_SetPlaybackSpeed_006, TestSize.Level0)
3845 {
3846     PlaybackRateMode mode;
3847     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3848     sptr<Surface> videoSurface = player_->GetVideoSurface();
3849     ASSERT_NE(nullptr, videoSurface);
3850     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3851     EXPECT_EQ(MSERR_OK, player_->Prepare());
3852     EXPECT_EQ(MSERR_OK, player_->Play());
3853     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_3_00_X));
3854     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3855     EXPECT_EQ(SPEED_FORWARD_3_00_X, mode);
3856 }
3857 
3858 /**
3859  * @tc.name  : Test SetMaxAmplitudeCbStatus API
3860  * @tc.number: Player_SetMaxAmplitudeCbStatus_001
3861  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status on before prepare
3862  */
3863 HWTEST_F(PlayerUnitTest, Player_SetMaxAmplitudeCbStatus_001, TestSize.Level0)
3864 {
3865     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3866     sptr<Surface> videoSurface = player_->GetVideoSurface();
3867     ASSERT_NE(nullptr, videoSurface);
3868     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(true));
3869     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3870     EXPECT_EQ(MSERR_OK, player_->Prepare());
3871     EXPECT_EQ(MSERR_OK, player_->Play());
3872 }
3873 
3874 /**
3875  * @tc.name  : Test SetMaxAmplitudeCbStatus API
3876  * @tc.number: Player_SetMaxAmplitudeCbStatus_002
3877  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status on after prepare
3878  */
3879 HWTEST_F(PlayerUnitTest, Player_SetMaxAmplitudeCbStatus_002, TestSize.Level0)
3880 {
3881     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3882     sptr<Surface> videoSurface = player_->GetVideoSurface();
3883     ASSERT_NE(nullptr, videoSurface);
3884     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3885     EXPECT_EQ(MSERR_OK, player_->Prepare());
3886     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(true));
3887     EXPECT_EQ(MSERR_OK, player_->Play());
3888 }
3889 
3890 /**
3891  * @tc.name  : Test SetMaxAmplitudeCbStatus API
3892  * @tc.number: Player_SetMaxAmplitudeCbStatus_003
3893  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status off before prepare
3894  */
3895 HWTEST_F(PlayerUnitTest, Player_SetMaxAmplitudeCbStatus_003, TestSize.Level0)
3896 {
3897     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3898     sptr<Surface> videoSurface = player_->GetVideoSurface();
3899     ASSERT_NE(nullptr, videoSurface);
3900     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(false));
3901     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3902     EXPECT_EQ(MSERR_OK, player_->Prepare());
3903     EXPECT_EQ(MSERR_OK, player_->Play());
3904 }
3905 
3906 /**
3907  * @tc.name  : Test SetMaxAmplitudeCbStatus API
3908  * @tc.number: Player_SetMaxAmplitudeCbStatus_004
3909  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status off after prepare
3910  */
3911 HWTEST_F(PlayerUnitTest, Player_SetMaxAmplitudeCbStatus_004, TestSize.Level0)
3912 {
3913     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3914     sptr<Surface> videoSurface = player_->GetVideoSurface();
3915     ASSERT_NE(nullptr, videoSurface);
3916     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3917     EXPECT_EQ(MSERR_OK, player_->Prepare());
3918     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(false));
3919     EXPECT_EQ(MSERR_OK, player_->Play());
3920 }
3921 
3922 /**
3923  * @tc.name  : Test SetDeviceChangeCbStatus API
3924  * @tc.number: Player_SetDeviceChangeCbStatus_001
3925  * @tc.desc  : Test Player SetDeviceChangeCbStatus status on before prepare
3926  */
3927 HWTEST_F(PlayerUnitTest, Player_SetDeviceChangeCbStatus_001, TestSize.Level0)
3928 {
3929     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3930     sptr<Surface> videoSurface = player_->GetVideoSurface();
3931     ASSERT_NE(nullptr, videoSurface);
3932     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(true));
3933     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3934     EXPECT_EQ(MSERR_OK, player_->Prepare());
3935     EXPECT_EQ(MSERR_OK, player_->Play());
3936 }
3937 
3938 /**
3939  * @tc.name  : Test SetDeviceChangeCbStatus API
3940  * @tc.number: Player_SetDeviceChangeCbStatus_002
3941  * @tc.desc  : Test Player SetDeviceChangeCbStatus status on after prepare
3942  */
3943 HWTEST_F(PlayerUnitTest, Player_SetDeviceChangeCbStatus_002, TestSize.Level0)
3944 {
3945     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3946     sptr<Surface> videoSurface = player_->GetVideoSurface();
3947     ASSERT_NE(nullptr, videoSurface);
3948     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3949     EXPECT_EQ(MSERR_OK, player_->Prepare());
3950     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(true));
3951     EXPECT_EQ(MSERR_OK, player_->Play());
3952 }
3953 
3954 /**
3955  * @tc.name  : Test SetDeviceChangeCbStatus API
3956  * @tc.number: Player_SetDeviceChangeCbStatus_003
3957  * @tc.desc  : Test Player SetDeviceChangeCbStatus status off before prepare
3958  */
3959 HWTEST_F(PlayerUnitTest, Player_SetDeviceChangeCbStatus_003, TestSize.Level0)
3960 {
3961     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3962     sptr<Surface> videoSurface = player_->GetVideoSurface();
3963     ASSERT_NE(nullptr, videoSurface);
3964     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(false));
3965     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3966     EXPECT_EQ(MSERR_OK, player_->Prepare());
3967     EXPECT_EQ(MSERR_OK, player_->Play());
3968 }
3969 
3970 /**
3971  * @tc.name  : Test SetDeviceChangeCbStatus API
3972  * @tc.number: Player_SetDeviceChangeCbStatus_004
3973  * @tc.desc  : Test Player SetDeviceChangeCbStatus status off after prepare
3974  */
3975 HWTEST_F(PlayerUnitTest, Player_SetDeviceChangeCbStatus_004, TestSize.Level0)
3976 {
3977     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3978     sptr<Surface> videoSurface = player_->GetVideoSurface();
3979     ASSERT_NE(nullptr, videoSurface);
3980     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3981     EXPECT_EQ(MSERR_OK, player_->Prepare());
3982     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(false));
3983     EXPECT_EQ(MSERR_OK, player_->Play());
3984 }
3985 
3986 /**
3987  * @tc.name  : Test SetPlaybackStrategy
3988  * @tc.number: Player_SetPlaybackStrategy_001
3989  * @tc.desc  : Test Player SetPlaybackStrategy
3990  */
3991 HWTEST_F(PlayerUnitTest, Player_SetPlaybackStrategy_001, TestSize.Level0)
3992 {
3993     AVPlayStrategy playbackStrategy = {
3994         .mutedMediaType = OHOS::Media::MediaType::MEDIA_TYPE_AUD
3995     };
3996     ASSERT_NE(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
3997     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3998     ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
3999 }
4000 
4001 /**
4002  * @tc.name  : Test SetPlaybackStrategy
4003  * @tc.number: Player_SetPlaybackStrategy_002
4004  * @tc.desc  : Test Player SetPlaybackStrategy
4005  */
4006 HWTEST_F(PlayerUnitTest, Player_SetPlaybackStrategy_002, TestSize.Level0)
4007 {
4008     AVPlayStrategy playbackStrategy = {
4009         .showFirstFrameOnPrepare = true
4010     };
4011     ASSERT_NE(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4012     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4013     ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4014     sptr<Surface> videoSurface = player_->GetVideoSurface();
4015     ASSERT_NE(nullptr, videoSurface);
4016     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4017     EXPECT_EQ(MSERR_OK, player_->Prepare());
4018     EXPECT_EQ(MSERR_OK, player_->Play());
4019     EXPECT_EQ(MSERR_OK, player_->Pause());
4020 }
4021 
4022 /**
4023  * @tc.name  : Test SetMediaMuted
4024  * @tc.number: Player_SetMediaMuted_001
4025  * @tc.desc  : Test Player SetMediaMuted
4026  */
4027 HWTEST_F(PlayerUnitTest, Player_SetMediaMuted_001, TestSize.Level0)
4028 {
4029     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4030     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4031     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4032     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
4033     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4034     ASSERT_EQ(MSERR_OK, player_->Play());
4035     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4036     ASSERT_EQ(MSERR_OK, player_->Pause());
4037     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4038     ASSERT_EQ(MSERR_OK, player_->Stop());
4039     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4040 }
4041 
4042 /**
4043  * @tc.name  : Test SetMediaMuted
4044  * @tc.number: Player_SetMediaMuted_002
4045  * @tc.desc  : Test Player SetMediaMuted
4046  */
4047 HWTEST_F(PlayerUnitTest, Player_SetMediaMuted_002, TestSize.Level0)
4048 {
4049     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4050     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4051     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4052     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
4053     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4054     ASSERT_EQ(MSERR_OK, player_->Play());
4055     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4056     ASSERT_EQ(MSERR_OK, player_->Stop());
4057     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4058 }
4059 
4060 /**
4061  * @tc.name  : Test SeekContinuous in prepared with seek -1
4062  * @tc.number: Player_SeekContinuous_007
4063  * @tc.desc  : Test Player SeekContinuous
4064  */
4065 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_007, TestSize.Level0)
4066 {
4067     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4068     sptr<Surface> videoSurface = player_->GetVideoSurface();
4069     ASSERT_NE(nullptr, videoSurface);
4070     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4071     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4072     for (int i = 0; i < 10; i++) {
4073         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4074         usleep(SEEK_CONTINUOUS_WAIT_US);
4075     }
4076     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4077     EXPECT_EQ(MSERR_OK, player_->Play());
4078 }
4079 
4080 /**
4081  * @tc.name  : Test SeekContinuous in playing with seek -1
4082  * @tc.number: Player_SeekContinuous_008
4083  * @tc.desc  : Test Player SeekContinuous
4084  */
4085 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_008, TestSize.Level0)
4086 {
4087     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4088     sptr<Surface> videoSurface = player_->GetVideoSurface();
4089     ASSERT_NE(nullptr, videoSurface);
4090     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4091     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4092     EXPECT_EQ(MSERR_OK, player_->Play());
4093     sleep(PLAYING_TIME_2_SEC);
4094     for (int i = 0; i < 30; i++) {
4095         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4096         usleep(SEEK_CONTINUOUS_WAIT_US);
4097     }
4098     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4099     EXPECT_EQ(MSERR_OK, player_->Stop());
4100 }
4101 
4102 /**
4103  * @tc.name  : Test SeekContinuous in paused with seek -1
4104  * @tc.number: Player_SeekContinuous_009
4105  * @tc.desc  : Test Player SeekContinuous
4106  */
4107 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_009, TestSize.Level0)
4108 {
4109     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4110     sptr<Surface> videoSurface = player_->GetVideoSurface();
4111     ASSERT_NE(nullptr, videoSurface);
4112     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4113     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4114     EXPECT_EQ(MSERR_OK, player_->Play());
4115     sleep(PLAYING_TIME_2_SEC);
4116     EXPECT_EQ(MSERR_OK, player_->Pause());
4117     for (int i = 0; i < 30; i++) {
4118         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4119         usleep(SEEK_CONTINUOUS_WAIT_US);
4120     }
4121     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4122     EXPECT_EQ(MSERR_OK, player_->Play());
4123     EXPECT_EQ(MSERR_OK, player_->Stop());
4124 }
4125 
4126 /**
4127  * @tc.name  : Test SeekContinuous in completed with seek -1
4128  * @tc.number: Player_SeekContinuous_010
4129  * @tc.desc  : Test Player SeekContinuous
4130  */
4131 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_010, TestSize.Level0)
4132 {
4133     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4134     sptr<Surface> videoSurface = player_->GetVideoSurface();
4135     ASSERT_NE(nullptr, videoSurface);
4136     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4137     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4138     EXPECT_EQ(MSERR_OK, player_->Play());
4139     sleep(PLAYING_TIME_2_SEC);
4140     EXPECT_EQ(MSERR_OK, player_->Seek(9000, SEEK_PREVIOUS_SYNC));
4141     sleep(PLAYING_TIME_10_SEC);
4142     for (int i = 0; i < 30; i++) {
4143         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4144         usleep(SEEK_CONTINUOUS_WAIT_US);
4145     }
4146     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4147     EXPECT_EQ(MSERR_OK, player_->Play());
4148     EXPECT_EQ(MSERR_OK, player_->Stop());
4149 }
4150 
4151 /**
4152  * @tc.name  : Test SeekContinuous backward with seek -1
4153  * @tc.number: Player_SeekContinuous_011
4154  * @tc.desc  : Test Player SeekContinuous
4155  */
4156 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_011, TestSize.Level0)
4157 {
4158     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4159     sptr<Surface> videoSurface = player_->GetVideoSurface();
4160     ASSERT_NE(nullptr, videoSurface);
4161     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4162     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4163     EXPECT_EQ(MSERR_OK, player_->Play());
4164     sleep(PLAYING_TIME_2_SEC);
4165     for (int i = 0; i < 30; i++) {
4166         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4167         usleep(SEEK_CONTINUOUS_WAIT_US);
4168     }
4169     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4170     EXPECT_EQ(MSERR_OK, player_->Stop());
4171 }
4172 
4173 /**
4174  * @tc.name  : Test SeekContinuous forward and backward with seek -1
4175  * @tc.number: Player_SeekContinuous_012
4176  * @tc.desc  : Test Player SeekContinuous
4177  */
4178 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_012, TestSize.Level0)
4179 {
4180     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4181     sptr<Surface> videoSurface = player_->GetVideoSurface();
4182     ASSERT_NE(nullptr, videoSurface);
4183     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4184     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4185     EXPECT_EQ(MSERR_OK, player_->Play());
4186     sleep(PLAYING_TIME_2_SEC);
4187     for (int i = 0; i < 30; i++) {
4188         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4189         usleep(SEEK_CONTINUOUS_WAIT_US);
4190     }
4191     for (int i = 0; i < 30; i++) {
4192         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4193         usleep(SEEK_CONTINUOUS_WAIT_US);
4194     }
4195     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4196     EXPECT_EQ(MSERR_OK, player_->Stop());
4197 }
4198 
4199 /**
4200  * @tc.name  : Test SeekContinuous in prepared mkv
4201  * @tc.number: Player_SeekContinuous_013
4202  * @tc.desc  : Test Player SeekContinuous
4203  */
4204 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_013, TestSize.Level0)
4205 {
4206     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4207     sptr<Surface> videoSurface = player_->GetVideoSurface();
4208     ASSERT_NE(nullptr, videoSurface);
4209     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4210     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4211     for (int i = 0; i < 10; i++) {
4212         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4213         usleep(SEEK_CONTINUOUS_WAIT_US);
4214     }
4215     EXPECT_EQ(MSERR_OK, player_->Play());
4216 }
4217 
4218 /**
4219  * @tc.name  : Test SeekContinuous in playing mkv
4220  * @tc.number: Player_SeekContinuous_014
4221  * @tc.desc  : Test Player SeekContinuous
4222  */
4223 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_014, TestSize.Level0)
4224 {
4225     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4226     sptr<Surface> videoSurface = player_->GetVideoSurface();
4227     ASSERT_NE(nullptr, videoSurface);
4228     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4229     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4230     EXPECT_EQ(MSERR_OK, player_->Play());
4231     sleep(PLAYING_TIME_2_SEC);
4232     for (int i = 0; i < 30; i++) {
4233         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4234         usleep(SEEK_CONTINUOUS_WAIT_US);
4235     }
4236     EXPECT_EQ(MSERR_OK, player_->Play());
4237     EXPECT_EQ(MSERR_OK, player_->Stop());
4238 }
4239 
4240 /**
4241  * @tc.name  : Test SeekContinuous in paused mkv
4242  * @tc.number: Player_SeekContinuous_015
4243  * @tc.desc  : Test Player SeekContinuous
4244  */
4245 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_015, TestSize.Level0)
4246 {
4247     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4248     sptr<Surface> videoSurface = player_->GetVideoSurface();
4249     ASSERT_NE(nullptr, videoSurface);
4250     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4251     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4252     EXPECT_EQ(MSERR_OK, player_->Play());
4253     sleep(PLAYING_TIME_2_SEC);
4254     EXPECT_EQ(MSERR_OK, player_->Pause());
4255     for (int i = 0; i < 30; i++) {
4256         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4257         usleep(SEEK_CONTINUOUS_WAIT_US);
4258     }
4259     EXPECT_EQ(MSERR_OK, player_->Play());
4260     EXPECT_EQ(MSERR_OK, player_->Stop());
4261 }
4262 
4263 /**
4264  * @tc.name  : Test SeekContinuous in completed mkv
4265  * @tc.number: Player_SeekContinuous_016
4266  * @tc.desc  : Test Player SeekContinuous
4267  */
4268 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_016, TestSize.Level0)
4269 {
4270     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4271     sptr<Surface> videoSurface = player_->GetVideoSurface();
4272     ASSERT_NE(nullptr, videoSurface);
4273     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4274     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4275     EXPECT_EQ(MSERR_OK, player_->Play());
4276     sleep(PLAYING_TIME_2_SEC);
4277     EXPECT_EQ(MSERR_OK, player_->Seek(9000, SEEK_PREVIOUS_SYNC));
4278     sleep(PLAYING_TIME_10_SEC);
4279     for (int i = 0; i < 30; i++) {
4280         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4281         usleep(SEEK_CONTINUOUS_WAIT_US);
4282     }
4283     EXPECT_EQ(MSERR_OK, player_->Play());
4284     EXPECT_EQ(MSERR_OK, player_->Stop());
4285 }
4286 
4287 /**
4288  * @tc.name  : Test SeekContinuous backward
4289  * @tc.number: Player_SeekContinuous_017 mkv
4290  * @tc.desc  : Test Player SeekContinuous
4291  */
4292 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_017, TestSize.Level0)
4293 {
4294     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4295     sptr<Surface> videoSurface = player_->GetVideoSurface();
4296     ASSERT_NE(nullptr, videoSurface);
4297     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4298     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4299     EXPECT_EQ(MSERR_OK, player_->Play());
4300     sleep(PLAYING_TIME_2_SEC);
4301     for (int i = 0; i < 30; i++) {
4302         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4303         usleep(SEEK_CONTINUOUS_WAIT_US);
4304     }
4305     EXPECT_EQ(MSERR_OK, player_->Play());
4306     EXPECT_EQ(MSERR_OK, player_->Stop());
4307 }
4308 
4309 /**
4310  * @tc.name  : Test SeekContinuous forward and backward mkv
4311  * @tc.number: Player_SeekContinuous_018
4312  * @tc.desc  : Test Player SeekContinuous
4313  */
4314 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_018, TestSize.Level0)
4315 {
4316     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4317     sptr<Surface> videoSurface = player_->GetVideoSurface();
4318     ASSERT_NE(nullptr, videoSurface);
4319     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4320     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4321     EXPECT_EQ(MSERR_OK, player_->Play());
4322     sleep(PLAYING_TIME_2_SEC);
4323     for (int i = 0; i < 30; i++) {
4324         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4325         usleep(SEEK_CONTINUOUS_WAIT_US);
4326     }
4327     for (int i = 0; i < 30; i++) {
4328         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4329         usleep(SEEK_CONTINUOUS_WAIT_US);
4330     }
4331     EXPECT_EQ(MSERR_OK, player_->Play());
4332     EXPECT_EQ(MSERR_OK, player_->Stop());
4333 }
4334 
4335 /**
4336  * @tc.name  : Test SeekContinuous in prepared mkv with seek -1
4337  * @tc.number: Player_SeekContinuous_019
4338  * @tc.desc  : Test Player SeekContinuous
4339  */
4340 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_019, TestSize.Level0)
4341 {
4342     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4343     sptr<Surface> videoSurface = player_->GetVideoSurface();
4344     ASSERT_NE(nullptr, videoSurface);
4345     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4346     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4347     for (int i = 0; i < 10; i++) {
4348         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4349         usleep(SEEK_CONTINUOUS_WAIT_US);
4350     }
4351     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4352     EXPECT_EQ(MSERR_OK, player_->Play());
4353 }
4354 
4355 /**
4356  * @tc.name  : Test SeekContinuous in playing mkv with seek -1
4357  * @tc.number: Player_SeekContinuous_020
4358  * @tc.desc  : Test Player SeekContinuous
4359  */
4360 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_020, TestSize.Level0)
4361 {
4362     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4363     sptr<Surface> videoSurface = player_->GetVideoSurface();
4364     ASSERT_NE(nullptr, videoSurface);
4365     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4366     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4367     EXPECT_EQ(MSERR_OK, player_->Play());
4368     sleep(PLAYING_TIME_2_SEC);
4369     for (int i = 0; i < 30; i++) {
4370         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4371         usleep(SEEK_CONTINUOUS_WAIT_US);
4372     }
4373     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4374     EXPECT_EQ(MSERR_OK, player_->Stop());
4375 }
4376 
4377 /**
4378  * @tc.name  : Test SeekContinuous in paused mkv with seek -1
4379  * @tc.number: Player_SeekContinuous_021
4380  * @tc.desc  : Test Player SeekContinuous
4381  */
4382 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_021, TestSize.Level0)
4383 {
4384     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4385     sptr<Surface> videoSurface = player_->GetVideoSurface();
4386     ASSERT_NE(nullptr, videoSurface);
4387     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4388     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4389     EXPECT_EQ(MSERR_OK, player_->Play());
4390     sleep(PLAYING_TIME_2_SEC);
4391     EXPECT_EQ(MSERR_OK, player_->Pause());
4392     for (int i = 0; i < 30; i++) {
4393         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4394         usleep(SEEK_CONTINUOUS_WAIT_US);
4395     }
4396     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4397     EXPECT_EQ(MSERR_OK, player_->Play());
4398     EXPECT_EQ(MSERR_OK, player_->Stop());
4399 }
4400 
4401 /**
4402  * @tc.name  : Test SeekContinuous in completed with seek -1
4403  * @tc.number: Player_SeekContinuous_022
4404  * @tc.desc  : Test Player SeekContinuous
4405  */
4406 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_022, TestSize.Level0)
4407 {
4408     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4409     sptr<Surface> videoSurface = player_->GetVideoSurface();
4410     ASSERT_NE(nullptr, videoSurface);
4411     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4412     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4413     EXPECT_EQ(MSERR_OK, player_->Play());
4414     sleep(PLAYING_TIME_2_SEC);
4415     EXPECT_EQ(MSERR_OK, player_->Seek(9000, SEEK_PREVIOUS_SYNC));
4416     sleep(PLAYING_TIME_10_SEC);
4417     for (int i = 0; i < 30; i++) {
4418         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4419         usleep(SEEK_CONTINUOUS_WAIT_US);
4420     }
4421     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4422     EXPECT_EQ(MSERR_OK, player_->Play());
4423     EXPECT_EQ(MSERR_OK, player_->Stop());
4424 }
4425 
4426 /**
4427  * @tc.name  : Test SeekContinuous backward mkv with seek -1
4428  * @tc.number: Player_SeekContinuous_023
4429  * @tc.desc  : Test Player SeekContinuous
4430  */
4431 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_023, TestSize.Level0)
4432 {
4433     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4434     sptr<Surface> videoSurface = player_->GetVideoSurface();
4435     ASSERT_NE(nullptr, videoSurface);
4436     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4437     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4438     EXPECT_EQ(MSERR_OK, player_->Play());
4439     sleep(PLAYING_TIME_2_SEC);
4440     for (int i = 0; i < 30; i++) {
4441         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4442         usleep(SEEK_CONTINUOUS_WAIT_US);
4443     }
4444     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4445     EXPECT_EQ(MSERR_OK, player_->Stop());
4446 }
4447 
4448 /**
4449  * @tc.name  : Test SeekContinuous forward and backward mkv with seek -1
4450  * @tc.number: Player_SeekContinuous_024
4451  * @tc.desc  : Test Player SeekContinuous
4452  */
4453 HWTEST_F(PlayerUnitTest, Player_SeekContinuous_024, TestSize.Level0)
4454 {
4455     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
4456     sptr<Surface> videoSurface = player_->GetVideoSurface();
4457     ASSERT_NE(nullptr, videoSurface);
4458     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4459     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4460     EXPECT_EQ(MSERR_OK, player_->Play());
4461     sleep(PLAYING_TIME_2_SEC);
4462     for (int i = 0; i < 30; i++) {
4463         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4464         usleep(SEEK_CONTINUOUS_WAIT_US);
4465     }
4466     for (int i = 0; i < 30; i++) {
4467         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4468         usleep(SEEK_CONTINUOUS_WAIT_US);
4469     }
4470     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
4471     EXPECT_EQ(MSERR_OK, player_->Stop());
4472 }
4473 
4474 /**
4475  * @tc.name  : Test enable super resolution with SetPlaybackStrategy
4476  * @tc.number: Player_SeekContinuous_001
4477  * @tc.desc  : Test Player SuperResolution
4478  */
4479 HWTEST_F(PlayerUnitTest, Player_SuperResolution_001, TestSize.Level0)
4480 {
4481     AVPlayStrategy playbackStrategy = {
4482         .enableSuperResolution = true
4483     };
4484     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4485     ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4486     sptr<Surface> videoSurface = player_->GetVideoSurface();
4487     ASSERT_NE(nullptr, videoSurface);
4488     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4489     EXPECT_EQ(MSERR_OK, player_->Prepare());
4490     EXPECT_EQ(MSERR_OK, player_->Play());
4491     sleep(PLAYING_TIME_2_SEC);
4492     EXPECT_EQ(MSERR_OK, player_->Stop());
4493 }
4494 
4495 /**
4496  * @tc.name  : Test SetSuperResolution(false) after enable super resolution
4497  * @tc.number: Player_SeekContinuous_002
4498  * @tc.desc  : Test Player SuperResolution
4499  */
4500 HWTEST_F(PlayerUnitTest, Player_SuperResolution_002, TestSize.Level0)
4501 {
4502     AVPlayStrategy playbackStrategy = {
4503         .enableSuperResolution = true
4504     };
4505     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4506     ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4507     ASSERT_EQ(MSERR_OK, player_->SetSuperResolution(false));
4508     sptr<Surface> videoSurface = player_->GetVideoSurface();
4509     ASSERT_NE(nullptr, videoSurface);
4510     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4511     EXPECT_EQ(MSERR_OK, player_->Prepare());
4512     EXPECT_EQ(MSERR_OK, player_->Play());
4513     sleep(PLAYING_TIME_2_SEC);
4514     EXPECT_EQ(MSERR_OK, player_->Stop());
4515 }
4516 
4517 /**
4518  * @tc.name  : Test SetVideoWindowSize after enable super resolution
4519  * @tc.number: Player_SeekContinuous_003
4520  * @tc.desc  : Test Player SuperResolution
4521  */
4522 HWTEST_F(PlayerUnitTest, Player_SuperResolution_003, TestSize.Level0)
4523 {
4524     AVPlayStrategy playbackStrategy = {
4525         .enableSuperResolution = true
4526     };
4527     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4528     ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4529     ASSERT_EQ(MSERR_OK, player_->SetVideoWindowSize(1080, 720));
4530     sptr<Surface> videoSurface = player_->GetVideoSurface();
4531     ASSERT_NE(nullptr, videoSurface);
4532     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4533     EXPECT_EQ(MSERR_OK, player_->Prepare());
4534     EXPECT_EQ(MSERR_OK, player_->Play());
4535     sleep(PLAYING_TIME_2_SEC);
4536     EXPECT_EQ(MSERR_OK, player_->Stop());
4537 }
4538 
4539 /**
4540  * @tc.name  : Test SetSuperResolution and SetVideoWindowSize without enable super resolution
4541  * @tc.number: Player_SeekContinuous_004
4542  * @tc.desc  : Test Player SuperResolution
4543  */
4544 HWTEST_F(PlayerUnitTest, Player_SuperResolution_004, TestSize.Level0)
4545 {
4546     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4547     ASSERT_EQ(MSERR_SUPER_RESOLUTION_NOT_ENABLED, player_->SetSuperResolution(true));
4548     ASSERT_EQ(MSERR_SUPER_RESOLUTION_NOT_ENABLED, player_->SetVideoWindowSize(1080, 720));
4549     sptr<Surface> videoSurface = player_->GetVideoSurface();
4550     ASSERT_NE(nullptr, videoSurface);
4551     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4552     EXPECT_EQ(MSERR_OK, player_->Prepare());
4553     EXPECT_EQ(MSERR_OK, player_->Play());
4554     sleep(PLAYING_TIME_2_SEC);
4555     EXPECT_EQ(MSERR_OK, player_->Stop());
4556 }
4557 } // namespace Media
4558 } // namespace OHOS
4559