• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "avcontroller_callback_client.h"
17 #include "avsession_log.h"
18 #include "avsession_event_handler.h"
19 
20 namespace OHOS::AVSession {
AVControllerCallbackClient(const std::shared_ptr<AVControllerCallback> & callback)21 AVControllerCallbackClient::AVControllerCallbackClient(const std::shared_ptr<AVControllerCallback>& callback)
22     : callback_(callback)
23 {
24     SLOGD("construct");
25 }
26 
OnSessionDestroy()27 void AVControllerCallbackClient::OnSessionDestroy()
28 {
29     CHECK_AND_RETURN_LOG(callback_, "callback is null");
30 
31     auto callback = callback_;
32     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
33         .AVSessionPostTask([callback]() { callback->OnSessionDestroy(); }, EVENT_NAME),
34         "AVControllerCallbackClient handler postTask failed");
35 }
36 
OnPlaybackStateChange(const AVPlaybackState & state)37 void AVControllerCallbackClient::OnPlaybackStateChange(const AVPlaybackState& state)
38 {
39     CHECK_AND_RETURN_LOG(callback_, "callback is null");
40 
41     auto callback = callback_;
42     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
43         .AVSessionPostTask([callback, state]() { callback->OnPlaybackStateChange(state); }, EVENT_NAME),
44         "AVControllerCallbackClient handler postTask failed");
45 
46     if (playbackStateListener_) {
47         playbackStateListener_(state);
48     }
49 }
50 
OnMetaDataChange(const AVMetaData & data)51 void AVControllerCallbackClient::OnMetaDataChange(const AVMetaData& data)
52 {
53     CHECK_AND_RETURN_LOG(callback_, "callback is null");
54 
55     auto callback = callback_;
56     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
57         .AVSessionPostTask([callback, data]() { callback->OnMetaDataChange(data); }, EVENT_NAME),
58         "AVControllerCallbackClient handler postTask failed");
59 }
60 
OnActiveStateChange(bool isActive)61 void AVControllerCallbackClient::OnActiveStateChange(bool isActive)
62 {
63     CHECK_AND_RETURN_LOG(callback_, "callback is null");
64 
65     auto callback = callback_;
66     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
67         .AVSessionPostTask([callback, isActive]() { callback->OnActiveStateChange(isActive); }, EVENT_NAME),
68         "AVControllerCallbackClient handler postTask failed");
69 }
70 
OnValidCommandChange(const std::vector<int32_t> & cmds)71 void AVControllerCallbackClient::OnValidCommandChange(const std::vector<int32_t>& cmds)
72 {
73     CHECK_AND_RETURN_LOG(callback_, "callback is null");
74 
75     auto callback = callback_;
76     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
77         .AVSessionPostTask([callback, cmds]() { callback->OnValidCommandChange(cmds); }, EVENT_NAME),
78         "AVControllerCallbackClient handler postTask failed");
79 }
80 
OnOutputDeviceChange(const OutputDeviceInfo & info)81 void AVControllerCallbackClient::OnOutputDeviceChange(const OutputDeviceInfo& info)
82 {
83     CHECK_AND_RETURN_LOG(callback_, "callback is null");
84 
85     auto callback = callback_;
86     CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
87         .AVSessionPostTask([callback, info]() { callback->OnOutputDeviceChange(info); }, EVENT_NAME),
88         "AVControllerCallbackClient handler postTask failed");
89 }
90 
AddListenerForPlaybackState(const std::function<void (const AVPlaybackState &)> & listener)91 void AVControllerCallbackClient::AddListenerForPlaybackState(const std::function<void(const AVPlaybackState&)>&
92     listener)
93 {
94     playbackStateListener_ = listener;
95 }
96 
~AVControllerCallbackClient()97 AVControllerCallbackClient::~AVControllerCallbackClient()
98 {
99     AVSessionEventHandler::GetInstance().AVSessionRemoveTask(EVENT_NAME);
100     SLOGD("destroy");
101 }
102 }