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 FRAMEWORKS_BOOTANIMATION_INCLUDE_BOOT_VIDEO_PLAYER_H
17 #define FRAMEWORKS_BOOTANIMATION_INCLUDE_BOOT_VIDEO_PLAYER_H
18 
19 #include "boot_player.h"
20 
21 namespace OHOS {
22 class BootVideoPlayer : public BootPlayer, public std::enable_shared_from_this<BootVideoPlayer> {
23 public:
24     BootVideoPlayer(const PlayerParams& params);
25 
26     virtual ~BootVideoPlayer() = default;
27 
28     void Play() override;
29 
30 private:
31     void SetCallback(const BootAnimationCallback* cb);
32     bool SetVideoSound();
33     std::shared_ptr<Media::Player> GetMediaPlayer() const;
34     void StopVideo();
35 
36 #ifdef PLAYER_FRAMEWORK_ENABLE
37     OHOS::sptr<OHOS::Surface> surface_;
38 #endif
39 
40     VSyncCallback vSyncCallback_;
41     void *userData_;
42 
43 #ifdef PLAYER_FRAMEWORK_ENABLE
44     friend class VideoPlayerCallback;
45 #endif
46 };
47 
48 #ifdef PLAYER_FRAMEWORK_ENABLE
49 class VideoPlayerCallback : public Media::PlayerCallback, public NoCopyable {
50 public:
VideoPlayerCallback(std::shared_ptr<BootVideoPlayer> boot)51     VideoPlayerCallback(std::shared_ptr<BootVideoPlayer> boot)
52     {
53         boot_ = boot;
54     };
55     virtual ~VideoPlayerCallback() = default;
56 
57     void OnError(int32_t errorCode, const std::string &errorMsg) override;
58     void OnInfo(Media::PlayerOnInfoType type, int32_t extra, const Media::Format &infoBody) override;
59 private:
60     std::shared_ptr<BootVideoPlayer> boot_;
61 };
62 #endif
63 } // namespace OHOS
64 
65 #endif // FRAMEWORKS_BOOTANIMATION_INCLUDE_BOOT_VIDEO_PLAYER_H
66