• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2025 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_server_unit_test.h"
17 #include <unistd.h>
18 #include <securec.h>
19 #include "media_errors.h"
20 #include "audio_effect.h"
21 #include "av_common.h"
22 #include "meta/video_types.h"
23 
24 using namespace std;
25 using namespace testing::ext;
26 using namespace OHOS::Media::PlayerTestParam;
27 
28 namespace OHOS {
29 namespace Media {
30 namespace {
31 using ErrorMessageFunc = std::function<std::string(const std::string& param1, const std::string& param2)>;
32 const std::map<MediaServiceErrCode, std::string> MSERRCODE_INFOS = {
33     {MSERR_OK, "success"},
34     {MSERR_NO_MEMORY, "no memory"},
35     {MSERR_INVALID_OPERATION, "operation not be permitted"},
36     {MSERR_INVALID_VAL, "invalid argument"},
37     {MSERR_UNKNOWN, "unkown error"},
38     {MSERR_MANDATORY_PARAMETER_UNSPECIFIED, "mandatory parameters are left unspecified"},
39     {MSERR_INCORRECT_PARAMETER_TYPE, "Incorrect parameter types"},
40     {MSERR_PARAMETER_VERIFICATION_FAILED, "Parameter verification failed"},
41     {MSERR_SERVICE_DIED, "media service died"},
42     {MSERR_CREATE_REC_ENGINE_FAILED, "create recorder engine failed"},
43     {MSERR_CREATE_PLAYER_ENGINE_FAILED, "create player engine failed"},
44     {MSERR_CREATE_AVMETADATAHELPER_ENGINE_FAILED, "create avmetadatahelper engine failed"},
45     {MSERR_INVALID_STATE, "the state is not support this operation"},
46     {MSERR_UNSUPPORT, "unsupport interface"},
47     {MSERR_UNSUPPORT_AUD_SRC_TYPE, "unsupport audio source type"},
48     {MSERR_UNSUPPORT_AUD_SAMPLE_RATE, "unsupport audio sample rate"},
49     {MSERR_UNSUPPORT_AUD_CHANNEL_NUM, "unsupport audio channel"},
50     {MSERR_UNSUPPORT_AUD_ENC_TYPE, "unsupport audio encoder type"},
51     {MSERR_UNSUPPORT_AUD_PARAMS, "unsupport audio params(other params)"},
52     {MSERR_UNSUPPORT_VID_SRC_TYPE, "unsupport video source type"},
53     {MSERR_UNSUPPORT_VID_ENC_TYPE, "unsupport video encoder type"},
54     {MSERR_UNSUPPORT_VID_PARAMS, "unsupport video params(other params)"},
55     {MSERR_UNSUPPORT_CONTAINER_TYPE, "unsupport container format type"},
56     {MSERR_UNSUPPORT_PROTOCOL_TYPE, "unsupport protocol type"},
57     {MSERR_UNSUPPORT_VID_DEC_TYPE, "unsupport video decoder type"},
58     {MSERR_UNSUPPORT_AUD_DEC_TYPE, "unsupport audio decoder type"},
59     {MSERR_UNSUPPORT_STREAM, "internal data stream error"},
60     {MSERR_UNSUPPORT_FILE, "this appears to be a text file"},
61     {MSERR_UNSUPPORT_SOURCE, "unsupport source type"},
62     {MSERR_VID_RESIZE_FAILED, "video resize failed"},
63     {MSERR_AUD_ENC_FAILED, "audio encode failed"},
64     {MSERR_AUD_RENDER_FAILED, "audio render failed"},
65     {MSERR_VID_ENC_FAILED, "video encode failed"},
66     {MSERR_AUD_DEC_FAILED, "audio decode failed"},
67     {MSERR_VID_DEC_FAILED, "video decode failed"},
68     {MSERR_MUXER_FAILED, "stream avmuxer failed"},
69     {MSERR_DEMUXER_FAILED, "stream demuxer or parser failed"},
70     {MSERR_OPEN_FILE_FAILED, "open file failed"},
71     {MSERR_FILE_ACCESS_FAILED, "read or write file failed"},
72     {MSERR_START_FAILED, "audio or video start failed"},
73     {MSERR_PAUSE_FAILED, "audio or video pause failed"},
74     {MSERR_STOP_FAILED, "audio or video stop failed"},
75     {MSERR_SEEK_FAILED, "audio or video seek failed"},
76     {MSERR_NETWORK_TIMEOUT, "network timeout"},
77     {MSERR_NOT_FIND_CONTAINER, "not find a demuxer"},
78     {MSERR_EXTEND_START, "extend start error code"},
79     {MSERR_AUD_INTERRUPT, "audio interrupted"},
80     {MSERR_USER_NO_PERMISSION, "user no permission"},
81     {MSERR_DATA_SOURCE_ERROR_UNKNOWN, "media data source error unknow"},
82     {MSERR_DATA_SOURCE_IO_ERROR, "media data source IO failed"},
83     {MSERR_DRM_VERIFICATION_FAILED, "DRM verification failed"},
84     {MSERR_UNSUPPORT_WATER_MARK, "unsupported water mark"},
85     {MSERR_DEMUXER_BUFFER_NO_MEMORY, "demuxer cache data reached its limit"},
86     {MSERR_IO_CANNOT_FIND_HOST, "IO can not find host"},
87     {MSERR_IO_CONNECTION_TIMEOUT, "IO connection timeout"},
88     {MSERR_IO_NETWORK_ABNORMAL, "IO network abnormal"},
89     {MSERR_IO_NETWORK_UNAVAILABLE, "IO network unavailable"},
90     {MSERR_IO_NO_PERMISSION, "IO no permission"},
91     {MSERR_IO_NETWORK_ACCESS_DENIED, "IO request denied"},
92     {MSERR_IO_RESOURE_NOT_FOUND, "IO resource not found"},
93     {MSERR_IO_SSL_CLIENT_CERT_NEEDED, "IO SSL client cert needed"},
94     {MSERR_IO_SSL_CONNECT_FAIL, "IO SSL connect fail"},
95     {MSERR_IO_SSL_SERVER_CERT_UNTRUSTED, "IO SSL server cert untrusted"},
96     {MSERR_IO_UNSUPPORTTED_REQUEST, "IO unsupported request"},
97     {MSERR_SEEK_CONTINUOUS_UNSUPPORTED, "seek continonous is unsupported for this source"},
98     {MSERR_SUPER_RESOLUTION_UNSUPPORTED, "super resolution not supported"},
99     {MSERR_SUPER_RESOLUTION_NOT_ENABLED, "super resolution not enabled"},
100     {MSERR_GET_INPUT_SURFACE_FAILED, "video encoder or resize get input surface failed"},
101     {MSERR_SET_OUTPUT_SURFACE_FAILED, "video decoder or resize set output surface failed"},
102     {MSERR_DSS_THREAD_CREATION_FAILED, "DSS of the LPP thread creation failed"},
103     {MSERR_DSS_TASK_CREATION_FAILED, "DSS of the LPP task creation failed"},
104     {MSERR_DSS_STRAT_FAILED, "DSS of the LPP start failed"},
105     {MSERR_SHB_THREAD_CREATION_FAILED, "SHB of the LPP thread creation failed"},
106     {MSERR_SHB_INIT_FAILED, "SHB of the LPP init failed"},
107     {MSERR_SHB_MSG_QUE_CREATION_FAILED, "SHB of the LPP message queue creation failed"},
108     {MSERR_SHB_NO_MEMORY, "SHB of the LPP failed to allocate memory."},
109     {MSERR_SHB_CRASH_ERROR, "SHB of the LPP crash happend."},
110     {MSERR_RS_INIT_FAILED, "RS of the LPP init failed"},
111     {MSERR_RS_DATA_FALLBACK_FAILED, "RS of the LPP data fallback failed"},
112     {MSERR_LPP_INSTANCE_EXCEED_LIMIT, "LPP instance limit exceeded"},
113     {MSERR_HARDWARE_ERROR, "underlying hardware error happened"},
114 };
115 
116 const std::map<MediaServiceErrCode, MediaServiceExtErrCode> MSERRCODE_TO_EXTERRORCODE = {
117     {MSERR_OK,                                  MSERR_EXT_OK},
118     {MSERR_NO_MEMORY,                           MSERR_EXT_NO_MEMORY},
119     {MSERR_DEMUXER_BUFFER_NO_MEMORY,            MSERR_EXT_IO},
120     {MSERR_INVALID_OPERATION,                   MSERR_EXT_OPERATE_NOT_PERMIT},
121     {MSERR_INVALID_VAL,                         MSERR_EXT_INVALID_VAL},
122     {MSERR_UNKNOWN,                             MSERR_EXT_UNKNOWN},
123     {MSERR_SERVICE_DIED,                        MSERR_EXT_SERVICE_DIED},
124     {MSERR_CREATE_REC_ENGINE_FAILED,            MSERR_EXT_UNKNOWN},
125     {MSERR_CREATE_PLAYER_ENGINE_FAILED,         MSERR_EXT_UNKNOWN},
126     {MSERR_INVALID_STATE,                       MSERR_EXT_INVALID_STATE},
127     {MSERR_UNSUPPORT,                           MSERR_EXT_UNSUPPORT},
128     {MSERR_UNSUPPORT_AUD_SRC_TYPE,              MSERR_EXT_UNSUPPORT},
129     {MSERR_UNSUPPORT_AUD_SAMPLE_RATE,           MSERR_EXT_UNSUPPORT},
130     {MSERR_UNSUPPORT_AUD_CHANNEL_NUM,           MSERR_EXT_UNSUPPORT},
131     {MSERR_UNSUPPORT_AUD_ENC_TYPE,              MSERR_EXT_UNSUPPORT},
132     {MSERR_UNSUPPORT_AUD_PARAMS,                MSERR_EXT_UNSUPPORT},
133     {MSERR_UNSUPPORT_VID_SRC_TYPE,              MSERR_EXT_UNSUPPORT},
134     {MSERR_UNSUPPORT_VID_ENC_TYPE,              MSERR_EXT_UNSUPPORT},
135     {MSERR_UNSUPPORT_VID_PARAMS,                MSERR_EXT_UNSUPPORT},
136     {MSERR_UNSUPPORT_CONTAINER_TYPE,            MSERR_EXT_UNSUPPORT},
137     {MSERR_UNSUPPORT_PROTOCOL_TYPE,             MSERR_EXT_UNSUPPORT},
138     {MSERR_UNSUPPORT_VID_DEC_TYPE,              MSERR_EXT_UNSUPPORT},
139     {MSERR_UNSUPPORT_AUD_DEC_TYPE,              MSERR_EXT_UNSUPPORT},
140     {MSERR_UNSUPPORT_STREAM,                    MSERR_EXT_UNSUPPORT},
141     {MSERR_UNSUPPORT_FILE,                      MSERR_EXT_UNSUPPORT},
142     {MSERR_UNSUPPORT_SOURCE,                    MSERR_EXT_UNSUPPORT},
143     {MSERR_AUD_RENDER_FAILED,                   MSERR_EXT_UNSUPPORT},
144     {MSERR_VID_RESIZE_FAILED,                   MSERR_EXT_UNKNOWN},
145     {MSERR_AUD_ENC_FAILED,                      MSERR_EXT_UNKNOWN},
146     {MSERR_VID_ENC_FAILED,                      MSERR_EXT_UNKNOWN},
147     {MSERR_AUD_DEC_FAILED,                      MSERR_EXT_UNKNOWN},
148     {MSERR_VID_DEC_FAILED,                      MSERR_EXT_UNKNOWN},
149     {MSERR_MUXER_FAILED,                        MSERR_EXT_UNKNOWN},
150     {MSERR_DEMUXER_FAILED,                      MSERR_EXT_UNKNOWN},
151     {MSERR_OPEN_FILE_FAILED,                    MSERR_EXT_UNKNOWN},
152     {MSERR_FILE_ACCESS_FAILED,                  MSERR_EXT_UNKNOWN},
153     {MSERR_START_FAILED,                        MSERR_EXT_UNKNOWN},
154     {MSERR_PAUSE_FAILED,                        MSERR_EXT_UNKNOWN},
155     {MSERR_STOP_FAILED,                         MSERR_EXT_UNKNOWN},
156     {MSERR_SEEK_FAILED,                         MSERR_EXT_UNKNOWN},
157     {MSERR_NETWORK_TIMEOUT,                     MSERR_EXT_TIMEOUT},
158     {MSERR_NOT_FIND_CONTAINER,                  MSERR_EXT_UNSUPPORT},
159     {MSERR_EXTEND_START,                        MSERR_EXT_EXTEND_START},
160     {MSERR_IO_CANNOT_FIND_HOST,                 MSERR_EXT_IO},
161     {MSERR_IO_CONNECTION_TIMEOUT,               MSERR_EXT_IO},
162     {MSERR_IO_NETWORK_ABNORMAL,                 MSERR_EXT_IO},
163     {MSERR_IO_NETWORK_UNAVAILABLE,              MSERR_EXT_IO},
164     {MSERR_IO_NO_PERMISSION,                    MSERR_EXT_IO},
165     {MSERR_IO_NETWORK_ACCESS_DENIED,            MSERR_EXT_IO},
166     {MSERR_IO_RESOURE_NOT_FOUND,                MSERR_EXT_IO},
167     {MSERR_IO_SSL_CLIENT_CERT_NEEDED,           MSERR_EXT_IO},
168     {MSERR_IO_SSL_CONNECT_FAIL,                 MSERR_EXT_IO},
169     {MSERR_IO_SSL_SERVER_CERT_UNTRUSTED,        MSERR_EXT_IO},
170     {MSERR_IO_UNSUPPORTTED_REQUEST,             MSERR_EXT_IO},
171     {MSERR_SUPER_RESOLUTION_UNSUPPORTED,        MSERR_EXT_UNSUPPORT},
172     {MSERR_SUPER_RESOLUTION_NOT_ENABLED,        MSERR_EXT_UNKNOWN},
173     {MSERR_GET_INPUT_SURFACE_FAILED,            MSERR_EXT_UNKNOWN},
174     {MSERR_SET_OUTPUT_SURFACE_FAILED,           MSERR_EXT_UNKNOWN},
175     {MSERR_DSS_THREAD_CREATION_FAILED,          MSERR_EXT_UNKNOWN},
176     {MSERR_DSS_TASK_CREATION_FAILED,            MSERR_EXT_UNKNOWN},
177     {MSERR_DSS_STRAT_FAILED,                    MSERR_EXT_EXTEND_START},
178     {MSERR_SHB_THREAD_CREATION_FAILED,          MSERR_EXT_UNKNOWN},
179     {MSERR_SHB_INIT_FAILED,                     MSERR_EXT_UNKNOWN},
180     {MSERR_SHB_MSG_QUE_CREATION_FAILED,         MSERR_EXT_UNKNOWN},
181     {MSERR_SHB_NO_MEMORY,                       MSERR_EXT_NO_MEMORY},
182     {MSERR_SHB_CRASH_ERROR,                     MSERR_EXT_SERVICE_DIED},
183     {MSERR_RS_INIT_FAILED,                      MSERR_EXT_UNKNOWN},
184     {MSERR_RS_DATA_FALLBACK_FAILED,             MSERR_EXT_UNKNOWN},
185     {MSERR_LPP_INSTANCE_EXCEED_LIMIT,           MSERR_EXT_UNKNOWN},
186     {MSERR_HARDWARE_ERROR,                      MSERR_EXT_UNKNOWN},
187 };
188 
189 const std::map<MediaServiceExtErrCode, std::string> MSEXTERRCODE_INFOS = {
190     {MSERR_EXT_OK, "success"},
191     {MSERR_EXT_NO_MEMORY, "no memory"},
192     {MSERR_EXT_OPERATE_NOT_PERMIT, "operation not be permitted"},
193     {MSERR_EXT_INVALID_VAL, "invalid argument"},
194     {MSERR_EXT_IO, "IO error"},
195     {MSERR_EXT_TIMEOUT, "network timeout"},
196     {MSERR_EXT_UNKNOWN, "unkown error"},
197     {MSERR_EXT_SERVICE_DIED, "media service died"},
198     {MSERR_EXT_INVALID_STATE, "the state is not support this operation"},
199     {MSERR_EXT_UNSUPPORT, "unsupport interface"},
200     {MSERR_EXT_EXTEND_START, "extend err start"},
201 };
202 
203 const std::map<MediaServiceErrCode, MediaServiceExtErrCodeAPI9> MSERRCODE_TO_EXTERRORCODEAPI9 = {
204     {MSERR_OK,                                  MSERR_EXT_API9_OK},
205     {MSERR_NO_MEMORY,                           MSERR_EXT_API9_NO_MEMORY},
206     {MSERR_INVALID_OPERATION,                   MSERR_EXT_API9_OPERATE_NOT_PERMIT},
207     {MSERR_INVALID_VAL,                         MSERR_EXT_API9_INVALID_PARAMETER},
208     {MSERR_MANDATORY_PARAMETER_UNSPECIFIED,     MSERR_EXT_API9_INVALID_PARAMETER},
209     {MSERR_INCORRECT_PARAMETER_TYPE,            MSERR_EXT_API9_INVALID_PARAMETER},
210     {MSERR_PARAMETER_VERIFICATION_FAILED,       MSERR_EXT_API9_INVALID_PARAMETER},
211     {MSERR_SERVICE_DIED,                        MSERR_EXT_API9_SERVICE_DIED},
212     {MSERR_CREATE_REC_ENGINE_FAILED,            MSERR_EXT_API9_NO_MEMORY},
213     {MSERR_CREATE_PLAYER_ENGINE_FAILED,         MSERR_EXT_API9_NO_MEMORY},
214     {MSERR_INVALID_STATE,                       MSERR_EXT_API9_OPERATE_NOT_PERMIT},
215     {MSERR_UNSUPPORT,                           MSERR_EXT_API9_UNSUPPORT_FORMAT},
216     {MSERR_UNSUPPORT_AUD_SRC_TYPE,              MSERR_EXT_API9_UNSUPPORT_FORMAT},
217     {MSERR_UNSUPPORT_AUD_SAMPLE_RATE,           MSERR_EXT_API9_UNSUPPORT_FORMAT},
218     {MSERR_UNSUPPORT_AUD_CHANNEL_NUM,           MSERR_EXT_API9_UNSUPPORT_FORMAT},
219     {MSERR_UNSUPPORT_AUD_ENC_TYPE,              MSERR_EXT_API9_UNSUPPORT_FORMAT},
220     {MSERR_UNSUPPORT_AUD_PARAMS,                MSERR_EXT_API9_UNSUPPORT_FORMAT},
221     {MSERR_UNSUPPORT_VID_SRC_TYPE,              MSERR_EXT_API9_UNSUPPORT_FORMAT},
222     {MSERR_UNSUPPORT_VID_ENC_TYPE,              MSERR_EXT_API9_UNSUPPORT_FORMAT},
223     {MSERR_UNSUPPORT_VID_PARAMS,                MSERR_EXT_API9_UNSUPPORT_FORMAT},
224     {MSERR_UNSUPPORT_CONTAINER_TYPE,            MSERR_EXT_API9_UNSUPPORT_FORMAT},
225     {MSERR_UNSUPPORT_PROTOCOL_TYPE,             MSERR_EXT_API9_UNSUPPORT_FORMAT},
226     {MSERR_UNSUPPORT_VID_DEC_TYPE,              MSERR_EXT_API9_UNSUPPORT_FORMAT},
227     {MSERR_UNSUPPORT_AUD_DEC_TYPE,              MSERR_EXT_API9_UNSUPPORT_FORMAT},
228     {MSERR_UNSUPPORT_STREAM,                    MSERR_EXT_API9_UNSUPPORT_FORMAT},
229     {MSERR_UNSUPPORT_FILE,                      MSERR_EXT_API9_UNSUPPORT_FORMAT},
230     {MSERR_UNSUPPORT_SOURCE,                    MSERR_EXT_API9_UNSUPPORT_FORMAT},
231     {MSERR_VID_RESIZE_FAILED,                   MSERR_EXT_API9_IO},
232     {MSERR_AUD_RENDER_FAILED,                   MSERR_EXT_API9_IO},
233     {MSERR_AUD_ENC_FAILED,                      MSERR_EXT_API9_IO},
234     {MSERR_VID_ENC_FAILED,                      MSERR_EXT_API9_IO},
235     {MSERR_AUD_DEC_FAILED,                      MSERR_EXT_API9_IO},
236     {MSERR_VID_DEC_FAILED,                      MSERR_EXT_API9_IO},
237     {MSERR_MUXER_FAILED,                        MSERR_EXT_API9_UNSUPPORT_FORMAT},
238     {MSERR_DEMUXER_FAILED,                      MSERR_EXT_API9_UNSUPPORT_FORMAT},
239     {MSERR_OPEN_FILE_FAILED,                    MSERR_EXT_API9_IO},
240     {MSERR_FILE_ACCESS_FAILED,                  MSERR_EXT_API9_IO},
241     {MSERR_START_FAILED,                        MSERR_EXT_API9_OPERATE_NOT_PERMIT},
242     {MSERR_PAUSE_FAILED,                        MSERR_EXT_API9_OPERATE_NOT_PERMIT},
243     {MSERR_STOP_FAILED,                         MSERR_EXT_API9_OPERATE_NOT_PERMIT},
244     {MSERR_SEEK_FAILED,                         MSERR_EXT_API9_OPERATE_NOT_PERMIT},
245     {MSERR_DRM_VERIFICATION_FAILED,             MSERR_EXT_API9_OPERATE_NOT_PERMIT},
246     {MSERR_NETWORK_TIMEOUT,                     MSERR_EXT_API9_TIMEOUT},
247     {MSERR_NOT_FIND_CONTAINER,                  MSERR_EXT_API9_UNSUPPORT_FORMAT},
248     {MSERR_UNKNOWN,                             MSERR_EXT_API9_IO},
249     {MSERR_DATA_SOURCE_IO_ERROR,                MSERR_EXT_API9_IO},
250     {MSERR_DATA_SOURCE_ERROR_UNKNOWN,           MSERR_EXT_API9_IO},
251     {MSERR_AUD_INTERRUPT,                       MSERR_EXT_API9_AUDIO_INTERRUPTED},
252     {MSERR_USER_NO_PERMISSION,                  MSERR_EXT_API9_NO_PERMISSION},
253     {MSERR_UNSUPPORT_WATER_MARK,                MSERR_EXT_API9_UNSUPPORT_CAPABILITY},
254     {MSERR_DEMUXER_BUFFER_NO_MEMORY,            MSERR_EXT_API9_IO},
255     {MSERR_IO_CANNOT_FIND_HOST,                 MSERR_EXT_API14_IO_CANNOT_FIND_HOST},
256     {MSERR_IO_CONNECTION_TIMEOUT,               MSERR_EXT_API14_IO_CONNECTION_TIMEOUT},
257     {MSERR_IO_NETWORK_ABNORMAL,                 MSERR_EXT_API14_IO_NETWORK_ABNORMAL},
258     {MSERR_IO_NETWORK_UNAVAILABLE,              MSERR_EXT_API14_IO_NETWORK_UNAVAILABLE},
259     {MSERR_IO_NO_PERMISSION,                    MSERR_EXT_API14_IO_NO_PERMISSION},
260     {MSERR_IO_NETWORK_ACCESS_DENIED,            MSERR_EXT_API14_IO_NETWORK_ACCESS_DENIED},
261     {MSERR_IO_RESOURE_NOT_FOUND,                MSERR_EXT_API14_IO_RESOURE_NOT_FOUND},
262     {MSERR_IO_SSL_CLIENT_CERT_NEEDED,           MSERR_EXT_API14_IO_SSL_CLIENT_CERT_NEEDED},
263     {MSERR_IO_SSL_CONNECT_FAIL,                 MSERR_EXT_API14_IO_SSL_CONNECT_FAIL},
264     {MSERR_IO_SSL_SERVER_CERT_UNTRUSTED,        MSERR_EXT_API14_IO_SSL_SERVER_CERT_UNTRUSTED},
265     {MSERR_IO_UNSUPPORTTED_REQUEST,             MSERR_EXT_API14_IO_UNSUPPORTTED_REQUEST},
266     {MSERR_SEEK_CONTINUOUS_UNSUPPORTED,         MSERR_EXT_API16_SEEK_CONTINUOUS_UNSUPPORTED},
267     {MSERR_SUPER_RESOLUTION_UNSUPPORTED,        MSERR_EXT_API16_SUPER_RESOLUTION_UNSUPPORTED},
268     {MSERR_SUPER_RESOLUTION_NOT_ENABLED,        MSERR_EXT_API16_SUPER_RESOLUTION_NOT_ENABLED},
269     {MSERR_GET_INPUT_SURFACE_FAILED,            MSERR_EXT_API9_IO},
270     {MSERR_SET_OUTPUT_SURFACE_FAILED,           MSERR_EXT_API9_IO},
271     {MSERR_DSS_THREAD_CREATION_FAILED,          MSERR_EXT_API20_HARDWARE_FAILED},
272     {MSERR_DSS_TASK_CREATION_FAILED,            MSERR_EXT_API20_HARDWARE_FAILED},
273     {MSERR_DSS_STRAT_FAILED,                    MSERR_EXT_API20_HARDWARE_FAILED},
274     {MSERR_SHB_THREAD_CREATION_FAILED,          MSERR_EXT_API20_HARDWARE_FAILED},
275     {MSERR_SHB_INIT_FAILED,                     MSERR_EXT_API20_HARDWARE_FAILED},
276     {MSERR_SHB_MSG_QUE_CREATION_FAILED,         MSERR_EXT_API20_HARDWARE_FAILED},
277     {MSERR_SHB_NO_MEMORY,                       MSERR_EXT_API9_NO_MEMORY},
278     {MSERR_SHB_CRASH_ERROR,                     MSERR_EXT_API20_HARDWARE_FAILED},
279     {MSERR_RS_INIT_FAILED,                      MSERR_EXT_API20_HARDWARE_FAILED},
280     {MSERR_RS_DATA_FALLBACK_FAILED,             MSERR_EXT_API20_HARDWARE_FAILED},
281     {MSERR_LPP_INSTANCE_EXCEED_LIMIT,           MSERR_EXT_API20_HARDWARE_FAILED},
282     {MSERR_HARDWARE_ERROR,                      MSERR_EXT_API20_HARDWARE_FAILED},
283 };
284 
285 const std::map<MediaServiceExtErrCodeAPI9, std::string> MSEXTERRCODE_API9_INFOS = {
286     {MSERR_EXT_API9_OK, "Success: "},
287     {MSERR_EXT_API9_NO_PERMISSION, "No Permission: "},
288     {MSERR_EXT_API9_PERMISSION_DENIED, "Permission Denied"},
289     {MSERR_EXT_API9_INVALID_PARAMETER, "Invalid Parameter: "},
290     {MSERR_EXT_API9_UNSUPPORT_CAPABILITY, "Unsupport Capability: "},
291     {MSERR_EXT_API9_NO_MEMORY, "No Memory: "},
292     {MSERR_EXT_API9_OPERATE_NOT_PERMIT, "Operate Not Permit: "},
293     {MSERR_EXT_API9_IO, "IO Error: "},
294     {MSERR_EXT_API9_TIMEOUT, "Network Timeout: "},
295     {MSERR_EXT_API9_SERVICE_DIED, "Service Died: "},
296     {MSERR_EXT_API9_UNSUPPORT_FORMAT, "Unsupported Format: "},
297     {MSERR_EXT_API9_AUDIO_INTERRUPTED, "Audio Interruped: "},
298     {MSERR_EXT_API14_IO_CANNOT_FIND_HOST, "IO Cannot Find Host: "},
299     {MSERR_EXT_API14_IO_CONNECTION_TIMEOUT, "IO Connection Timeout: "},
300     {MSERR_EXT_API14_IO_NETWORK_ABNORMAL, "IO Network Abnormal: "},
301     {MSERR_EXT_API14_IO_NETWORK_UNAVAILABLE, "IO Network Unavailable: "},
302     {MSERR_EXT_API14_IO_NO_PERMISSION, "IO No Permission: "},
303     {MSERR_EXT_API14_IO_NETWORK_ACCESS_DENIED, "IO Request Denied: "},
304     {MSERR_EXT_API14_IO_RESOURE_NOT_FOUND, "IO Resource Not Found: "},
305     {MSERR_EXT_API14_IO_SSL_CLIENT_CERT_NEEDED, "IO SSL Client Cert Needed: "},
306     {MSERR_EXT_API14_IO_SSL_CONNECT_FAIL, "IO SSL Connect Fail: "},
307     {MSERR_EXT_API14_IO_SSL_SERVER_CERT_UNTRUSTED, "IO SSL Server Cert Untrusted: "},
308     {MSERR_EXT_API14_IO_UNSUPPORTTED_REQUEST, "IO Unsupported Request: "},
309     {MSERR_EXT_API20_HARDWARE_FAILED, "Hardware failed: "}
310 };
311 
ErrorMessageOk(const std::string & param1,const std::string & param2)312 std::string ErrorMessageOk(const std::string& param1, const std::string& param2)
313 {
314     (void)param1;
315     (void)param2;
316     return "success";
317 }
318 
ErrorMessageNoPermission(const std::string & param1,const std::string & param2)319 std::string ErrorMessageNoPermission(const std::string& param1, const std::string& param2)
320 {
321     std::string message = "Try to do " + param1 + " failed. User should request permission " + param2 +" first.";
322     return message;
323 }
324 
ErrorMessageInvalidParameter(const std::string & param1,const std::string & param2)325 std::string ErrorMessageInvalidParameter(const std::string& param1, const std::string& param2)
326 {
327     (void)param2;
328     std::string message = "The Parameter " + param1 + " is invalid. Please check the type and range.";
329     return message;
330 }
331 
ErrorMessageUnsupportCapability(const std::string & param1,const std::string & param2)332 std::string ErrorMessageUnsupportCapability(const std::string& param1, const std::string& param2)
333 {
334     (void)param2;
335     std::string message = "Function " + param1 + " can not work correctly due to limited device capability.";
336     return message;
337 }
338 
ErrorMessageNoMemory(const std::string & param1,const std::string & param2)339 std::string ErrorMessageNoMemory(const std::string& param1, const std::string& param2)
340 {
341     (void)param2;
342     std::string message = "Create " + param1 + " failed due to system memory.";
343     return message;
344 }
345 
ErrorMessageOperateNotPermit(const std::string & param1,const std::string & param2)346 std::string ErrorMessageOperateNotPermit(const std::string& param1, const std::string& param2)
347 {
348     (void)param2;
349     std::string message = "The operate " + param1 + " failed due to not permit in current state.";
350     return message;
351 }
352 
ErrorMessageIO(const std::string & param1,const std::string & param2)353 std::string ErrorMessageIO(const std::string& param1, const std::string& param2)
354 {
355     (void)param2;
356     std::string message = "IO error happened due to " + param1 + ".";
357     return message;
358 }
359 
ErrorMessageTimeout(const std::string & param1,const std::string & param2)360 std::string ErrorMessageTimeout(const std::string& param1, const std::string& param2)
361 {
362     std::string message = "Timeout happend when " + param1 + " due to " + param2 + ".";
363     return message;
364 }
365 
ErrorMessageServiceDied(const std::string & param1,const std::string & param2)366 std::string ErrorMessageServiceDied(const std::string& param1, const std::string& param2)
367 {
368     (void)param1;
369     (void)param2;
370     std::string message = "Media Serviced Died.";
371     return message;
372 }
373 
ErrorMessageUnsupportFormat(const std::string & param1,const std::string & param2)374 std::string ErrorMessageUnsupportFormat(const std::string& param1, const std::string& param2)
375 {
376     (void)param2;
377     std::string message = "The format " + param1 + " is not support.";
378     return message;
379 }
380 
ErrorMessageAudioInterruped(const std::string & param1,const std::string & param2)381 std::string ErrorMessageAudioInterruped(const std::string & param1, const std::string& param2)
382 {
383     (void)param1;
384     (void)param2;
385     std::string message = "Audio Interrupted by other process.";
386     return message;
387 }
388 
389 const std::map<MediaServiceExtErrCodeAPI9, ErrorMessageFunc> MSEXTERRAPI9CODE_FUNCS = {
390     {MSERR_EXT_API9_OK, &ErrorMessageOk},
391     {MSERR_EXT_API9_NO_PERMISSION, &ErrorMessageNoPermission},
392     {MSERR_EXT_API9_INVALID_PARAMETER, &ErrorMessageInvalidParameter},
393     {MSERR_EXT_API9_UNSUPPORT_CAPABILITY, &ErrorMessageUnsupportCapability},
394     {MSERR_EXT_API9_NO_MEMORY, &ErrorMessageNoMemory},
395     {MSERR_EXT_API9_OPERATE_NOT_PERMIT, &ErrorMessageOperateNotPermit},
396     {MSERR_EXT_API9_IO, &ErrorMessageIO},
397     {MSERR_EXT_API9_TIMEOUT, &ErrorMessageTimeout},
398     {MSERR_EXT_API9_SERVICE_DIED, &ErrorMessageServiceDied},
399     {MSERR_EXT_API9_UNSUPPORT_FORMAT, &ErrorMessageUnsupportFormat},
400     {MSERR_EXT_API9_AUDIO_INTERRUPTED, &ErrorMessageAudioInterruped},
401 };
402 }
403 
SetUpTestCase(void)404 void PlayerServerUnitTest::SetUpTestCase(void)
405 {
406 }
407 
TearDownTestCase(void)408 void PlayerServerUnitTest::TearDownTestCase(void)
409 {
410     std::cout << "sleep one second to protect PlayerEngine safely exit." << endl;
411     sleep(1); //let PlayEngine safe exit.
412 }
413 
SetUp(void)414 void PlayerServerUnitTest::SetUp(void)
415 {
416     callback_ = std::make_shared<PlayerCallbackTest>();
417     ASSERT_NE(nullptr, callback_);
418     player_ = std::make_shared<PlayerServerMock>(callback_);
419     ASSERT_NE(nullptr, player_);
420     EXPECT_TRUE(player_->CreatePlayer());
421     EXPECT_EQ(MSERR_OK, player_->SetPlayerCallback(callback_));
422 }
423 
TearDown(void)424 void PlayerServerUnitTest::TearDown(void)
425 {
426     if (player_ != nullptr) {
427         player_->Release();
428     }
429 }
430 
PlayFunTest(const std::string & protocol)431 void PlayerServerUnitTest::PlayFunTest(const std::string &protocol)
432 {
433     int32_t duration = 0;
434     float playbackRate = 2.5f;
435     if (player_ != nullptr) {
436         EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
437         EXPECT_EQ(MSERR_OK, player_->Play());
438         EXPECT_TRUE(player_->IsPlaying());
439         EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
440         EXPECT_EQ(MSERR_OK, player_->Pause());
441         int32_t time;
442         EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
443         std::vector<Format> videoTrack;
444         std::vector<Format> audioTrack;
445         EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
446         EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
447         PlaybackRateMode mode;
448         player_->SetPlaybackRate(playbackRate);
449         player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X);
450         player_->GetPlaybackSpeed(mode);
451         EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
452         EXPECT_EQ(true, player_->IsLooping());
453         EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
454         EXPECT_EQ(MSERR_OK, player_->Play());
455         sleep(PLAYING_TIME_2_SEC);
456         if (protocol == PlayerTestParam::HLS_PLAY) {
457             EXPECT_EQ(MSERR_OK, player_->SelectBitRate(200000));  // 200000:bitrate
458             sleep(PLAYING_TIME_2_SEC);
459         }
460         EXPECT_EQ(MSERR_OK, player_->SetLooping(false));
461         EXPECT_EQ(false, player_->IsLooping());
462         EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
463         EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
464         EXPECT_EQ(MSERR_OK, player_->Stop());
465         EXPECT_EQ(MSERR_OK, player_->Reset());
466     }
467 }
468 
GetSetParaFunTest()469 void PlayerServerUnitTest::GetSetParaFunTest()
470 {
471     if (player_ != nullptr) {
472         int32_t duration = 0;
473         int32_t time = 0;
474         float playbackRate = 2.0f;
475         PlaybackRateMode mode;
476         std::vector<Format> videoTrack;
477         std::vector<Format> audioTrack;
478         player_->GetVideoTrackInfo(videoTrack);
479         player_->GetAudioTrackInfo(audioTrack);
480         player_->GetCurrentTime(time);
481         player_->GetDuration(duration);
482         player_->SetPlaybackRate(playbackRate);
483         player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X);
484         player_->GetPlaybackSpeed(mode);
485         player_->SetLooping(true);
486         player_->IsLooping();
487         player_->SetVolume(1, 1);
488     }
489 }
490 
MediaServiceErrCodeTest(MediaServiceErrCode code)491 void PlayerServerUnitTest::MediaServiceErrCodeTest(MediaServiceErrCode code)
492 {
493     if (MSERRCODE_INFOS.count(code) != 0) {
494         EXPECT_EQ(MSERRCODE_INFOS.at(code), MSErrorToString(code));
495     } else if (code > MSERR_EXTEND_START) {
496         EXPECT_EQ("extend error:" + std::to_string(static_cast<int32_t>(code - MSERR_EXTEND_START)),
497             MSErrorToString(code));
498     } else {
499         EXPECT_EQ("invalid error code:" + std::to_string(static_cast<int32_t>(code)), MSErrorToString(code));
500     }
501 
502     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODE.count(code) != 0 &&
503         MSEXTERRCODE_INFOS.count(MSERRCODE_TO_EXTERRORCODE.at(code)) != 0) {
504         EXPECT_EQ(MSEXTERRCODE_INFOS.at(MSERRCODE_TO_EXTERRORCODE.at(code)), MSErrorToExtErrorString(code));
505     } else {
506         EXPECT_EQ("unkown error", MSErrorToExtErrorString(code));
507     }
508 
509     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODE.count(code) != 0) {
510         EXPECT_EQ(MSERRCODE_TO_EXTERRORCODE.at(code), MSErrorToExtError(code));
511     } else {
512         EXPECT_EQ(MSERR_EXT_UNKNOWN, MSErrorToExtError(code));
513     }
514 
515     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODEAPI9.count(code) != 0 &&
516         MSEXTERRAPI9CODE_FUNCS.count(MSERRCODE_TO_EXTERRORCODEAPI9.at(code)) != 0) {
517         EXPECT_EQ(MSEXTERRAPI9CODE_FUNCS.at(MSERRCODE_TO_EXTERRORCODEAPI9.at(code))("test1", "test2"),
518             MSErrorToExtErrorAPI9String(code, "test1", "test2"));
519     } else {
520         EXPECT_EQ("unkown error", MSErrorToExtErrorAPI9String(code, "test1", "test2"));
521     }
522 
523     if (MSERRCODE_INFOS.count(code) != 0 && MSERRCODE_TO_EXTERRORCODEAPI9.count(code) != 0) {
524         EXPECT_EQ(MSERRCODE_TO_EXTERRORCODEAPI9.at(code), MSErrorToExtErrorAPI9(code));
525     } else {
526         EXPECT_EQ(MSERR_EXT_API9_IO, MSErrorToExtErrorAPI9(code));
527     }
528 }
529 
MediaServiceExtErrCodeAPI9Test(MediaServiceExtErrCodeAPI9 code)530 void PlayerServerUnitTest::MediaServiceExtErrCodeAPI9Test(MediaServiceExtErrCodeAPI9 code)
531 {
532     if (MSEXTERRAPI9CODE_FUNCS.count(code) != 0) {
533         EXPECT_EQ(MSEXTERRAPI9CODE_FUNCS.at(code)("test1", "test2"),
534             MSExtErrorAPI9ToString(code, "test1", "test2"));
535     } else {
536         EXPECT_EQ("invalid error code:" + std::to_string(code), MSExtErrorAPI9ToString(code, "test1", "test2"));
537     }
538 
539     if (MSEXTERRCODE_API9_INFOS.count(code) != 0) {
540         EXPECT_EQ(MSEXTERRCODE_API9_INFOS.at(code), MSExtAVErrorToString(code));
541     } else {
542         EXPECT_EQ("invalid error code:", MSExtAVErrorToString(code));
543     }
544 }
545 
546 /**
547  * @tc.name  : Test Player SetMediaSource API
548  * @tc.number: Player_SetMediaSource_001
549  * @tc.desc  : Test Player SetMediaSource interface
550  */
551 HWTEST_F(PlayerServerUnitTest, Player_SetMediaSource_001, TestSize.Level1)
552 {
553     std::map<std::string, std::string> header = {
554         {"key1", "value1"},
555         {"key2", "value2"},
556     };
557     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
558     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(VIDEO_FILE1, header);
559     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
560     EXPECT_EQ(MSERR_OK, ret);
561 }
562 
563 /**
564  * @tc.name  : Test Player SetMediaSource API
565  * @tc.number: Player_SetMediaSource_002
566  * @tc.desc  : Test Player SetMediaSource interface
567  */
568 HWTEST_F(PlayerServerUnitTest, Player_SetMediaSource_002, TestSize.Level1)
569 {
570     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
571     int32_t ret = player_->SetMediaSource(nullptr, strategy);
572     EXPECT_NE(MSERR_OK, ret);
573 }
574 
575 /**
576  * @tc.name  : Test Player SetMediaSource API
577  * @tc.number: Player_SetMediaSource_003
578  * @tc.desc  : Test Player SetMediaSource interface
579  */
580 HWTEST_F(PlayerServerUnitTest, Player_SetMediaSource_003, TestSize.Level1)
581 {
582     std::map<std::string, std::string> header = {
583         {"key1", "value1"},
584         {"key2", "value2"},
585     };
586     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
587     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
588     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
589     EXPECT_EQ(MSERR_OK, ret);
590     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
591 }
592 
593 /**
594  * @tc.name  : Test Player SetMediaSource API
595  * @tc.number: Player_SetMediaSource_004
596  * @tc.desc  : Test Player SetMediaSource interface
597  */
598 HWTEST_F(PlayerServerUnitTest, Player_SetMediaSource_004, TestSize.Level1)
599 {
600     std::map<std::string, std::string> header = {
601         {"key1", "value1"},
602         {"key2", "value2"},
603     };
604     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
605     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
606     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
607     EXPECT_EQ(MSERR_OK, ret);
608     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
609     EXPECT_NE(MSERR_OK, player_->Prepare());
610 }
611 
612 /**
613  * @tc.name  : Test Player SetMediaSource API
614  * @tc.number: Player_SetMediaSource_005
615  * @tc.desc  : Test Player SetMediaSource interface
616  */
617 HWTEST_F(PlayerServerUnitTest, Player_SetMediaSource_005, TestSize.Level1)
618 {
619     std::map<std::string, std::string> header = {
620         {"key1", "value1"},
621         {"key2", "value2"},
622     };
623     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
624     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
625     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
626     EXPECT_EQ(MSERR_OK, ret);
627     EXPECT_NE(MSERR_OK, player_->Play());
628     EXPECT_EQ(false, player_->IsPlaying());
629 }
630 
631 /**
632  * @tc.name  : Test Player SetMediaSource API
633  * @tc.number: Player_SetMediaSource_006
634  * @tc.desc  : Test Player SetMediaSource interface
635  */
636 HWTEST_F(PlayerServerUnitTest, Player_SetMediaSource_006, TestSize.Level1)
637 {
638     std::map<std::string, std::string> header = {
639     };
640     struct AVPlayStrategy strategy = {1080, 920, 10000, false};
641     std::shared_ptr<AVMediaSource> mediaSource = std::make_shared<AVMediaSource>(MEDIA_ROOT + "error.mp4", header);
642     int32_t ret = player_->SetMediaSource(mediaSource, strategy);
643     EXPECT_EQ(MSERR_OK, ret);
644     EXPECT_NE(MSERR_OK, player_->Play());
645     EXPECT_EQ(false, player_->IsPlaying());
646 }
647 
648 /**
649  * @tc.name  : Test Player StrToInt API
650  * @tc.number: Player_StrToInt_001
651  * @tc.desc  : Test Player StrToInt interface
652  */
653 HWTEST_F(PlayerServerUnitTest, Player_StrToInt_001, TestSize.Level1)
654 {
655     std::string str = "123";
656     int32_t fd = -1;
657     int32_t num = 123;
658     auto res = StrToInt(str, fd);
659     EXPECT_EQ(res, true);
660     EXPECT_EQ(fd, num);
661 }
662 
663 /**
664  * @tc.name  : Test Player StrToInt API
665  * @tc.number: Player_StrToInt_002
666  * @tc.desc  : Test Player StrToInt interface
667  */
668 HWTEST_F(PlayerServerUnitTest, Player_StrToInt_002, TestSize.Level1)
669 {
670     std::string str = "12a3";
671     int32_t fd = -1;
672     auto res = StrToInt(str, fd);
673     EXPECT_EQ(res, false);
674 }
675 
676 /**
677  * @tc.name  : Test Player StrToInt API
678  * @tc.number: Player_StrToInt_003
679  * @tc.desc  : Test Player StrToInt interface
680  */
681 HWTEST_F(PlayerServerUnitTest, Player_StrToInt_003, TestSize.Level1)
682 {
683     std::string str = "9223372036854775809";
684     int32_t fd = -1;
685     auto res = StrToInt(str, fd);
686     EXPECT_EQ(res, false);
687 }
688 
689 /**
690  * @tc.name  : Test Player SetSource API
691  * @tc.number: Player_SetSource_001
692  * @tc.desc  : Test Player SetSource interface
693  */
694 HWTEST_F(PlayerServerUnitTest, Player_SetSource_001, TestSize.Level1)
695 {
696     int32_t ret = player_->SetSource(VIDEO_FILE1);
697     EXPECT_EQ(MSERR_OK, ret);
698 }
699 
700 /**
701  * @tc.name  : Test Player SetSource API
702  * @tc.number: Player_SetSource_002
703  * @tc.desc  : Test Player SetSource interface with invalid path
704  */
705 HWTEST_F(PlayerServerUnitTest, Player_SetSource_002, TestSize.Level1)
706 {
707     int32_t ret = player_->SetSource(MEDIA_ROOT + "kong.mp4");
708     EXPECT_NE(MSERR_OK, ret);
709 }
710 
711 /**
712  * @tc.name  : Test Player SetSource API
713  * @tc.number: Player_SetSource_003
714  * @tc.desc  : Test Player SetSource interface with wrong mp3
715  */
716 HWTEST_F(PlayerServerUnitTest, Player_SetSource_003, TestSize.Level2)
717 {
718     system("param set sys.media.player.buffering.enable TRUE");
719     PlaybackRateMode mode;
720     int32_t time = 0;
721     int32_t duration = 0;
722     float playbackRate = 1.5f;
723     std::vector<Format> videoTrack;
724     std::vector<Format> audioTrack;
725     int32_t ret = player_->SetSource(MEDIA_ROOT + "1kb.mp3");
726     EXPECT_EQ(MSERR_OK, ret);
727     sptr<Surface> videoSurface = player_->GetVideoSurface();
728     ASSERT_NE(nullptr, videoSurface);
729     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
730     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
731     EXPECT_NE(MSERR_OK, player_->Prepare());
732     Format format;
733     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
734         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT));
735     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
736     EXPECT_NE(MSERR_OK, player_->SetVolume(1, 1));
737     EXPECT_NE(MSERR_OK, player_->Play());
738     EXPECT_EQ(false, player_->IsPlaying());
739     EXPECT_NE(MSERR_OK, player_->Pause());
740     EXPECT_NE(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
741     EXPECT_NE(MSERR_OK, player_->SetLooping(true));
742     EXPECT_EQ(false, player_->IsLooping());
743     EXPECT_NE(MSERR_OK, player_->SetVolume(1, 1));
744     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate));
745     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
746     EXPECT_NE(MSERR_OK, player_->GetPlaybackSpeed(mode));
747     EXPECT_NE(MSERR_OK, player_->GetCurrentTime(time));
748     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
749     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
750     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
751     EXPECT_NE(480, player_->GetVideoHeight());
752     EXPECT_NE(720, player_->GetVideoWidth());
753     EXPECT_NE(MSERR_OK, player_->Stop());
754     EXPECT_EQ(MSERR_OK, player_->Reset());
755     system("param set sys.media.player.buffering.enable FALSE");
756 }
757 
758 /**
759  * @tc.name  : Test Player SetSource API
760  * @tc.number: Player_SetSource_004
761  * @tc.desc  : Test Player SetSource interface with txt
762  */
763 HWTEST_F(PlayerServerUnitTest, Player_SetSource_004, TestSize.Level2)
764 {
765     int32_t ret = player_->SetSource(MEDIA_ROOT + "error.mp4");
766     EXPECT_EQ(MSERR_OK, ret);
767     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
768 }
769 
770 /**
771  * @tc.name  : Test Player SetSource
772  * @tc.number: Player_SetSource_005
773  * @tc.desc  : Test Player SetSource interface
774  */
775 HWTEST_F(PlayerServerUnitTest, Player_SetSource_005, TestSize.Level3)
776 {
777     PlaybackRateMode mode;
778     int32_t duration = 0;
779     float playbackRate = 1.5f;
780     std::vector<Format> videoTrack;
781     std::vector<Format> audioTrack;
782     Format format;
783     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
784         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT));
785     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
786     sptr<Surface> videoSurface = player_->GetVideoSurface();
787     ASSERT_NE(nullptr, videoSurface);
788     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
789     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
790     EXPECT_NE(MSERR_OK, player_->Prepare());
791     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
792     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
793     EXPECT_NE(MSERR_OK, player_->Play());
794     EXPECT_NE(MSERR_OK, player_->Pause());
795     EXPECT_NE(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
796     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
797     EXPECT_EQ(true, player_->IsLooping());
798     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
799     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate));
800     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
801     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
802     EXPECT_EQ(SPEED_FORWARD_1_00_X, mode);
803     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
804     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
805     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
806     EXPECT_NE(480, player_->GetVideoHeight());
807     EXPECT_NE(720, player_->GetVideoWidth());
808     EXPECT_NE(MSERR_OK, player_->Stop());
809     EXPECT_NE(MSERR_OK, player_->Reset());
810 }
811 
812 /**
813  * @tc.name  : Test Player SetSource API
814  * @tc.number: Player_SetSource_006
815  * @tc.desc  : Test Player SetSource interface
816  */
817 HWTEST_F(PlayerServerUnitTest, Player_SetSource_006, TestSize.Level2)
818 {
819     int32_t ret = player_->SetSource(VIDEO_FILE1);
820     EXPECT_EQ(MSERR_OK, ret);
821     EXPECT_EQ(MSERR_OK, player_->Reset());
822     EXPECT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
823 }
824 
825 /**
826  * @tc.name  : Test Player SetSource API
827  * @tc.number: Player_SetSource_007
828  * @tc.desc  : Test Player SetSource interface
829  */
830 HWTEST_F(PlayerServerUnitTest, Player_SetSource_007, TestSize.Level2)
831 {
832     EXPECT_NE(MSERR_OK, player_->SetSource(INVALID_FILE));
833 }
834 
835 /**
836  * @tc.name  : Test Player SetSource API
837  * @tc.number: Player_SetSource_009
838  * @tc.desc  : Test Player SetSource interface
839  */
840 HWTEST_F(PlayerServerUnitTest, Player_SetSource_009, TestSize.Level2)
841 {
842     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
843     sptr<Surface> videoSurface = player_->GetVideoSurface();
844     ASSERT_NE(nullptr, videoSurface);
845     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
846     int32_t ret = player_->PrepareAsync();
847     ASSERT_NE(MSERR_OK, player_->SetSource(MEDIA_ROOT + "AVC_Baseline@L1.2_81.0Kbps_320x240.mp4"));
848     if (ret == MSERR_OK) {
849         PlayFunTest(LOCAL_PLAY);
850     }
851 }
852 
853 /**
854  * @tc.name  : Test Player SetSource API
855  * @tc.number: Player_SetSource_012
856  * @tc.desc  : Test Player SetSource interface
857  */
858 HWTEST_F(PlayerServerUnitTest, Player_SetSource_012, TestSize.Level2)
859 {
860     int32_t ret = player_->SetSource(VIDEO_FILE1, 0, 0);
861     ASSERT_EQ(MSERR_OK, ret);
862 }
863 
864 /**
865  * @tc.name  : Test Player Local
866  * @tc.number: Player_Local_001
867  * @tc.desc  : Test Player Local source
868  */
869 HWTEST_F(PlayerServerUnitTest, Player_Local_001, TestSize.Level2)
870 {
871     int32_t ret = player_->SetSource(MEDIA_ROOT + "AVC_Baseline@L1.2_81.0Kbps_320x240.mp4");
872     EXPECT_EQ(MSERR_OK, ret);
873     sptr<Surface> videoSurface = player_->GetVideoSurface();
874     ASSERT_NE(nullptr, videoSurface);
875     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
876     ret = player_->PrepareAsync();
877     if (ret == MSERR_OK) {
878         PlayFunTest(LOCAL_PLAY);
879     }
880 }
881 
882 /**
883  * @tc.name  : Test Player Local
884  * @tc.number: Player_Local_003
885  * @tc.desc  : Test Player Local source
886  */
887 HWTEST_F(PlayerServerUnitTest, Player_Local_003, TestSize.Level2)
888 {
889     int32_t ret = player_->SetSource(MEDIA_ROOT + "H264_MP3.mp4");
890     EXPECT_EQ(MSERR_OK, ret);
891     sptr<Surface> videoSurface = player_->GetVideoSurface();
892     ASSERT_NE(nullptr, videoSurface);
893     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
894     ret = player_->PrepareAsync();
895     if (ret == MSERR_OK) {
896         PlayFunTest(LOCAL_PLAY);
897     }
898 }
899 
900 /**
901  * @tc.name  : Test Player Local
902  * @tc.number: Player_Local_008
903  * @tc.desc  : Test Player Local source
904  */
905 HWTEST_F(PlayerServerUnitTest, Player_Local_008, TestSize.Level2)
906 {
907     int32_t ret = player_->SetSource(MEDIA_ROOT + "out_170_170.mp4");
908     EXPECT_EQ(MSERR_OK, ret);
909     sptr<Surface> videoSurface = player_->GetVideoSurface();
910     ASSERT_NE(nullptr, videoSurface);
911     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
912     ret = player_->PrepareAsync();
913     if (ret == MSERR_OK) {
914         PlayFunTest(LOCAL_PLAY);
915     }
916 }
917 
918 /**
919  * @tc.name  : Test Player Local
920  * @tc.number: Player_Local_009
921  * @tc.desc  : Test Player Local source
922  */
923 HWTEST_F(PlayerServerUnitTest, Player_Local_009, TestSize.Level2)
924 {
925     int32_t ret = player_->SetSource(MEDIA_ROOT + "H264_AAC_320x240.mp4");
926     EXPECT_EQ(MSERR_OK, ret);
927     sptr<Surface> videoSurface = player_->GetVideoSurface();
928     ASSERT_NE(nullptr, videoSurface);
929     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
930     ret = player_->PrepareAsync();
931     if (ret == MSERR_OK) {
932         PlayFunTest(LOCAL_PLAY);
933     }
934 }
935 
936 /**
937  * @tc.name  : Test Player Local
938  * @tc.number: Player_Local_010
939  * @tc.desc  : Test Player Local source
940  */
941 HWTEST_F(PlayerServerUnitTest, Player_Local_010, TestSize.Level2)
942 {
943     int32_t ret = player_->SetSource(MEDIA_ROOT + "aac_44100Hz_143kbs_stereo.aac");
944     EXPECT_EQ(MSERR_OK, ret);
945     sptr<Surface> videoSurface = player_->GetVideoSurface();
946     ASSERT_NE(nullptr, videoSurface);
947     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
948     ret = player_->PrepareAsync();
949     if (ret == MSERR_OK) {
950         PlayFunTest(LOCAL_PLAY);
951     }
952 }
953 
954 /**
955  * @tc.name  : Test Player Local
956  * @tc.number: Player_Local_011
957  * @tc.desc  : Test Player Local source
958  */
959 HWTEST_F(PlayerServerUnitTest, Player_Local_011, TestSize.Level2)
960 {
961     int32_t ret = player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3");
962     EXPECT_EQ(MSERR_OK, ret);
963     sptr<Surface> videoSurface = player_->GetVideoSurface();
964     ASSERT_NE(nullptr, videoSurface);
965     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
966     ret = player_->PrepareAsync();
967     if (ret == MSERR_OK) {
968         PlayFunTest(LOCAL_PLAY);
969     }
970 }
971 
972 /**
973  * @tc.name  : Test Player Local
974  * @tc.number: Player_Local_013
975  * @tc.desc  : Test Player Local source
976  */
977 HWTEST_F(PlayerServerUnitTest, Player_Local_013, TestSize.Level2)
978 {
979     int32_t ret = player_->SetSource(MEDIA_ROOT + "pcm_s16le_48000Hz_768kbs_mono.wav");
980     EXPECT_EQ(MSERR_OK, ret);
981     sptr<Surface> videoSurface = player_->GetVideoSurface();
982     ASSERT_NE(nullptr, videoSurface);
983     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
984     ret = player_->PrepareAsync();
985     if (ret == MSERR_OK) {
986         PlayFunTest(LOCAL_PLAY);
987     }
988 }
989 
990 /**
991  * @tc.name  : Test Player Local
992  * @tc.number: Player_Local_014
993  * @tc.desc  : Test Player Local source
994  */
995 HWTEST_F(PlayerServerUnitTest, Player_Local_014, TestSize.Level2)
996 {
997     int32_t ret = player_->SetSource(MEDIA_ROOT + "vorbis_48000Hz_80kbs_mono.ogg");
998     EXPECT_EQ(MSERR_OK, ret);
999     sptr<Surface> videoSurface = player_->GetVideoSurface();
1000     ASSERT_NE(nullptr, videoSurface);
1001     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1002     ret = player_->PrepareAsync();
1003     if (ret == MSERR_OK) {
1004         PlayFunTest(LOCAL_PLAY);
1005     }
1006 }
1007 
1008 /**
1009  * @tc.name  : Test Player Local
1010  * @tc.number: Player_Local_015
1011  * @tc.desc  : Test Player Local source
1012  */
1013 HWTEST_F(PlayerServerUnitTest, Player_Local_015, TestSize.Level2)
1014 {
1015     int32_t ret = player_->SetSource(MEDIA_ROOT + "aac_48000Hz_70kbs_mono.m4a");
1016     EXPECT_EQ(MSERR_OK, ret);
1017     sptr<Surface> videoSurface = player_->GetVideoSurface();
1018     ASSERT_NE(nullptr, videoSurface);
1019     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1020     ret = player_->PrepareAsync();
1021     if (ret == MSERR_OK) {
1022         PlayFunTest(LOCAL_PLAY);
1023     }
1024 }
1025 
1026 #ifdef SUBSCRIBE_HISTREAMER_EXT
1027 /**
1028  * @tc.name  : Test Player Local
1029  * @tc.number: Player_Local_016
1030  * @tc.desc  : Test Player Local source
1031  */
1032 HWTEST_F(PlayerServerUnitTest, Player_Local_016, TestSize.Level2)
1033 {
1034     int32_t ret = player_->SetSource(MEDIA_ROOT + "H265_AAC.mp4");
1035     EXPECT_EQ(MSERR_OK, ret);
1036     sptr<Surface> videoSurface = player_->GetVideoSurface();
1037     ASSERT_NE(nullptr, videoSurface);
1038     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1039     ret = player_->PrepareAsync();
1040     if (ret == MSERR_OK) {
1041         PlayFunTest(LOCAL_PLAY);
1042     }
1043 }
1044 #endif
1045 
1046 /**
1047  * @tc.name  : Test Player Local
1048  * @tc.number: Player_Local_017
1049  * @tc.desc  : Test Player Local source
1050  */
1051 HWTEST_F(PlayerServerUnitTest, Player_Local_017, TestSize.Level2)
1052 {
1053     int32_t ret = player_->SetSource(MEDIA_ROOT + "amr_nb_8ksr_7400kbr_1ch.amr");
1054     EXPECT_EQ(MSERR_OK, ret);
1055     sptr<Surface> videoSurface = player_->GetVideoSurface();
1056     ASSERT_NE(nullptr, videoSurface);
1057     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1058     ret = player_->PrepareAsync();
1059     if (ret == MSERR_OK) {
1060         PlayFunTest(LOCAL_PLAY);
1061     }
1062 }
1063 
1064 /**
1065  * @tc.name  : Test Player SetPlayerCallback API
1066  * @tc.number: Player_SetPlayerCallback_001
1067  * @tc.desc  : Test Player SetPlayerCallback interface
1068  */
1069 HWTEST_F(PlayerServerUnitTest, Player_SetPlayerCallback_001, TestSize.Level1)
1070 {
1071     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1072     sptr<Surface> videoSurface = player_->GetVideoSurface();
1073     ASSERT_NE(nullptr, videoSurface);
1074     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1075     EXPECT_EQ(MSERR_OK, player_->Prepare());
1076     std::shared_ptr<PlayerCallbackTest> callback = std::make_shared<PlayerCallbackTest>();
1077     ASSERT_NE(nullptr, callback);
1078     EXPECT_NE(MSERR_OK, player_->SetPlayerCallback(callback));
1079     player_->Reset();
1080     player_->SetPlayerCallback(callback);
1081 }
1082 
1083 /**
1084  * @tc.name  : Test Player Prepare API
1085  * @tc.number: Player_Prepare_001
1086  * @tc.desc  : Test Player Prepare interface
1087  */
1088 HWTEST_F(PlayerServerUnitTest, Player_Prepare_001, TestSize.Level1)
1089 {
1090     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1091     sptr<Surface> videoSurface = player_->GetVideoSurface();
1092     ASSERT_NE(nullptr, videoSurface);
1093     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1094     EXPECT_EQ(MSERR_OK, player_->Prepare());
1095 }
1096 
1097 /**
1098  * @tc.name  : Test Player Prepare API
1099  * @tc.number: Player_Prepare_002
1100  * @tc.desc  : Test Player Prepare->Prepare
1101  */
1102 HWTEST_F(PlayerServerUnitTest, Player_Prepare_002, TestSize.Level2)
1103 {
1104     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1105     sptr<Surface> videoSurface = player_->GetVideoSurface();
1106     ASSERT_NE(nullptr, videoSurface);
1107     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1108     EXPECT_EQ(MSERR_OK, player_->Prepare());
1109     EXPECT_NE(MSERR_OK, player_->Prepare());
1110 }
1111 
1112 /**
1113  * @tc.name  : Test Player Prepare API
1114  * @tc.number: Player_Prepare_003
1115  * @tc.desc  : Test Player SetVolume/SetLooping/SetPlaybackSpeed->Prepare
1116  */
1117 HWTEST_F(PlayerServerUnitTest, Player_Prepare_003, TestSize.Level2)
1118 {
1119     float playbackRate = 1.5f;
1120     PlaybackRateMode rateMode;
1121     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1122     sptr<Surface> renderSurface = player_->GetVideoSurface();
1123     ASSERT_NE(nullptr, renderSurface);
1124     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(renderSurface));
1125     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
1126     bool ret = player_->IsLooping();
1127     EXPECT_EQ(true, ret);
1128     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1129     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate));
1130     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1131     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(rateMode));
1132     EXPECT_NE(SPEED_FORWARD_2_00_X, rateMode);
1133     EXPECT_EQ(MSERR_OK, player_->Prepare());
1134     EXPECT_EQ(true, player_->IsLooping());
1135     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(rateMode));
1136     EXPECT_NE(SPEED_FORWARD_2_00_X, rateMode);
1137 }
1138 
1139 /**
1140  * @tc.name  : Test Player Prepare API
1141  * @tc.number: Player_Prepare_004
1142  * @tc.desc  : Test Player Stop->Prepare
1143  */
1144 HWTEST_F(PlayerServerUnitTest, Player_Prepare_004, TestSize.Level2)
1145 {
1146     float playbackRate = 1.5f;
1147     PlaybackRateMode mode;
1148     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1149     sptr<Surface> videoSurface = player_->GetVideoSurface();
1150     ASSERT_NE(nullptr, videoSurface);
1151     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1152     EXPECT_EQ(MSERR_OK, player_->Prepare());
1153     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
1154     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1155     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate));
1156     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1157     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1158     EXPECT_EQ(mode, SPEED_FORWARD_2_00_X);
1159     EXPECT_EQ(MSERR_OK, player_->Stop());
1160     EXPECT_EQ(MSERR_OK, player_->Prepare());
1161     EXPECT_EQ(true, player_->IsLooping());
1162     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1163     EXPECT_EQ(mode, SPEED_FORWARD_2_00_X);
1164 }
1165 
1166 /**
1167  * @tc.name  : Test Player Prepare API
1168  * @tc.number: Player_Prepare_005
1169  * @tc.desc  : Test Player Play->Prepare
1170  */
1171 HWTEST_F(PlayerServerUnitTest, Player_Prepare_005, TestSize.Level2)
1172 {
1173     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1174     sptr<Surface> videoSurface = player_->GetVideoSurface();
1175     ASSERT_NE(nullptr, videoSurface);
1176     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1177     EXPECT_EQ(MSERR_OK, player_->Prepare());
1178     EXPECT_EQ(MSERR_OK, player_->Play());
1179     EXPECT_NE(MSERR_OK, player_->Prepare());
1180 }
1181 
1182 /**
1183  * @tc.name  : Test Player PrepareAsync API
1184  * @tc.number: Player_PrepareAsync_001
1185  * @tc.desc  : Test Player PrepareAsync interface
1186  */
1187 HWTEST_F(PlayerServerUnitTest, Player_PrepareAsync_001, TestSize.Level1)
1188 {
1189     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1190     sptr<Surface> videoSurface = player_->GetVideoSurface();
1191     ASSERT_NE(nullptr, videoSurface);
1192     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1193     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1194 }
1195 
1196 /**
1197  * @tc.name  : Test Player PrepareAsync API
1198  * @tc.number: Player_PrepareAsync_002
1199  * @tc.desc  : Test Player PrepareAsync->PrepareAsync
1200  */
1201 HWTEST_F(PlayerServerUnitTest, Player_PrepareAsync_002, TestSize.Level2)
1202 {
1203     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1204     sptr<Surface> videoSurface = player_->GetVideoSurface();
1205     ASSERT_NE(nullptr, videoSurface);
1206     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1207     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1208     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
1209 }
1210 
1211 /**
1212  * @tc.name  : Test Player PrepareAsync API
1213  * @tc.number: Player_PrepareAsync_003
1214  * @tc.desc  : Test Player SetVolume/SetLooping/SetPlaybackSpeed->PrepareAsync
1215  */
1216 HWTEST_F(PlayerServerUnitTest, Player_PrepareAsync_003, TestSize.Level2)
1217 {
1218     PlaybackRateMode mode;
1219     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1220     sptr<Surface> videoSurface = player_->GetVideoSurface();
1221     ASSERT_NE(nullptr, videoSurface);
1222     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1223     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
1224     EXPECT_EQ(true, player_->IsLooping());
1225     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1226     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
1227     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1228     EXPECT_NE(SPEED_FORWARD_2_00_X, mode);
1229     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1230     EXPECT_EQ(true, player_->IsLooping());
1231     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
1232     EXPECT_NE(SPEED_FORWARD_2_00_X, mode);
1233 }
1234 
1235 /**
1236  * @tc.name  : Test Player PrepareAsync API
1237  * @tc.number: Player_PrepareAsync1_003
1238  * @tc.desc  : Test Player SetVolume/SetLooping/SetPlaybackRate->PrepareAsync
1239  */
1240 HWTEST_F(PlayerServerUnitTest, Player_PrepareAsync1_003, TestSize.Level2)
1241 {
1242     float playbackRate = 2.0f;
1243     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1244     sptr<Surface> videoSurface = player_->GetVideoSurface();
1245     ASSERT_NE(nullptr, videoSurface);
1246     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1247     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
1248     EXPECT_EQ(true, player_->IsLooping());
1249     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1250     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate));
1251     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1252     EXPECT_EQ(true, player_->IsLooping());
1253 }
1254 
1255 /**
1256  * @tc.name  : Test Player PrepareAsync API
1257  * @tc.number: Player_PrepareAsync_004
1258  * @tc.desc  : Test Player Stop->PrepareAsync
1259  */
1260 HWTEST_F(PlayerServerUnitTest, Player_PrepareAsync_004, TestSize.Level2)
1261 {
1262     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1263     sptr<Surface> videoSurface = player_->GetVideoSurface();
1264     ASSERT_NE(nullptr, videoSurface);
1265     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1266     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1267     EXPECT_EQ(MSERR_OK, player_->Stop());
1268     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1269 }
1270 
1271 /**
1272  * @tc.name  : Test Player PrepareAsync API
1273  * @tc.number: Player_PrepareAsync_005
1274  * @tc.desc  : Test Player Play->PrepareAsync
1275  */
1276 HWTEST_F(PlayerServerUnitTest, Player_PrepareAsync_005, TestSize.Level2)
1277 {
1278     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1279     sptr<Surface> videoSurface = player_->GetVideoSurface();
1280     ASSERT_NE(nullptr, videoSurface);
1281     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1282     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1283     EXPECT_EQ(MSERR_OK, player_->Play());
1284     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
1285 }
1286 
1287 /**
1288  * @tc.name  : Test Player PrepareAsync API
1289  * @tc.number: Player_PrepareAsync_006
1290  * @tc.desc  : Test Player Play->PrepareAsync
1291  */
1292 HWTEST_F(PlayerServerUnitTest, Player_PrepareAsync_006, TestSize.Level2)
1293 {
1294     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC_DRM.ts"));
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_->PrepareAsync());
1299 }
1300 
1301 /**
1302  * @tc.name  : Test Player SetVideoSurface API
1303  * @tc.number: Player_SetVideoSurface_001
1304  * @tc.desc  : Test Player SetVideoSurface interface
1305  */
1306 HWTEST_F(PlayerServerUnitTest, Player_SetVideoSurface_001, TestSize.Level1)
1307 {
1308     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1309     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(player_->GetVideoSurface()));
1310 }
1311 
1312 /**
1313  * @tc.name  : Test Player SetVideoSurface API
1314  * @tc.number: Player_SetVideoSurface_002
1315  * @tc.desc  : Test Player PrepareAsync->SetVideoSurface
1316  */
1317 HWTEST_F(PlayerServerUnitTest, Player_SetVideoSurface_002, TestSize.Level2)
1318 {
1319     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1320     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1321     sptr<Surface> videoSurface = player_->GetVideoSurface();
1322     ASSERT_NE(nullptr, videoSurface);
1323     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
1324 }
1325 
1326 /**
1327  * @tc.name  : Test Player SetVideoSurface API
1328  * @tc.number: Player_SetVideoSurface_003
1329  * @tc.desc  : Test Player SetVideoSurface interface
1330  */
1331 HWTEST_F(PlayerServerUnitTest, Player_SetVideoSurface_003, TestSize.Level1)
1332 {
1333     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1334     EXPECT_EQ(MSERR_OK, player_->Prepare());
1335     sptr<Surface> videoSurface = player_->GetVideoSurface();
1336     ASSERT_NE(nullptr, videoSurface);
1337     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
1338 }
1339 
1340 /**
1341  * @tc.name  : Test Player Play API
1342  * @tc.number: Player_Play_001
1343  * @tc.desc  : Test Player Play interface
1344  */
1345 HWTEST_F(PlayerServerUnitTest, Player_Play_001, TestSize.Level1)
1346 {
1347     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1348     sptr<Surface> videoSurface = player_->GetVideoSurface();
1349     ASSERT_NE(nullptr, videoSurface);
1350     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1351     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1352     EXPECT_EQ(MSERR_OK, player_->Play());
1353     EXPECT_TRUE(player_->IsPlaying());
1354     EXPECT_EQ(MSERR_OK, player_->Pause());
1355     EXPECT_EQ(MSERR_OK, player_->Play());
1356 }
1357 
1358 /**
1359  * @tc.name  : Test Player Play API
1360  * @tc.number: Player_Play_002
1361  * @tc.desc  : Test Player Reset->Play
1362  */
1363 HWTEST_F(PlayerServerUnitTest, Player_Play_002, TestSize.Level2)
1364 {
1365     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1366     sptr<Surface> videoSurface = player_->GetVideoSurface();
1367     ASSERT_NE(nullptr, videoSurface);
1368     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1369     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1370     EXPECT_EQ(MSERR_OK, player_->Play());
1371     EXPECT_TRUE(player_->IsPlaying());
1372     EXPECT_EQ(MSERR_OK, player_->Reset());
1373     EXPECT_NE(MSERR_OK, player_->Play());
1374 }
1375 
1376 /**
1377  * @tc.name  : Test Player Play API
1378  * @tc.number: Player_Play_003
1379  * @tc.desc  : Test Player complete->Play
1380  */
1381 HWTEST_F(PlayerServerUnitTest, Player_Play_003, TestSize.Level2)
1382 {
1383     int32_t duration = 0;
1384     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1385     sptr<Surface> videoSurface = player_->GetVideoSurface();
1386     ASSERT_NE(nullptr, videoSurface);
1387     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1388     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1389     EXPECT_EQ(MSERR_OK, player_->Play());
1390     EXPECT_TRUE(player_->IsPlaying());
1391     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1392     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1393     sleep(PLAYING_TIME_2_SEC);
1394     EXPECT_EQ(MSERR_OK, player_->Play());
1395 }
1396 
1397 /**
1398  * @tc.name  : Test Player Play API
1399  * @tc.number: Player_Play_004
1400  * @tc.desc  : Test Player Play->Play
1401  */
1402 HWTEST_F(PlayerServerUnitTest, Player_Play_004, TestSize.Level2)
1403 {
1404     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1405     sptr<Surface> videoSurface = player_->GetVideoSurface();
1406     ASSERT_NE(nullptr, videoSurface);
1407     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1408     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
1409     EXPECT_EQ(MSERR_OK, player_->Play());
1410     EXPECT_TRUE(player_->IsPlaying());
1411     EXPECT_NE(MSERR_OK, player_->Play());
1412 }
1413 
1414 /**
1415  * @tc.name  : Test Player Stop API
1416  * @tc.number: Player_Stop_001
1417  * @tc.desc  : Test Player Stop Play->Stop
1418  */
1419 HWTEST_F(PlayerServerUnitTest, Player_Stop_001, TestSize.Level1)
1420 {
1421     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1422     sptr<Surface> videoSurface = player_->GetVideoSurface();
1423     ASSERT_NE(nullptr, videoSurface);
1424     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1425     EXPECT_EQ(MSERR_OK, player_->Prepare());
1426     EXPECT_EQ(MSERR_OK, player_->Play());
1427     EXPECT_TRUE(player_->IsPlaying());
1428     EXPECT_EQ(MSERR_OK, player_->Stop());
1429 }
1430 
1431 /**
1432  * @tc.name  : Test Player Stop API
1433  * @tc.number: Player_Stop_002
1434  * @tc.desc  : Test Player Stop Prepare->Stop
1435  */
1436 HWTEST_F(PlayerServerUnitTest, Player_Stop_002, TestSize.Level2)
1437 {
1438     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1439     sptr<Surface> videoSurface = player_->GetVideoSurface();
1440     ASSERT_NE(nullptr, videoSurface);
1441     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1442     EXPECT_EQ(MSERR_OK, player_->Prepare());
1443     EXPECT_EQ(MSERR_OK, player_->Stop());
1444 }
1445 
1446 /**
1447  * @tc.name  : Test Player Stop API
1448  * @tc.number: Player_Stop_003
1449  * @tc.desc  : Test Player Stop complete/stop->Stop
1450  */
1451 HWTEST_F(PlayerServerUnitTest, Player_Stop_003, TestSize.Level2)
1452 {
1453     int32_t duration = 0;
1454     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1455     sptr<Surface> videoSurface = player_->GetVideoSurface();
1456     ASSERT_NE(nullptr, videoSurface);
1457     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1458     EXPECT_EQ(MSERR_OK, player_->Prepare());
1459     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1460     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1461     sleep(PLAYING_TIME_2_SEC);
1462     EXPECT_EQ(MSERR_OK, player_->Stop());
1463     EXPECT_NE(MSERR_OK, player_->Stop());
1464 }
1465 
1466 /**
1467  * @tc.name  : Test Player Stop API
1468  * @tc.number: Player_Stop_004
1469  * @tc.desc  : Test Player Stop Reset->Stop
1470  */
1471 HWTEST_F(PlayerServerUnitTest, Player_Stop_004, TestSize.Level2)
1472 {
1473     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1474     sptr<Surface> videoSurface = player_->GetVideoSurface();
1475     ASSERT_NE(nullptr, videoSurface);
1476     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1477     EXPECT_EQ(MSERR_OK, player_->Prepare());
1478     EXPECT_EQ(MSERR_OK, player_->Play());
1479     EXPECT_EQ(MSERR_OK, player_->Reset());
1480     EXPECT_NE(MSERR_OK, player_->Stop());
1481 }
1482 
1483 /**
1484  * @tc.name  : Test Player Stop API
1485  * @tc.number: Player_Stop_005
1486  * @tc.desc  : Test Player Reset->Stop
1487  */
1488 HWTEST_F(PlayerServerUnitTest, Player_Stop_005, TestSize.Level2)
1489 {
1490     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
1491     sptr<Surface> videoSurface = player_->GetVideoSurface();
1492     ASSERT_NE(nullptr, videoSurface);
1493     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1494     EXPECT_EQ(MSERR_OK, player_->Prepare());
1495     EXPECT_EQ(MSERR_OK, player_->Play());
1496     EXPECT_TRUE(player_->IsPlaying());
1497     EXPECT_EQ(MSERR_OK, player_->Reset());
1498     EXPECT_NE(MSERR_OK, player_->Stop());
1499 }
1500 
1501 /**
1502  * @tc.name  : Test Player Pause API
1503  * @tc.number: Player_Pause_001
1504  * @tc.desc  : Test Player Pause interface
1505  */
1506 HWTEST_F(PlayerServerUnitTest, Player_Pause_001, TestSize.Level1)
1507 {
1508     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1509     sptr<Surface> videoSurface = player_->GetVideoSurface();
1510     ASSERT_NE(nullptr, videoSurface);
1511     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1512     EXPECT_EQ(MSERR_OK, player_->Prepare());
1513     EXPECT_EQ(MSERR_OK, player_->Play());
1514     EXPECT_TRUE(player_->IsPlaying());
1515     EXPECT_EQ(MSERR_OK, player_->Pause());
1516     EXPECT_FALSE(player_->IsPlaying());
1517     EXPECT_EQ(MSERR_OK, player_->Pause());
1518 }
1519 
1520 /**
1521  * @tc.name  : Test Player Pause API
1522  * @tc.number: Player_Pause_002
1523  * @tc.desc  : Test Player Pause interface
1524  */
1525 HWTEST_F(PlayerServerUnitTest, Player_Pause_002, TestSize.Level2)
1526 {
1527     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1528     sptr<Surface> videoSurface = player_->GetVideoSurface();
1529     ASSERT_NE(nullptr, videoSurface);
1530     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1531     EXPECT_EQ(MSERR_OK, player_->Prepare());
1532     EXPECT_NE(MSERR_OK, player_->Pause());
1533 }
1534 
1535 /**
1536  * @tc.name  : Test Player Pause API
1537  * @tc.number: Player_Pause_003
1538  * @tc.desc  : Test Player Pause interface, Stop -> Pause
1539  */
1540 HWTEST_F(PlayerServerUnitTest, Player_Pause_003, TestSize.Level2)
1541 {
1542     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1543     sptr<Surface> videoSurface = player_->GetVideoSurface();
1544     ASSERT_NE(nullptr, videoSurface);
1545     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1546     EXPECT_EQ(MSERR_OK, player_->Prepare());
1547     EXPECT_EQ(MSERR_OK, player_->Stop());
1548     EXPECT_NE(MSERR_OK, player_->Pause());
1549 }
1550 
1551 /**
1552  * @tc.name  : Test Player Reset API
1553  * @tc.number: Player_Reset_001
1554  * @tc.desc  : Test Player Reset interface
1555  */
1556 HWTEST_F(PlayerServerUnitTest, Player_Reset_001, TestSize.Level1)
1557 {
1558     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1559     sptr<Surface> videoSurface = player_->GetVideoSurface();
1560     ASSERT_NE(nullptr, videoSurface);
1561     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1562     EXPECT_EQ(MSERR_OK, player_->Prepare());
1563     EXPECT_EQ(MSERR_OK, player_->Reset());
1564     EXPECT_NE(MSERR_OK, player_->Reset());
1565 }
1566 
1567 /**
1568  * @tc.name  : Test Player Seek API
1569  * @tc.number: Player_Seek_001
1570  * @tc.desc  : Test Player Seek interface with valid parameters
1571  */
1572 HWTEST_F(PlayerServerUnitTest, Player_Seek_001, TestSize.Level1)
1573 {
1574     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1575     sptr<Surface> videoSurface = player_->GetVideoSurface();
1576     ASSERT_NE(nullptr, videoSurface);
1577     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1578     EXPECT_EQ(MSERR_OK, player_->Prepare());
1579     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_4_SEC, SEEK_NEXT_SYNC));
1580     EXPECT_EQ(MSERR_OK, player_->Play());
1581     EXPECT_TRUE(player_->IsPlaying());
1582     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_4_SEC, SEEK_CLOSEST));
1583     int32_t time = 0;
1584     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
1585     EXPECT_NEAR(SEEK_TIME_4_SEC, time, DELTA_TIME);
1586     EXPECT_EQ(MSERR_OK, player_->Pause());
1587     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_4_SEC, SEEK_NEXT_SYNC));
1588 }
1589 
1590 /**
1591  * @tc.name  : Test Player Seek API
1592  * @tc.number: Player_Seek_002
1593  * @tc.desc  : Test Player Seek interface with seek mode
1594  */
1595 HWTEST_F(PlayerServerUnitTest, Player_Seek_002, TestSize.Level1)
1596 {
1597     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1598     sptr<Surface> videoSurface = player_->GetVideoSurface();
1599     ASSERT_NE(nullptr, videoSurface);
1600     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1601     EXPECT_EQ(MSERR_OK, player_->Prepare());
1602     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_NEXT_SYNC));
1603     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_PREVIOUS_SYNC));
1604     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_CLOSEST_SYNC));
1605     EXPECT_EQ(MSERR_OK, player_->Play());
1606     EXPECT_TRUE(player_->IsPlaying());
1607     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1608     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1609     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST_SYNC));
1610     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, (PlayerSeekMode)5));
1611 }
1612 
1613 /**
1614  * @tc.name  : Test Player Seek API
1615  * @tc.number: Player_Seek_002
1616  * @tc.desc  : Test Player Seek out of duration
1617  */
1618 HWTEST_F(PlayerServerUnitTest, Player_Seek_003, TestSize.Level2)
1619 {
1620     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1621     sptr<Surface> videoSurface = player_->GetVideoSurface();
1622     ASSERT_NE(nullptr, videoSurface);
1623     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1624     EXPECT_EQ(MSERR_OK, player_->Prepare());
1625     EXPECT_EQ(MSERR_OK, player_->Play());
1626     EXPECT_TRUE(player_->IsPlaying());
1627     EXPECT_EQ(MSERR_OK, player_->Seek(1000000, SEEK_NEXT_SYNC));
1628 }
1629 
1630 /**
1631  * @tc.name  : Test Seek API
1632  * @tc.number: Player_Seek_004
1633  * @tc.desc  : Test Player Seek
1634  */
1635 HWTEST_F(PlayerServerUnitTest, Player_Seek_004, TestSize.Level2)
1636 {
1637     int32_t duration = 0;
1638     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1639     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1640     sptr<Surface> videoSurface = player_->GetVideoSurface();
1641     ASSERT_NE(nullptr, videoSurface);
1642     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1643     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1644     EXPECT_EQ(MSERR_OK, player_->Prepare());
1645     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1646     EXPECT_EQ(MSERR_OK, player_->Play());
1647     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1648     EXPECT_EQ(MSERR_OK, player_->Pause());
1649     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1650     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1651     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1652     EXPECT_EQ(MSERR_OK, player_->Play());
1653     sleep(PLAYING_TIME_2_SEC);
1654     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1655     EXPECT_EQ(MSERR_OK, player_->Stop());
1656     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1657     EXPECT_EQ(MSERR_OK, player_->Reset());
1658     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1659 }
1660 
1661 /**
1662  * @tc.name  : Test Player Seek API
1663  * @tc.number: Player_Seek_005
1664  * @tc.desc  : Test Player Seek interface
1665  */
1666 HWTEST_F(PlayerServerUnitTest, Player_Seek_005, TestSize.Level1)
1667 {
1668     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1669     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1670     sptr<Surface> videoSurface = player_->GetVideoSurface();
1671     ASSERT_NE(nullptr, videoSurface);
1672     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1673     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1674     EXPECT_EQ(MSERR_OK, player_->Prepare());
1675     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1676 }
1677 
1678 /**
1679  * @tc.name  : Test Player Seek API
1680  * @tc.number: Player_Seek_006
1681  * @tc.desc  : Test Player Seek interface
1682  */
1683 HWTEST_F(PlayerServerUnitTest, Player_Seek_006, TestSize.Level1)
1684 {
1685     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1686     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1687     sptr<Surface> videoSurface = player_->GetVideoSurface();
1688     ASSERT_NE(nullptr, videoSurface);
1689     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1690     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1691     EXPECT_EQ(MSERR_OK, player_->Prepare());
1692     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1693 }
1694 
1695 /**
1696  * @tc.name  : Test Player Seek API
1697  * @tc.number: Player_Seek_007
1698  * @tc.desc  : Test Player Seek interface
1699  */
1700 HWTEST_F(PlayerServerUnitTest, Player_Seek_007, TestSize.Level1)
1701 {
1702     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1703     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1704     sptr<Surface> videoSurface = player_->GetVideoSurface();
1705     ASSERT_NE(nullptr, videoSurface);
1706     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1707     EXPECT_NE(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1708     EXPECT_EQ(MSERR_OK, player_->Prepare());
1709     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1710 }
1711 
1712 /**
1713  * @tc.name  : Test Player Seek API
1714  * @tc.number: Player_Seek_008
1715  * @tc.desc  : Test Player Seek interface
1716  */
1717 HWTEST_F(PlayerServerUnitTest, Player_Seek_008, TestSize.Level1)
1718 {
1719     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1720     sptr<Surface> videoSurface = player_->GetVideoSurface();
1721     ASSERT_NE(nullptr, videoSurface);
1722     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1723     EXPECT_EQ(MSERR_OK, player_->Prepare());
1724     EXPECT_EQ(MSERR_OK, player_->Play());
1725     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
1726     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1727     int32_t duration = 0;
1728     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1729     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1730     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
1731     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_CLOSEST));
1732 }
1733 
1734 /**
1735  * @tc.name  : Test Player Seek API
1736  * @tc.number: Player_Seek_009
1737  * @tc.desc  : Test Player Seek interface
1738  */
1739 HWTEST_F(PlayerServerUnitTest, Player_Seek_009, TestSize.Level1)
1740 {
1741     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1742     sptr<Surface> videoSurface = player_->GetVideoSurface();
1743     ASSERT_NE(nullptr, videoSurface);
1744     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1745     EXPECT_EQ(MSERR_OK, player_->Prepare());
1746     EXPECT_EQ(MSERR_OK, player_->Play());
1747     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_PREVIOUS_SYNC));
1748     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1749     int32_t duration = 0;
1750     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1751     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_PREVIOUS_SYNC));
1752     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_PREVIOUS_SYNC));
1753     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_PREVIOUS_SYNC));
1754 }
1755 
1756 /**
1757  * @tc.name  : Test Player Seek API
1758  * @tc.number: Player_Seek_010
1759  * @tc.desc  : Test Player Seek interface
1760  */
1761 HWTEST_F(PlayerServerUnitTest, Player_Seek_010, TestSize.Level1)
1762 {
1763     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1764     sptr<Surface> videoSurface = player_->GetVideoSurface();
1765     ASSERT_NE(nullptr, videoSurface);
1766     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1767     EXPECT_EQ(MSERR_OK, player_->Prepare());
1768     EXPECT_EQ(MSERR_OK, player_->Play());
1769     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_NEXT_SYNC));
1770     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1771     int32_t duration = 0;
1772     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1773     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
1774     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_NEXT_SYNC));
1775     EXPECT_EQ(MSERR_OK, player_->Seek(0, SEEK_NEXT_SYNC));
1776 }
1777 
1778 /**
1779  * @tc.name  : Test GetVideoTrackInfo API
1780  * @tc.number: Player_GetVideoTrackInfo_001
1781  * @tc.desc  : Test Player GetVideoTrackInfo
1782  */
1783 HWTEST_F(PlayerServerUnitTest, Player_GetVideoTrackInfo_001, TestSize.Level1)
1784 {
1785     std::vector<Format> videoTrack;
1786     std::vector<Format> audioTrack;
1787     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1788     sptr<Surface> videoSurface = player_->GetVideoSurface();
1789     ASSERT_NE(nullptr, videoSurface);
1790     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1791     EXPECT_EQ(MSERR_OK, player_->Prepare());
1792     EXPECT_EQ(MSERR_OK, player_->Play());
1793     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1794     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1795 }
1796 
1797 /**
1798  * @tc.name  : Test GetVideoTrackInfo API
1799  * @tc.number: Player_GetVideoTrackInfo_002
1800  * @tc.desc  : Test Player GetVideoTrackInfo
1801  */
1802 HWTEST_F(PlayerServerUnitTest, Player_GetVideoTrackInfo_002, TestSize.Level2)
1803 {
1804     std::vector<Format> videoTrack;
1805     std::vector<Format> audioTrack;
1806     int32_t duration = 0;
1807     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1808     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1809     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1810     sptr<Surface> videoSurface = player_->GetVideoSurface();
1811     ASSERT_NE(nullptr, videoSurface);
1812     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1813     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1814     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1815     EXPECT_EQ(MSERR_OK, player_->Prepare());
1816     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1817     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1818     EXPECT_EQ(MSERR_OK, player_->Play());
1819     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1820     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1821     EXPECT_EQ(MSERR_OK, player_->Pause());
1822     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1823     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1824     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1825     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1826     EXPECT_EQ(MSERR_OK, player_->Play());
1827     sleep(PLAYING_TIME_2_SEC);
1828     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1829     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1830     EXPECT_EQ(MSERR_OK, player_->Stop());
1831     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1832     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1833     EXPECT_EQ(MSERR_OK, player_->Reset());
1834     EXPECT_NE(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
1835     EXPECT_NE(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1836 }
1837 
1838 /**
1839  * @tc.name  : Test GetAudioTrackInfo API
1840  * @tc.number: Player_GetAudioTrackInfo_001
1841  * @tc.desc  : Test Player GetAudioTrackInfo
1842  */
1843 HWTEST_F(PlayerServerUnitTest, Player_GetAudioTrackInfo_001, TestSize.Level2)
1844 {
1845     std::vector<Format> audioTrack;
1846     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1847     EXPECT_EQ(MSERR_OK, player_->Prepare());
1848     EXPECT_EQ(MSERR_OK, player_->Play());
1849     sleep(PLAYING_TIME_2_SEC);
1850     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1851     EXPECT_EQ(1, audioTrack.size());
1852     Format audioTrackFormat = audioTrack.front();
1853     int32_t sampleDepth;
1854     audioTrackFormat.GetIntValue("sample_depth", sampleDepth);
1855     EXPECT_EQ(16, sampleDepth);
1856 }
1857 
1858 /**
1859  * @tc.name  : Test SelectTrack and DeselectTrack API
1860  * @tc.number: Player_SelectTrack_001
1861  * @tc.desc  : Test Player SelectTrack and DeselectTrack
1862  */
1863 HWTEST_F(PlayerServerUnitTest, Player_SelectTrack_001, TestSize.Level1)
1864 {
1865     bool trackChange = false;
1866     std::vector<Format> audioTrack;
1867     std::vector<int32_t> audioTrackIds;
1868     int32_t currentAudioTrackIndex = -1;
1869     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
1870     EXPECT_EQ(MSERR_OK, player_->Prepare());
1871     EXPECT_EQ(MSERR_OK, player_->Play());
1872     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1873     sleep(PLAYING_TIME_2_SEC);
1874     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1875     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1876     for (Format audioTrackFormat: audioTrack) {
1877         int32_t trackIndex = -1;
1878         audioTrackFormat.GetIntValue("track_index", trackIndex);
1879         audioTrackIds.push_back(trackIndex);
1880     }
1881     for (int32_t trackIndex: audioTrackIds) {
1882         if (trackIndex != currentAudioTrackIndex) {
1883             trackChange = false;
1884             EXPECT_EQ(MSERR_OK, player_->SelectTrack(trackIndex, trackChange));
1885             EXPECT_EQ(trackChange, true);
1886             EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1887             sleep(PLAYING_TIME_2_SEC);
1888             trackChange = false;
1889             EXPECT_EQ(MSERR_OK, player_->DeselectTrack(currentAudioTrackIndex, trackChange));
1890             EXPECT_EQ(trackChange, true);
1891             EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1892             sleep(PLAYING_TIME_2_SEC);
1893         }
1894     }
1895     EXPECT_EQ(MSERR_OK, player_->Stop());
1896 }
1897 
1898 /**
1899  * @tc.name  : Test SelectTrack API
1900  * @tc.number: Player_SelectTrack_002
1901  * @tc.desc  : Test Player SelectTrack invalid trackId
1902  */
1903 HWTEST_F(PlayerServerUnitTest, Player_SelectTrack_002, TestSize.Level1)
1904 {
1905     bool trackChange = false;
1906     int32_t currentAudioTrackIndex = -1;
1907     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
1908     EXPECT_EQ(MSERR_OK, player_->Prepare());
1909     EXPECT_EQ(MSERR_OK, player_->Play());
1910     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1911     sleep(PLAYING_TIME_2_SEC);
1912     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, currentAudioTrackIndex));
1913     EXPECT_NE(MSERR_OK, player_->SelectTrack(currentAudioTrackIndex, trackChange));
1914     sleep(PLAYING_TIME_2_SEC);
1915     EXPECT_EQ(MSERR_OK, player_->Stop());
1916 }
1917 
1918 /**
1919  * @tc.name  : Test DeselectTrack API
1920  * @tc.number: Player_DeselectTrack_001
1921  * @tc.desc  : Test Player DeselectTrack invalid trackId
1922  */
1923 HWTEST_F(PlayerServerUnitTest, Player_DeselectTrack_001, TestSize.Level1)
1924 {
1925     std::vector<Format> audioTrack;
1926     std::vector<int32_t> audioTrackIds;
1927     int32_t defaultAudioTrackIndex = -1;
1928     bool trackChange = false;
1929     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
1930     EXPECT_EQ(MSERR_OK, player_->Prepare());
1931     EXPECT_EQ(MSERR_OK, player_->Play());
1932     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
1933     sleep(PLAYING_TIME_2_SEC);
1934     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
1935     EXPECT_GT(audioTrack.size(), 0);
1936     audioTrack[0].GetIntValue("track_index", defaultAudioTrackIndex);
1937     EXPECT_GT(defaultAudioTrackIndex, -1);
1938     EXPECT_NE(MSERR_OK, player_->DeselectTrack(defaultAudioTrackIndex, trackChange));
1939     sleep(PLAYING_TIME_2_SEC);
1940     EXPECT_EQ(MSERR_OK, player_->Stop());
1941 }
1942 
1943 /**
1944  * @tc.name  : Test GetVideoHeight API
1945  * @tc.number: Player_GetVideoHeight_001
1946  * @tc.desc  : Test Player GetVideoHeight
1947  */
1948 HWTEST_F(PlayerServerUnitTest, Player_GetVideoHeight_001, TestSize.Level1)
1949 {
1950     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1951     sptr<Surface> videoSurface = player_->GetVideoSurface();
1952     ASSERT_NE(nullptr, videoSurface);
1953     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1954     EXPECT_EQ(MSERR_OK, player_->Prepare());
1955     EXPECT_EQ(MSERR_OK, player_->Play());
1956     EXPECT_EQ(480, player_->GetVideoHeight());
1957     EXPECT_EQ(720, player_->GetVideoWidth());
1958 }
1959 
1960 /**
1961  * @tc.name  : Test GetVideoHeight API
1962  * @tc.number: Player_GetVideoHeight_002
1963  * @tc.desc  : Test Player GetVideoHeight
1964  */
1965 HWTEST_F(PlayerServerUnitTest, Player_GetVideoHeight_002, TestSize.Level2)
1966 {
1967     int32_t duration = 0;
1968     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
1969     EXPECT_NE(480, player_->GetVideoHeight());
1970     EXPECT_NE(720, player_->GetVideoWidth());
1971     sptr<Surface> videoSurface = player_->GetVideoSurface();
1972     ASSERT_NE(nullptr, videoSurface);
1973     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
1974     EXPECT_NE(480, player_->GetVideoHeight());
1975     EXPECT_NE(720, player_->GetVideoWidth());
1976     EXPECT_EQ(MSERR_OK, player_->Prepare());
1977     EXPECT_EQ(480, player_->GetVideoHeight());
1978     EXPECT_EQ(720, player_->GetVideoWidth());
1979     EXPECT_EQ(MSERR_OK, player_->Play());
1980     EXPECT_EQ(480, player_->GetVideoHeight());
1981     EXPECT_EQ(720, player_->GetVideoWidth());
1982     EXPECT_EQ(MSERR_OK, player_->Pause());
1983     EXPECT_EQ(480, player_->GetVideoHeight());
1984     EXPECT_EQ(720, player_->GetVideoWidth());
1985     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
1986     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
1987     EXPECT_EQ(MSERR_OK, player_->Play());
1988     sleep(PLAYING_TIME_2_SEC);
1989     EXPECT_EQ(480, player_->GetVideoHeight());
1990     EXPECT_EQ(720, player_->GetVideoWidth());
1991     EXPECT_EQ(MSERR_OK, player_->Stop());
1992     EXPECT_EQ(480, player_->GetVideoHeight());
1993     EXPECT_EQ(720, player_->GetVideoWidth());
1994     EXPECT_EQ(MSERR_OK, player_->Reset());
1995     EXPECT_NE(480, player_->GetVideoHeight());
1996     EXPECT_NE(720, player_->GetVideoWidth());
1997 }
1998 
1999 /**
2000  * @tc.name  : Test GetDuration API
2001  * @tc.number: Player_GetDuration_001
2002  * @tc.desc  : Test Player GetDuration
2003  */
2004 HWTEST_F(PlayerServerUnitTest, Player_GetDuration_001, TestSize.Level1)
2005 {
2006     int32_t duration = 0;
2007     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2008     sptr<Surface> videoSurface = player_->GetVideoSurface();
2009     ASSERT_NE(nullptr, videoSurface);
2010     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2011     EXPECT_EQ(MSERR_OK, player_->Prepare());
2012     EXPECT_EQ(MSERR_OK, player_->Play());
2013     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2014     EXPECT_NEAR(10000, duration, DELTA_TIME); // duration 10000ms
2015 }
2016 
2017 /**
2018  * @tc.name  : Test GetDuration API
2019  * @tc.number: Player_GetDuration_002
2020  * @tc.desc  : Test Player GetDuration
2021  */
2022 HWTEST_F(PlayerServerUnitTest, Player_GetDuration_002, TestSize.Level2)
2023 {
2024     int32_t duration = 0;
2025     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2026     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
2027     sptr<Surface> videoSurface = player_->GetVideoSurface();
2028     ASSERT_NE(nullptr, videoSurface);
2029     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2030     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
2031     EXPECT_EQ(MSERR_OK, player_->Prepare());
2032     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2033     EXPECT_EQ(MSERR_OK, player_->Play());
2034     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2035     EXPECT_EQ(MSERR_OK, player_->Pause());
2036     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2037     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
2038     EXPECT_EQ(MSERR_OK, player_->Play());
2039     sleep(PLAYING_TIME_2_SEC);
2040     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2041     EXPECT_EQ(MSERR_OK, player_->Stop());
2042     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2043     EXPECT_EQ(MSERR_OK, player_->Reset());
2044     EXPECT_NE(MSERR_OK, player_->GetDuration(duration));
2045 }
2046 
2047 /**
2048  * @tc.name  : Test SetPlaybackSpeed API
2049  * @tc.number: Player_SetPlaybackSpeed_001
2050  * @tc.desc  : Test Player SetPlaybackSpeed
2051  */
2052 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackSpeed_001, TestSize.Level1)
2053 {
2054     PlaybackRateMode mode;
2055     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2056     sptr<Surface> videoSurface = player_->GetVideoSurface();
2057     ASSERT_NE(nullptr, videoSurface);
2058     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2059     EXPECT_EQ(MSERR_OK, player_->Prepare());
2060     EXPECT_EQ(MSERR_OK, player_->Play());
2061     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2062     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2063     EXPECT_EQ(SPEED_FORWARD_2_00_X, mode);
2064 }
2065 /**
2066  * @tc.name  : Test SetPlaybackRate API
2067  * @tc.number: Player_SetPlaybackRate_001
2068  * @tc.desc  : Test Player SetPlaybackRate
2069  */
2070 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackRate_001, TestSize.Level1)
2071 {
2072     float playbackRate = 2.0f;
2073     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2074     sptr<Surface> videoSurface = player_->GetVideoSurface();
2075     ASSERT_NE(nullptr, videoSurface);
2076     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2077     EXPECT_EQ(MSERR_OK, player_->Prepare());
2078     EXPECT_EQ(MSERR_OK, player_->Play());
2079     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate));
2080 }
2081 
2082 /**
2083  * @tc.name  : Test SetPlaybackSpeed API
2084  * @tc.number: Player_SetPlaybackSpeed_002
2085  * @tc.desc  : Test Player SetPlaybackSpeed
2086  */
2087 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackSpeed_002, TestSize.Level2)
2088 {
2089     int32_t duration = 0;
2090     PlaybackRateMode mode;
2091     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2092     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2093     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2094     sptr<Surface> videoSurface = player_->GetVideoSurface();
2095     ASSERT_NE(nullptr, videoSurface);
2096     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2097     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2098     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2099     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2100     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2101     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2102     EXPECT_EQ(MSERR_OK, player_->Play());
2103     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2104     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2105     EXPECT_EQ(MSERR_OK, player_->Pause());
2106     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_1_75_X));
2107     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2108     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2109     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
2110     EXPECT_EQ(MSERR_OK, player_->Play());
2111     sleep(PLAYING_TIME_2_SEC);
2112     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_0_75_X));
2113     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2114     EXPECT_EQ(MSERR_OK, player_->Stop());
2115     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_1_25_X));
2116     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2117     EXPECT_EQ(MSERR_OK, player_->Reset());
2118     EXPECT_NE(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2119     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2120 }
2121 
2122 /**
2123  * @tc.name  : Test SetPlaybackRate API
2124  * @tc.number: Player_SetPlaybackRate_002
2125  * @tc.desc  : Test Player SetPlaybackRate
2126  */
2127 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackRate_002, TestSize.Level2)
2128 {
2129     int32_t duration = 0;
2130     float playbackRate1 = 2.0f;
2131     float playbackRate2 = 1.75f;
2132     float playbackRate3 = 1.25f;
2133     float playbackRate4 = 0.75f;
2134     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2135     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate1));
2136     sptr<Surface> videoSurface = player_->GetVideoSurface();
2137     ASSERT_NE(nullptr, videoSurface);
2138     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2139     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate1));
2140     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2141     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate1));
2142     EXPECT_EQ(MSERR_OK, player_->Play());
2143     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate1));
2144     EXPECT_EQ(MSERR_OK, player_->Pause());
2145     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate2));
2146     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2147     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
2148     EXPECT_EQ(MSERR_OK, player_->Play());
2149     sleep(PLAYING_TIME_2_SEC);
2150     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate4));
2151     EXPECT_EQ(MSERR_OK, player_->Stop());
2152     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate3));
2153     EXPECT_EQ(MSERR_OK, player_->Reset());
2154     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate1));
2155 }
2156 
2157 /**
2158  * @tc.name  : Test SetLooping API
2159  * @tc.number: Player_SetLooping_001
2160  * @tc.desc  : Test Player SetLooping
2161  */
2162 HWTEST_F(PlayerServerUnitTest, Player_SetLooping_001, TestSize.Level1)
2163 {
2164     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2165     sptr<Surface> videoSurface = player_->GetVideoSurface();
2166     ASSERT_NE(nullptr, videoSurface);
2167     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2168     EXPECT_EQ(MSERR_OK, player_->Prepare());
2169     EXPECT_EQ(MSERR_OK, player_->Play());
2170     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
2171     EXPECT_EQ(true, player_->IsLooping());
2172     EXPECT_EQ(MSERR_OK, player_->SetLooping(false));
2173     EXPECT_EQ(false, player_->IsLooping());
2174 }
2175 
2176 /**
2177  * @tc.name  : Test SetLooping API
2178  * @tc.number: Player_SetLooping_002
2179  * @tc.desc  : Test Player SetLooping liveStream
2180  */
2181 HWTEST_F(PlayerServerUnitTest, Player_SetLooping_002, TestSize.Level0)
2182 {
2183     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
2184     server->isLiveStream_ = true;
2185     EXPECT_EQ(MSERR_INVALID_OPERATION, server->SetLooping(true));
2186 }
2187 
2188 /**
2189  * @tc.name  : Test SetLooping API
2190  * @tc.number: Player_SetLooping_003
2191  * @tc.desc  : Test Player SetLooping invalid playerEngine
2192  */
2193 HWTEST_F(PlayerServerUnitTest, Player_SetLooping_003, TestSize.Level0)
2194 {
2195     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
2196     server->lastOpStatus_ = PLAYER_STARTED;
2197     EXPECT_EQ(MSERR_OK, server->SetLooping(true));
2198 }
2199 
2200 /**
2201  * @tc.name  : Test SetVolume API
2202  * @tc.number: Player_SetVolume_001
2203  * @tc.desc  : Test Player SetVolume
2204  */
2205 HWTEST_F(PlayerServerUnitTest, Player_SetVolume_001, TestSize.Level1)
2206 {
2207     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2208     sptr<Surface> videoSurface = player_->GetVideoSurface();
2209     ASSERT_NE(nullptr, videoSurface);
2210     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2211     EXPECT_EQ(MSERR_OK, player_->Prepare());
2212     EXPECT_EQ(MSERR_OK, player_->Play());
2213     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2214 }
2215 
2216 /**
2217  * @tc.name  : Test SetVolume API
2218  * @tc.number: Player_SetVolume_002
2219  * @tc.desc  : Test Player SetVolume
2220  */
2221 HWTEST_F(PlayerServerUnitTest, Player_SetVolume_002, TestSize.Level1)
2222 {
2223     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2224     sptr<Surface> videoSurface = player_->GetVideoSurface();
2225     ASSERT_NE(nullptr, videoSurface);
2226     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2227     EXPECT_EQ(MSERR_OK, player_->Prepare());
2228     EXPECT_EQ(MSERR_OK, player_->Play());
2229     EXPECT_NE(MSERR_OK, player_->SetVolume(1.1, 0.1));
2230     EXPECT_NE(MSERR_OK, player_->SetVolume(0.1, 1.1));
2231     EXPECT_NE(MSERR_OK, player_->SetVolume(1.1, 1.1));
2232     EXPECT_NE(MSERR_OK, player_->SetVolume(-0.1, 0.1));
2233     EXPECT_NE(MSERR_OK, player_->SetVolume(0.1, -0.1));
2234     EXPECT_NE(MSERR_OK, player_->SetVolume(-0.1, -0.1));
2235 }
2236 
2237 /**
2238  * @tc.name  : Test SetVolume API
2239  * @tc.number: Player_SetVolume_003
2240  * @tc.desc  : Test Player SetVolume
2241  */
2242 HWTEST_F(PlayerServerUnitTest, Player_SetVolume_003, TestSize.Level2)
2243 {
2244     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2245     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2246     sptr<Surface> videoSurface = player_->GetVideoSurface();
2247     ASSERT_NE(nullptr, videoSurface);
2248     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2249     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2250     EXPECT_EQ(MSERR_OK, player_->Prepare());
2251     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2252     EXPECT_EQ(MSERR_OK, player_->Play());
2253     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2254     EXPECT_EQ(MSERR_OK, player_->Pause());
2255     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2256     EXPECT_EQ(MSERR_OK, player_->Stop());
2257     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2258     EXPECT_EQ(MSERR_OK, player_->Reset());
2259     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2260 }
2261 
2262 /**
2263  * @tc.name  : Test SetVolume API
2264  * @tc.number: Player_SetVolume_004
2265  * @tc.desc  : Test Player SetVolume
2266  */
2267 HWTEST_F(PlayerServerUnitTest, Player_SetVolume_004, TestSize.Level2)
2268 {
2269     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2270     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1));
2271     sptr<Surface> videoSurface = player_->GetVideoSurface();
2272     ASSERT_NE(nullptr, videoSurface);
2273     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2274     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2275     EXPECT_EQ(MSERR_OK, player_->Play());
2276     EXPECT_EQ(MSERR_OK, player_->SetVolume(1e-7, 1));
2277     EXPECT_EQ(MSERR_OK, player_->SetVolume(1, 1e-7));
2278     EXPECT_EQ(MSERR_OK, player_->SetVolume(1e-7, 1e-7));
2279 }
2280 
2281 /**
2282  * @tc.name  : Test SetVideoScaleType API
2283  * @tc.number: Player_SetVideoScaleType_001
2284  * @tc.desc  : Test Player SetVideoScaleType
2285  */
2286 HWTEST_F(PlayerServerUnitTest, Player_SetVideoScaleType_001, TestSize.Level1)
2287 {
2288     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2289     sptr<Surface> videoSurface = player_->GetVideoSurface();
2290     ASSERT_NE(nullptr, videoSurface);
2291     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2292     EXPECT_EQ(MSERR_OK, player_->Prepare());
2293     EXPECT_EQ(MSERR_OK, player_->Play());
2294     Format format;
2295     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
2296         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT));
2297     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2298     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE,
2299         static_cast<int32_t>(Plugins::VideoScaleType::VIDEO_SCALE_TYPE_FIT_CROP));
2300     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2301 }
2302 
2303 /**
2304  * @tc.name  : Test SetRendererInfo API
2305  * @tc.number: Player_SetRendererInfo_001
2306  * @tc.desc  : Test Player SetRendererInfo
2307  */
2308 HWTEST_F(PlayerServerUnitTest, Player_SetRendererInfo_001, TestSize.Level1)
2309 {
2310     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2311     Format format;
2312     sptr<Surface> videoSurface = player_->GetVideoSurface();
2313     ASSERT_NE(nullptr, videoSurface);
2314     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2315     int32_t contentType = 1;
2316     int32_t streamUsage = 1;
2317     int32_t rendererFlags = 0;
2318     (void)format.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
2319     (void)format.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
2320     (void)format.PutIntValue(PlayerKeys::RENDERER_FLAG, rendererFlags);
2321     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2322     EXPECT_EQ(MSERR_OK, player_->Prepare());
2323     EXPECT_EQ(MSERR_OK, player_->Play());
2324 }
2325 
2326 /**
2327  * @tc.name  : Test SetVolumeMode API
2328  * @tc.number: Player_SetVolumeMode_001
2329  * @tc.desc  : Test Player SetVolumeMode
2330  */
2331 HWTEST_F(PlayerServerUnitTest, Player_SetVolumeMode_001, TestSize.Level1)
2332 {
2333     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2334     Format format;
2335     sptr<Surface> videoSurface = player_->GetVideoSurface();
2336     ASSERT_NE(nullptr, videoSurface);
2337     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2338     int32_t contentType = 1;
2339     int32_t streamUsage = 1;
2340     int32_t rendererFlags = 0;
2341     int32_t mode = 1;
2342     (void)format.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
2343     (void)format.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
2344     (void)format.PutIntValue(PlayerKeys::RENDERER_FLAG, rendererFlags);
2345     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
2346     EXPECT_EQ(MSERR_OK, player_->SetVolumeMode(mode));
2347     EXPECT_EQ(MSERR_OK, player_->Prepare());
2348     EXPECT_EQ(MSERR_OK, player_->Play());
2349 }
2350 
2351 /**
2352  * @tc.name  : Test SetInterrupt API
2353  * @tc.number: Player_SetInterrupt_001
2354  * @tc.desc  : Test Player SetInterrupt
2355  */
2356 HWTEST_F(PlayerServerUnitTest, Player_SetInterrupt_001, TestSize.Level1)
2357 {
2358     Format format;
2359     int32_t mode = 1;
2360     int32_t type = 1;
2361     std::shared_ptr<PlayerServerMock> player = nullptr;
2362     std::shared_ptr<PlayerCallbackTest> callback = nullptr;
2363     callback = std::make_shared<PlayerCallbackTest>();
2364     ASSERT_NE(nullptr, callback);
2365     player = std::make_shared<PlayerServerMock>(callback);
2366     ASSERT_NE(nullptr, player);
2367     EXPECT_TRUE(player->CreatePlayer());
2368     EXPECT_EQ(MSERR_OK, player->SetPlayerCallback(callback));
2369     ASSERT_EQ(MSERR_OK, player->SetSource(MEDIA_ROOT + "01.mp3"));
2370     EXPECT_EQ(MSERR_OK, player->Prepare());
2371 
2372     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2373     EXPECT_EQ(MSERR_OK, player_->Prepare());
2374     (void)format.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_MODE, mode);
2375     (void)format.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_TYPE, type);
2376     EXPECT_EQ(MSERR_OK, player->SetParameter(format));
2377     EXPECT_EQ(MSERR_OK, player->Play());
2378     sleep(PLAYING_TIME_2_SEC);
2379     EXPECT_EQ(MSERR_OK, player_->Play());
2380     sleep(PLAYING_TIME_2_SEC);
2381     EXPECT_EQ(MSERR_OK, player->ReleaseSync());
2382 }
2383 
2384 /**
2385  * @tc.name  : Test Player SelectBitRate API
2386  * @tc.number: Player_SelectBitRate_001
2387  * @tc.desc  : Test Player SelectBitRate interface
2388  */
2389 HWTEST_F(PlayerServerUnitTest, Player_SelectBitRate_001, TestSize.Level1)
2390 {
2391     EXPECT_EQ(MSERR_OK, player_->SelectBitRate(0));
2392     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2393     sptr<Surface> videoSurface = player_->GetVideoSurface();
2394     ASSERT_NE(nullptr, videoSurface);
2395     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2396     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2397     EXPECT_EQ(MSERR_OK, player_->Play());
2398     EXPECT_EQ(MSERR_OK, player_->SelectBitRate(0));
2399 }
2400 
2401 /**
2402  * @tc.name: Player_Performance_Prepared_001
2403  * @tc.desc: test player start
2404  * @tc.type: PERFORMANCE
2405  * @tc.require: issueI5NYBJ
2406  */
2407 HWTEST_F(PlayerServerUnitTest, Player_Performance_Prepared_001, TestSize.Level1)
2408 {
2409     struct timeval startTime = {};
2410     struct timeval finishTime = {};
2411     int32_t runTimes = 10;
2412     float timeConv = 1000;
2413     float deltaTime = 0;
2414     sptr<Surface> videoSurface = player_->GetVideoSurface();
2415     ASSERT_NE(nullptr, videoSurface);
2416     for (int32_t i = 0; i < runTimes; i++) {
2417         EXPECT_EQ(MSERR_OK, gettimeofday(&startTime, nullptr));
2418         ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2419         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2420         EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2421         EXPECT_EQ(MSERR_OK, gettimeofday(&finishTime, nullptr));
2422         EXPECT_EQ(MSERR_OK, player_->Play());
2423         deltaTime += (finishTime.tv_sec - startTime.tv_sec) * timeConv +
2424             (finishTime.tv_usec - startTime.tv_usec) / timeConv;
2425         EXPECT_EQ(MSERR_OK, player_->Reset());
2426     }
2427     EXPECT_LE(deltaTime / runTimes, 1000); // less than 1000 ms
2428 }
2429 
2430 /**
2431  * @tc.name  : Test Player Play mp4 with rotation
2432  * @tc.number: Player_Rotate_001
2433  * @tc.desc  : Test Player Play interface
2434  */
2435 HWTEST_F(PlayerServerUnitTest, Player_Rotate_001, TestSize.Level1)
2436 {
2437     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2438     sptr<Surface> videoSurface = player_->GetVideoSurface();
2439     ASSERT_NE(nullptr, videoSurface);
2440     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2441     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2442     EXPECT_EQ(MSERR_OK, player_->Play());
2443     EXPECT_TRUE(player_->IsPlaying());
2444 }
2445 
2446 /**
2447  * @tc.name  : Test Player Dump Dot
2448  * @tc.number: Player_Dump_Dot_001
2449  * @tc.desc  : Test Player Dump Dot
2450  */
2451 HWTEST_F(PlayerServerUnitTest, Player_Dump_Dot_001, TestSize.Level1)
2452 {
2453     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2454     sptr<Surface> videoSurface = player_->GetVideoSurface();
2455     ASSERT_NE(nullptr, videoSurface);
2456     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2457     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2458     EXPECT_EQ(MSERR_OK, player_->Play());
2459     system("param set sys.media.dump.dot.path /data/test/media");
2460     EXPECT_TRUE(player_->IsPlaying());
2461     EXPECT_EQ(MSERR_OK, player_->Pause());
2462     EXPECT_EQ(MSERR_OK, player_->Play());
2463 }
2464 
2465 /**
2466  * @tc.name  : Test Player Dump Dot
2467  * @tc.number: Player_Dump_Dot_002
2468  * @tc.desc  : Test Player Dump Dot
2469  */
2470 HWTEST_F(PlayerServerUnitTest, Player_Dump_Dot_002, TestSize.Level1)
2471 {
2472     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2473     sptr<Surface> videoSurface = player_->GetVideoSurface();
2474     ASSERT_NE(nullptr, videoSurface);
2475     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2476     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2477     EXPECT_EQ(MSERR_OK, player_->Play());
2478     system("param set sys.media.dump.dot.path /xx");
2479     EXPECT_TRUE(player_->IsPlaying());
2480     EXPECT_EQ(MSERR_OK, player_->Pause());
2481     EXPECT_EQ(MSERR_OK, player_->Play());
2482 }
2483 
2484 /**
2485  * @tc.name  : Test Player Dump GlibMem
2486  * @tc.number: Player_Dump_GlibMem_001
2487  * @tc.desc  : Test Player Dump GlibMem
2488  */
2489 HWTEST_F(PlayerServerUnitTest, Player_Dump_GlibMem_001, TestSize.Level1)
2490 {
2491     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2492     sptr<Surface> videoSurface = player_->GetVideoSurface();
2493     ASSERT_NE(nullptr, videoSurface);
2494     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2495     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2496     EXPECT_EQ(MSERR_OK, player_->Play());
2497     system("hidumper -s 3002 -a glibmem");
2498     system("param set sys.media.dump.codec.vdec ALL");
2499     EXPECT_TRUE(player_->IsPlaying());
2500     EXPECT_EQ(MSERR_OK, player_->Pause());
2501 }
2502 
2503 /**
2504  * @tc.name  : Test Player Dump GlibPool
2505  * @tc.number: Player_Dump_GlibPool_001
2506  * @tc.desc  : Test Player Dump GlibPool
2507  */
2508 HWTEST_F(PlayerServerUnitTest, Player_Dump_GlibPool_001, TestSize.Level1)
2509 {
2510     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "MP4_ROTATE_90.mp4"));
2511     sptr<Surface> videoSurface = player_->GetVideoSurface();
2512     ASSERT_NE(nullptr, videoSurface);
2513     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2514     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2515     system("param set sys.media.dump.frame.enable true");
2516     system("param set sys.media.set.mute TRUE");
2517     system("param set sys.media.kpi.avsync.log.enable true");
2518     system("param set sys.media.kpi.opt.renderdelay.enable true");
2519     EXPECT_EQ(MSERR_OK, player_->Play());
2520     system("hidumper -s 3002 -a glibpool");
2521     system("param set sys.media.dump.codec.vdec ALL");
2522     EXPECT_TRUE(player_->IsPlaying());
2523     EXPECT_EQ(MSERR_OK, player_->Pause());
2524 }
2525 
2526 /**
2527  * @tc.name  : Test Player Dump Log
2528  * @tc.number: Player_Dump_Log_001
2529  * @tc.desc  : Test Player Dump Log
2530  */
2531 HWTEST_F(PlayerServerUnitTest, Player_Dump_Log_001, TestSize.Level1)
2532 {
2533     system("mkdir /data/media/log");
2534     system("chmod 777 -R /data/media");
2535     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2536     sptr<Surface> videoSurface = player_->GetVideoSurface();
2537     ASSERT_NE(nullptr, videoSurface);
2538     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2539     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2540     system("param set sys.media.log.level *:l,multiqueue,decodecbin:,tsdemux:D,multiqueue:D,hlsdemux:D,souphttpsrc:W");
2541     system("param set sys.media.log.level *:l,basesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmm" \
2542         "basesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmmbasesrcmmm:D");
2543     system("param set sys.media.dump.frame.enable false");
2544     system("param set sys.media.set.mute FALSE");
2545     system("param set sys.media.kpi.avsync.log.enable false");
2546     system("param set sys.media.kpi.opt.renderdelay.enable false");
2547     EXPECT_EQ(MSERR_OK, player_->Play());
2548     system("param set sys.media.dump.codec.vdec NULL");
2549     EXPECT_TRUE(player_->IsPlaying());
2550     EXPECT_EQ(MSERR_OK, player_->Pause());
2551     system("rm -rf /data/media/log");
2552 }
2553 
2554 /**
2555  * @tc.name  : Test Player Dump gstbuffer
2556  * @tc.number: Player_Dump_GstBuffer_001
2557  * @tc.desc  : Test Player Dump gstbuffer
2558  */
2559 HWTEST_F(PlayerServerUnitTest, Player_Dump_GstBuffer_001, TestSize.Level1)
2560 {
2561     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2562     sptr<Surface> videoSurface = player_->GetVideoSurface();
2563     ASSERT_NE(nullptr, videoSurface);
2564     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2565     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2566     system("param set sys.media.dump.gstbuffer 1");
2567     system("param set sys.media.set.mute null");
2568     EXPECT_EQ(MSERR_OK, player_->Play());
2569     EXPECT_TRUE(player_->IsPlaying());
2570     EXPECT_EQ(MSERR_OK, player_->Pause());
2571     system("param set sys.media.dump.gstbuffer 0");
2572 }
2573 
2574 /**
2575  * @tc.name  : Test Player With Not Performance
2576  * @tc.number: Player_Not_Performance_001
2577  * @tc.desc  : Test Player Not Performance
2578  */
2579 HWTEST_F(PlayerServerUnitTest, Player_Not_Performance_001, TestSize.Level2)
2580 {
2581     system("param set sys.media.player.performance.enable FALSE");
2582     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
2583     sptr<Surface> videoSurface = player_->GetVideoSurface();
2584     ASSERT_NE(nullptr, videoSurface);
2585     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2586     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
2587     system("param set sys.media.player.performance.enable TRUE");
2588 }
2589 
2590 /**
2591  * @tc.name  : Test Player Mem Recycle
2592  * @tc.number: Player_Mem_Recycle_001
2593  * @tc.desc  : Test Player Mem Recycle
2594  */
2595 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_001, TestSize.Level1)
2596 {
2597     sptr<Surface> renderSurface = player_->GetVideoSurface();
2598     ASSERT_NE(nullptr, renderSurface);
2599     std::vector<std::string> srcVector = {MEDIA_ROOT + "H264_MP3.mp4"};
2600     for (int32_t i = 0; i < static_cast<int32_t>(srcVector.size()); i++) {
2601         if (srcVector[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2602             system("param set sys.media.player.resource.type NetWork");
2603         }
2604         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVector[i]));
2605         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(renderSurface));
2606         char text[100]; // 100: text len
2607         sprintf_s(text, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", 0, 0, 4);
2608         system(text);
2609         sprintf_s(text, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), 0, 4);
2610         system(text);
2611         system("hidumper -s 1909 -a \"-t 6\"");
2612         system("hidumper -s 1909 -a \"-t 3\"");
2613         int32_t ret = player_->Prepare();
2614         EXPECT_EQ(MSERR_OK, ret);
2615         EXPECT_EQ(MSERR_OK, player_->Reset());
2616         system("param set sys.media.player.resource.type Local");
2617     }
2618 }
2619 
2620 /**
2621  * @tc.name  : Test Player Mem Recycle
2622  * @tc.number: Player_Mem_Recycle_002
2623  * @tc.desc  : Test Player Mem Recycle
2624  */
2625 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_002, TestSize.Level1)
2626 {
2627     sptr<Surface> vSurface = player_->GetVideoSurface();
2628     ASSERT_NE(nullptr, vSurface);
2629     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2630     for (uint32_t i = 0; i < srcVec.size(); i++) {
2631         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2632             system("param set sys.media.player.resource.type NetWork");
2633         }
2634         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2635         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(vSurface));
2636         EXPECT_EQ(MSERR_OK, player_->Prepare());
2637         char str[100]; // 100: str len
2638         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2639         system(str);
2640         system("hidumper -s 1909 -a \"-t 3\"");
2641         EXPECT_EQ(MSERR_OK, player_->Play());
2642         EXPECT_EQ(MSERR_OK, player_->Reset());
2643         system("param set sys.media.player.resource.type Local");
2644     }
2645 }
2646 
2647 /**
2648  * @tc.name  : Test Player Mem Recycle
2649  * @tc.number: Player_Mem_Recycle_003
2650  * @tc.desc  : Test Player Mem Recycle
2651  */
2652 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_003, TestSize.Level1)
2653 {
2654     sptr<Surface> videoSurface = player_->GetVideoSurface();
2655     ASSERT_NE(nullptr, videoSurface);
2656     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2657     for (uint32_t i = 0; i < srcVec.size(); i++) {
2658         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2659             system("param set sys.media.player.resource.type NetWork");
2660         }
2661         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2662         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2663         EXPECT_EQ(MSERR_OK, player_->Prepare());
2664         EXPECT_EQ(MSERR_OK, player_->Play());
2665         sleep(15);
2666         char str[100]; // 100: str len
2667         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2668         system(str);
2669         system("hidumper -s 1909 -a \"-t 3\"");
2670         EXPECT_EQ(MSERR_OK, player_->Play());
2671         EXPECT_EQ(MSERR_OK, player_->Reset());
2672         system("param set sys.media.player.resource.type Local");
2673     }
2674 }
2675 
2676 /**
2677  * @tc.name  : Test Player Mem Recycle
2678  * @tc.number: Player_Mem_Recycle_004
2679  * @tc.desc  : Test Player Mem Recycle
2680  */
2681 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_004, TestSize.Level1)
2682 {
2683     sptr<Surface> videoSurface = player_->GetVideoSurface();
2684     ASSERT_NE(nullptr, videoSurface);
2685     std::vector<std::string> vec = {MEDIA_ROOT + "H264_MP3.mp4"};
2686     for (uint32_t i = 0; i < vec.size(); i++) {
2687         if (vec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2688             system("param set sys.media.player.resource.type NetWork");
2689         }
2690         const auto ret = MSERR_OK;
2691         ASSERT_EQ(ret, player_->SetSource(vec[i]));
2692         EXPECT_EQ(ret, player_->SetVideoSurface(videoSurface));
2693         EXPECT_EQ(ret, player_->Prepare());
2694         EXPECT_EQ(ret, player_->Play());
2695         EXPECT_EQ(ret, player_->Pause());
2696         char str[100]; // 100: str len
2697         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2698         system(str);
2699         system("hidumper -s 1909 -a \"-t 3\"");
2700         int32_t currentTime = 0;
2701         std::vector<Format> videoTrack;
2702         std::vector<Format> audioTrack;
2703         int32_t duration = 0;
2704         PlaybackRateMode mode;
2705         EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
2706         EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
2707         EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(currentTime));
2708         EXPECT_NE(0, player_->GetVideoWidth());
2709         EXPECT_NE(0, player_->GetVideoHeight());
2710         EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
2711         EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
2712         int32_t index;
2713         EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, index));
2714         EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_VID, index));
2715         EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_SUBTITLE, index));
2716         EXPECT_NE(MSERR_OK, player_->GetCurrentTrack(100, index));
2717         EXPECT_EQ(false, player_->IsPlaying());
2718         EXPECT_EQ(false, player_->IsLooping());
2719         EXPECT_EQ(MSERR_OK, player_->Seek(1000, SEEK_NEXT_SYNC));
2720         EXPECT_EQ(MSERR_OK, player_->Reset());
2721         system("param set sys.media.player.resource.type Local");
2722     }
2723 }
2724 
2725 /**
2726  * @tc.name  : Test Player Mem Recycle
2727  * @tc.number: Player_Mem_Recycle_005
2728  * @tc.desc  : Test Player Mem Recycle
2729  */
2730 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_005, TestSize.Level1)
2731 {
2732     sptr<Surface> videoSurface = player_->GetVideoSurface();
2733     ASSERT_NE(nullptr, videoSurface);
2734     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2735     for (uint32_t i = 0; i < srcVec.size(); i++) {
2736         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2737             system("param set sys.media.player.resource.type NetWork");
2738         }
2739         const auto result = MSERR_OK;
2740         ASSERT_EQ(result, player_->SetSource(srcVec[i]));
2741         EXPECT_EQ(result, player_->SetVideoSurface(videoSurface));
2742         EXPECT_EQ(result, player_->Prepare());
2743         EXPECT_EQ(result, player_->Play());
2744         EXPECT_EQ(result, player_->Pause());
2745         char str[100]; // 100: str len
2746         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2747         system(str);
2748         system("hidumper -s 1909 -a \"-t 3\"");
2749         EXPECT_EQ(result, player_->Reset());
2750         system("param set sys.media.player.resource.type Local");
2751     }
2752 }
2753 
2754 /**
2755  * @tc.name  : Test Player Mem Recycle
2756  * @tc.number: Player_Mem_Recycle_006
2757  * @tc.desc  : Test Player Mem Recycle
2758  */
2759 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_006, TestSize.Level1)
2760 {
2761     sptr<Surface> videoSurface = player_->GetVideoSurface();
2762     ASSERT_NE(nullptr, videoSurface);
2763     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2764     for (uint32_t i = 0; i < srcVec.size(); i++) {
2765         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2766             system("param set sys.media.player.resource.type NetWork");
2767         }
2768         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2769         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2770         EXPECT_EQ(MSERR_OK, player_->Prepare());
2771         EXPECT_EQ(MSERR_OK, player_->Play());
2772         EXPECT_EQ(MSERR_OK, player_->Pause());
2773         char str[100]; // 100: str len
2774         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2775         system(str);
2776         system("hidumper -s 1909 -a \"-t 3\"");
2777         EXPECT_EQ(MSERR_OK, player_->Reset());
2778         system("param set sys.media.player.resource.type Local");
2779     }
2780 }
2781 
2782 /**
2783  * @tc.name  : Test Player Mem Recycle
2784  * @tc.number: Player_Mem_Recycle_007
2785  * @tc.desc  : Test Player Mem Recycle
2786  */
2787 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_007, TestSize.Level1)
2788 {
2789     sptr<Surface> videoSurface = player_->GetVideoSurface();
2790     ASSERT_NE(nullptr, videoSurface);
2791     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2792     std::vector<PlaybackRateMode> speedMode = {SPEED_FORWARD_2_00_X, SPEED_FORWARD_1_25_X};
2793     for (uint32_t i = 0; i < srcVec.size(); i++) {
2794         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2795             system("param set sys.media.player.resource.type NetWork");
2796         }
2797         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2798         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2799         EXPECT_EQ(MSERR_OK, player_->Prepare());
2800         EXPECT_EQ(MSERR_OK, player_->Play());
2801         EXPECT_EQ(MSERR_OK, player_->Pause());
2802         char str[100]; // 100: str len
2803         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2804         system(str);
2805         system("hidumper -s 1909 -a \"-t 3\"");
2806         EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(speedMode[i]));
2807         EXPECT_EQ(MSERR_OK, player_->Reset());
2808         system("param set sys.media.player.resource.type Local");
2809     }
2810 }
2811 
2812 /**
2813  * @tc.name  : Test Player Mem Recycle
2814  * @tc.number: Player_Mem_Recycle_008
2815  * @tc.desc  : Test Player Mem Recycle
2816  */
2817 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_008, TestSize.Level1)
2818 {
2819     sptr<Surface> videoSurface = player_->GetVideoSurface();
2820     ASSERT_NE(nullptr, videoSurface);
2821     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2822     for (uint32_t i = 0; i < srcVec.size(); i++) {
2823         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2824             system("param set sys.media.player.resource.type NetWork");
2825         }
2826         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2827         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2828         EXPECT_EQ(MSERR_OK, player_->Prepare());
2829         EXPECT_EQ(MSERR_OK, player_->Play());
2830         EXPECT_EQ(MSERR_OK, player_->Pause());
2831         EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
2832         EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
2833         EXPECT_EQ(MSERR_OK, player_->SetVolume(0.5, 0.5));
2834         char str[100]; // 100: str len
2835         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2836         system(str);
2837         system("hidumper -s 1909 -a \"-t 3\"");
2838         EXPECT_EQ(MSERR_OK, player_->SetLooping(false));
2839         EXPECT_EQ(MSERR_OK, player_->Reset());
2840         system("param set sys.media.player.resource.type Local");
2841     }
2842 }
2843 
2844 /**
2845  * @tc.name  : Test Player Mem Recycle
2846  * @tc.number: Player_Mem_Recycle_009
2847  * @tc.desc  : Test Player Mem Recycle
2848  */
2849 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_009, TestSize.Level1)
2850 {
2851     sptr<Surface> videoSurface = player_->GetVideoSurface();
2852     ASSERT_NE(nullptr, videoSurface);
2853     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2854     for (uint32_t i = 0; i < srcVec.size(); i++) {
2855         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2856             system("param set sys.media.player.resource.type NetWork");
2857         }
2858         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2859         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2860         EXPECT_EQ(MSERR_OK, player_->Prepare());
2861         EXPECT_EQ(MSERR_OK, player_->Play());
2862         EXPECT_EQ(MSERR_OK, player_->Pause());
2863         char str[100]; // 100: str len
2864         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2865         system(str);
2866         system("hidumper -s 1909 -a \"-t 3\"");
2867         EXPECT_EQ(MSERR_OK, player_->SelectBitRate(0));
2868         EXPECT_EQ(MSERR_OK, player_->Reset());
2869         system("param set sys.media.player.resource.type Local");
2870     }
2871 }
2872 
2873 /**
2874  * @tc.name  : Test Player Mem Recycle
2875  * @tc.number: Player_Mem_Recycle_010
2876  * @tc.desc  : Test Player Mem Recycle
2877  */
2878 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_010, TestSize.Level1)
2879 {
2880     sptr<Surface> videoSurface = player_->GetVideoSurface();
2881     ASSERT_NE(nullptr, videoSurface);
2882     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2883     for (uint32_t i = 0; i < srcVec.size(); i++) {
2884         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2885             system("param set sys.media.player.resource.type NetWork");
2886         }
2887         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2888         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2889         EXPECT_EQ(MSERR_OK, player_->Prepare());
2890         EXPECT_EQ(MSERR_OK, player_->Play());
2891         EXPECT_EQ(MSERR_OK, player_->Stop());
2892         char str[100]; // 100: str len
2893         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2894         system(str);
2895         system("hidumper -s 1909 -a \"-t 3\"");
2896         EXPECT_EQ(MSERR_OK, player_->Reset());
2897         system("param set sys.media.player.resource.type Local");
2898     }
2899 }
2900 
2901 /**
2902  * @tc.name  : Test Player Mem Recycle
2903  * @tc.number: Player_Mem_Recycle_011
2904  * @tc.desc  : Test Player Mem Recycle
2905  */
2906 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_011, TestSize.Level1)
2907 {
2908     sptr<Surface> videoSurface = player_->GetVideoSurface();
2909     ASSERT_NE(nullptr, videoSurface);
2910     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2911     for (uint32_t i = 0; i < srcVec.size(); i++) {
2912         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2913             system("param set sys.media.player.resource.type NetWork");
2914         }
2915         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2916         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2917         EXPECT_EQ(MSERR_OK, player_->Prepare());
2918         EXPECT_EQ(MSERR_OK, player_->Play());
2919         EXPECT_EQ(MSERR_OK, player_->Pause());
2920         char str[100]; // 100: str len
2921         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2922         system(str);
2923         system("hidumper -s 1909 -a \"-t 2\"");
2924         EXPECT_EQ(MSERR_OK, player_->Reset());
2925         system("param set sys.media.player.resource.type Local");
2926     }
2927 }
2928 
2929 /**
2930  * @tc.name  : Test Player Mem Recycle
2931  * @tc.number: Player_Mem_Recycle_012
2932  * @tc.desc  : Test Player Mem Recycle
2933  */
2934 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_012, TestSize.Level1)
2935 {
2936     sptr<Surface> videoSurface = player_->GetVideoSurface();
2937     ASSERT_NE(nullptr, videoSurface);
2938     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2939     for (uint32_t i = 0; i < srcVec.size(); i++) {
2940         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2941             system("param set sys.media.player.resource.type NetWork");
2942         }
2943         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2944         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2945         EXPECT_EQ(MSERR_OK, player_->Prepare());
2946         EXPECT_EQ(MSERR_OK, player_->Play());
2947         EXPECT_EQ(MSERR_OK, player_->Pause());
2948         char str[100]; // 100: str len
2949         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2950         system(str);
2951         system("hidumper -s 1909 -a \"-t 4\"");
2952         EXPECT_EQ(MSERR_OK, player_->Reset());
2953         system("param set sys.media.player.resource.type Local");
2954     }
2955 }
2956 
2957 /**
2958  * @tc.name  : Test Player Mem Recycle
2959  * @tc.number: Player_Mem_Recycle_013
2960  * @tc.desc  : Test Player Mem Recycle
2961  */
2962 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_013, TestSize.Level1)
2963 {
2964     sptr<Surface> videoSurface = player_->GetVideoSurface();
2965     ASSERT_NE(nullptr, videoSurface);
2966     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_MP3.mp4"};
2967     for (uint32_t i = 0; i < srcVec.size(); i++) {
2968         if (srcVec[i] == MEDIA_ROOT + "H264_MP3.mp4") {
2969             system("param set sys.media.player.resource.type NetWork");
2970         }
2971         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
2972         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
2973         EXPECT_EQ(MSERR_OK, player_->Prepare());
2974         EXPECT_EQ(MSERR_OK, player_->Play());
2975         EXPECT_EQ(MSERR_OK, player_->Pause());
2976         char str[100]; // 100: str len
2977         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
2978         system(str);
2979         system("hidumper -s 1909 -a \"-f 3\"");
2980         EXPECT_EQ(MSERR_OK, player_->Reset());
2981         system("param set sys.media.player.resource.type Local");
2982         system("killall memmgrservice");
2983         sleep(1);
2984     }
2985 }
2986 
2987 /**
2988  * @tc.name  : Test Player Mem Recycle
2989  * @tc.number: Player_Mem_Recycle_014
2990  * @tc.desc  : Test Player Mem Recycle
2991  */
2992 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_014, TestSize.Level1)
2993 {
2994     sptr<Surface> videoSurface = player_->GetVideoSurface();
2995     ASSERT_NE(nullptr, videoSurface);
2996     std::vector<std::string> srcVector = {MEDIA_ROOT + "H264_AAC.mp4"};
2997     for (uint32_t i = 0; i < srcVector.size(); i++) {
2998         if (srcVector[i] == MEDIA_ROOT + "H264_AAC.mp4") {
2999             system("param set sys.media.player.resource.type NetWork");
3000         }
3001         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVector[i]));
3002         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3003         EXPECT_EQ(MSERR_OK, player_->Prepare());
3004         char str[100]; // 100: str len
3005         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
3006         system(str);
3007         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 2);
3008         system(str);
3009         sleep(30);
3010         EXPECT_EQ(MSERR_OK, player_->Play());
3011         EXPECT_EQ(MSERR_OK, player_->Reset());
3012         system("param set sys.media.player.resource.type Local");
3013     }
3014 }
3015 
3016 /**
3017  * @tc.name  : Test Player Mem Recycle
3018  * @tc.number: Player_Mem_Recycle_015
3019  * @tc.desc  : Test Player Mem Recycle
3020  */
3021 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_015, TestSize.Level1)
3022 {
3023     sptr<Surface> videoSurface = player_->GetVideoSurface();
3024     ASSERT_NE(nullptr, videoSurface);
3025     std::vector<std::string> srcVec = {MEDIA_ROOT + "H264_AAC.mp4"};
3026     for (uint32_t i = 0; i < srcVec.size(); i++) {
3027         if (srcVec[i] == MEDIA_ROOT + "H264_AAC.mp4") {
3028             system("param set sys.media.player.resource.type NetWork");
3029         }
3030         ASSERT_EQ(MSERR_OK, player_->SetSource(srcVec[i]));
3031         EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3032         EXPECT_EQ(MSERR_OK, player_->Prepare());
3033         char str[100]; // 100: str len
3034         sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
3035         system(str);
3036         system("hidumper -s 3002 -a \"player\"");
3037         sleep(30);
3038         system("hidumper -s 3002 -a \"player\"");
3039         EXPECT_EQ(MSERR_OK, player_->Play());
3040         EXPECT_EQ(MSERR_OK, player_->Stop());
3041         EXPECT_EQ(MSERR_OK, player_->Reset());
3042         system("param set sys.media.player.resource.type Local");
3043     }
3044 }
3045 
3046 /**
3047  * @tc.name  : Test Player Mem Recycle
3048  * @tc.number: Player_Mem_Recycle_016
3049  * @tc.desc  : Test Player Mem Recycle
3050  */
3051 HWTEST_F(PlayerServerUnitTest, Player_Mem_Recycle_016, TestSize.Level1)
3052 {
3053     int32_t duration = 0;
3054     std::vector<Format> videoTrack;
3055     std::vector<Format> audioTrack;
3056     PlaybackRateMode mode;
3057     int32_t index = 0;
3058     EXPECT_EQ(MSERR_OK, player_->SetVolume(0.9, 0.9));
3059     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1, 0, 0));
3060     sptr<Surface> videoSurface = player_->GetVideoSurface();
3061     ASSERT_NE(nullptr, videoSurface);
3062     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3063     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
3064     EXPECT_EQ(true, player_->IsLooping());
3065     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3066     char str[100]; // 100: str len
3067     sprintf_s(str, 100, "hidumper -s 1909 -a \"-d %d %d %d\"", getpid(), getuid(), 4);
3068     system(str);
3069     system("hidumper -s 1909 -a \"-t 4\"");
3070     EXPECT_EQ(720, player_->GetVideoWidth());
3071     EXPECT_EQ(480, player_->GetVideoHeight());
3072     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
3073     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
3074     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3075     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3076     EXPECT_EQ(SPEED_FORWARD_1_00_X, mode);
3077     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_0_50_X));
3078     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3079     EXPECT_EQ(SPEED_FORWARD_0_50_X, mode);
3080     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_2_00_X));
3081     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3082     EXPECT_EQ(SPEED_FORWARD_2_00_X, mode);
3083 
3084     EXPECT_EQ(false, player_->IsPlaying());
3085     EXPECT_EQ(true, player_->IsLooping());
3086 
3087     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_AUD, index));
3088     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_VID, index));
3089     EXPECT_EQ(MSERR_OK, player_->GetCurrentTrack(MediaType::MEDIA_TYPE_SUBTITLE, index));
3090     EXPECT_NE(MSERR_OK, player_->GetCurrentTrack(100, index));
3091 
3092     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3093     EXPECT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_PREVIOUS_SYNC));
3094     EXPECT_EQ(MSERR_OK, player_->Reset());
3095     EXPECT_EQ(MSERR_OK, player_->Release());
3096 }
3097 
3098 /**
3099  * @tc.name  : Test SetEffect API
3100  * @tc.number: Player_SetEffect_001
3101  * @tc.desc  : Test Player SetEffect state machine
3102  */
3103 HWTEST_F(PlayerServerUnitTest, Player_SetEffect_001, TestSize.Level1)
3104 {
3105     Format format;
3106     const float FLOAT_VALUE = 1.0;
3107     const double DOUBLE_VALUE = 2.5;
3108     const std::string STRING_VALUE = "player_test";
3109     const int32_t INT_VALUE = 1;
3110     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, OHOS::AudioStandard::AudioEffectMode::EFFECT_NONE);
3111     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3112     (void)format.PutFloatValue(PlayerKeys::AUDIO_EFFECT_MODE, FLOAT_VALUE);
3113     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3114     (void)format.PutDoubleValue(PlayerKeys::AUDIO_EFFECT_MODE, DOUBLE_VALUE);
3115     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3116     (void)format.PutStringValue(PlayerKeys::AUDIO_EFFECT_MODE, STRING_VALUE);
3117     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3118     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, INT_VALUE);
3119     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3120 
3121     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "01.mp3"));
3122     sptr<Surface> videoSurface = player_->GetVideoSurface();
3123     ASSERT_NE(nullptr, videoSurface);
3124     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3125 
3126     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3127     EXPECT_EQ(MSERR_OK, player_->Prepare());
3128     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3129     EXPECT_EQ(MSERR_OK, player_->Play());
3130     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3131     EXPECT_EQ(MSERR_OK, player_->Pause());
3132     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3133     EXPECT_EQ(MSERR_OK, player_->Stop());
3134     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3135     EXPECT_EQ(MSERR_OK, player_->Prepare());
3136     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3137     EXPECT_EQ(MSERR_OK, player_->Reset());
3138     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3139     EXPECT_EQ(MSERR_OK, player_->Release());
3140     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3141 }
3142 
3143 /**
3144  * @tc.name  : Test SetEffect API
3145  * @tc.number: Player_SetEffect_002
3146  * @tc.desc  : Test Player SetEffect param
3147  */
3148 HWTEST_F(PlayerServerUnitTest, Player_SetEffect_002, TestSize.Level1)
3149 {
3150     Format format;
3151     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "01.mp3"));
3152     sptr<Surface> videoSurface = player_->GetVideoSurface();
3153     ASSERT_NE(nullptr, videoSurface);
3154     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3155     EXPECT_EQ(MSERR_OK, player_->Prepare());
3156 
3157     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, OHOS::AudioStandard::AudioEffectMode::EFFECT_DEFAULT);
3158     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3159     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, OHOS::AudioStandard::AudioEffectMode::EFFECT_NONE);
3160     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3161     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, 100); // 100 is an invalid parameter.
3162     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3163     (void)format.PutIntValue(PlayerKeys::AUDIO_EFFECT_MODE, -1); // -1 is an invalid parameter.
3164     EXPECT_NE(MSERR_OK, player_->SetParameter(format));
3165 
3166     EXPECT_EQ(MSERR_OK, player_->Release());
3167 }
3168 
3169 /**
3170  * @tc.name  : Test media error
3171  * @tc.number: Player_Media_Error
3172  * @tc.desc  : Test Player Media Error
3173  */
3174 HWTEST_F(PlayerServerUnitTest, Player_Media_Error, TestSize.Level0)
3175 {
3176     std::array<MediaServiceErrCode, 5> errCodes = {MSERR_OK, MSERR_NO_MEMORY, MSERR_INVALID_OPERATION,
3177         MSERR_INVALID_VAL, MSERR_UNKNOWN};
3178     for (const auto& code : errCodes) {
3179         MediaServiceErrCodeTest(code);
3180     }
3181     for (MediaServiceErrCode code = MSERR_SERVICE_DIED; code < MSERR_EXTEND_START;
3182         code = (MediaServiceErrCode)(code + 1)) {
3183         MediaServiceErrCodeTest(code);
3184     }
3185     MediaServiceErrCodeTest(MSERR_EXTEND_START);
3186 
3187     for (auto code = MSERR_EXT_OK; code <= MSERR_EXT_UNSUPPORT; code = (MediaServiceExtErrCode)(code + 1)) {
3188         EXPECT_EQ(MSEXTERRCODE_INFOS.at(code), MSExtErrorToString(code));
3189     }
3190     EXPECT_EQ(MSEXTERRCODE_INFOS.at(MSERR_EXT_EXTEND_START), MSExtErrorToString(MSERR_EXT_EXTEND_START));
3191 
3192     std::array<MediaServiceExtErrCodeAPI9, 5> errCodesAPI9 = {MSERR_EXT_API9_OK, MSERR_EXT_API9_NO_PERMISSION,
3193         MSERR_EXT_API9_PERMISSION_DENIED, MSERR_EXT_API9_INVALID_PARAMETER, MSERR_EXT_API9_UNSUPPORT_CAPABILITY};
3194     for (const auto& errCodeApi9 : errCodesAPI9) {
3195         MediaServiceExtErrCodeAPI9Test(errCodeApi9);
3196     }
3197     for (auto code = MSERR_EXT_API9_NO_MEMORY;
3198         code <= MSERR_EXT_API9_AUDIO_INTERRUPTED; code = (MediaServiceExtErrCodeAPI9)(code + 1)) {
3199         MediaServiceExtErrCodeAPI9Test(code);
3200     }
3201 }
3202 
3203 /**
3204  * @tc.name  : Test ChangeSurface
3205  * @tc.number: Player_ChangeSurface_001
3206  * @tc.desc  : Test video player change surface in idle state
3207  */
3208 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_001, TestSize.Level1)
3209 {
3210     sptr<Surface> videoSurface = player_->GetVideoSurface();
3211     ASSERT_NE(nullptr, videoSurface);
3212     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
3213 }
3214 
3215 /**
3216  * @tc.name  : Test ChangeSurface
3217  * @tc.number: Player_ChangeSurface_002
3218  * @tc.desc  : Test video player change surface in released state
3219  */
3220 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_002, TestSize.Level1)
3221 {
3222     sptr<Surface> videoSurface = player_->GetVideoSurface();
3223     ASSERT_NE(nullptr, videoSurface);
3224     player_->Release();
3225     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(videoSurface));
3226 }
3227 
3228 /**
3229  * @tc.name  : Test ChangeSurface
3230  * @tc.number: Player_ChangeSurface_003
3231  * @tc.desc  : Test video player change surface in error state
3232  */
3233 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_003, TestSize.Level1)
3234 {
3235     int32_t ret = player_->SetSource(MEDIA_ROOT + "error.mp4");
3236     EXPECT_EQ(MSERR_OK, ret);
3237     sptr<Surface> videoSurface = player_->GetVideoSurface();
3238     ASSERT_NE(nullptr, videoSurface);
3239     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3240     EXPECT_NE(MSERR_OK, player_->PrepareAsync());
3241     sleep(PLAYING_TIME_2_SEC);
3242     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3243     ASSERT_NE(nullptr, nextVideoSurface);
3244     EXPECT_NE(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3245 }
3246 
3247 /**
3248  * @tc.name  : Test ChangeSurface
3249  * @tc.number: Player_ChangeSurface_004
3250  * @tc.desc  : Test video player change surface in initialized state
3251  */
3252 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_004, TestSize.Level1)
3253 {
3254     int32_t ret = player_->SetSource(VIDEO_FILE1);
3255     EXPECT_EQ(MSERR_OK, ret);
3256     sptr<Surface> videoSurface = player_->GetVideoSurface();
3257     ASSERT_NE(nullptr, videoSurface);
3258     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3259     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3260     ASSERT_NE(nullptr, nextVideoSurface);
3261     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3262 }
3263 
3264 /**
3265  * @tc.name  : Test ChangeSurface
3266  * @tc.number: Player_ChangeSurface_005
3267  * @tc.desc  : Test video player change surface in prepared state
3268  */
3269 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_005, TestSize.Level1)
3270 {
3271     int32_t ret = player_->SetSource(VIDEO_FILE1);
3272     EXPECT_EQ(MSERR_OK, ret);
3273     sptr<Surface> videoSurface = player_->GetVideoSurface();
3274     ASSERT_NE(nullptr, videoSurface);
3275     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3276     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3277     sleep(PLAYING_TIME_2_SEC);
3278     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3279     ASSERT_NE(nullptr, nextVideoSurface);
3280     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3281 }
3282 
3283 /**
3284  * @tc.name  : Test ChangeSurface
3285  * @tc.number: Player_ChangeSurface_006
3286  * @tc.desc  : Test video player change surface in playing state
3287  */
3288 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_006, TestSize.Level1)
3289 {
3290     int32_t ret = player_->SetSource(VIDEO_FILE1);
3291     EXPECT_EQ(MSERR_OK, ret);
3292     sptr<Surface> videoSurface = player_->GetVideoSurface();
3293     ASSERT_NE(nullptr, videoSurface);
3294     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3295     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3296     sleep(PLAYING_TIME_2_SEC);
3297     EXPECT_EQ(MSERR_OK, player_->Play());
3298     sleep(PLAYING_TIME_2_SEC);
3299     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3300     ASSERT_NE(nullptr, nextVideoSurface);
3301     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3302 }
3303 
3304 /**
3305  * @tc.name  : Test ChangeSurface
3306  * @tc.number: Player_ChangeSurface_007
3307  * @tc.desc  : Test video player change surface in paused state
3308  */
3309 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_007, TestSize.Level1)
3310 {
3311     int32_t ret = player_->SetSource(VIDEO_FILE1);
3312     EXPECT_EQ(MSERR_OK, ret);
3313     sptr<Surface> videoSurface = player_->GetVideoSurface();
3314     ASSERT_NE(nullptr, videoSurface);
3315     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3316     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3317     sleep(PLAYING_TIME_2_SEC);
3318     EXPECT_EQ(MSERR_OK, player_->Play());
3319     sleep(PLAYING_TIME_2_SEC);
3320     EXPECT_EQ(MSERR_OK, player_->Pause());
3321     sleep(PLAYING_TIME_2_SEC);
3322     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3323     ASSERT_NE(nullptr, nextVideoSurface);
3324     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3325 }
3326 
3327 /**
3328  * @tc.name  : Test ChangeSurface
3329  * @tc.number: Player_ChangeSurface_008
3330  * @tc.desc  : Test video player change surface in stopped state
3331  */
3332 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_008, TestSize.Level1)
3333 {
3334     int32_t ret = player_->SetSource(VIDEO_FILE1);
3335     EXPECT_EQ(MSERR_OK, ret);
3336     sptr<Surface> videoSurface = player_->GetVideoSurface();
3337     ASSERT_NE(nullptr, videoSurface);
3338     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3339     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3340     sleep(PLAYING_TIME_2_SEC);
3341     EXPECT_EQ(MSERR_OK, player_->Play());
3342     sleep(PLAYING_TIME_2_SEC);
3343     EXPECT_EQ(MSERR_OK, player_->Stop());
3344     sleep(PLAYING_TIME_2_SEC);
3345     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3346     ASSERT_NE(nullptr, nextVideoSurface);
3347     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3348 }
3349 
3350 /**
3351  * @tc.name  : Test ChangeSurface
3352  * @tc.number: Player_ChangeSurface_009
3353  * @tc.desc  : Test video player change surface in completed state
3354  */
3355 HWTEST_F(PlayerServerUnitTest, Player_ChangeSurface_009, TestSize.Level1)
3356 {
3357     int32_t ret = player_->SetSource(VIDEO_FILE1);
3358     EXPECT_EQ(MSERR_OK, ret);
3359     sptr<Surface> videoSurface = player_->GetVideoSurface();
3360     ASSERT_NE(nullptr, videoSurface);
3361     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3362     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3363     sleep(PLAYING_TIME_2_SEC);
3364     EXPECT_EQ(MSERR_OK, player_->Play());
3365     int32_t duration = 0;
3366     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
3367     sleep(PLAYING_TIME_10_SEC);
3368     sptr<Surface> nextVideoSurface = player_->GetVideoSurfaceNext();
3369     ASSERT_NE(nullptr, nextVideoSurface);
3370     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(nextVideoSurface));
3371 }
3372 
3373 /**
3374  * @tc.name  : Test SetPlaybackSpeed API
3375  * @tc.number: Player_SetPlaybackSpeed_003
3376  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_0_50_X
3377  */
3378 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackSpeed_003, TestSize.Level1)
3379 {
3380     PlaybackRateMode mode;
3381     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3382     sptr<Surface> videoSurface = player_->GetVideoSurface();
3383     ASSERT_NE(nullptr, videoSurface);
3384     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3385     EXPECT_EQ(MSERR_OK, player_->Prepare());
3386     EXPECT_EQ(MSERR_OK, player_->Play());
3387     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_0_50_X));
3388     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3389     EXPECT_EQ(SPEED_FORWARD_0_50_X, mode);
3390 }
3391 
3392 /**
3393  * @tc.name  : Test SetPlaybackRate API
3394  * @tc.number: Player_SetPlaybackRate_003
3395  * @tc.desc  : Test Player SetPlaybacRate SPEED_FORWARD_0_50_X
3396  */
3397 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackRate_003, TestSize.Level1)
3398 {
3399     float playbackRate = 0.5f;
3400     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3401     sptr<Surface> videoSurface = player_->GetVideoSurface();
3402     ASSERT_NE(nullptr, videoSurface);
3403     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3404     EXPECT_EQ(MSERR_OK, player_->Prepare());
3405     EXPECT_EQ(MSERR_OK, player_->Play());
3406     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate));
3407 }
3408 
3409 /**
3410  * @tc.name  : Test SetPlaybackSpeed API
3411  * @tc.number: Player_SetPlaybackSpeed_004
3412  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_1_50_X
3413  */
3414 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackSpeed_004, TestSize.Level1)
3415 {
3416     PlaybackRateMode mode;
3417     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3418     sptr<Surface> videoSurface = player_->GetVideoSurface();
3419     ASSERT_NE(nullptr, videoSurface);
3420     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3421     EXPECT_EQ(MSERR_OK, player_->Prepare());
3422     EXPECT_EQ(MSERR_OK, player_->Play());
3423     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_1_50_X));
3424     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3425     EXPECT_EQ(SPEED_FORWARD_1_50_X, mode);
3426 }
3427 
3428 /**
3429  * @tc.name  : Test SetPlaybackRate API
3430  * @tc.number: Player_SetPlaybackRate_004
3431  * @tc.desc  : Test Player SetPlaybackRate SPEED_FORWARD_1_50_X
3432  */
3433 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackRate_004, TestSize.Level1)
3434 {
3435     float playbackRate = 1.5f;
3436     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3437     sptr<Surface> videoSurface = player_->GetVideoSurface();
3438     ASSERT_NE(nullptr, videoSurface);
3439     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3440     EXPECT_EQ(MSERR_OK, player_->Prepare());
3441     EXPECT_EQ(MSERR_OK, player_->Play());
3442     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackRate));
3443 }
3444 
3445 /**
3446  * @tc.name  : Test SetPlaybackSpeed API
3447  * @tc.number: Player_SetPlaybackSpeed_005
3448  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_1_50_X
3449  */
3450 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackSpeed_005, TestSize.Level1)
3451 {
3452     PlaybackRateMode mode;
3453     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3454     sptr<Surface> videoSurface = player_->GetVideoSurface();
3455     ASSERT_NE(nullptr, videoSurface);
3456     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3457     EXPECT_EQ(MSERR_OK, player_->Prepare());
3458     EXPECT_EQ(MSERR_OK, player_->Play());
3459     int32_t speed = -1;
3460     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(static_cast<OHOS::Media::PlaybackRateMode>(speed)));
3461     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
3462     EXPECT_EQ(-1, mode);
3463 }
3464 
3465 /**
3466  * @tc.name  : Test SetPlaybackRate API
3467  * @tc.number: Player_SetPlaybackRate_005
3468  * @tc.desc  : Test Player SetPlaybackRate Unvalid Value
3469  */
3470 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackRate_005, TestSize.Level1)
3471 {
3472     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3473     sptr<Surface> videoSurface = player_->GetVideoSurface();
3474     ASSERT_NE(nullptr, videoSurface);
3475     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3476     EXPECT_EQ(MSERR_OK, player_->Prepare());
3477     EXPECT_EQ(MSERR_OK, player_->Play());
3478     float playbackRate = -1;
3479     EXPECT_NE(MSERR_OK, player_->SetPlaybackRate(playbackRate));
3480 }
3481 
3482 /**
3483  * @tc.name  : Test SetSurface API
3484  * @tc.number: Player_SetSurface_001
3485  * @tc.desc  : Test Player SetSurface->SetSurface
3486  */
3487 HWTEST_F(PlayerServerUnitTest, Player_SetSurface_001, TestSize.Level1)
3488 {
3489     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3490     sptr<Surface> videoSurface = player_->GetVideoSurface();
3491     ASSERT_NE(nullptr, videoSurface);
3492     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3493     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3494     int32_t ret = player_->PrepareAsync();
3495     if (ret == MSERR_OK) {
3496         PlayFunTest(LOCAL_PLAY);
3497     }
3498 }
3499 
3500 /**
3501  * @tc.name  : Test AddSubSource
3502  * @tc.number: Player_AddSubSource_001
3503  * @tc.desc  : Test Player AddSubSource state machine
3504  */
3505 HWTEST_F(PlayerServerUnitTest, Player_AddSubSource_001, TestSize.Level1)
3506 {
3507     ASSERT_NE(MSERR_OK, player_->AddSubSource(SUBTITLE_SRT_FIELE, 0, 0));
3508     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "AVC_Baseline@L1.2_81.0Kbps_320x240.mp4", 0, 0));
3509     sptr<Surface> videoSurface = player_->GetVideoSurface();
3510     ASSERT_NE(nullptr, videoSurface);
3511     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3512     EXPECT_NE(MSERR_OK, player_->AddSubSource(SUBTITLE_SRT_FIELE));    // Illegal state machine
3513     EXPECT_EQ(MSERR_OK, player_->Prepare());
3514     EXPECT_EQ(MSERR_OK, player_->Play());
3515     EXPECT_NE(SUBTITLE_0_SEC, player_->GetSubtitleText(SUBTITLE_0_SEC));
3516     EXPECT_EQ(MSERR_OK, player_->Pause());
3517     EXPECT_EQ(MSERR_OK, player_->Stop());
3518     EXPECT_EQ(MSERR_OK, player_->Reset());
3519     EXPECT_EQ(MSERR_OK, player_->Release());
3520 }
3521 
3522 /**
3523  * @tc.name  : Test AddSubSource
3524  * @tc.number: Player_AddSubSource_002
3525  * @tc.desc  : Test Player AddSubSource behavior
3526  */
3527 HWTEST_F(PlayerServerUnitTest, Player_AddSubSource_002, TestSize.Level1)
3528 {
3529     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3530     sptr<Surface> videoSurface = player_->GetVideoSurface();
3531     ASSERT_NE(nullptr, videoSurface);
3532     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3533     EXPECT_NE(MSERR_OK, player_->AddSubSource(SUBTITLE_SRT_FIELE, 0, 0));
3534     EXPECT_EQ(MSERR_OK, player_->Prepare());
3535     EXPECT_EQ(MSERR_OK, player_->Play());
3536     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_5_SEC, SEEK_CLOSEST));
3537     EXPECT_EQ("", player_->GetSubtitleText(""));
3538     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_2_SEC, SEEK_CLOSEST));
3539     EXPECT_EQ("", player_->GetSubtitleText(""));
3540     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_5_SEC, SEEK_NEXT_SYNC));
3541     EXPECT_EQ("", player_->GetSubtitleText(""));
3542     EXPECT_EQ(MSERR_OK, player_->Seek(SEEK_TIME_5_SEC, SEEK_PREVIOUS_SYNC));
3543     EXPECT_EQ("", player_->GetSubtitleText(""));
3544     int duration = 0;
3545     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3546     EXPECT_EQ(MSERR_OK, player_->Play());
3547     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
3548     EXPECT_EQ("", player_->GetSubtitleText(""));
3549 }
3550 
3551 /**
3552  * @tc.name  : Test PlayerServer Stop
3553  * @tc.number: PlayerServer_Stop_001
3554  * @tc.desc  : Test PlayerServer Stop on different status
3555  */
3556 HWTEST_F(PlayerServerUnitTest, PlayerServer_Stop_001, TestSize.Level1)
3557 {
3558     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3559     sptr<Surface> videoSurface = player_->GetVideoSurface();
3560     ASSERT_NE(nullptr, videoSurface);
3561     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3562     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3563     EXPECT_EQ(MSERR_OK, player_->Stop());
3564 }
3565 
3566 /**
3567  * @tc.name  : Test PlayerServer Stop
3568  * @tc.number: PlayerServer_Stop_002
3569  * @tc.desc  : Test PlayerServer Stop on different status
3570  */
3571 HWTEST_F(PlayerServerUnitTest, PlayerServer_Stop_002, TestSize.Level1)
3572 {
3573     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3574     sptr<Surface> videoSurface = player_->GetVideoSurface();
3575     ASSERT_NE(nullptr, videoSurface);
3576     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3577     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3578     EXPECT_EQ(MSERR_OK, player_->Play());
3579     EXPECT_TRUE(player_->IsPlaying());
3580     EXPECT_EQ(MSERR_OK, player_->Stop());
3581 }
3582 
3583 /**
3584  * @tc.name  : Test PlayerServer Stop
3585  * @tc.number: PlayerServer_Stop_003
3586  * @tc.desc  : Test PlayerServer Stop on different status
3587  */
3588 HWTEST_F(PlayerServerUnitTest, PlayerServer_Stop_003, TestSize.Level1)
3589 {
3590     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3591     sptr<Surface> videoSurface = player_->GetVideoSurface();
3592     int32_t duration = 0;
3593     ASSERT_NE(nullptr, videoSurface);
3594     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3595     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3596     EXPECT_EQ(MSERR_OK, player_->Play());
3597     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3598     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
3599     EXPECT_TRUE(player_->IsPlaying());
3600     sleep(PLAYING_TIME_2_SEC);
3601     EXPECT_EQ(MSERR_OK, player_->Stop());
3602 }
3603 
3604 /**
3605  * @tc.name  : Test PlayerServer Stop
3606  * @tc.number: PlayerServer_Stop_004
3607  * @tc.desc  : Test PlayerServer Stop on different status
3608  */
3609 HWTEST_F(PlayerServerUnitTest, PlayerServer_Stop_004, TestSize.Level1)
3610 {
3611     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3612     sptr<Surface> videoSurface = player_->GetVideoSurface();
3613     ASSERT_NE(nullptr, videoSurface);
3614     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3615     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3616     EXPECT_EQ(MSERR_OK, player_->Play());
3617     EXPECT_TRUE(player_->IsPlaying());
3618     EXPECT_EQ(MSERR_OK, player_->Pause());
3619     EXPECT_EQ(MSERR_OK, player_->Stop());
3620 }
3621 
3622 /**
3623  * @tc.name  : Test PlayerServer Stop
3624  * @tc.number: PlayerServer_Stop_005
3625  * @tc.desc  : Test PlayerServer Stop on different status
3626  */
3627 HWTEST_F(PlayerServerUnitTest, PlayerServer_Stop_005, TestSize.Level1)
3628 {
3629     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "H264_AAC.mp4", 0, 0));
3630     sptr<Surface> videoSurface = player_->GetVideoSurface();
3631     ASSERT_NE(nullptr, videoSurface);
3632     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3633     EXPECT_NE(MSERR_OK, player_->Stop());
3634 }
3635 
3636 /**
3637  * @tc.name  : Test SetParameter Stop
3638  * @tc.number: Player_SetParameter_001
3639  * @tc.desc  : Test Player SetParameter
3640  */
3641 HWTEST_F(PlayerServerUnitTest, Player_SetParameter_001, TestSize.Level1)
3642 {
3643     std::vector<Format> videoTrack;
3644     std::vector<Format> audioTrack;
3645     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3646     sptr<Surface> videoSurface = player_->GetVideoSurface();
3647     ASSERT_NE(nullptr, videoSurface);
3648     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3649     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3650     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
3651     Format format;
3652     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3653     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
3654     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
3655 }
3656 
3657 /**
3658  * @tc.name  : Test SetParameter Stop
3659  * @tc.number: Player_SetParameter_002
3660  * @tc.desc  : Test Player SetParameter
3661  */
3662 HWTEST_F(PlayerServerUnitTest, Player_SetParameter_002, TestSize.Level1)
3663 {
3664     std::vector<Format> videoTrack;
3665     std::vector<Format> audioTrack;
3666     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3667     sptr<Surface> videoSurface = player_->GetVideoSurface();
3668     ASSERT_NE(nullptr, videoSurface);
3669     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3670     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3671     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
3672     Format format;
3673     int32_t contentType = 1;
3674     int32_t scaleType = 1;
3675     int32_t streamUsage = 1;
3676     int32_t rendererFlags = 1;
3677     int32_t audioInterruptMode = 1;
3678     format.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE, scaleType);
3679     format.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
3680     format.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
3681     format.PutIntValue(PlayerKeys::RENDERER_FLAG, rendererFlags);
3682     format.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_MODE, audioInterruptMode);
3683     EXPECT_EQ(MSERR_OK, player_->SetParameter(format));
3684     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
3685     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
3686 }
3687 
3688 /**
3689  * @tc.name  : Test SetParameter Stop
3690  * @tc.number: Player_SetParameter_003
3691  * @tc.desc  : Test Player SetParameter
3692  */
3693 HWTEST_F(PlayerServerUnitTest, Player_SetParameter_003, TestSize.Level1)
3694 {
3695     Format formatScaleType;
3696     Format formatContentType;
3697     Format formatStreamUsage;
3698     Format formatStreamUsageAndContentType;
3699     Format formatInterruptMode;
3700     std::vector<Format> videoTrack;
3701     std::vector<Format> audioTrack;
3702     int32_t contentType = 1;
3703     int32_t scaleType = 1;
3704     int32_t streamUsage = 1;
3705     int32_t audioInterruptMode = 1;
3706     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3707     sptr<Surface> videoSurface = player_->GetVideoSurface();
3708     ASSERT_NE(nullptr, videoSurface);
3709     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3710     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3711     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
3712 
3713     formatScaleType.PutIntValue(PlayerKeys::VIDEO_SCALE_TYPE, scaleType);
3714     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatScaleType));
3715 
3716     formatContentType.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
3717     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatContentType));
3718 
3719     formatStreamUsage.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
3720     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatStreamUsage));
3721 
3722     formatStreamUsageAndContentType.PutIntValue(PlayerKeys::CONTENT_TYPE, contentType);
3723     formatStreamUsageAndContentType.PutIntValue(PlayerKeys::STREAM_USAGE, streamUsage);
3724     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatStreamUsageAndContentType));
3725 
3726     formatInterruptMode.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_MODE, audioInterruptMode);
3727     EXPECT_EQ(MSERR_OK, player_->SetParameter(formatInterruptMode));
3728 
3729     EXPECT_EQ(MSERR_OK, player_->GetVideoTrackInfo(videoTrack));
3730     EXPECT_EQ(MSERR_OK, player_->GetAudioTrackInfo(audioTrack));
3731 }
3732 
3733 /**
3734  * @tc.name  : Test Player state machine, invalid operation on stopped
3735  * @tc.number: Player_State_Machine_001
3736  * @tc.desc  : Test Player state machine, invalid operation on stopped
3737  */
3738 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_001, TestSize.Level1)
3739 {
3740     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3741     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3742     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3743     sleep(1);
3744     ASSERT_EQ(PlayerStates::PLAYER_PREPARED, player_->GetState());
3745     int32_t duration = 0;
3746     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3747     ASSERT_EQ(MSERR_OK, player_->Play());
3748     sleep(1);
3749     ASSERT_EQ(true, player_->IsPlaying());
3750     ASSERT_EQ(PlayerStates::PLAYER_STARTED, player_->GetState());
3751     ASSERT_EQ(MSERR_OK, player_->Stop());
3752     sleep(1);
3753     ASSERT_EQ(PlayerStates::PLAYER_STOPPED, player_->GetState());
3754     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3755     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3756     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3757 }
3758 
3759 /**
3760  * @tc.name  : Test Player state machine, invalid operation on error
3761  * @tc.number: Player_State_Machine_002
3762  * @tc.desc  : Test Player state machine, invalid operation on error
3763  */
3764 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_002, TestSize.Level1)
3765 {
3766     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3767     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "1kb.mp3"));
3768     ASSERT_NE(MSERR_OK, player_->PrepareAsync());
3769     sleep(1);
3770     ASSERT_EQ(PlayerStates::PLAYER_STATE_ERROR, player_->GetState());
3771     int32_t duration = 0;
3772     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->GetDuration(duration));
3773     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Seek(0, PlayerSeekMode::SEEK_NEXT_SYNC));
3774     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3775     sleep(1);
3776     ASSERT_EQ(false, player_->IsPlaying());
3777     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Stop());
3778     sleep(1);
3779     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3780     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3781     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3782     ASSERT_EQ(MSERR_OK, player_->Reset());
3783     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3784     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Reset());
3785 }
3786 
3787 /**
3788  * @tc.name  : Test Player state machine, invalid operation on idle
3789  * @tc.number: Player_State_Machine_003
3790  * @tc.desc  : Test Player state machine, invalid operation on idle
3791  */
3792 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_003, TestSize.Level1)
3793 {
3794     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3795     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->PrepareAsync());
3796     sleep(1);
3797     int32_t duration = 0;
3798     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->GetDuration(duration));
3799     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3800     sleep(1);
3801     ASSERT_EQ(false, player_->IsPlaying());
3802     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3803     ASSERT_EQ(MSERR_NO_MEMORY, player_->Seek(0, PlayerSeekMode::SEEK_NEXT_SYNC));
3804     sleep(1);
3805     ASSERT_EQ(false, player_->IsPlaying());
3806     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3807     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Stop());
3808 }
3809 
3810 /**
3811  * @tc.name  : Test Player state machine, invalid operation on initialized
3812  * @tc.number: Player_State_Machine_004
3813  * @tc.desc  : Test Player state machine, invalid operation on initialized
3814  */
3815 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_004, TestSize.Level1)
3816 {
3817     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3818     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3819     sleep(1);
3820     int32_t duration = 0;
3821     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->GetDuration(duration));
3822     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3823     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3824     sleep(1);
3825     ASSERT_EQ(false, player_->IsPlaying());
3826     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Stop());
3827     sleep(1);
3828     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3829     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Play());
3830 }
3831 
3832 /**
3833  * @tc.name  : Test Player state machine, invalid operation on prepared
3834  * @tc.number: Player_State_Machine_005
3835  * @tc.desc  : Test Player state machine, invalid operation on prepared
3836  */
3837 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_005, TestSize.Level1)
3838 {
3839     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3840     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3841     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3842     sleep(1);
3843     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3844     int32_t duration = 0;
3845     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3846     ASSERT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3847     ASSERT_EQ(PlayerStates::PLAYER_PREPARED, player_->GetState());
3848     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3849     sleep(1);
3850     ASSERT_EQ(false, player_->IsPlaying());
3851     ASSERT_EQ(MSERR_OK, player_->Stop());
3852 }
3853 
3854 /**
3855  * @tc.name  : Test Player state machine, invalid operation on playing
3856  * @tc.number: Player_State_Machine_006
3857  * @tc.desc  : Test Player state machine, invalid operation on playing
3858  */
3859 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_006, TestSize.Level1)
3860 {
3861     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3862     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3863     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3864     ASSERT_EQ(MSERR_OK, player_->SetLooping(true));
3865     sleep(1);
3866     int32_t duration = 0;
3867     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3868     ASSERT_EQ(MSERR_OK, player_->Play());
3869     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3870     ASSERT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3871     sleep(1);
3872     ASSERT_EQ(true, player_->IsPlaying());
3873     ASSERT_EQ(MSERR_OK, player_->Stop());
3874 }
3875 
3876 /**
3877  * @tc.name  : Test Player state machine, invalid operation on completed
3878  * @tc.number: Player_State_Machine_007
3879  * @tc.desc  : Test Player state machine, invalid operation on completed
3880  */
3881 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_007, TestSize.Level1)
3882 {
3883     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3884     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3885     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3886     sleep(1);
3887     int32_t duration = 0;
3888     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3889     ASSERT_EQ(MSERR_OK, player_->Seek(duration, PlayerSeekMode::SEEK_NEXT_SYNC));
3890     ASSERT_EQ(MSERR_OK, player_->Play());
3891     sleep(1);
3892     ASSERT_EQ(false, player_->IsPlaying());
3893     ASSERT_EQ(PlayerStates::PLAYER_PLAYBACK_COMPLETE, player_->GetState());
3894     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
3895     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->PrepareAsync());
3896     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3897 }
3898 
3899 /**
3900  * @tc.name  : Test Player state machine, invalid operation on paused
3901  * @tc.number: Player_State_Machine_008
3902  * @tc.desc  : Test Player state machine, invalid operation on paused
3903  */
3904 HWTEST_F(PlayerServerUnitTest, Player_State_Machine_008, TestSize.Level1)
3905 {
3906     ASSERT_EQ(PlayerStates::PLAYER_IDLE, player_->GetState());
3907     ASSERT_EQ(MSERR_OK, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3908     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
3909     sleep(1);
3910     int32_t duration = 0;
3911     ASSERT_EQ(MSERR_OK, player_->GetDuration(duration));
3912     ASSERT_EQ(MSERR_OK, player_->Play());
3913     ASSERT_EQ(MSERR_OK, player_->Pause());
3914     sleep(1);
3915     ASSERT_EQ(PlayerStates::PLAYER_PAUSED, player_->GetState());
3916     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->SetSource(MEDIA_ROOT + "mp3_48000Hz_64kbs_mono.mp3"));
3917     ASSERT_EQ(MSERR_INVALID_OPERATION, player_->PrepareAsync());
3918 }
3919 
3920 /**
3921  * @tc.name  : Test SetPlayRange [0, 600]
3922  * @tc.number: Player_SetPlayRange_001
3923  * @tc.desc  : Test Player SetPlayRange interface
3924  */
3925 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_001, TestSize.Level1)
3926 {
3927     int32_t duration = 0;
3928     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3929     sptr<Surface> videoSurface = player_->GetVideoSurface();
3930     ASSERT_NE(nullptr, videoSurface);
3931     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3932     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(0, 600));
3933     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3934     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3935     EXPECT_EQ(MSERR_OK, player_->Play());
3936     EXPECT_TRUE(player_->IsPlaying());
3937     EXPECT_EQ(MSERR_OK, player_->Pause());
3938     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(0, duration));
3939     EXPECT_EQ(MSERR_OK, player_->Play());
3940     EXPECT_EQ(MSERR_OK, player_->Pause());
3941 }
3942 
3943 /**
3944  * @tc.name  : Test SetPlayRange [0, 600]
3945  * @tc.number: Player_SetPlayRange_002
3946  * @tc.desc  : Test Player SetPlayRange interface
3947  */
3948 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_002, TestSize.Level1)
3949 {
3950     int32_t duration = 0;
3951     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3952     sptr<Surface> videoSurface = player_->GetVideoSurface();
3953     ASSERT_NE(nullptr, videoSurface);
3954     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3955     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
3956     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
3957     EXPECT_EQ(MSERR_OK, player_->Play());
3958     EXPECT_TRUE(player_->IsPlaying());
3959     EXPECT_EQ(MSERR_OK, player_->Pause());
3960     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(0, 600));
3961     EXPECT_EQ(MSERR_OK, player_->Play());
3962     EXPECT_EQ(MSERR_OK, player_->Pause());
3963 }
3964 
3965 /**
3966  * @tc.name  : Test SetPlayRange [-2, -1]
3967  * @tc.number: Player_SetPlayRange_003
3968  * @tc.desc  : Test Player SetPlayRange interface
3969  */
3970 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_003, TestSize.Level1)
3971 {
3972     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3973     sptr<Surface> videoSurface = player_->GetVideoSurface();
3974     ASSERT_NE(nullptr, videoSurface);
3975     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3976     ASSERT_NE(MSERR_OK, player_->SetPlayRange(-2, -1));
3977 }
3978 
3979 /**
3980  * @tc.name  : Test SetPlayRange [-1, -2]
3981  * @tc.number: Player_SetPlayRange_004
3982  * @tc.desc  : Test Player SetPlayRange interface
3983  */
3984 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_004, TestSize.Level1)
3985 {
3986     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
3987     sptr<Surface> videoSurface = player_->GetVideoSurface();
3988     ASSERT_NE(nullptr, videoSurface);
3989     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
3990     ASSERT_NE(MSERR_OK, player_->SetPlayRange(-1, -2));
3991 }
3992 
3993 /**
3994  * @tc.name  : Test SetPlayRange [-1, 0]
3995  * @tc.number: Player_SetPlayRange_005
3996  * @tc.desc  : Test Player SetPlayRange interface
3997  */
3998 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_005, TestSize.Level1)
3999 {
4000     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4001     sptr<Surface> videoSurface = player_->GetVideoSurface();
4002     ASSERT_NE(nullptr, videoSurface);
4003     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4004     ASSERT_NE(MSERR_OK, player_->SetPlayRange(-1, 0));
4005 }
4006 
4007 /**
4008  * @tc.name  : Test SetPlayRange [-1, -1]
4009  * @tc.number: Player_SetPlayRange_006
4010  * @tc.desc  : Test Player SetPlayRange interface
4011  */
4012 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_006, TestSize.Level1)
4013 {
4014     int32_t duration = 0;
4015     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4016     sptr<Surface> videoSurface = player_->GetVideoSurface();
4017     ASSERT_NE(nullptr, videoSurface);
4018     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4019     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4020     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4021     EXPECT_EQ(MSERR_OK, player_->Play());
4022     EXPECT_TRUE(player_->IsPlaying());
4023     EXPECT_EQ(MSERR_OK, player_->Pause());
4024     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(-1, 600));
4025     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(-1, -1));
4026     EXPECT_EQ(MSERR_OK, player_->Play());
4027     EXPECT_EQ(MSERR_OK, player_->Pause());
4028 }
4029 
4030 /**
4031  * @tc.name  : Test SetPlayRange [100, 2]
4032  * @tc.number: Player_SetPlayRange_007
4033  * @tc.desc  : Test Player SetPlayRange interface
4034  */
4035 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_007, TestSize.Level1)
4036 {
4037     int32_t duration = 0;
4038     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4039     sptr<Surface> videoSurface = player_->GetVideoSurface();
4040     ASSERT_NE(nullptr, videoSurface);
4041     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4042     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4043     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4044     EXPECT_EQ(MSERR_OK, player_->Play());
4045     EXPECT_TRUE(player_->IsPlaying());
4046     EXPECT_EQ(MSERR_OK, player_->Pause());
4047     ASSERT_NE(MSERR_OK, player_->SetPlayRange(100, 2));
4048 }
4049 
4050 /**
4051  * @tc.name  : Test SetPlayRange [duration + 1, duration + 2]
4052  * @tc.number: Player_SetPlayRange_008
4053  * @tc.desc  : Test Player SetPlayRange interface
4054  */
4055 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_008, TestSize.Level1)
4056 {
4057     int32_t duration = 0;
4058     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4059     sptr<Surface> videoSurface = player_->GetVideoSurface();
4060     ASSERT_NE(nullptr, videoSurface);
4061     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4062     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4063     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4064     EXPECT_EQ(MSERR_OK, player_->Play());
4065     EXPECT_TRUE(player_->IsPlaying());
4066     EXPECT_EQ(MSERR_OK, player_->Pause());
4067     int32_t start = duration + 1;
4068     int32_t end = duration + 2;
4069     ASSERT_NE(MSERR_OK, player_->SetPlayRange(start, end));
4070 }
4071 
4072 /**
4073  * @tc.name  : Test SetPlayRange [100, duration + 1]
4074  * @tc.number: Player_SetPlayRange_009
4075  * @tc.desc  : Test Player SetPlayRange interface
4076  */
4077 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_009, TestSize.Level1)
4078 {
4079     int32_t duration = 0;
4080     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4081     sptr<Surface> videoSurface = player_->GetVideoSurface();
4082     ASSERT_NE(nullptr, videoSurface);
4083     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4084     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4085     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4086     EXPECT_EQ(MSERR_OK, player_->Play());
4087     EXPECT_TRUE(player_->IsPlaying());
4088     EXPECT_EQ(MSERR_OK, player_->Pause());
4089     int32_t end = duration + 1;
4090     ASSERT_NE(MSERR_OK, player_->SetPlayRange(100, end));
4091 }
4092 
4093 /**
4094  * @tc.name  : Test SetPlayRange [10035, 10037]
4095  * @tc.number: Player_SetPlayRange_010
4096  * @tc.desc  : Test Player SetPlayRange interface, duration 10034
4097  */
4098 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_010, TestSize.Level1)
4099 {
4100     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4101     sptr<Surface> videoSurface = player_->GetVideoSurface();
4102     ASSERT_NE(nullptr, videoSurface);
4103     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4104     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(10035, 10037));
4105     ASSERT_NE(MSERR_OK, player_->PrepareAsync());
4106 }
4107 
4108 /**
4109  * @tc.name  : Test SetPlayRange [100, 10037]
4110  * @tc.number: Player_SetPlayRange_011
4111  * @tc.desc  : Test Player SetPlayRange interface, duration 10034
4112  */
4113 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_011, TestSize.Level1)
4114 {
4115     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4116     sptr<Surface> videoSurface = player_->GetVideoSurface();
4117     ASSERT_NE(nullptr, videoSurface);
4118     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4119     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(100, 10037));
4120     ASSERT_NE(MSERR_OK, player_->PrepareAsync());
4121 }
4122 
4123 /**
4124  * @tc.name  : Test SetPlayRange
4125  * @tc.number: Player_SetPlayRange_012
4126  * @tc.desc  : Test Player SetPlayRange invalid state
4127  */
4128 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_012, TestSize.Level0)
4129 {
4130     EXPECT_NE(MSERR_OK, player_->SetPlayRange(100, 10037));
4131 }
4132 
4133 /**
4134  * @tc.name  : Test SetPlayRange
4135  * @tc.number: Player_SetPlayRange_013
4136  * @tc.desc  : Test Player SetPlayRange invalid playerEngine
4137  */
4138 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRange_013, TestSize.Level0)
4139 {
4140     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4141     server->lastOpStatus_ = PLAYER_INITIALIZED;
4142     EXPECT_EQ(MSERR_OK, server->SetPlayRange(100, 10037));
4143 }
4144 
4145 /**
4146  * @tc.name  : Test SeekContinuous in prepared
4147  * @tc.number: Player_SeekContinuous_001
4148  * @tc.desc  : Test Player SeekContinuous
4149  */
4150 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_001, TestSize.Level1)
4151 {
4152     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4153     sptr<Surface> videoSurface = player_->GetVideoSurface();
4154     ASSERT_NE(nullptr, videoSurface);
4155     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4156     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4157     for (int i = 0; i < 10; i++) {
4158         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4159         usleep(SEEK_CONTINUOUS_WAIT_US);
4160     }
4161     EXPECT_EQ(MSERR_OK, player_->Play());
4162 }
4163 
4164 /**
4165  * @tc.name  : Test SeekContinuous in playing
4166  * @tc.number: Player_SeekContinuous_002
4167  * @tc.desc  : Test Player SeekContinuous
4168  */
4169 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_002, TestSize.Level1)
4170 {
4171     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4172     sptr<Surface> videoSurface = player_->GetVideoSurface();
4173     ASSERT_NE(nullptr, videoSurface);
4174     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4175     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4176     EXPECT_EQ(MSERR_OK, player_->Play());
4177     sleep(PLAYING_TIME_2_SEC);
4178     for (int i = 0; i < 30; i++) {
4179         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4180         usleep(SEEK_CONTINUOUS_WAIT_US);
4181     }
4182     EXPECT_EQ(MSERR_OK, player_->Play());
4183     EXPECT_EQ(MSERR_OK, player_->Stop());
4184 }
4185 
4186 /**
4187  * @tc.name  : Test SeekContinuous in paused
4188  * @tc.number: Player_SeekContinuous_003
4189  * @tc.desc  : Test Player SeekContinuous
4190  */
4191 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_003, TestSize.Level1)
4192 {
4193     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4194     sptr<Surface> videoSurface = player_->GetVideoSurface();
4195     ASSERT_NE(nullptr, videoSurface);
4196     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4197     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4198     EXPECT_EQ(MSERR_OK, player_->Play());
4199     sleep(PLAYING_TIME_2_SEC);
4200     EXPECT_EQ(MSERR_OK, player_->Pause());
4201     for (int i = 0; i < 30; i++) {
4202         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4203         usleep(SEEK_CONTINUOUS_WAIT_US);
4204     }
4205     EXPECT_EQ(MSERR_OK, player_->Play());
4206     EXPECT_EQ(MSERR_OK, player_->Stop());
4207 }
4208 
4209 /**
4210  * @tc.name  : Test SeekContinuous in completed
4211  * @tc.number: Player_SeekContinuous_004
4212  * @tc.desc  : Test Player SeekContinuous
4213  */
4214 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_004, TestSize.Level1)
4215 {
4216     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4217     sptr<Surface> videoSurface = player_->GetVideoSurface();
4218     ASSERT_NE(nullptr, videoSurface);
4219     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4220     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4221     EXPECT_EQ(MSERR_OK, player_->Play());
4222     sleep(PLAYING_TIME_2_SEC);
4223     EXPECT_EQ(MSERR_OK, player_->Seek(9, SEEK_PREVIOUS_SYNC));
4224     sleep(PLAYING_TIME_10_SEC);
4225     for (int i = 0; i < 30; i++) {
4226         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
4227         usleep(SEEK_CONTINUOUS_WAIT_US);
4228     }
4229     EXPECT_EQ(MSERR_OK, player_->Play());
4230     EXPECT_EQ(MSERR_OK, player_->Stop());
4231 }
4232 
4233 /**
4234  * @tc.name  : Test SeekContinuous backward
4235  * @tc.number: Player_SeekContinuous_005
4236  * @tc.desc  : Test Player SeekContinuous
4237  */
4238 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_005, TestSize.Level1)
4239 {
4240     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4241     sptr<Surface> videoSurface = player_->GetVideoSurface();
4242     ASSERT_NE(nullptr, videoSurface);
4243     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4244     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4245     EXPECT_EQ(MSERR_OK, player_->Play());
4246     sleep(PLAYING_TIME_2_SEC);
4247     for (int i = 0; i < 30; i++) {
4248         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4249         usleep(SEEK_CONTINUOUS_WAIT_US);
4250     }
4251     EXPECT_EQ(MSERR_OK, player_->Play());
4252     EXPECT_EQ(MSERR_OK, player_->Stop());
4253 }
4254 
4255 /**
4256  * @tc.name  : Test SeekContinuous forward and backward
4257  * @tc.number: Player_SeekContinuous_006
4258  * @tc.desc  : Test Player SeekContinuous
4259  */
4260 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_006, TestSize.Level1)
4261 {
4262     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4263     sptr<Surface> videoSurface = player_->GetVideoSurface();
4264     ASSERT_NE(nullptr, videoSurface);
4265     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4266     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4267     EXPECT_EQ(MSERR_OK, player_->Play());
4268     sleep(PLAYING_TIME_2_SEC);
4269     for (int i = 0; i < 30; i++) {
4270         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4271         usleep(SEEK_CONTINUOUS_WAIT_US);
4272     }
4273     for (int i = 0; i < 30; i++) {
4274         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
4275         usleep(SEEK_CONTINUOUS_WAIT_US);
4276     }
4277     EXPECT_EQ(MSERR_OK, player_->Play());
4278     EXPECT_EQ(MSERR_OK, player_->Stop());
4279 }
4280 
4281 /**
4282  * @tc.name  : Test SetPlaybackSpeed API
4283  * @tc.number: Player_SetPlaybackSpeed_006
4284  * @tc.desc  : Test Player SetPlaybackSpeed SPEED_FORWARD_3_00_X
4285  */
4286 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackSpeed_006, TestSize.Level1)
4287 {
4288     float playbackSpeed = 3.0f;
4289     PlaybackRateMode mode;
4290     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4291     sptr<Surface> videoSurface = player_->GetVideoSurface();
4292     ASSERT_NE(nullptr, videoSurface);
4293     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4294     EXPECT_EQ(MSERR_OK, player_->Prepare());
4295     EXPECT_EQ(MSERR_OK, player_->Play());
4296     EXPECT_EQ(MSERR_OK, player_->SetPlaybackRate(playbackSpeed));
4297     EXPECT_EQ(MSERR_OK, player_->SetPlaybackSpeed(SPEED_FORWARD_3_00_X));
4298     EXPECT_EQ(MSERR_OK, player_->GetPlaybackSpeed(mode));
4299     EXPECT_EQ(SPEED_FORWARD_3_00_X, mode);
4300 }
4301 
4302 /**
4303  * @tc.name  : Test SetMaxAmplitudeCbStatus API
4304  * @tc.number: Player_SetMaxAmplitudeCbStatus_001
4305  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status on before prepare
4306  */
4307 HWTEST_F(PlayerServerUnitTest, Player_SetMaxAmplitudeCbStatus_001, TestSize.Level1)
4308 {
4309     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4310     sptr<Surface> videoSurface = player_->GetVideoSurface();
4311     ASSERT_NE(nullptr, videoSurface);
4312     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(true));
4313     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4314     EXPECT_EQ(MSERR_OK, player_->Prepare());
4315     EXPECT_EQ(MSERR_OK, player_->Play());
4316 }
4317 
4318 /**
4319  * @tc.name  : Test SetMaxAmplitudeCbStatus API
4320  * @tc.number: Player_SetMaxAmplitudeCbStatus_002
4321  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status on after prepare
4322  */
4323 HWTEST_F(PlayerServerUnitTest, Player_SetMaxAmplitudeCbStatus_002, TestSize.Level1)
4324 {
4325     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4326     sptr<Surface> videoSurface = player_->GetVideoSurface();
4327     ASSERT_NE(nullptr, videoSurface);
4328     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4329     EXPECT_EQ(MSERR_OK, player_->Prepare());
4330     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(true));
4331     EXPECT_EQ(MSERR_OK, player_->Play());
4332 }
4333 
4334 /**
4335  * @tc.name  : Test SetMaxAmplitudeCbStatus API
4336  * @tc.number: Player_SetMaxAmplitudeCbStatus_003
4337  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status off before prepare
4338  */
4339 HWTEST_F(PlayerServerUnitTest, Player_SetMaxAmplitudeCbStatus_003, TestSize.Level1)
4340 {
4341     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4342     sptr<Surface> videoSurface = player_->GetVideoSurface();
4343     ASSERT_NE(nullptr, videoSurface);
4344     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(false));
4345     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4346     EXPECT_EQ(MSERR_OK, player_->Prepare());
4347     EXPECT_EQ(MSERR_OK, player_->Play());
4348 }
4349 
4350 /**
4351  * @tc.name  : Test SetMaxAmplitudeCbStatus API
4352  * @tc.number: Player_SetMaxAmplitudeCbStatus_004
4353  * @tc.desc  : Test Player SetMaxAmplitudeCbStatus status off after prepare
4354  */
4355 HWTEST_F(PlayerServerUnitTest, Player_SetMaxAmplitudeCbStatus_004, TestSize.Level1)
4356 {
4357     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4358     sptr<Surface> videoSurface = player_->GetVideoSurface();
4359     ASSERT_NE(nullptr, videoSurface);
4360     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4361     EXPECT_EQ(MSERR_OK, player_->Prepare());
4362     EXPECT_EQ(MSERR_OK, player_->SetMaxAmplitudeCbStatus(false));
4363     EXPECT_EQ(MSERR_OK, player_->Play());
4364 }
4365 
4366 /**
4367  * @tc.name  : Test SetDeviceChangeCbStatus API
4368  * @tc.number: Player_SetDeviceChangeCbStatus_001
4369  * @tc.desc  : Test Player SetDeviceChangeCbStatus status on before prepare
4370  */
4371 HWTEST_F(PlayerServerUnitTest, Player_SetDeviceChangeCbStatus_001, TestSize.Level1)
4372 {
4373     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4374     sptr<Surface> videoSurface = player_->GetVideoSurface();
4375     ASSERT_NE(nullptr, videoSurface);
4376     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(true));
4377     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4378     EXPECT_EQ(MSERR_OK, player_->Prepare());
4379     EXPECT_EQ(MSERR_OK, player_->Play());
4380 }
4381 
4382 /**
4383  * @tc.name  : Test SetDeviceChangeCbStatus API
4384  * @tc.number: Player_SetDeviceChangeCbStatus_002
4385  * @tc.desc  : Test Player SetDeviceChangeCbStatus status on after prepare
4386  */
4387 HWTEST_F(PlayerServerUnitTest, Player_SetDeviceChangeCbStatus_002, TestSize.Level1)
4388 {
4389     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4390     sptr<Surface> videoSurface = player_->GetVideoSurface();
4391     ASSERT_NE(nullptr, videoSurface);
4392     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4393     EXPECT_EQ(MSERR_OK, player_->Prepare());
4394     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(true));
4395     EXPECT_EQ(MSERR_OK, player_->Play());
4396 }
4397 
4398 /**
4399  * @tc.name  : Test SetDeviceChangeCbStatus API
4400  * @tc.number: Player_SetDeviceChangeCbStatus_003
4401  * @tc.desc  : Test Player SetDeviceChangeCbStatus status off before prepare
4402  */
4403 HWTEST_F(PlayerServerUnitTest, Player_SetDeviceChangeCbStatus_003, TestSize.Level1)
4404 {
4405     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4406     sptr<Surface> videoSurface = player_->GetVideoSurface();
4407     ASSERT_NE(nullptr, videoSurface);
4408     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(false));
4409     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4410     EXPECT_EQ(MSERR_OK, player_->Prepare());
4411     EXPECT_EQ(MSERR_OK, player_->Play());
4412 }
4413 
4414 /**
4415  * @tc.name  : Test SetDeviceChangeCbStatus API
4416  * @tc.number: Player_SetDeviceChangeCbStatus_004
4417  * @tc.desc  : Test Player SetDeviceChangeCbStatus status off after prepare
4418  */
4419 HWTEST_F(PlayerServerUnitTest, Player_SetDeviceChangeCbStatus_004, TestSize.Level1)
4420 {
4421     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4422     sptr<Surface> videoSurface = player_->GetVideoSurface();
4423     ASSERT_NE(nullptr, videoSurface);
4424     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4425     EXPECT_EQ(MSERR_OK, player_->Prepare());
4426     EXPECT_EQ(MSERR_OK, player_->SetDeviceChangeCbStatus(false));
4427     EXPECT_EQ(MSERR_OK, player_->Play());
4428 }
4429 
4430 /**
4431  * @tc.name  : Test SetPlaybackStrategy
4432  * @tc.number: Player_SetPlaybackStrategy_001
4433  * @tc.desc  : Test Player SetPlaybackStrategy
4434  */
4435 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackStrategy_001, TestSize.Level1)
4436 {
4437     AVPlayStrategy playbackStrategy = {
4438         .mutedMediaType = OHOS::Media::MediaType::MEDIA_TYPE_AUD
4439     };
4440     ASSERT_NE(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4441     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4442     ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4443 }
4444 
4445 HWTEST_F(PlayerServerUnitTest, Player_SetPlaybackStrategy_002, TestSize.Level1)
4446 {
4447     AVPlayStrategy playbackStrategy = {
4448         .mutedMediaType = OHOS::Media::MediaType::MEDIA_TYPE_VID,
4449         .keepDecodingOnMute = false
4450     };
4451     ASSERT_NE(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4452     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4453     ASSERT_EQ(MSERR_OK, player_->SetPlaybackStrategy(playbackStrategy));
4454 }
4455 
4456 /**
4457  * @tc.name  : Test SetMediaMuted
4458  * @tc.number: Player_SetMediaMuted_001
4459  * @tc.desc  : Test Player SetMediaMuted
4460  */
4461 HWTEST_F(PlayerServerUnitTest, Player_SetMediaMuted_001, TestSize.Level1)
4462 {
4463     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4464     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4465     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4466     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
4467     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4468     ASSERT_EQ(MSERR_OK, player_->Play());
4469     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4470     ASSERT_EQ(MSERR_OK, player_->Pause());
4471     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4472     ASSERT_EQ(MSERR_OK, player_->Stop());
4473     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_AUD, true));
4474 }
4475 
4476 /**
4477  * @tc.name  : Test SetMediaMuted
4478  * @tc.number: Player_SetMediaMuted_002
4479  * @tc.desc  : Test Player SetMediaMuted
4480  */
4481 HWTEST_F(PlayerServerUnitTest, Player_SetMediaMuted_002, TestSize.Level1)
4482 {
4483     ASSERT_NE(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4484     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4485     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4486     ASSERT_EQ(MSERR_OK, player_->PrepareAsync());
4487     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4488     ASSERT_EQ(MSERR_OK, player_->Play());
4489     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4490     ASSERT_EQ(MSERR_OK, player_->Stop());
4491     ASSERT_EQ(MSERR_OK, player_->SetMediaMuted(OHOS::Media::MediaType::MEDIA_TYPE_VID, true));
4492 }
4493 
4494 /**
4495  * @tc.name  : Test GetCurrentTime
4496  * @tc.number: Player_GetCurrentTime_001
4497  * @tc.desc  : Test GetCurrentTime interface with invalid parameters
4498  */
4499 HWTEST_F(PlayerServerUnitTest, Player_GetCurrentTime_001, TestSize.Level0)
4500 {
4501     int32_t time = 0;
4502     int32_t duration = 0;
4503     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4504     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
4505     sptr<Surface> videoSurface = player_->GetVideoSurface();
4506     ASSERT_NE(nullptr, videoSurface);
4507     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4508     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
4509     EXPECT_EQ(MSERR_OK, player_->Prepare());
4510     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
4511     EXPECT_EQ(MSERR_OK, player_->Play());
4512     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
4513     EXPECT_EQ(MSERR_OK, player_->Pause());
4514     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
4515     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4516     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
4517     EXPECT_EQ(MSERR_OK, player_->Play());
4518     sleep(PLAYING_TIME_2_SEC);
4519     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
4520     EXPECT_EQ(MSERR_OK, player_->Stop());
4521     EXPECT_EQ(MSERR_OK, player_->GetCurrentTime(time));
4522     EXPECT_EQ(MSERR_OK, player_->Reset());
4523     EXPECT_NE(MSERR_OK, player_->GetCurrentTime(time));
4524 }
4525 
4526 /**
4527  * @tc.name  : Test GetCurrentTime
4528  * @tc.number: Player_GetCurrentTime_002
4529  * @tc.desc  : Test GetCurrentTime interface with invalid parameters
4530  */
4531 HWTEST_F(PlayerServerUnitTest, Player_GetCurrentTime_002, TestSize.Level0)
4532 {
4533     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4534     int32_t time = 0;
4535     server->lastOpStatus_ = PLAYER_INITIALIZED;
4536     server->isLiveStream_ = true;
4537     EXPECT_EQ(MSERR_OK, server->GetCurrentTime(time));
4538 }
4539 
4540 /**
4541  * @tc.name  : Test GetPlaybackInfo API
4542  * @tc.number: Player_GetPlaybackInfo_001
4543  * @tc.desc  : Test Player GetPlaybackInfo
4544  */
4545 HWTEST_F(PlayerServerUnitTest, Player_GetPlaybackInfo_001, TestSize.Level0)
4546 {
4547     Format playbackInfo;
4548     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
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     EXPECT_EQ(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4555 }
4556 
4557 /**
4558  * @tc.name  : Test GetPlaybackInfo API
4559  * @tc.number: Player_GetPlaybackInfo_002
4560  * @tc.desc  : Test Player GetPlaybackInfo
4561  */
4562 HWTEST_F(PlayerServerUnitTest, Player_GetPlaybackInfo_002, TestSize.Level2)
4563 {
4564     Format playbackInfo;
4565     int32_t duration = 0;
4566     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4567     EXPECT_NE(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4568     sptr<Surface> videoSurface = player_->GetVideoSurface();
4569     ASSERT_NE(nullptr, videoSurface);
4570     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4571     EXPECT_NE(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4572     EXPECT_EQ(MSERR_OK, player_->Prepare());
4573     EXPECT_EQ(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4574     EXPECT_EQ(MSERR_OK, player_->Play());
4575     EXPECT_EQ(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4576     EXPECT_EQ(MSERR_OK, player_->Pause());
4577     EXPECT_EQ(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4578     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4579     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
4580     EXPECT_EQ(MSERR_OK, player_->Play());
4581     sleep(PLAYING_TIME_2_SEC);
4582     EXPECT_EQ(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4583     EXPECT_EQ(MSERR_OK, player_->Stop());
4584     EXPECT_NE(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4585     EXPECT_EQ(MSERR_OK, player_->Reset());
4586     EXPECT_NE(MSERR_OK, player_->GetPlaybackInfo(playbackInfo));
4587 }
4588 
4589 /**
4590  * @tc.name  : Test GetSubtitleTrackInfo API
4591  * @tc.number: Player_GetSubtitleTrackInfo_001
4592  * @tc.desc  : Test Player GetSubtitleTrackInfo
4593  */
4594 HWTEST_F(PlayerServerUnitTest, Player_GetSubtitleTrackInfo_001, TestSize.Level0)
4595 {
4596     std::vector<Format> subtitleTrackInfo;
4597     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4598     sptr<Surface> videoSurface = player_->GetVideoSurface();
4599     ASSERT_NE(nullptr, videoSurface);
4600     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4601     EXPECT_EQ(MSERR_OK, player_->Prepare());
4602     EXPECT_EQ(MSERR_OK, player_->Play());
4603     EXPECT_EQ(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4604 }
4605 
4606 /**
4607  * @tc.name  : Test GetSubtitleTrackInfo API
4608  * @tc.number: Player_GetSubtitleTrackInfo_002
4609  * @tc.desc  : Test Player GetSubtitleTrackInfo
4610  */
4611 HWTEST_F(PlayerServerUnitTest, Player_GetSubtitleTrackInfo_002, TestSize.Level2)
4612 {
4613     std::vector<Format> subtitleTrackInfo;
4614     int32_t duration = 0;
4615     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4616     EXPECT_NE(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4617     sptr<Surface> videoSurface = player_->GetVideoSurface();
4618     ASSERT_NE(nullptr, videoSurface);
4619     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4620     EXPECT_NE(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4621     EXPECT_EQ(MSERR_OK, player_->Prepare());
4622     EXPECT_EQ(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4623     EXPECT_EQ(MSERR_OK, player_->Play());
4624     EXPECT_EQ(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4625     EXPECT_EQ(MSERR_OK, player_->Pause());
4626     EXPECT_EQ(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4627     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4628     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_CLOSEST));
4629     EXPECT_EQ(MSERR_OK, player_->Play());
4630     sleep(PLAYING_TIME_2_SEC);
4631     EXPECT_EQ(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4632     EXPECT_EQ(MSERR_OK, player_->Stop());
4633     EXPECT_NE(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4634     EXPECT_EQ(MSERR_OK, player_->Reset());
4635     EXPECT_NE(MSERR_OK, player_->GetSubtitleTrackInfo(subtitleTrackInfo));
4636 }
4637 
4638 /**
4639  * @tc.name  : Test SetRenderFirstFrame API
4640  * @tc.number: Player_SetRenderFirstFrame_001
4641  * @tc.desc  : Test Player SetRenderFirstFrame
4642  */
4643 HWTEST_F(PlayerServerUnitTest, Player_SetRenderFirstFrame_001, TestSize.Level0)
4644 {
4645     bool display = false;
4646     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
4647     EXPECT_EQ(MSERR_OK, player_->SetRenderFirstFrame(display));
4648     EXPECT_EQ(MSERR_OK, player_->Prepare());
4649     EXPECT_NE(MSERR_OK, player_->SetRenderFirstFrame(display));
4650     EXPECT_EQ(MSERR_OK, player_->Play());
4651     EXPECT_NE(MSERR_OK, player_->SetRenderFirstFrame(display));
4652     EXPECT_EQ(MSERR_OK, player_->Reset());
4653     display = true;
4654     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE2));
4655     EXPECT_EQ(MSERR_OK, player_->SetRenderFirstFrame(display));
4656     EXPECT_EQ(MSERR_OK, player_->Prepare());
4657     EXPECT_NE(MSERR_OK, player_->SetRenderFirstFrame(display));
4658     EXPECT_EQ(MSERR_OK, player_->Play());
4659     EXPECT_NE(MSERR_OK, player_->SetRenderFirstFrame(display));
4660 }
4661 
4662 /**
4663  * @tc.name  : Test SetRenderFirstFrame API
4664  * @tc.number: Player_SetRenderFirstFrame_002
4665  * @tc.desc  : Test Player SetRenderFirstFrame invalid playerEngine
4666  */
4667 HWTEST_F(PlayerServerUnitTest, Player_SetRenderFirstFrame_002, TestSize.Level0)
4668 {
4669     bool display = false;
4670     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4671     server->lastOpStatus_ = PLAYER_INITIALIZED;
4672     EXPECT_EQ(MSERR_OK, server->SetRenderFirstFrame(display));
4673 }
4674 
4675 /**
4676  * @tc.name  : Test PreparedHandleEos API
4677  * @tc.number: Player_PreparedHandleEos_001
4678  * @tc.desc  : Test Player PreparedHandleEos
4679  */
4680 HWTEST_F(PlayerServerUnitTest, Player_PreparedHandleEos_001, TestSize.Level0)
4681 {
4682     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4683     (void)server->Init();
4684     ASSERT_EQ(MSERR_OK, server->SetSource(VIDEO_FILE1));
4685     EXPECT_EQ(MSERR_OK, server->Prepare());
4686     EXPECT_EQ(MSERR_OK, server->Play());
4687     EXPECT_EQ(MSERR_OK, server->SetLooping(true));
4688     EXPECT_EQ(true, server->IsLooping());
4689     server->PreparedHandleEos();
4690     EXPECT_NE(server->lastOpStatus_, PLAYER_PLAYBACK_COMPLETE);
4691     EXPECT_EQ(MSERR_OK, server->SetLooping(false));
4692     EXPECT_EQ(false, server->IsLooping());
4693     server->PreparedHandleEos();
4694     EXPECT_EQ(server->lastOpStatus_, PLAYER_PLAYBACK_COMPLETE);
4695     server->Release();
4696 }
4697 
4698 /**
4699  * @tc.name  : Test HandleEos API
4700  * @tc.number: Player_HandleEos_001
4701  * @tc.desc  : Test Player HandleEos
4702  */
4703 HWTEST_F(PlayerServerUnitTest, Player_HandleEos_001, TestSize.Level0)
4704 {
4705     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4706     server->HandleEos();
4707     EXPECT_EQ(server->disableNextSeekDone_, false);
4708 }
4709 
4710 /**
4711  * @tc.name  : Test HandleInterruptEvent API
4712  * @tc.number: Player_HandleInterruptEvent_001
4713  * @tc.desc  : Test Player HandleInterruptEvent
4714  */
4715 HWTEST_F(PlayerServerUnitTest, Player_HandleInterruptEvent_001, TestSize.Level0)
4716 {
4717     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4718     server->interruptEventState_ = PLAYER_PREPARING;
4719     Format infoBody;
4720     infoBody.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_TYPE, -1);
4721     infoBody.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_FORCE, -1);
4722     infoBody.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_HINT, -1);
4723     server->HandleInterruptEvent(infoBody);
4724     EXPECT_EQ(server->interruptEventState_, PLAYER_PREPARING);
4725 
4726     infoBody.PutIntValue(PlayerKeys::AUDIO_INTERRUPT_FORCE, OHOS::AudioStandard::INTERRUPT_FORCE);
4727     server->HandleInterruptEvent(infoBody);
4728     EXPECT_EQ(server->interruptEventState_, PLAYER_PREPARING);
4729 }
4730 
4731 /**
4732  * @tc.name  : Test BackGroundChangeState API
4733  * @tc.number: Player_BackGroundChangeState_001
4734  * @tc.desc  : Test Player BackGroundChangeState
4735  */
4736 HWTEST_F(PlayerServerUnitTest, Player_BackGroundChangeState_001, TestSize.Level0)
4737 {
4738     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4739     (void)server->Init();
4740     ASSERT_EQ(MSERR_OK, server->SetSource(VIDEO_FILE1));
4741     EXPECT_EQ(MSERR_OK, server->Prepare());
4742     EXPECT_EQ(MSERR_OK, server->Play());
4743     EXPECT_EQ(MSERR_OK, server->BackGroundChangeState(PLAYER_PAUSED, true));
4744     EXPECT_EQ(MSERR_OK, server->BackGroundChangeState(PLAYER_STARTED, true));
4745     EXPECT_EQ(MSERR_OK, server->Stop());
4746     EXPECT_NE(MSERR_OK, server->BackGroundChangeState(PLAYER_STOPPED, true));
4747 }
4748 
4749 /**
4750  * @tc.name  : Test PlayerState API
4751  * @tc.number: Player_PlayerState_001
4752  * @tc.desc  : Test Player PlayerState
4753  */
4754 HWTEST_F(PlayerServerUnitTest, Player_PlayerState_001, TestSize.Level0)
4755 {
4756     std::shared_ptr<PlayerServer> server_ = std::make_shared<PlayerServer>();
4757     (void)server_->Init();
4758     server_->lastOpStatus_ = PLAYER_STATE_ERROR;
4759     EXPECT_EQ(false, server_->IsCompleted());
4760     EXPECT_EQ(false, server_->IsPrepared());
4761     EXPECT_EQ(false, server_->IsPlaying());
4762 
4763     server_->lastOpStatus_ = PLAYER_PLAYBACK_COMPLETE;
4764     EXPECT_EQ(true, server_->IsCompleted());
4765     EXPECT_EQ(false, server_->IsPrepared());
4766     EXPECT_EQ(false, server_->IsPlaying());
4767 
4768     server_->lastOpStatus_ = PLAYER_STARTED;
4769     EXPECT_EQ(false, server_->IsCompleted());
4770     EXPECT_EQ(false, server_->IsPrepared());
4771     EXPECT_EQ(true, server_->IsPlaying());
4772 }
4773 
4774 /**
4775  * @tc.name  : Test AddSubSource API
4776  * @tc.number: Player_AddSubSource_003
4777  * @tc.desc  : Test Player AddSubSource
4778  */
4779 HWTEST_F(PlayerServerUnitTest, Player_AddSubSource_003, TestSize.Level0)
4780 {
4781     std::shared_ptr<PlayerServer> server_ = std::make_shared<PlayerServer>();
4782     (void)server_->Init();
4783     server_->subtitleTrackNum_ = 10;
4784     EXPECT_NE(MSERR_OK, server_->AddSubSource(SUBTITLE_SRT_FIELE));
4785     EXPECT_NE(MSERR_OK, server_->AddSubSource(0, 0, 0));
4786 }
4787 
4788 /**
4789  * @tc.name  : Test AddSubSource API
4790  * @tc.number: Player_AddSubSource_004
4791  * @tc.desc  : Test Player AddSubSource invalid subtitleTrackNum
4792  */
4793 HWTEST_F(PlayerServerUnitTest, Player_AddSubSource_004, TestSize.Level0)
4794 {
4795     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4796     ASSERT_EQ(MSERR_OK, server->SetSource(VIDEO_FILE1));
4797     server->subtitleTrackNum_ = 10;
4798     EXPECT_NE(MSERR_OK, server->AddSubSource(SUBTITLE_SRT_FIELE));
4799     EXPECT_NE(MSERR_OK, server->AddSubSource(0, 0, 0));
4800 }
4801 
4802 /**
4803  * @tc.name  : Test PrepareInReleasing API
4804  * @tc.number: Player_PrepareInReleasing_001
4805  * @tc.desc  : Test Player PrepareInReleasing
4806  */
4807 HWTEST_F(PlayerServerUnitTest, Player_PrepareInReleasing_001, TestSize.Level0)
4808 {
4809     std::shared_ptr<PlayerServer> server_ = std::make_shared<PlayerServer>();
4810     (void)server_->Init();
4811     ASSERT_EQ(MSERR_OK, server_->SetSource(VIDEO_FILE1));
4812     EXPECT_EQ(MSERR_OK, server_->Prepare());
4813     EXPECT_EQ(MSERR_OK, server_->Play());
4814     EXPECT_EQ(MSERR_OK, server_->Stop());
4815     server_->inReleasing_ = true;
4816     EXPECT_NE(MSERR_OK, server_->Prepare());
4817     EXPECT_NE(MSERR_OK, server_->PrepareAsync());
4818 }
4819 
4820 /**
4821  * @tc.name  : Test media error
4822  * @tc.number: Player_Media_Error_002
4823  * @tc.desc  : Test Player Media Error
4824  */
4825 HWTEST_F(PlayerServerUnitTest, Player_Media_Error_002, TestSize.Level1)
4826 {
4827     for (MediaServiceErrCode code = MSERR_IO_CANNOT_FIND_HOST; code <= MSERR_IO_UNSUPPORTTED_REQUEST;
4828         code = (MediaServiceErrCode)(code + 1)) {
4829         MediaServiceErrCodeTest(code);
4830     }
4831     MediaServiceErrCodeTest(MSERR_EXTEND_START);
4832 
4833     for (auto code = MSERR_EXT_API14_IO_CANNOT_FIND_HOST;
4834         code <= MSERR_EXT_API14_IO_UNSUPPORTTED_REQUEST; code = (MediaServiceExtErrCodeAPI9)(code + 1)) {
4835         EXPECT_EQ(MSEXTERRCODE_API9_INFOS.at(code), MSExtAVErrorToString(code));
4836         MediaServiceExtErrCodeAPI9Test(code);
4837     }
4838 }
4839 
4840 /**
4841  * @tc.name  : Test SetPlayRangeWithMode
4842  * @tc.number: Player_SetPlayRangeWithMode_001
4843  * @tc.desc  : Test Player SetPlayRangeWithMode interface
4844  */
4845 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRangeWithMode_001, TestSize.Level0)
4846 {
4847     int32_t duration = 0;
4848     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4849     sptr<Surface> videoSurface = player_->GetVideoSurface();
4850     ASSERT_NE(nullptr, videoSurface);
4851     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4852     EXPECT_EQ(MSERR_OK, player_->SetPlayRange(0, 600));
4853     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4854     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4855     EXPECT_EQ(MSERR_OK, player_->Play());
4856     EXPECT_TRUE(player_->IsPlaying());
4857     EXPECT_EQ(MSERR_OK, player_->Pause());
4858     EXPECT_EQ(MSERR_OK, player_->SetPlayRangeWithMode(0, duration, SEEK_PREVIOUS_SYNC));
4859     EXPECT_EQ(MSERR_OK, player_->Play());
4860     EXPECT_EQ(MSERR_OK, player_->Pause());
4861 }
4862 
4863 /**
4864  * @tc.name  : Test SetPlayRangeWithMode
4865  * @tc.number: Player_SetPlayRangeWithMode_002
4866  * @tc.desc  : Test Player SetPlayRangeWithMode interface
4867  */
4868 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRangeWithMode_002, TestSize.Level0)
4869 {
4870     int32_t duration = 0;
4871     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4872     sptr<Surface> videoSurface = player_->GetVideoSurface();
4873     ASSERT_NE(nullptr, videoSurface);
4874     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4875     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4876     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
4877     EXPECT_EQ(MSERR_OK, player_->Play());
4878     EXPECT_TRUE(player_->IsPlaying());
4879     EXPECT_EQ(MSERR_OK, player_->Pause());
4880     EXPECT_EQ(MSERR_OK, player_->SetPlayRangeWithMode(0, duration, SEEK_CLOSEST_SYNC));
4881     EXPECT_EQ(MSERR_OK, player_->Play());
4882     EXPECT_EQ(MSERR_OK, player_->Pause());
4883 }
4884 
4885 /**
4886  * @tc.name  : Test SetPlayRangeWithMode
4887  * @tc.number: Player_SetPlayRangeWithMode_003
4888  * @tc.desc  : Test Player SetPlayRangeWithMode interface
4889  */
4890 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRangeWithMode_003, TestSize.Level0)
4891 {
4892     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4893     sptr<Surface> videoSurface = player_->GetVideoSurface();
4894     ASSERT_NE(nullptr, videoSurface);
4895     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4896     EXPECT_EQ(MSERR_OK, player_->SetPlayRangeWithMode(0, 600, SEEK_CONTINOUS));
4897     ASSERT_NE(MSERR_OK, player_->PrepareAsync());
4898     EXPECT_EQ(MSERR_INVALID_OPERATION, player_->Play());
4899     EXPECT_EQ(MSERR_INVALID_OPERATION, player_->Pause());
4900     EXPECT_EQ(MSERR_INVALID_OPERATION, player_->SetPlayRangeWithMode(0, 600, SEEK_CONTINOUS));
4901 }
4902 
4903 /**
4904  * @tc.name  : Test SetPlayRangeWithMode
4905  * @tc.number: Player_SetPlayRangeWithMode_004
4906  * @tc.desc  : Test Player SetPlayRangeWithMode interface
4907  */
4908 HWTEST_F(PlayerServerUnitTest, Player_SetPlayRangeWithMode_004, TestSize.Level0)
4909 {
4910     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
4911     sptr<Surface> videoSurface = player_->GetVideoSurface();
4912     ASSERT_NE(nullptr, videoSurface);
4913     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
4914     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
4915     EXPECT_EQ(MSERR_OK, player_->SetPlayRangeWithMode(0, 600, SEEK_CONTINOUS));
4916 }
4917 
4918 /**
4919  * @tc.name  : Test InnerOnInfo
4920  * @tc.number: Player_InnerOnInfo_001
4921  * @tc.desc  : Test Player InnerOnInfo interface
4922  */
4923 HWTEST_F(PlayerServerUnitTest, Player_InnerOnInfo_001, TestSize.Level0)
4924 {
4925     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4926     Format infoBody;
4927     PlayerOnInfoType type = INFO_TYPE_IS_LIVE_STREAM;
4928     server->InnerOnInfo(type, 0, infoBody, 0);
4929     EXPECT_EQ(server->isLiveStream_, true);
4930 }
4931 
4932 /**
4933  * @tc.name  : Test InnerOnInfo
4934  * @tc.number: Player_InnerOnInfo_002
4935  * @tc.desc  : Test Player InnerOnInfo interface
4936  */
4937 HWTEST_F(PlayerServerUnitTest, Player_InnerOnInfo_002, TestSize.Level0)
4938 {
4939     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4940     Format infoBody;
4941     PlayerOnInfoType type = INFO_TYPE_DEFAULTTRACK;
4942     server->InnerOnInfo(type, 1, infoBody, 0);
4943     EXPECT_NE(server->isLiveStream_, true);
4944     type = INFO_TYPE_TRACK_DONE;
4945     server->InnerOnInfo(type, 1, infoBody, 0);
4946     EXPECT_NE(server->isLiveStream_, true);
4947     type = INFO_TYPE_ADD_SUBTITLE_DONE;
4948     server->InnerOnInfo(type, 1, infoBody, 0);
4949     EXPECT_NE(server->isLiveStream_, true);
4950 }
4951 
4952 /**
4953  * @tc.name  : Test InnerOnInfo
4954  * @tc.number: Player_InnerOnInfo_003
4955  * @tc.desc  : Test Player InnerOnInfo interface
4956  */
4957 HWTEST_F(PlayerServerUnitTest, Player_InnerOnInfo_003, TestSize.Level0)
4958 {
4959     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4960     std::shared_ptr<PlayerCallbackTest> callback = std::make_shared<PlayerCallbackTest>();
4961     server->SetPlayerCallback(callback);
4962     Format infoBody;
4963     PlayerOnInfoType type = INFO_TYPE_SEEKDONE;
4964     server->InnerOnInfo(type, 0, infoBody, 0);
4965     EXPECT_EQ(callback->seekDoneFlag_, true);
4966 
4967     server->isBackgroundChanged_ = true;
4968     callback->seekDoneFlag_ = false;
4969     server->InnerOnInfo(type, 0, infoBody, 0);
4970     EXPECT_EQ(callback->seekDoneFlag_, true);
4971 
4972     type = INFO_TYPE_STATE_CHANGE;
4973     server->InnerOnInfo(type, 2, infoBody, 0);
4974     EXPECT_EQ(callback->state_, PLAYER_INITIALIZED);
4975 
4976     server->isBackgroundCb_ = true;
4977     server->isBackgroundChanged_ = true;
4978     server->InnerOnInfo(type, 1, infoBody, 0);
4979     EXPECT_FALSE(server->isBackgroundCb_);
4980 }
4981 
4982 /**
4983  * @tc.name  : Test GetStatusDescription
4984  * @tc.number: Player_GetStatusDescription_001
4985  * @tc.desc  : Test Player GetStatusDescription interface
4986  */
4987 HWTEST_F(PlayerServerUnitTest, Player_GetStatusDescription_001, TestSize.Level0)
4988 {
4989     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
4990     EXPECT_EQ(server->GetStatusDescription(-1), "PLAYER_STATUS_ILLEGAL");
4991     EXPECT_EQ(server->GetStatusDescription(10), "PLAYER_STATUS_ILLEGAL");
4992 }
4993 
4994 /**
4995  * @tc.name  : Test ChangeState
4996  * @tc.number: Player_ChangeState_001
4997  * @tc.desc  : Test Player ChangeState interface
4998  */
4999 HWTEST_F(PlayerServerUnitTest, Player_ChangeState_001, TestSize.Level0)
5000 {
5001     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
5002     std::shared_ptr<PlayerServerState> state = nullptr;
5003     server->ChangeState(state);
5004     EXPECT_EQ(server->currState_, state);
5005 }
5006 
5007 /**
5008  * @tc.name  : Test CheckSeek
5009  * @tc.number: Player_CheckSeek_001
5010  * @tc.desc  : Test Player CheckSeek interface
5011  */
5012 HWTEST_F(PlayerServerUnitTest, Player_CheckSeek_001, TestSize.Level0)
5013 {
5014     std::shared_ptr<PlayerServer> server = std::make_shared<PlayerServer>();
5015     server->SetSource(VIDEO_FILE1);
5016     server->lastOpStatus_ = PLAYER_PREPARING;
5017     PlayerSeekMode mode = SEEK_PREVIOUS_SYNC;
5018     server->isLiveStream_ = true;
5019     EXPECT_EQ(server->CheckSeek(0, mode), MSERR_INVALID_OPERATION);
5020 }
5021 
5022 
5023 /**
5024  * @tc.name  : Test SeekContinuous in prepared with seek -1
5025  * @tc.number: Player_SeekContinuous_007
5026  * @tc.desc  : Test Player SeekContinuous
5027  */
5028 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_007, TestSize.Level1)
5029 {
5030     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5031     sptr<Surface> videoSurface = player_->GetVideoSurface();
5032     ASSERT_NE(nullptr, videoSurface);
5033     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5034     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5035     for (int i = 0; i < 10; i++) {
5036         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5037         usleep(SEEK_CONTINUOUS_WAIT_US);
5038     }
5039     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5040     EXPECT_EQ(MSERR_OK, player_->Play());
5041 }
5042 
5043 /**
5044  * @tc.name  : Test SeekContinuous in playing with seek -1
5045  * @tc.number: Player_SeekContinuous_008
5046  * @tc.desc  : Test Player SeekContinuous
5047  */
5048 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_008, TestSize.Level1)
5049 {
5050     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5051     sptr<Surface> videoSurface = player_->GetVideoSurface();
5052     ASSERT_NE(nullptr, videoSurface);
5053     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5054     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5055     EXPECT_EQ(MSERR_OK, player_->Play());
5056     sleep(PLAYING_TIME_2_SEC);
5057     for (int i = 0; i < 30; i++) {
5058         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5059         usleep(SEEK_CONTINUOUS_WAIT_US);
5060     }
5061     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5062     EXPECT_EQ(MSERR_OK, player_->Stop());
5063 }
5064 
5065 /**
5066  * @tc.name  : Test SeekContinuous in paused with seek -1
5067  * @tc.number: Player_SeekContinuous_009
5068  * @tc.desc  : Test Player SeekContinuous
5069  */
5070 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_009, TestSize.Level1)
5071 {
5072     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5073     sptr<Surface> videoSurface = player_->GetVideoSurface();
5074     ASSERT_NE(nullptr, videoSurface);
5075     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5076     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5077     EXPECT_EQ(MSERR_OK, player_->Play());
5078     sleep(PLAYING_TIME_2_SEC);
5079     EXPECT_EQ(MSERR_OK, player_->Pause());
5080     for (int i = 0; i < 30; i++) {
5081         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5082         usleep(SEEK_CONTINUOUS_WAIT_US);
5083     }
5084     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5085     EXPECT_EQ(MSERR_OK, player_->Play());
5086     EXPECT_EQ(MSERR_OK, player_->Stop());
5087 }
5088 
5089 /**
5090  * @tc.name  : Test SeekContinuous in completed with seek -1
5091  * @tc.number: Player_SeekContinuous_010
5092  * @tc.desc  : Test Player SeekContinuous
5093  */
5094 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_010, TestSize.Level1)
5095 {
5096     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5097     sptr<Surface> videoSurface = player_->GetVideoSurface();
5098     ASSERT_NE(nullptr, videoSurface);
5099     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5100     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5101     EXPECT_EQ(MSERR_OK, player_->Play());
5102     sleep(PLAYING_TIME_2_SEC);
5103     EXPECT_EQ(MSERR_OK, player_->Seek(9000, SEEK_PREVIOUS_SYNC));
5104     sleep(PLAYING_TIME_10_SEC);
5105     for (int i = 0; i < 30; i++) {
5106         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5107         usleep(SEEK_CONTINUOUS_WAIT_US);
5108     }
5109     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5110     EXPECT_EQ(MSERR_OK, player_->Play());
5111     EXPECT_EQ(MSERR_OK, player_->Stop());
5112 }
5113 
5114 /**
5115  * @tc.name  : Test SeekContinuous backward with seek -1
5116  * @tc.number: Player_SeekContinuous_011
5117  * @tc.desc  : Test Player SeekContinuous
5118  */
5119 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_011, TestSize.Level1)
5120 {
5121     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5122     sptr<Surface> videoSurface = player_->GetVideoSurface();
5123     ASSERT_NE(nullptr, videoSurface);
5124     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5125     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5126     EXPECT_EQ(MSERR_OK, player_->Play());
5127     sleep(PLAYING_TIME_2_SEC);
5128     for (int i = 0; i < 30; i++) {
5129         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5130         usleep(SEEK_CONTINUOUS_WAIT_US);
5131     }
5132     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5133     EXPECT_EQ(MSERR_OK, player_->Stop());
5134 }
5135 
5136 /**
5137  * @tc.name  : Test SeekContinuous forward and backward with seek -1
5138  * @tc.number: Player_SeekContinuous_012
5139  * @tc.desc  : Test Player SeekContinuous
5140  */
5141 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_012, TestSize.Level1)
5142 {
5143     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5144     sptr<Surface> videoSurface = player_->GetVideoSurface();
5145     ASSERT_NE(nullptr, videoSurface);
5146     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5147     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5148     EXPECT_EQ(MSERR_OK, player_->Play());
5149     sleep(PLAYING_TIME_2_SEC);
5150     for (int i = 0; i < 30; i++) {
5151         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5152         usleep(SEEK_CONTINUOUS_WAIT_US);
5153     }
5154     for (int i = 0; i < 30; i++) {
5155         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5156         usleep(SEEK_CONTINUOUS_WAIT_US);
5157     }
5158     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5159     EXPECT_EQ(MSERR_OK, player_->Stop());
5160 }
5161 
5162 /**
5163  * @tc.name  : Test SeekContinuous in prepared mkv
5164  * @tc.number: Player_SeekContinuous_013
5165  * @tc.desc  : Test Player SeekContinuous
5166  */
5167 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_013, TestSize.Level1)
5168 {
5169     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5170     sptr<Surface> videoSurface = player_->GetVideoSurface();
5171     ASSERT_NE(nullptr, videoSurface);
5172     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5173     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5174     for (int i = 0; i < 10; i++) {
5175         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5176         usleep(SEEK_CONTINUOUS_WAIT_US);
5177     }
5178     EXPECT_EQ(MSERR_OK, player_->Play());
5179 }
5180 
5181 /**
5182  * @tc.name  : Test SeekContinuous in playing mkv
5183  * @tc.number: Player_SeekContinuous_014
5184  * @tc.desc  : Test Player SeekContinuous
5185  */
5186 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_014, TestSize.Level1)
5187 {
5188     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5189     sptr<Surface> videoSurface = player_->GetVideoSurface();
5190     ASSERT_NE(nullptr, videoSurface);
5191     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5192     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5193     EXPECT_EQ(MSERR_OK, player_->Play());
5194     sleep(PLAYING_TIME_2_SEC);
5195     for (int i = 0; i < 30; i++) {
5196         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5197         usleep(SEEK_CONTINUOUS_WAIT_US);
5198     }
5199     EXPECT_EQ(MSERR_OK, player_->Play());
5200     EXPECT_EQ(MSERR_OK, player_->Stop());
5201 }
5202 
5203 /**
5204  * @tc.name  : Test SeekContinuous in paused mkv
5205  * @tc.number: Player_SeekContinuous_015
5206  * @tc.desc  : Test Player SeekContinuous
5207  */
5208 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_015, TestSize.Level1)
5209 {
5210     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5211     sptr<Surface> videoSurface = player_->GetVideoSurface();
5212     ASSERT_NE(nullptr, videoSurface);
5213     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5214     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5215     EXPECT_EQ(MSERR_OK, player_->Play());
5216     sleep(PLAYING_TIME_2_SEC);
5217     EXPECT_EQ(MSERR_OK, player_->Pause());
5218     for (int i = 0; i < 30; i++) {
5219         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5220         usleep(SEEK_CONTINUOUS_WAIT_US);
5221     }
5222     EXPECT_EQ(MSERR_OK, player_->Play());
5223     EXPECT_EQ(MSERR_OK, player_->Stop());
5224 }
5225 
5226 /**
5227  * @tc.name  : Test SeekContinuous in completed mkv
5228  * @tc.number: Player_SeekContinuous_016
5229  * @tc.desc  : Test Player SeekContinuous
5230  */
5231 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_016, TestSize.Level1)
5232 {
5233     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5234     sptr<Surface> videoSurface = player_->GetVideoSurface();
5235     ASSERT_NE(nullptr, videoSurface);
5236     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5237     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5238     EXPECT_EQ(MSERR_OK, player_->Play());
5239     sleep(PLAYING_TIME_2_SEC);
5240     EXPECT_EQ(MSERR_OK, player_->Seek(9000, SEEK_PREVIOUS_SYNC));
5241     sleep(PLAYING_TIME_10_SEC);
5242     for (int i = 0; i < 30; i++) {
5243         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5244         usleep(SEEK_CONTINUOUS_WAIT_US);
5245     }
5246     EXPECT_EQ(MSERR_OK, player_->Play());
5247     EXPECT_EQ(MSERR_OK, player_->Stop());
5248 }
5249 
5250 /**
5251  * @tc.name  : Test SeekContinuous backward
5252  * @tc.number: Player_SeekContinuous_017 mkv
5253  * @tc.desc  : Test Player SeekContinuous
5254  */
5255 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_017, TestSize.Level1)
5256 {
5257     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5258     sptr<Surface> videoSurface = player_->GetVideoSurface();
5259     ASSERT_NE(nullptr, videoSurface);
5260     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5261     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5262     EXPECT_EQ(MSERR_OK, player_->Play());
5263     sleep(PLAYING_TIME_2_SEC);
5264     for (int i = 0; i < 30; i++) {
5265         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5266         usleep(SEEK_CONTINUOUS_WAIT_US);
5267     }
5268     EXPECT_EQ(MSERR_OK, player_->Play());
5269     EXPECT_EQ(MSERR_OK, player_->Stop());
5270 }
5271 
5272 /**
5273  * @tc.name  : Test SeekContinuous forward and backward mkv
5274  * @tc.number: Player_SeekContinuous_018
5275  * @tc.desc  : Test Player SeekContinuous
5276  */
5277 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_018, TestSize.Level1)
5278 {
5279     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5280     sptr<Surface> videoSurface = player_->GetVideoSurface();
5281     ASSERT_NE(nullptr, videoSurface);
5282     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5283     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5284     EXPECT_EQ(MSERR_OK, player_->Play());
5285     sleep(PLAYING_TIME_2_SEC);
5286     for (int i = 0; i < 30; i++) {
5287         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5288         usleep(SEEK_CONTINUOUS_WAIT_US);
5289     }
5290     for (int i = 0; i < 30; i++) {
5291         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5292         usleep(SEEK_CONTINUOUS_WAIT_US);
5293     }
5294     EXPECT_EQ(MSERR_OK, player_->Play());
5295     EXPECT_EQ(MSERR_OK, player_->Stop());
5296 }
5297 
5298 /**
5299  * @tc.name  : Test SeekContinuous in prepared mkv with seek -1
5300  * @tc.number: Player_SeekContinuous_019
5301  * @tc.desc  : Test Player SeekContinuous
5302  */
5303 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_019, TestSize.Level1)
5304 {
5305     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5306     sptr<Surface> videoSurface = player_->GetVideoSurface();
5307     ASSERT_NE(nullptr, videoSurface);
5308     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5309     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5310     for (int i = 0; i < 10; i++) {
5311         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5312         usleep(SEEK_CONTINUOUS_WAIT_US);
5313     }
5314     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5315     EXPECT_EQ(MSERR_OK, player_->Play());
5316 }
5317 
5318 /**
5319  * @tc.name  : Test SeekContinuous in playing mkv with seek -1
5320  * @tc.number: Player_SeekContinuous_020
5321  * @tc.desc  : Test Player SeekContinuous
5322  */
5323 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_020, TestSize.Level1)
5324 {
5325     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5326     sptr<Surface> videoSurface = player_->GetVideoSurface();
5327     ASSERT_NE(nullptr, videoSurface);
5328     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5329     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5330     EXPECT_EQ(MSERR_OK, player_->Play());
5331     sleep(PLAYING_TIME_2_SEC);
5332     for (int i = 0; i < 30; i++) {
5333         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5334         usleep(SEEK_CONTINUOUS_WAIT_US);
5335     }
5336     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5337     EXPECT_EQ(MSERR_OK, player_->Stop());
5338 }
5339 
5340 /**
5341  * @tc.name  : Test SeekContinuous in paused mkv with seek -1
5342  * @tc.number: Player_SeekContinuous_021
5343  * @tc.desc  : Test Player SeekContinuous
5344  */
5345 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_021, TestSize.Level1)
5346 {
5347     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5348     sptr<Surface> videoSurface = player_->GetVideoSurface();
5349     ASSERT_NE(nullptr, videoSurface);
5350     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5351     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5352     EXPECT_EQ(MSERR_OK, player_->Play());
5353     sleep(PLAYING_TIME_2_SEC);
5354     EXPECT_EQ(MSERR_OK, player_->Pause());
5355     for (int i = 0; i < 30; i++) {
5356         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5357         usleep(SEEK_CONTINUOUS_WAIT_US);
5358     }
5359     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5360     EXPECT_EQ(MSERR_OK, player_->Play());
5361     EXPECT_EQ(MSERR_OK, player_->Stop());
5362 }
5363 
5364 /**
5365  * @tc.name  : Test SeekContinuous in completed with seek -1
5366  * @tc.number: Player_SeekContinuous_022
5367  * @tc.desc  : Test Player SeekContinuous
5368  */
5369 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_022, TestSize.Level1)
5370 {
5371     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5372     sptr<Surface> videoSurface = player_->GetVideoSurface();
5373     ASSERT_NE(nullptr, videoSurface);
5374     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5375     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5376     EXPECT_EQ(MSERR_OK, player_->Play());
5377     sleep(PLAYING_TIME_2_SEC);
5378     EXPECT_EQ(MSERR_OK, player_->Seek(9000, SEEK_PREVIOUS_SYNC));
5379     sleep(PLAYING_TIME_10_SEC);
5380     for (int i = 0; i < 30; i++) {
5381         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(i * 100));
5382         usleep(SEEK_CONTINUOUS_WAIT_US);
5383     }
5384     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5385     EXPECT_EQ(MSERR_OK, player_->Play());
5386     EXPECT_EQ(MSERR_OK, player_->Stop());
5387 }
5388 
5389 /**
5390  * @tc.name  : Test SeekContinuous backward mkv with seek -1
5391  * @tc.number: Player_SeekContinuous_023
5392  * @tc.desc  : Test Player SeekContinuous
5393  */
5394 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_023, TestSize.Level1)
5395 {
5396     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5397     sptr<Surface> videoSurface = player_->GetVideoSurface();
5398     ASSERT_NE(nullptr, videoSurface);
5399     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5400     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5401     EXPECT_EQ(MSERR_OK, player_->Play());
5402     sleep(PLAYING_TIME_2_SEC);
5403     for (int i = 0; i < 30; i++) {
5404         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5405         usleep(SEEK_CONTINUOUS_WAIT_US);
5406     }
5407     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5408     EXPECT_EQ(MSERR_OK, player_->Stop());
5409 }
5410 
5411 /**
5412  * @tc.name  : Test SeekContinuous forward and backward mkv with seek -1
5413  * @tc.number: Player_SeekContinuous_024
5414  * @tc.desc  : Test Player SeekContinuous
5415  */
5416 HWTEST_F(PlayerServerUnitTest, Player_SeekContinuous_024, TestSize.Level1)
5417 {
5418     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE3));
5419     sptr<Surface> videoSurface = player_->GetVideoSurface();
5420     ASSERT_NE(nullptr, videoSurface);
5421     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5422     EXPECT_EQ(MSERR_OK, player_->PrepareAsync());
5423     EXPECT_EQ(MSERR_OK, player_->Play());
5424     sleep(PLAYING_TIME_2_SEC);
5425     for (int i = 0; i < 30; i++) {
5426         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5427         usleep(SEEK_CONTINUOUS_WAIT_US);
5428     }
5429     for (int i = 0; i < 30; i++) {
5430         EXPECT_EQ(MSERR_OK, player_->SeekContinuous(9000 - i * 100));
5431         usleep(SEEK_CONTINUOUS_WAIT_US);
5432     }
5433     EXPECT_EQ(MSERR_OK, player_->SeekContinuous(-1));
5434     EXPECT_EQ(MSERR_OK, player_->Stop());
5435 }
5436 
5437 /**
5438  * @tc.name  : Test EnableReportMediaProgress API
5439  * @tc.number: Player_EnableReportMediaProgress_001
5440  * @tc.desc  : Test Player EnableReportMediaProgress on before playing
5441  */
5442 HWTEST_F(PlayerServerUnitTest, Player_EnableReportMediaProgress_001, TestSize.Level1)
5443 {
5444     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5445     sptr<Surface> videoSurface = player_->GetVideoSurface();
5446     ASSERT_NE(nullptr, videoSurface);
5447     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5448     EXPECT_EQ(MSERR_OK, player_->Prepare());
5449     EXPECT_EQ(MSERR_OK, player_->EnableReportMediaProgress(true));
5450     EXPECT_EQ(MSERR_OK, player_->Play());
5451 }
5452 
5453 /**
5454  * @tc.name  : Test EnableReportMediaProgress API
5455  * @tc.number: Player_EnableReportMediaProgress_002
5456  * @tc.desc  : Test Player EnableReportMediaProgress during playing
5457  */
5458 HWTEST_F(PlayerServerUnitTest, Player_EnableReportMediaProgress_002, TestSize.Level1)
5459 {
5460     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5461     sptr<Surface> videoSurface = player_->GetVideoSurface();
5462     ASSERT_NE(nullptr, videoSurface);
5463     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5464     EXPECT_EQ(MSERR_OK, player_->Prepare());
5465     EXPECT_EQ(MSERR_OK, player_->Play());
5466     EXPECT_EQ(MSERR_OK, player_->EnableReportMediaProgress(true));
5467     EXPECT_EQ(MSERR_OK, player_->Pause());
5468     EXPECT_EQ(MSERR_OK, player_->Play());
5469     ASSERT_EQ(MSERR_OK, player_->EnableReportMediaProgress(false));
5470 }
5471 
5472 /**
5473  * @tc.name  : Test EnableReportMediaProgress API
5474  * @tc.number: Player_EnableReportMediaProgress_003
5475  * @tc.desc  : Test Player EnableReportMediaProgress when seek in playing
5476  */
5477 HWTEST_F(PlayerServerUnitTest, Player_EnableReportMediaProgress_003, TestSize.Level1)
5478 {
5479     int32_t duration = 0;
5480     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5481     sptr<Surface> videoSurface = player_->GetVideoSurface();
5482     ASSERT_NE(nullptr, videoSurface);
5483     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5484     EXPECT_EQ(MSERR_OK, player_->Prepare());
5485     EXPECT_EQ(MSERR_OK, player_->Play());
5486     EXPECT_EQ(MSERR_OK, player_->GetDuration(duration));
5487     EXPECT_EQ(MSERR_OK, player_->Pause());
5488     EXPECT_EQ(MSERR_OK, player_->Seek(duration, SEEK_NEXT_SYNC));
5489     ASSERT_EQ(MSERR_OK, player_->EnableReportMediaProgress(true));
5490     EXPECT_EQ(MSERR_OK, player_->Play());
5491 }
5492 
5493 /**
5494  * @tc.name  : Test EnableReportMediaProgress API
5495  * @tc.number: Player_EnableReportMediaProgress_004
5496  * @tc.desc  : Test Player EnableReportMediaProgress when playing is looping
5497  */
5498 HWTEST_F(PlayerServerUnitTest, Player_EnableReportMediaProgress_004, TestSize.Level1)
5499 {
5500     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5501     sptr<Surface> videoSurface = player_->GetVideoSurface();
5502     ASSERT_NE(nullptr, videoSurface);
5503     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5504     EXPECT_EQ(MSERR_OK, player_->Prepare());
5505     EXPECT_EQ(MSERR_OK, player_->SetLooping(true));
5506     EXPECT_EQ(true, player_->IsLooping());
5507     ASSERT_EQ(MSERR_OK, player_->EnableReportMediaProgress(true));
5508     EXPECT_EQ(MSERR_OK, player_->Play());
5509 }
5510 
5511 /**
5512  * @tc.name  : Test Freeze API
5513  * @tc.number: Player_Freeze_001
5514  * @tc.desc  : Test Player Freeze
5515  */
5516 HWTEST_F(PlayerServerUnitTest, Player_Freeze_001, TestSize.Level1)
5517 {
5518     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5519     EXPECT_EQ(MSERR_OK, player_->Freeze());
5520 }
5521 
5522 /**
5523  * @tc.name  : Test Freeze API
5524  * @tc.number: Player_Freeze_002
5525  * @tc.desc  : Test Player Freeze
5526  */
5527 HWTEST_F(PlayerServerUnitTest, Player_Freeze_002, TestSize.Level1)
5528 {
5529     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5530     sptr<Surface> videoSurface = player_->GetVideoSurface();
5531     ASSERT_NE(nullptr, videoSurface);
5532     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5533     EXPECT_EQ(MSERR_OK, player_->Prepare());
5534     EXPECT_EQ(MSERR_OK, player_->Play());
5535     EXPECT_EQ(MSERR_OK, player_->Freeze());
5536     sleep(1);
5537 }
5538 
5539 /**
5540  * @tc.name  : Test UnFreeze API
5541  * @tc.number: Player_UnFreeze_001
5542  * @tc.desc  : Test Player UnFreeze
5543  */
5544 HWTEST_F(PlayerServerUnitTest, Player_UnFreeze_001, TestSize.Level1)
5545 {
5546     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5547     EXPECT_EQ(MSERR_OK, player_->UnFreeze());
5548 }
5549 
5550 /**
5551  * @tc.name  : Test Freeze API
5552  * @tc.number: Player_UnFreeze_002
5553  * @tc.desc  : Test Player UnFreeze
5554  */
5555 HWTEST_F(PlayerServerUnitTest, Player_UnFreeze_002, TestSize.Level1)
5556 {
5557     ASSERT_EQ(MSERR_OK, player_->SetSource(VIDEO_FILE1));
5558     sptr<Surface> videoSurface = player_->GetVideoSurface();
5559     ASSERT_NE(nullptr, videoSurface);
5560     EXPECT_EQ(MSERR_OK, player_->SetVideoSurface(videoSurface));
5561     EXPECT_EQ(MSERR_OK, player_->Prepare());
5562     EXPECT_EQ(MSERR_OK, player_->Play());
5563     EXPECT_EQ(MSERR_OK, player_->Freeze());
5564     sleep(1);
5565     EXPECT_EQ(MSERR_OK, player_->UnFreeze());
5566     sleep(1);
5567 }
5568 } // namespace Media
5569 } // namespace OHOS
5570