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