1 /*
2 * Copyright (C) 2023-2023 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 * Description: supply stream player listener implement stub realization.
15 * Author: huangchanggui
16 * Create: 2023-01-12
17 */
18
19 #include "stream_player_listener_impl_stub.h"
20 #include "cast_engine_common_helper.h"
21 #include "cast_stub_helper.h"
22
23 namespace OHOS {
24 namespace CastEngine {
25 namespace CastEngineClient {
26 DEFINE_CAST_ENGINE_LABEL("Cast-Client-StreamPlayerListener");
27
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)28 int StreamPlayerListenerImplStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply,
29 MessageOption &option)
30 {
31 RETRUEN_IF_WRONG_TASK(code, data, reply, option);
32 if (userListener_ == nullptr) {
33 CLOGE("userListener_ is null, code:%{public}d", code);
34 return ERR_NULL_OBJECT;
35 }
36 return EXECUTE_SINGLE_STUB_TASK(code, data, reply);
37 }
38
StreamPlayerListenerImplStub(std::shared_ptr<IStreamPlayerListener> userListener)39 StreamPlayerListenerImplStub::StreamPlayerListenerImplStub(std::shared_ptr<IStreamPlayerListener> userListener)
40 : userListener_(userListener)
41 {
42 FILL_SINGLE_STUB_TASK(ON_PLAYER_STATUS_CHANGED, &StreamPlayerListenerImplStub::DoOnStateChangedTask);
43 FILL_SINGLE_STUB_TASK(ON_POSITION_CHANGED, &StreamPlayerListenerImplStub::DoOnPositionChangedTask);
44 FILL_SINGLE_STUB_TASK(ON_MEDIA_ITEM_CHANGED, &StreamPlayerListenerImplStub::DoOnMediaItemChangedTask);
45 FILL_SINGLE_STUB_TASK(ON_VOLUME_CHANGED, &StreamPlayerListenerImplStub::DoOnVolumeChangedTask);
46 FILL_SINGLE_STUB_TASK(ON_REPEAT_MODE_CHANGED, &StreamPlayerListenerImplStub::DoOnLoopModeChangedTask);
47 FILL_SINGLE_STUB_TASK(ON_PLAY_SPEED_CHANGED, &StreamPlayerListenerImplStub::DoOnPlaySpeedChangedTask);
48 FILL_SINGLE_STUB_TASK(ON_PLAYER_ERROR, &StreamPlayerListenerImplStub::DoOnPlayerErrorTask);
49 FILL_SINGLE_STUB_TASK(ON_VIDEO_SIZE_CHANGED, &StreamPlayerListenerImplStub::DoOnVideoSizeChangedTask);
50 FILL_SINGLE_STUB_TASK(ON_NEXT_REQUEST, &StreamPlayerListenerImplStub::DoOnNextRequestTask);
51 FILL_SINGLE_STUB_TASK(ON_PREVIOUS_REQUEST, &StreamPlayerListenerImplStub::DoOnPreviousRequestTask);
52 FILL_SINGLE_STUB_TASK(ON_SEEK_DONE, &StreamPlayerListenerImplStub::DoOnSeekDoneTask);
53 FILL_SINGLE_STUB_TASK(ON_END_OF_STREAM, &StreamPlayerListenerImplStub::DoOnEndOfStreamTask);
54 FILL_SINGLE_STUB_TASK(ON_PLAY_REQUEST, &StreamPlayerListenerImplStub::DoOnPlayRequestTask);
55 FILL_SINGLE_STUB_TASK(ON_IMAGE_CHANGED, &StreamPlayerListenerImplStub::DoOnImageChangedTask);
56 FILL_SINGLE_STUB_TASK(ON_ALBUM_COVER_CHANGED, &StreamPlayerListenerImplStub::DoOnAlbumCoverChangedTask);
57 }
58
~StreamPlayerListenerImplStub()59 StreamPlayerListenerImplStub::~StreamPlayerListenerImplStub()
60 {
61 userListener_ = nullptr;
62 CLOGE("destructor in");
63 }
64
DoOnStateChangedTask(MessageParcel & data,MessageParcel & reply)65 int32_t StreamPlayerListenerImplStub::DoOnStateChangedTask(MessageParcel &data, MessageParcel &reply)
66 {
67 static_cast<void>(reply);
68 int32_t state = data.ReadInt32();
69 bool isPlayWhenReady = data.ReadBool();
70 PlayerStates playbackState = static_cast<PlayerStates>(state);
71 userListener_->OnStateChanged(playbackState, isPlayWhenReady);
72
73 return ERR_NONE;
74 }
75
DoOnPositionChangedTask(MessageParcel & data,MessageParcel & reply)76 int32_t StreamPlayerListenerImplStub::DoOnPositionChangedTask(MessageParcel &data, MessageParcel &reply)
77 {
78 static_cast<void>(reply);
79 int32_t position = data.ReadInt32();
80 int32_t bufferPosition = data.ReadInt32();
81 int32_t duration = data.ReadInt32();
82 userListener_->OnPositionChanged(position, bufferPosition, duration);
83
84 return ERR_NONE;
85 }
86
DoOnMediaItemChangedTask(MessageParcel & data,MessageParcel & reply)87 int32_t StreamPlayerListenerImplStub::DoOnMediaItemChangedTask(MessageParcel &data, MessageParcel &reply)
88 {
89 static_cast<void>(reply);
90 auto mediaInfo = ReadMediaInfo(data);
91 if (mediaInfo == nullptr) {
92 CLOGE("DoOnMediaItemChangedTask,mediaInfo is null");
93 return ERR_NULL_OBJECT;
94 }
95 userListener_->OnMediaItemChanged(*mediaInfo);
96
97 return ERR_NONE;
98 }
99
DoOnVolumeChangedTask(MessageParcel & data,MessageParcel & reply)100 int32_t StreamPlayerListenerImplStub::DoOnVolumeChangedTask(MessageParcel &data, MessageParcel &reply)
101 {
102 static_cast<void>(reply);
103 int32_t volume = data.ReadInt32();
104 int32_t maxVolume = data.ReadInt32();
105 userListener_->OnVolumeChanged(volume, maxVolume);
106
107 return ERR_NONE;
108 }
109
DoOnLoopModeChangedTask(MessageParcel & data,MessageParcel & reply)110 int32_t StreamPlayerListenerImplStub::DoOnLoopModeChangedTask(MessageParcel &data, MessageParcel &reply)
111 {
112 static_cast<void>(reply);
113 int32_t mode = data.ReadInt32();
114 LoopMode loopMode = static_cast<LoopMode>(mode);
115 userListener_->OnLoopModeChanged(loopMode);
116
117 return ERR_NONE;
118 }
119
DoOnPlaySpeedChangedTask(MessageParcel & data,MessageParcel & reply)120 int32_t StreamPlayerListenerImplStub::DoOnPlaySpeedChangedTask(MessageParcel &data, MessageParcel &reply)
121 {
122 static_cast<void>(reply);
123 int32_t speed = data.ReadInt32();
124 PlaybackSpeed speedMode = static_cast<PlaybackSpeed>(speed);
125 userListener_->OnPlaySpeedChanged(speedMode);
126
127 return ERR_NONE;
128 }
129
DoOnPlayerErrorTask(MessageParcel & data,MessageParcel & reply)130 int32_t StreamPlayerListenerImplStub::DoOnPlayerErrorTask(MessageParcel &data, MessageParcel &reply)
131 {
132 static_cast<void>(reply);
133 int32_t errorCode = data.ReadInt32();
134 std::string errorMsg = data.ReadString();
135 userListener_->OnPlayerError(errorCode, errorMsg);
136
137 return ERR_NONE;
138 }
DoOnVideoSizeChangedTask(MessageParcel & data,MessageParcel & reply)139 int32_t StreamPlayerListenerImplStub::DoOnVideoSizeChangedTask(MessageParcel &data, MessageParcel &reply)
140 {
141 static_cast<void>(reply);
142 int32_t width = data.ReadInt32();
143 int32_t height = data.ReadInt32();
144 userListener_->OnVideoSizeChanged(width, height);
145
146 return ERR_NONE;
147 }
148
DoOnNextRequestTask(MessageParcel & data,MessageParcel & reply)149 int32_t StreamPlayerListenerImplStub::DoOnNextRequestTask(MessageParcel &data, MessageParcel &reply)
150 {
151 static_cast<void>(data);
152 static_cast<void>(reply);
153 userListener_->OnNextRequest();
154
155 return ERR_NONE;
156 }
157
DoOnPreviousRequestTask(MessageParcel & data,MessageParcel & reply)158 int32_t StreamPlayerListenerImplStub::DoOnPreviousRequestTask(MessageParcel &data, MessageParcel &reply)
159 {
160 static_cast<void>(data);
161 static_cast<void>(reply);
162 userListener_->OnPreviousRequest();
163
164 return ERR_NONE;
165 }
166
DoOnSeekDoneTask(MessageParcel & data,MessageParcel & reply)167 int32_t StreamPlayerListenerImplStub::DoOnSeekDoneTask(MessageParcel &data, MessageParcel &reply)
168 {
169 static_cast<void>(reply);
170 int32_t position = data.ReadInt32();
171 userListener_->OnSeekDone(position);
172
173 return ERR_NONE;
174 }
175
DoOnEndOfStreamTask(MessageParcel & data,MessageParcel & reply)176 int32_t StreamPlayerListenerImplStub::DoOnEndOfStreamTask(MessageParcel &data, MessageParcel &reply)
177 {
178 static_cast<void>(reply);
179 int32_t isLooping = data.ReadInt32();
180 userListener_->OnEndOfStream(isLooping);
181
182 return ERR_NONE;
183 }
184
DoOnPlayRequestTask(MessageParcel & data,MessageParcel & reply)185 int32_t StreamPlayerListenerImplStub::DoOnPlayRequestTask(MessageParcel &data, MessageParcel &reply)
186 {
187 static_cast<void>(reply);
188 auto mediaInfo = ReadMediaInfo(data);
189 if (mediaInfo == nullptr) {
190 CLOGE("DoOnPlayRequestTask, mediaInfo is null");
191 return ERR_NULL_OBJECT;
192 }
193 userListener_->OnPlayRequest(*mediaInfo);
194
195 return ERR_NONE;
196 }
197
DoOnImageChangedTask(MessageParcel & data,MessageParcel & reply)198 int32_t StreamPlayerListenerImplStub::DoOnImageChangedTask(MessageParcel &data, MessageParcel &reply)
199 {
200 static_cast<void>(reply);
201 Media::PixelMap *pixelMap = Media::PixelMap::Unmarshalling(data);
202 if (pixelMap == nullptr) {
203 CLOGE("DoOnImageChangedTask, pixelMap is null");
204 return ERR_NULL_OBJECT;
205 }
206 std::shared_ptr<Media::PixelMap> pixelMapShared(pixelMap);
207 userListener_->OnImageChanged(pixelMapShared);
208
209 return ERR_NONE;
210 }
211
DoOnAlbumCoverChangedTask(MessageParcel & data,MessageParcel & reply)212 int32_t StreamPlayerListenerImplStub::DoOnAlbumCoverChangedTask(MessageParcel &data, MessageParcel &reply)
213 {
214 static_cast<void>(reply);
215 Media::PixelMap *pixelMap = Media::PixelMap::Unmarshalling(data);
216 if (pixelMap == nullptr) {
217 CLOGE("DoOnAlbumCoverChangedTask, pixelMap is null");
218 return ERR_NULL_OBJECT;
219 }
220 std::shared_ptr<Media::PixelMap> pixelMapShared(pixelMap);
221 userListener_->OnAlbumCoverChanged(pixelMapShared);
222
223 return ERR_NONE;
224 }
225
OnStateChanged(const PlayerStates playbackState,bool isPlayWhenReady)226 void StreamPlayerListenerImplStub::OnStateChanged(const PlayerStates playbackState, bool isPlayWhenReady)
227 {
228 static_cast<void>(playbackState);
229 static_cast<void>(isPlayWhenReady);
230 }
231
OnPositionChanged(int position,int bufferPosition,int duration)232 void StreamPlayerListenerImplStub::OnPositionChanged(int position, int bufferPosition, int duration)
233 {
234 static_cast<void>(position);
235 static_cast<void>(bufferPosition);
236 static_cast<void>(duration);
237 }
238
OnMediaItemChanged(const MediaInfo & mediaInfo)239 void StreamPlayerListenerImplStub::OnMediaItemChanged(const MediaInfo &mediaInfo)
240 {
241 static_cast<void>(mediaInfo);
242 }
243
OnVolumeChanged(int volume,int maxVolume)244 void StreamPlayerListenerImplStub::OnVolumeChanged(int volume, int maxVolume)
245 {
246 static_cast<void>(volume);
247 static_cast<void>(maxVolume);
248 }
249
OnLoopModeChanged(const LoopMode loopMode)250 void StreamPlayerListenerImplStub::OnLoopModeChanged(const LoopMode loopMode)
251 {
252 static_cast<void>(loopMode);
253 }
254
OnPlaySpeedChanged(const PlaybackSpeed speed)255 void StreamPlayerListenerImplStub::OnPlaySpeedChanged(const PlaybackSpeed speed)
256 {
257 static_cast<void>(speed);
258 }
259
OnPlayerError(int errorCode,const std::string & errorMsg)260 void StreamPlayerListenerImplStub::OnPlayerError(int errorCode, const std::string &errorMsg)
261 {
262 static_cast<void>(errorCode);
263 static_cast<void>(errorMsg);
264 }
265
OnVideoSizeChanged(int width,int height)266 void StreamPlayerListenerImplStub::OnVideoSizeChanged(int width, int height)
267 {
268 static_cast<void>(width);
269 static_cast<void>(height);
270 }
271
OnNextRequest()272 void StreamPlayerListenerImplStub::OnNextRequest()
273 {
274 }
275
OnPreviousRequest()276 void StreamPlayerListenerImplStub::OnPreviousRequest()
277 {
278 }
279
OnSeekDone(int position)280 void StreamPlayerListenerImplStub::OnSeekDone(int position)
281 {
282 static_cast<void>(position);
283 }
284
OnEndOfStream(int isLooping)285 void StreamPlayerListenerImplStub::OnEndOfStream(int isLooping)
286 {
287 static_cast<void>(isLooping);
288 }
289
OnPlayRequest(const MediaInfo & mediaInfo)290 void StreamPlayerListenerImplStub::OnPlayRequest(const MediaInfo &mediaInfo)
291 {
292 static_cast<void>(mediaInfo);
293 }
294
OnImageChanged(std::shared_ptr<Media::PixelMap> pixelMap)295 void StreamPlayerListenerImplStub::OnImageChanged(std::shared_ptr<Media::PixelMap> pixelMap)
296 {
297 static_cast<void>(pixelMap);
298 }
299
OnAlbumCoverChanged(std::shared_ptr<Media::PixelMap> pixelMap)300 void StreamPlayerListenerImplStub::OnAlbumCoverChanged(std::shared_ptr<Media::PixelMap> pixelMap)
301 {
302 static_cast<void>(pixelMap);
303 }
304 } // namespace CastEngineClient
305 } // namespace CastEngine
306 } // namespace OHOS
307