• 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     void OnCastDisplaySizeChange(const CastDisplayInfo& castDisplayInfo) override;
54 
55     void RegisterCallback(int32_t type, int64_t id);
56     void UnRegisterCallback(int32_t type);
57 
58 private:
59     void InitPlay(int64_t id);
60     void InitPause(int64_t id);
61     void InitStop(int64_t id);
62     void InitPlayNext(int64_t id);
63     void InitPlayPrevious(int64_t id);
64     void InitFastForward(int64_t id);
65     void InitFastForwardWithTime(int64_t id);
66     void InitRewind(int64_t id);
67     void InitRewindWithTime(int64_t id);
68     void InitPlayFromAssetId(int64_t id);
69     void InitSeek(int64_t id);
70     void InitSetSpeed(int64_t id);
71     void InitSetLoopMode(int64_t id);
72     void InitToggleFavorite(int64_t id);
73     void InitSkipToQueueItem(int64_t id);
74     void InitHandleKeyEvent(int64_t id);
75     void InitOutputDeviceChange(int64_t id);
76     void InitCommonCommand(int64_t id);
77     void InitAnswer(int64_t id);
78     void InitHangUp(int64_t id);
79     void InitToggleCallMute(int64_t id);
80     void InitCastDisplayChange(int64_t id);
81 
82     std::function<void(void)> play;
83     std::function<void(void)> pause;
84     std::function<void(void)> stop;
85     std::function<void(void)> playNext;
86     std::function<void(void)> playPrevious;
87     std::function<void(int64_t)> fastForward;
88     std::function<void(int64_t)> rewind;
89     std::function<void(int64_t)> playFromAssetId;
90     std::function<void(int64_t)> seek;
91     std::function<void(double)> setSpeed;
92     std::function<void(int32_t)> setLoopMode;
93     std::function<void(const char*)> toggleFavorite;
94     std::function<void(int32_t)> skipToQueueItem;
95     std::function<void(CKeyEvent)> handleKeyEvent;
96     std::function<void(int32_t, COutputDeviceInfo)> outputDeviceChange;
97     std::function<void(const char*, CArray)> commonCommand;
98     std::function<void(void)> answer;
99     std::function<void(void)> hangUp;
100     std::function<void(void)> toggleCallMute;
101     std::function<void(const CCastDisplayInfo)> castDisplayChange;
102     std::function<void(const CCastDisplayInfo)> castDisplaySizeChange;
103     std::map<int32_t, void(CJAVSessionCallback::*)(int64_t)> typeToCallbackMap_;
104     std::vector<std::shared_ptr<std::recursive_mutex>> callbackMutexMap_;
105 };
106 
107 } // namespace OHOS::AVSession
108 #endif // OHOS_CJ_AVSESSION_CALLBACK_H
109