diff --git a/mediaPlayer/ICicadaPlayer.h b/mediaPlayer/ICicadaPlayer.h index fffc084f7..19c6fa302 100644 --- a/mediaPlayer/ICicadaPlayer.h +++ b/mediaPlayer/ICicadaPlayer.h @@ -226,6 +226,12 @@ namespace Cicada { mBSCbArg = arg; } + virtual void setClockRefer(clockRefer cb, void *arg) + { + mClockRef = cb; + mCRArg = arg; + } + virtual int getCurrentStreamMeta(Stream_meta *meta, StreamType type) = 0; virtual void setErrorConverter(ErrorConverter *converter) @@ -250,6 +256,8 @@ namespace Cicada { readCB mBSReadCb = nullptr; seekCB mBSSeekCb = nullptr; void *mBSCbArg = nullptr; + clockRefer mClockRef = nullptr; + void* mCRArg = nullptr; ErrorConverter *mErrorConverter = nullptr; }; diff --git a/mediaPlayer/MediaPlayer.cpp b/mediaPlayer/MediaPlayer.cpp index b7de99572..78863a582 100644 --- a/mediaPlayer/MediaPlayer.cpp +++ b/mediaPlayer/MediaPlayer.cpp @@ -163,6 +163,11 @@ namespace Cicada { GET_PLAYER_HANDLE return CicadaGetMasterClockPts(handle); } + void MediaPlayer::SetClockRefer(clockRefer cb, void *arg) + { + GET_PLAYER_HANDLE + return CicadaSetClockRefer(handle,cb,arg); + } void MediaPlayer::abrChanged(int stream) { diff --git a/mediaPlayer/MediaPlayer.h b/mediaPlayer/MediaPlayer.h index 36f334e75..fefd1a241 100644 --- a/mediaPlayer/MediaPlayer.h +++ b/mediaPlayer/MediaPlayer.h @@ -8,20 +8,20 @@ #ifndef CicadaPlayer_h #define CicadaPlayer_h -#include #include "MediaPlayerConfig.h" #include "native_cicada_player_def.h" +#include class AbrManager; class AbrAlgoStrategy; -#include -#include -#include +#include #include +#include +#include #include -#include +#include #ifdef ANDROID @@ -33,7 +33,7 @@ namespace std { os << value; return os.str(); } -} +}// namespace std #endif namespace Cicada { @@ -43,7 +43,7 @@ namespace Cicada { class IAnalyticsCollectorFactory; - typedef void(*CicadaLogCallback)(void *userData, int prio, const char *buf); + typedef void (*CicadaLogCallback)(void *userData, int prio, const char *buf); class MediaPlayer { public: @@ -53,12 +53,12 @@ namespace Cicada { ~MediaPlayer(); - static string GetSdkVersion(){ - return "paas 0.9";//TODO version + static string GetSdkVersion() + { + return "paas 0.9";//TODO version } public: - void EnableVideoRenderedCallback(bool enable); @@ -142,7 +142,10 @@ namespace Cicada { /* * get master clock pts */ - int64_t GetMasterClockPts(); //TODO ??这是什么? + int64_t GetMasterClockPts();//TODO ??这是什么? + + + void SetClockRefer(clockRefer cb, void *arg); /* * get current stream index @@ -263,12 +266,12 @@ namespace Cicada { /** * set auto play */ - void SetAutoPlay(bool bAutoPlay) ; + void SetAutoPlay(bool bAutoPlay); /** * get is auto play or not */ - bool IsAutoPlay() ; + bool IsAutoPlay(); void Reload(); @@ -283,7 +286,7 @@ namespace Cicada { int GetCurrentStreamMeta(Stream_meta *meta, StreamType type); - void AddExtSubtitle( const char *uri); + void AddExtSubtitle(const char *uri); void SelectExtSubtitle(int index, bool select); @@ -295,7 +298,10 @@ namespace Cicada { void GetOption(const char *key, char *value); - IAnalyticsCollector *GetAnalyticsCollector() { return mCollector; } + IAnalyticsCollector *GetAnalyticsCollector() + { + return mCollector; + } // // long ApsaraGetPropertyLong(playerHandle *player, int key); @@ -305,14 +311,14 @@ namespace Cicada { * set cache config. * @param config */ - void SetCacheConfig(const CacheConfig &config); + void SetCacheConfig(const CacheConfig &config); /** * get cache url. Should SetCacheConfig before call this. * @param URL orignal url * @return cached url. */ - string GetCachePathByURL(const string &URL); + string GetCachePathByURL(const string &URL); void SetDefaultBandWidth(int bandWidth); @@ -343,11 +349,9 @@ namespace Cicada { static void loadingProgressCallback(int64_t prg, void *userData); - static void - subtitleShowCallback(int64_t index, int64_t size, const void *content, void *userData); + static void subtitleShowCallback(int64_t index, int64_t size, const void *content, void *userData); - static void - subtitleHideCallback(int64_t index, int64_t size, const void *content, void *userData); + static void subtitleHideCallback(int64_t index, int64_t size, const void *content, void *userData); static void subtitleExtAddedCallback(int64_t index, const void *url, void *userData); @@ -363,17 +367,18 @@ namespace Cicada { static void captureScreenResult(int64_t width, int64_t height, const void *buffer, void *userData); - static void autoPlayStart(void * userData); + static void autoPlayStart(void *userData); void abrChanged(int stream); - static void onMediaFrameCallback(void *arg, const unique_ptr& frame, StreamType type); - void mediaFrameCallback(const unique_ptr& frame, StreamType type); + static void onMediaFrameCallback(void *arg, const unique_ptr &frame, StreamType type); + void mediaFrameCallback(const unique_ptr &frame, StreamType type); private: void configPlayer(const MediaPlayerConfig *config) const; void dummyFunction(bool dummy); + protected: void *mPlayerHandle = nullptr; playerListener mListener{nullptr}; @@ -390,7 +395,7 @@ namespace Cicada { bool waitingForStart = false; bool waitingForLoop = false; string mPlayUrl; - CacheManager* mCacheManager = nullptr; + CacheManager *mCacheManager = nullptr; CacheConfig mCacheConfig; PlayerStatus mOldPlayStatus{PLAYER_IDLE}; @@ -399,7 +404,7 @@ namespace Cicada { function mPlayUrlChangedCallback = nullptr; }; -} +}// namespace Cicada #endif /* CicadaPlayer_h */ diff --git a/mediaPlayer/SuperMediaPlayer.cpp b/mediaPlayer/SuperMediaPlayer.cpp index df83b9c34..a63e803dd 100644 --- a/mediaPlayer/SuperMediaPlayer.cpp +++ b/mediaPlayer/SuperMediaPlayer.cpp @@ -2105,7 +2105,7 @@ namespace Cicada { if (!HAVE_AUDIO) { if (mPlayedVideoPts == INT64_MIN) { mMasterClock.setTime(videoPts); - mMasterClock.setReferenceClock(nullptr, nullptr); + mMasterClock.setReferenceClock(mClockRef, mCRArg); } } } else { diff --git a/mediaPlayer/media_player_api.cpp b/mediaPlayer/media_player_api.cpp index 3284ea3cc..d772d65d8 100644 --- a/mediaPlayer/media_player_api.cpp +++ b/mediaPlayer/media_player_api.cpp @@ -611,6 +611,14 @@ void CicadaSetBitStreamCb(playerHandle *pHandle, readCB read, seekCB seek, void } } +void CicadaSetClockRefer(playerHandle *pHandle, clockRefer cb, void *arg) +{ + GET_PLAYER; + if (player) { + return player->setClockRefer(cb,arg); + } +} + void CicadaAddExtSubtitle(playerHandle *pHandle, const char *uri) { GET_PLAYER; diff --git a/mediaPlayer/media_player_api.h b/mediaPlayer/media_player_api.h index f26468135..e5a63692e 100644 --- a/mediaPlayer/media_player_api.h +++ b/mediaPlayer/media_player_api.h @@ -74,6 +74,8 @@ void CicadaCaptureScreen(playerHandle *pHandle); int64_t CicadaGetMasterClockPts(playerHandle *pHandle); +void CicadaSetClockRefer(playerHandle *pHandle,clockRefer cb, void *arg); + /* * prepare to play */ diff --git a/mediaPlayer/native_cicada_player_def.h b/mediaPlayer/native_cicada_player_def.h index 899d84df2..fe1ac1017 100644 --- a/mediaPlayer/native_cicada_player_def.h +++ b/mediaPlayer/native_cicada_player_def.h @@ -154,6 +154,8 @@ typedef int (*readCB)(void *arg, uint8_t *buffer, int size); typedef int64_t (*seekCB)(void *arg, int64_t offset, int whence); +typedef int64_t(*clockRefer)(void *arg); + class ErrorConverter { public: virtual int ConvertErrorCode(int code, int &outCode, std::string &outStr) = 0;