1 /* 2 * Copyright (c) 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 MEDIA_SOURCE_H 17 #define MEDIA_SOURCE_H 18 19 #include <gmock/gmock.h> 20 21 #include "plugin/plugin_base.h" 22 #include "plugin/source_plugin.h" 23 24 namespace OHOS { 25 namespace Media { 26 class CallbackImpl : public Plugins::Callback { 27 public: OnEvent(const Plugins::PluginEvent & event)28 void OnEvent(const Plugins::PluginEvent &event) override 29 { 30 if (callbackWrap_) { 31 callbackWrap_->OnEvent(event); 32 } 33 } 34 OnDfxEvent(const Plugins::PluginDfxEvent & event)35 void OnDfxEvent(const Plugins::PluginDfxEvent &event) override 36 { 37 if (callbackWrap_) { 38 callbackWrap_->OnDfxEvent(event); 39 } 40 } 41 SetSelectBitRateFlag(bool flag,uint32_t desBitRate)42 void SetSelectBitRateFlag(bool flag, uint32_t desBitRate) override 43 { 44 if (callbackWrap_) { 45 callbackWrap_->SetSelectBitRateFlag(flag, desBitRate); 46 } 47 } 48 CanAutoSelectBitRate()49 bool CanAutoSelectBitRate() override 50 { 51 if (callbackWrap_) { 52 return callbackWrap_->CanAutoSelectBitRate(); 53 } 54 return false; 55 } 56 SetCallbackWrap(Callback * callbackWrap)57 void SetCallbackWrap(Callback *callbackWrap) 58 { 59 callbackWrap_ = callbackWrap; 60 } 61 62 private: 63 Callback *callbackWrap_{ nullptr }; 64 }; 65 66 class Source : public Plugins::Callback { 67 public: 68 Source() = default; 69 ~Source() = default; 70 71 MOCK_METHOD(void, OnEvent, (const Plugins::PluginEvent &event), ()); 72 MOCK_METHOD(void, OnDfxEvent, (const Plugins::PluginDfxEvent &event), ()); 73 MOCK_METHOD(void, SetSelectBitRateFlag, (bool flag, uint32_t desBitRate), ()); 74 MOCK_METHOD(bool, CanAutoSelectBitRate, (), ()); 75 76 MOCK_METHOD(Status, SetSource, (const std::shared_ptr<MediaSource> &source), ()); 77 MOCK_METHOD(void, SetBundleName, (const std::string &bundleName), ()); 78 MOCK_METHOD(Status, Prepare, (), ()); 79 MOCK_METHOD(Status, Start, (), ()); 80 MOCK_METHOD(Status, Stop, (), ()); 81 MOCK_METHOD(Status, Pause, (), ()); 82 MOCK_METHOD(Status, Resume, (), ()); 83 MOCK_METHOD(Status, SetReadBlockingFlag, (bool isReadBlockingAllowed), ()); 84 MOCK_METHOD(Plugins::Seekable, GetSeekable, (), ()); 85 MOCK_METHOD(Status, GetSize, (uint64_t & fileSize), ()); 86 MOCK_METHOD(bool, IsSeekToTimeSupported, (), ()); 87 MOCK_METHOD(bool, IsLocalFd, (), ()); 88 MOCK_METHOD(int64_t, GetDuration, (), ()); 89 MOCK_METHOD(Status, SeekToTime, (int64_t seekTime, SeekMode mode), ()); 90 MOCK_METHOD(Status, SeekTo, (uint64_t offset), ()); 91 MOCK_METHOD(Status, GetBitRates, (std::vector<uint32_t> & bitRates), ()); 92 MOCK_METHOD(Status, SelectBitRate, (uint32_t bitRate), ()); 93 MOCK_METHOD(Status, AutoSelectBitRate, (uint32_t bitRate), ()); 94 MOCK_METHOD(Status, StopBufferring, (bool flag), ()); 95 MOCK_METHOD(Status, SetStartPts, (int64_t startPts), ()); 96 MOCK_METHOD(Status, SetExtraCache, (uint64_t cacheDuration), ()); 97 MOCK_METHOD(Status, SetCurrentBitRate, (int32_t bitRate, int32_t streamID), ()); 98 MOCK_METHOD(void, SetCallback, (Callback * callback), ()); 99 MOCK_METHOD(bool, IsNeedPreDownload, (), ()); 100 MOCK_METHOD(void, SetDemuxerState, (int32_t streamId), ()); 101 MOCK_METHOD(Status, GetStreamInfo, (std::vector<StreamInfo> & streams), ()); 102 MOCK_METHOD( 103 Status, Read, (int32_t streamID, std::shared_ptr<Buffer> &buffer, uint64_t offset, size_t expectedLen), ()); 104 MOCK_METHOD(void, SetInterruptState, (bool isInterruptNeeded), ()); 105 MOCK_METHOD(Status, GetDownloadInfo, (DownloadInfo & downloadInfo), ()); 106 MOCK_METHOD(Status, GetPlaybackInfo, (PlaybackInfo & playbackInfo), ()); 107 MOCK_METHOD(Status, SelectStream, (int32_t streamID), ()); 108 MOCK_METHOD(void, SetEnableOnlineFdCache, (bool isEnableFdCache), ()); 109 MOCK_METHOD(size_t, GetSegmentOffset, (), ()); 110 MOCK_METHOD(bool, GetHLSDiscontinuity, (), ()); 111 MOCK_METHOD(void, WaitForBufferingEnd, (), ()); 112 MOCK_METHOD(bool, SetInitialBufferSize, (int32_t offset, int32_t size), ()); 113 MOCK_METHOD(Status, SetPerfRecEnabled, (bool perfRecEnabled), ()); 114 MOCK_METHOD(void, NotifyInitSuccess, (), ()); 115 MOCK_METHOD(uint64_t, GetCachedDuration, (), ()); 116 MOCK_METHOD(void, RestartAndClearBuffer, (), ()); 117 MOCK_METHOD(bool, IsFlvLive, (), ()); 118 MOCK_METHOD(bool, IsFlvLiveStream, (), (const)); 119 MOCK_METHOD(uint64_t, GetMemorySize, (), ()); 120 MOCK_METHOD(std::string, GetContentType, (), ()); 121 MOCK_METHOD(bool, IsHlsFmp4, (), ()); 122 }; 123 } // namespace Media 124 } // namespace OHOS 125 #endif 126