• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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  */
15 
16 #include "avsession_callback_client.h"
17 #include "avsession_event_handler.h"
18 
19 namespace OHOS::AVSession {
AVSessionCallbackClient(const std::shared_ptr<AVSessionCallback> & callback)20 AVSessionCallbackClient::AVSessionCallbackClient(const std::shared_ptr<AVSessionCallback>& callback)
21     : callback_(callback)
22 {
23     SLOGD("construct");
24 }
25 
OnAVCallAnswer()26 void AVSessionCallbackClient::OnAVCallAnswer()
27 {
28     CHECK_AND_RETURN_LOG(callback_, "callback is null");
29 
30     auto callback = callback_;
31     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
32         .AVSessionPostTask([callback]() { callback->OnAVCallAnswer(); }, std::string(__FUNCTION__)),
33         "AVSessionCallbackClient handler postTask failed");
34 }
35 
OnAVCallHangUp()36 void AVSessionCallbackClient::OnAVCallHangUp()
37 {
38     CHECK_AND_RETURN_LOG(callback_, "callback is null");
39 
40     auto callback = callback_;
41     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
42         .AVSessionPostTask([callback]() { callback->OnAVCallHangUp(); }, std::string(__FUNCTION__)),
43         "AVSessionCallbackClient handler postTask failed");
44 }
45 
OnAVCallToggleCallMute()46 void AVSessionCallbackClient::OnAVCallToggleCallMute()
47 {
48     CHECK_AND_RETURN_LOG(callback_, "callback is null");
49 
50     auto callback = callback_;
51     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
52         .AVSessionPostTask([callback]() { callback->OnAVCallToggleCallMute(); }, std::string(__FUNCTION__)),
53         "AVSessionCallbackClient handler postTask failed");
54 }
55 
OnPlay()56 void AVSessionCallbackClient::OnPlay()
57 {
58     CHECK_AND_RETURN_LOG(callback_, "callback is null");
59 
60     auto callback = callback_;
61     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
62         .AVSessionPostTask([callback]() { callback->OnPlay(); }, std::string(__FUNCTION__)),
63         "AVSessionCallbackClient handler postTask failed");
64 }
65 
OnPause()66 void AVSessionCallbackClient::OnPause()
67 {
68     CHECK_AND_RETURN_LOG(callback_, "callback is null");
69 
70     auto callback = callback_;
71     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
72         .AVSessionPostTask([callback]() { callback->OnPause(); }, std::string(__FUNCTION__)),
73         "AVSessionCallbackClient handler postTask failed");
74 }
75 
OnStop()76 void AVSessionCallbackClient::OnStop()
77 {
78     CHECK_AND_RETURN_LOG(callback_, "callback is null");
79 
80     auto callback = callback_;
81     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
82         .AVSessionPostTask([callback]() { callback->OnStop(); }, std::string(__FUNCTION__)),
83         "AVSessionCallbackClient handler postTask failed");
84 }
85 
OnPlayNext()86 void AVSessionCallbackClient::OnPlayNext()
87 {
88     CHECK_AND_RETURN_LOG(callback_, "callback is null");
89 
90     auto callback = callback_;
91     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
92         .AVSessionPostTask([callback]() { callback->OnPlayNext(); }, std::string(__FUNCTION__)),
93         "AVSessionCallbackClient handler postTask failed");
94 }
95 
OnPlayPrevious()96 void AVSessionCallbackClient::OnPlayPrevious()
97 {
98     CHECK_AND_RETURN_LOG(callback_, "callback is null");
99 
100     auto callback = callback_;
101     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
102         .AVSessionPostTask([callback]() { callback->OnPlayPrevious(); }, std::string(__FUNCTION__)),
103         "AVSessionCallbackClient handler postTask failed");
104 }
105 
OnFastForward(int64_t time)106 void AVSessionCallbackClient::OnFastForward(int64_t time)
107 {
108     CHECK_AND_RETURN_LOG(callback_, "callback is null");
109 
110     auto callback = callback_;
111     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
112         .AVSessionPostTask([callback, time]() { callback->OnFastForward(time); }, std::string(__FUNCTION__)),
113         "AVSessionCallbackClient handler postTask failed");
114 }
115 
OnRewind(int64_t time)116 void AVSessionCallbackClient::OnRewind(int64_t time)
117 {
118     CHECK_AND_RETURN_LOG(callback_, "callback is null");
119 
120     auto callback = callback_;
121     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
122         .AVSessionPostTask([callback, time]() { callback->OnRewind(time); }, std::string(__FUNCTION__)),
123         "AVSessionCallbackClient handler postTask failed");
124 }
125 
OnSeek(int64_t time)126 void AVSessionCallbackClient::OnSeek(int64_t time)
127 {
128     CHECK_AND_RETURN_LOG(callback_, "callback is null");
129 
130     auto callback = callback_;
131     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
132         .AVSessionPostTask([callback, time]() { callback->OnSeek(time); }, std::string(__FUNCTION__)),
133         "AVSessionCallbackClient handler postTask failed");
134 }
135 
OnSetSpeed(double speed)136 void AVSessionCallbackClient::OnSetSpeed(double speed)
137 {
138     CHECK_AND_RETURN_LOG(callback_, "callback is null");
139 
140     auto callback = callback_;
141     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
142         .AVSessionPostTask([callback, speed]() { callback->OnSetSpeed(speed); }, std::string(__FUNCTION__)),
143         "AVSessionCallbackClient handler postTask failed");
144 }
145 
OnSetLoopMode(int32_t loopMode)146 void AVSessionCallbackClient::OnSetLoopMode(int32_t loopMode)
147 {
148     CHECK_AND_RETURN_LOG(callback_, "callback is null");
149 
150     auto callback = callback_;
151     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
152         .AVSessionPostTask([callback, loopMode]() { callback->OnSetLoopMode(loopMode); }, std::string(__FUNCTION__)),
153         "AVSessionCallbackClient handler postTask failed");
154 }
155 
OnSetTargetLoopMode(int32_t targetLoopMode)156 void AVSessionCallbackClient::OnSetTargetLoopMode(int32_t targetLoopMode)
157 {
158     CHECK_AND_RETURN_LOG(callback_, "callback is null");
159 
160     auto callback = callback_;
161     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
162         .AVSessionPostTask([callback, targetLoopMode]() { callback->OnSetTargetLoopMode(targetLoopMode); },
163         std::string(__FUNCTION__)), "AVSessionCallbackClient handler postTask failed");
164 }
165 
OnToggleFavorite(const std::string & mediaId)166 void AVSessionCallbackClient::OnToggleFavorite(const std::string& mediaId)
167 {
168     CHECK_AND_RETURN_LOG(callback_, "callback is null");
169 
170     auto callback = callback_;
171     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
172         .AVSessionPostTask([callback, mediaId]() { callback->OnToggleFavorite(mediaId); }, std::string(__FUNCTION__)),
173         "AVSessionCallbackClient handler postTask failed");
174 }
175 
OnMediaKeyEvent(const MMI::KeyEvent & keyEvent)176 void AVSessionCallbackClient::OnMediaKeyEvent(const MMI::KeyEvent& keyEvent)
177 {
178     CHECK_AND_RETURN_LOG(callback_, "callback is null");
179 
180     auto callback = callback_;
181     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
182         .AVSessionPostTask([callback, keyEvent]() { callback->OnMediaKeyEvent(keyEvent); }, std::string(__FUNCTION__)),
183         "AVSessionCallbackClient handler postTask failed");
184 }
185 
OnOutputDeviceChange(const int32_t connectionState,const OutputDeviceInfo & outputDeviceInfo)186 void AVSessionCallbackClient::OnOutputDeviceChange(const int32_t connectionState,
187     const OutputDeviceInfo& outputDeviceInfo)
188 {
189     CHECK_AND_RETURN_LOG(callback_, "callback is null");
190 
191     auto callback = callback_;
192     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
193         .AVSessionPostTask([callback, connectionState, outputDeviceInfo]() {
194             callback->OnOutputDeviceChange(connectionState, outputDeviceInfo);
195         }, std::string(__FUNCTION__)), "AVSessionCallbackClient handler postTask failed");
196 }
197 
OnCommonCommand(const std::string & commonCommand,const AAFwk::WantParams & commandArgs)198 void AVSessionCallbackClient::OnCommonCommand(const std::string& commonCommand,
199     const AAFwk::WantParams& commandArgs)
200 {
201     CHECK_AND_RETURN_LOG(callback_, "callback is null");
202     auto callback = callback_;
203     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance().AVSessionPostTask([callback,
204         commonCommand, commandArgs]() { callback->OnCommonCommand(commonCommand, commandArgs); },
205         std::string(__FUNCTION__)), "AVSessionCallbackClient handler postTask failed");
206 }
207 
OnSkipToQueueItem(int32_t itemId)208 void AVSessionCallbackClient::OnSkipToQueueItem(int32_t itemId)
209 {
210     CHECK_AND_RETURN_LOG(callback_, "callback is null");
211 
212     auto callback = callback_;
213     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
214         .AVSessionPostTask([callback, itemId]() { callback->OnSkipToQueueItem(itemId); }, std::string(__FUNCTION__)),
215         "AVSessionCallbackClient handler postTask failed");
216 }
217 
OnPlayFromAssetId(int64_t assetId)218 void AVSessionCallbackClient::OnPlayFromAssetId(int64_t assetId)
219 {
220     CHECK_AND_RETURN_LOG(callback_, "callback is null");
221 
222     auto callback = callback_;
223     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
224         .AVSessionPostTask([callback, assetId]() { callback->OnPlayFromAssetId(assetId); }, std::string(__FUNCTION__)),
225         "AVSessionCallbackClient handler postTask failed");
226 }
227 
OnCastDisplayChange(const CastDisplayInfo & castDisplayInfo)228 void AVSessionCallbackClient::OnCastDisplayChange(const CastDisplayInfo& castDisplayInfo)
229 {
230     CHECK_AND_RETURN_LOG(callback_, "callback is null");
231 
232     auto callback = callback_;
233     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
234         .AVSessionPostTask([callback, castDisplayInfo]() { callback->OnCastDisplayChange(castDisplayInfo); },
235         std::string(__FUNCTION__)), "AVSessionCallbackClient handler postTask failed");
236 }
237 
~AVSessionCallbackClient()238 AVSessionCallbackClient::~AVSessionCallbackClient()
239 {
240     AVSessionEventHandler::GetInstance().AVSessionRemoveTask(std::string(__FUNCTION__));
241     SLOGD("destroy");
242 }
243 }