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_OHAVSESSION_CALLBACKIMPL_H 17 #define OHOS_OHAVSESSION_CALLBACKIMPL_H 18 19 #include "native_avmetadata.h" 20 #include "native_avsession.h" 21 #include "avsession_info.h" 22 23 namespace OHOS::AVSession { 24 25 class OHAVSessionCallbackImpl : public AVSessionCallback { 26 public: 27 ~OHAVSessionCallbackImpl() override; 28 void OnPlay() override; 29 void OnPause() override; 30 void OnStop() override; 31 void OnPlayNext() override; 32 void OnPlayPrevious() override; 33 void OnFastForward(int64_t time) override; 34 void OnRewind(int64_t time) override; 35 void OnSeek(int64_t time) override; OnSetSpeed(double speed)36 void OnSetSpeed(double speed) override {}; 37 void OnSetLoopMode(int32_t loopMode) override; 38 void OnToggleFavorite(const std::string& mediald) override; OnMediaKeyEvent(const OHOS::MMI::KeyEvent & keyEvent)39 void OnMediaKeyEvent(const OHOS::MMI::KeyEvent& keyEvent) override {}; OnOutputDeviceChange(const int32_t connectionState,const OHOS::AVSession::OutputDeviceInfo & outputDeviceInfo)40 void OnOutputDeviceChange(const int32_t connectionState, 41 const OHOS::AVSession::OutputDeviceInfo& outputDeviceInfo) override {}; OnCommonCommand(const std::string & commonCommand,const OHOS::AAFwk::WantParams & commandArgs)42 void OnCommonCommand(const std::string& commonCommand, const OHOS::AAFwk::WantParams& commandArgs) override {}; OnSkipToQueueItem(int32_t itemId)43 void OnSkipToQueueItem(int32_t itemId) override {}; OnAVCallAnswer()44 void OnAVCallAnswer() override {}; OnAVCallHangUp()45 void OnAVCallHangUp() override {}; OnAVCallToggleCallMute()46 void OnAVCallToggleCallMute() override {}; OnPlayFromAssetId(int64_t assetId)47 void OnPlayFromAssetId(int64_t assetId) override {}; OnCastDisplayChange(const CastDisplayInfo & castDisplayInfo)48 void OnCastDisplayChange(const CastDisplayInfo& castDisplayInfo) override {}; 49 50 AVSession_ErrCode SetPlayCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 51 OH_AVSessionCallback_OnCommand callback, void* userData); 52 AVSession_ErrCode SetPauseCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 53 OH_AVSessionCallback_OnCommand callback, void* userData); 54 AVSession_ErrCode SetStopCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 55 OH_AVSessionCallback_OnCommand callback, void* userData); 56 AVSession_ErrCode SetPlayNextCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 57 OH_AVSessionCallback_OnCommand callback, void* userData); 58 AVSession_ErrCode SetPlayPreviousCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 59 OH_AVSessionCallback_OnCommand callback, void* userData); 60 AVSession_ErrCode UnSetPlayCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 61 OH_AVSessionCallback_OnCommand callback); 62 AVSession_ErrCode UnSetPauseCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 63 OH_AVSessionCallback_OnCommand callback); 64 AVSession_ErrCode UnSetStopCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 65 OH_AVSessionCallback_OnCommand callback); 66 AVSession_ErrCode UnSetPlayNextCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 67 OH_AVSessionCallback_OnCommand callback); 68 AVSession_ErrCode UnSetPlayPreviousCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 69 OH_AVSessionCallback_OnCommand callback); 70 71 AVSession_ErrCode RegisterForwardCallback(OH_AVSession* avsession, 72 OH_AVSessionCallback_OnFastForward callback, void* userData); 73 AVSession_ErrCode UnregisterForwardCallback(OH_AVSession* avsession, 74 OH_AVSessionCallback_OnFastForward callback); 75 AVSession_ErrCode RegisterRewindCallback(OH_AVSession* avsession, 76 OH_AVSessionCallback_OnRewind callback, void* userData); 77 AVSession_ErrCode UnregisterRewindCallback(OH_AVSession* avsession, 78 OH_AVSessionCallback_OnRewind callback); 79 AVSession_ErrCode RegisterSeekCallback(OH_AVSession* avsession, 80 OH_AVSessionCallback_OnSeek callback, void* userData); 81 AVSession_ErrCode UnregisterSeekCallback(OH_AVSession* avsession, 82 OH_AVSessionCallback_OnSeek callback); 83 AVSession_ErrCode RegisterSetLoopModeCallback(OH_AVSession* avsession, 84 OH_AVSessionCallback_OnSetLoopMode callback, void* userData); 85 AVSession_ErrCode UnregisterSetLoopModeCallback(OH_AVSession* avsession, 86 OH_AVSessionCallback_OnSetLoopMode callback); 87 AVSession_ErrCode RegisterToggleFavoriteCallback(OH_AVSession* session, 88 OH_AVSessionCallback_OnToggleFavorite callback, void* userData); 89 AVSession_ErrCode UnregisterToggleFavoriteCallback(OH_AVSession* session, 90 OH_AVSessionCallback_OnToggleFavorite callback); 91 92 private: 93 OH_AVSession* avsession_ = {nullptr}; 94 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> playCallbacks_; 95 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> pauseCallbacks_; 96 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> stopCallbacks_; 97 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> playNextCallbacks_; 98 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> playPreviousCallbacks_; 99 std::vector<std::pair<OH_AVSessionCallback_OnFastForward, void*>> forwardCallbacks_; 100 std::vector<std::pair<OH_AVSessionCallback_OnRewind, void*>> rewindCallbacks_; 101 std::vector<std::pair<OH_AVSessionCallback_OnSeek, void*>> seekCallbacks_; 102 std::vector<std::pair<OH_AVSessionCallback_OnSetLoopMode, void*>> setLoopModeCallbacks_; 103 std::vector<std::pair<OH_AVSessionCallback_OnToggleFavorite, void*>> toggleFavoriteCallbacks_; 104 }; 105 } 106 #endif // OHOS_OHAVSESSION_CALLBACKIMPL_H