1 /* 2 * Copyright (c) 2024-2025 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& mediaId) 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 {}; OnCastDisplaySizeChange(const CastDisplayInfo & castDisplayInfo)49 void OnCastDisplaySizeChange(const CastDisplayInfo& castDisplayInfo) override {}; 50 51 AVSession_ErrCode SetPlayCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 52 OH_AVSessionCallback_OnCommand callback, void* userData); 53 AVSession_ErrCode SetPauseCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 54 OH_AVSessionCallback_OnCommand callback, void* userData); 55 AVSession_ErrCode SetStopCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 56 OH_AVSessionCallback_OnCommand callback, void* userData); 57 AVSession_ErrCode SetPlayNextCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 58 OH_AVSessionCallback_OnCommand callback, void* userData); 59 AVSession_ErrCode SetPlayPreviousCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 60 OH_AVSessionCallback_OnCommand callback, void* userData); 61 AVSession_ErrCode UnSetPlayCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 62 OH_AVSessionCallback_OnCommand callback); 63 AVSession_ErrCode UnSetPauseCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 64 OH_AVSessionCallback_OnCommand callback); 65 AVSession_ErrCode UnSetStopCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 66 OH_AVSessionCallback_OnCommand callback); 67 AVSession_ErrCode UnSetPlayNextCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 68 OH_AVSessionCallback_OnCommand callback); 69 AVSession_ErrCode UnSetPlayPreviousCallback(OH_AVSession* avsession, AVSession_ControlCommand command, 70 OH_AVSessionCallback_OnCommand callback); 71 72 AVSession_ErrCode RegisterForwardCallback(OH_AVSession* avsession, 73 OH_AVSessionCallback_OnFastForward callback, void* userData); 74 AVSession_ErrCode UnregisterForwardCallback(OH_AVSession* avsession, 75 OH_AVSessionCallback_OnFastForward callback); 76 AVSession_ErrCode RegisterRewindCallback(OH_AVSession* avsession, 77 OH_AVSessionCallback_OnRewind callback, void* userData); 78 AVSession_ErrCode UnregisterRewindCallback(OH_AVSession* avsession, 79 OH_AVSessionCallback_OnRewind callback); 80 AVSession_ErrCode RegisterSeekCallback(OH_AVSession* avsession, 81 OH_AVSessionCallback_OnSeek callback, void* userData); 82 AVSession_ErrCode UnregisterSeekCallback(OH_AVSession* avsession, 83 OH_AVSessionCallback_OnSeek callback); 84 AVSession_ErrCode RegisterSetLoopModeCallback(OH_AVSession* avsession, 85 OH_AVSessionCallback_OnSetLoopMode callback, void* userData); 86 AVSession_ErrCode UnregisterSetLoopModeCallback(OH_AVSession* avsession, 87 OH_AVSessionCallback_OnSetLoopMode callback); 88 AVSession_ErrCode RegisterToggleFavoriteCallback(OH_AVSession* session, 89 OH_AVSessionCallback_OnToggleFavorite callback, void* userData); 90 AVSession_ErrCode UnregisterToggleFavoriteCallback(OH_AVSession* session, 91 OH_AVSessionCallback_OnToggleFavorite callback); 92 93 private: 94 OH_AVSession* avsession_ = {nullptr}; 95 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> playCallbacks_; 96 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> pauseCallbacks_; 97 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> stopCallbacks_; 98 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> playNextCallbacks_; 99 std::vector<std::pair<OH_AVSessionCallback_OnCommand, void*>> playPreviousCallbacks_; 100 std::vector<std::pair<OH_AVSessionCallback_OnFastForward, void*>> forwardCallbacks_; 101 std::vector<std::pair<OH_AVSessionCallback_OnRewind, void*>> rewindCallbacks_; 102 std::vector<std::pair<OH_AVSessionCallback_OnSeek, void*>> seekCallbacks_; 103 std::vector<std::pair<OH_AVSessionCallback_OnSetLoopMode, void*>> setLoopModeCallbacks_; 104 std::vector<std::pair<OH_AVSessionCallback_OnToggleFavorite, void*>> toggleFavoriteCallbacks_; 105 }; 106 } 107 #endif // OHOS_OHAVSESSION_CALLBACKIMPL_H