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