• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 #ifndef OHOS_CJ_AVSESSION_CALLBACK_H
17 #define OHOS_CJ_AVSESSION_CALLBACK_H
18 
19 #include <list>
20 #include <vector>
21 #include <map>
22 
23 #include "avsession_info.h"
24 #include "cj_avsession_prototypes.h"
25 
26 namespace OHOS::AVSession {
27 
28 class CJAVSessionCallback : public AVSessionCallback {
29 public:
30     CJAVSessionCallback();
31     ~CJAVSessionCallback() = default;
32 
33     void OnPlay() override;
34     void OnPause() override;
35     void OnStop() override;
36     void OnPlayNext() override;
37     void OnPlayPrevious() override;
38     void OnFastForward(int64_t time) override;
39     void OnRewind(int64_t time) override;
40     void OnSeek(int64_t time) override;
41     void OnSetSpeed(double speed) override;
42     void OnSetLoopMode(int32_t loopMode) override;
43     void OnToggleFavorite(const std::string& assertId) override;
44     void OnMediaKeyEvent(const MMI::KeyEvent& keyEvent) override;
45     void OnOutputDeviceChange(const int32_t connectionState, const OutputDeviceInfo& outputDeviceInfo) override;
46     void OnCommonCommand(const std::string& commonCommand, const AAFwk::WantParams& commandArgs) override;
47     void OnSkipToQueueItem(int32_t itemId) override;
48     void OnAVCallAnswer() override;
49     void OnAVCallHangUp() override;
50     void OnAVCallToggleCallMute() override;
51     void OnPlayFromAssetId(int64_t assetId) override;
52     void OnCastDisplayChange(const CastDisplayInfo& castDisplayInfo) override;
53 
54     void RegisterCallback(int32_t type, int64_t id);
55     void UnRegisterCallback(int32_t type);
56 
57 private:
58     void InitPlay(int64_t id);
59     void InitPause(int64_t id);
60     void InitStop(int64_t id);
61     void InitPlayNext(int64_t id);
62     void InitPlayPrevious(int64_t id);
63     void InitFastForward(int64_t id);
64     void InitFastForwardWithTime(int64_t id);
65     void InitRewind(int64_t id);
66     void InitRewindWithTime(int64_t id);
67     void InitPlayFromAssetId(int64_t id);
68     void InitSeek(int64_t id);
69     void InitSetSpeed(int64_t id);
70     void InitSetLoopMode(int64_t id);
71     void InitToggleFavorite(int64_t id);
72     void InitSkipToQueueItem(int64_t id);
73     void InitHandleKeyEvent(int64_t id);
74     void InitOutputDeviceChange(int64_t id);
75     void InitCommonCommand(int64_t id);
76     void InitAnswer(int64_t id);
77     void InitHangUp(int64_t id);
78     void InitToggleCallMute(int64_t id);
79     void InitCastDisplayChange(int64_t id);
80 
81     std::function<void(void)> play;
82     std::function<void(void)> pause;
83     std::function<void(void)> stop;
84     std::function<void(void)> playNext;
85     std::function<void(void)> playPrevious;
86     std::function<void(int64_t)> fastForward;
87     std::function<void(int64_t)> rewind;
88     std::function<void(int64_t)> playFromAssetId;
89     std::function<void(int64_t)> seek;
90     std::function<void(double)> setSpeed;
91     std::function<void(int32_t)> setLoopMode;
92     std::function<void(const char*)> toggleFavorite;
93     std::function<void(int32_t)> skipToQueueItem;
94     std::function<void(CKeyEvent)> handleKeyEvent;
95     std::function<void(int32_t, COutputDeviceInfo)> outputDeviceChange;
96     std::function<void(const char*, CArray)> commonCommand;
97     std::function<void(void)> answer;
98     std::function<void(void)> hangUp;
99     std::function<void(void)> toggleCallMute;
100     std::function<void(const CCastDisplayInfo)> castDisplayChange;
101     std::map<int32_t, void(CJAVSessionCallback::*)(int64_t)> typeToCallbackMap_;
102     std::vector<std::shared_ptr<std::recursive_mutex>> callbackMutexMap_;
103 };
104 
105 } // namespace OHOS::AVSession
106 #endif // OHOS_CJ_AVSESSION_CALLBACK_H
107