From ec317963bb5a9e371cf982f064acc4db7e17cfa6 Mon Sep 17 00:00:00 2001 From: pingkai Date: Wed, 18 Mar 2020 10:13:56 +0800 Subject: [PATCH] feat(mediaplayer): add maxAccurateSeekDelta option Signed-off-by: pingkai --- mediaPlayer/SuperMediaPlayer.cpp | 6 ++++-- mediaPlayer/player_types.cpp | 1 + mediaPlayer/player_types.h | 3 +-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mediaPlayer/SuperMediaPlayer.cpp b/mediaPlayer/SuperMediaPlayer.cpp index bc82930cd..a70ea61c0 100644 --- a/mediaPlayer/SuperMediaPlayer.cpp +++ b/mediaPlayer/SuperMediaPlayer.cpp @@ -557,6 +557,8 @@ namespace Cicada { return 0; } else if (theKey == "enableVRC") { mSet.bEnableVRC = (atoi(value) != 0); + } else if (theKey == "maxAccurateSeekDelta") { + mSet.maxASeekDelta = atoi(value) * 1000; } return 0; @@ -2384,7 +2386,7 @@ namespace Cicada { } if (mSeekFlag && mSeekNeedCatch) { - if (pFrame->getInfo().timePosition < (mSeekPos - SEEK_ACCURATE_MAX)) { + if (pFrame->getInfo().timePosition < (mSeekPos - mSet.maxASeekDelta)) { // first frame is far away from seek position, don't suppport accurate seek mSeekNeedCatch = false; } @@ -3887,7 +3889,7 @@ namespace Cicada { if (mSeekNeedCatch) { int64_t videoPos = mBufferController.GetKeyTimePositionBefore(BUFFER_TYPE_VIDEO, mSeekPos); - if (videoPos < (mSeekPos - SEEK_ACCURATE_MAX)) { + if (videoPos < (mSeekPos - mSet.maxASeekDelta)) { // first frame is far away from seek position, don't suppport accurate seek mSeekNeedCatch = false; } else { diff --git a/mediaPlayer/player_types.cpp b/mediaPlayer/player_types.cpp index 8a9329200..4854a04fd 100644 --- a/mediaPlayer/player_types.cpp +++ b/mediaPlayer/player_types.cpp @@ -57,6 +57,7 @@ namespace Cicada { mDefaultBandWidth = 0; // Don't reset AnalyticsID mOptions.reset(); + maxASeekDelta = 21 * 1000 * 1000; } } diff --git a/mediaPlayer/player_types.h b/mediaPlayer/player_types.h index 2cd3f6c6a..95e833aa3 100644 --- a/mediaPlayer/player_types.h +++ b/mediaPlayer/player_types.h @@ -56,9 +56,8 @@ namespace Cicada { int64_t AnalyticsID = -1; int mDefaultBandWidth = 0; playerOptions mOptions; - - bool bEnableVRC = false; + int maxASeekDelta = 21 * 1000 * 1000; }; }