From bfb3a318ef6e0f6d4237d2cf32ff36e0f9902f27 Mon Sep 17 00:00:00 2001 From: pingkai Date: Mon, 29 Jun 2020 13:45:51 +0800 Subject: [PATCH] feat(mediaplayer): add liveStartIndex option Signed-off-by: pingkai --- cmdline/cicadaPlayer.cpp | 3 +++ mediaPlayer/MediaPlayer.cpp | 1 + mediaPlayer/MediaPlayerConfig.cpp | 1 + mediaPlayer/MediaPlayerConfig.h | 2 ++ mediaPlayer/SuperMediaPlayer.cpp | 2 ++ 5 files changed, 9 insertions(+) diff --git a/cmdline/cicadaPlayer.cpp b/cmdline/cicadaPlayer.cpp index fc093bc21..bff9a00cd 100644 --- a/cmdline/cicadaPlayer.cpp +++ b/cmdline/cicadaPlayer.cpp @@ -131,6 +131,9 @@ int main(int argc, char *argv[]) player->SetLoop(true); player->SetIPResolveType(IpResolveWhatEver); player->SetFastStart(true); + MediaPlayerConfig config = *(player->GetConfig()); + config.liveStartIndex = -3; + player->SetConfig(&config); player->Prepare(); player->SelectTrack(-1); player->SetOnRenderFrameCallback(CicadaOnRenderFrame, nullptr); diff --git a/mediaPlayer/MediaPlayer.cpp b/mediaPlayer/MediaPlayer.cpp index 5c85cd295..460f8d4ac 100644 --- a/mediaPlayer/MediaPlayer.cpp +++ b/mediaPlayer/MediaPlayer.cpp @@ -479,6 +479,7 @@ namespace Cicada { CicadaSetOption(handle, "highLevelBufferDuration", chHighBufDur.c_str()); string chMaxBufDur = to_string(playerConfig.maxBufferDuration); CicadaSetOption(handle, "maxBufferDuration", chMaxBufDur.c_str()); + CicadaSetOption(handle, "liveStartIndex", to_string(playerConfig.liveStartIndex).c_str()); CicadaSetOption(handle, "http_proxy", playerConfig.httpProxy.c_str()); CicadaSetOption(handle, "ClearShowWhenStop", playerConfig.bClearShowWhenStop ? "1" : "0"); CicadaSetOption(handle, "enableVideoTunnelRender", playerConfig.bEnableTunnelRender ? "1" : "0"); diff --git a/mediaPlayer/MediaPlayerConfig.cpp b/mediaPlayer/MediaPlayerConfig.cpp index e30e5ffac..f34540f51 100644 --- a/mediaPlayer/MediaPlayerConfig.cpp +++ b/mediaPlayer/MediaPlayerConfig.cpp @@ -19,6 +19,7 @@ namespace Cicada { bClearShowWhenStop = false; bEnableTunnelRender = false; pixelBufferOutputFormat = 0; + liveStartIndex = -3; } std::string MediaPlayerConfig::toString() const diff --git a/mediaPlayer/MediaPlayerConfig.h b/mediaPlayer/MediaPlayerConfig.h index 4df52eea0..f4050d3b9 100644 --- a/mediaPlayer/MediaPlayerConfig.h +++ b/mediaPlayer/MediaPlayerConfig.h @@ -41,6 +41,8 @@ namespace Cicada { * */ uint32_t pixelBufferOutputFormat; + int liveStartIndex; + public: std::string toString() const; }; diff --git a/mediaPlayer/SuperMediaPlayer.cpp b/mediaPlayer/SuperMediaPlayer.cpp index 8e86664ed..7c32f45c8 100644 --- a/mediaPlayer/SuperMediaPlayer.cpp +++ b/mediaPlayer/SuperMediaPlayer.cpp @@ -584,6 +584,8 @@ namespace Cicada { mSet.mFastStart = atol(value) != 0; } else if (theKey == "pixelBufferOutputFormat") { mSet.pixelBufferOutputFormat = atol(value); + } else if (theKey == "liveStartIndex") { + mSet.mOptions.set(theKey, value, options::REPLACE); } return 0;