From 8713fc5d4c6d5ff0323456149cd7975bfe7254ed Mon Sep 17 00:00:00 2001 From: pingkai Date: Wed, 18 Mar 2020 13:11:18 +0800 Subject: [PATCH] feat: add a event to notify video recover size too large fix #118 Signed-off-by: pingkai --- mediaPlayer/EventCodeMap.cpp | 1 + mediaPlayer/SuperMediaPlayer.cpp | 12 ++++++++++++ mediaPlayer/media_player_error_def.h | 1 + mediaPlayer/player_types.cpp | 1 + mediaPlayer/player_types.h | 4 +++- 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mediaPlayer/EventCodeMap.cpp b/mediaPlayer/EventCodeMap.cpp index 8a3a4f4e7..898d91867 100644 --- a/mediaPlayer/EventCodeMap.cpp +++ b/mediaPlayer/EventCodeMap.cpp @@ -56,4 +56,5 @@ void EventCodeMap::init() codeMap.insert(pair(MEDIA_PLAYER_EVENT_DEMUXER_STARTUP_INFO, 112)); codeMap.insert(pair(MEDIA_PLAYER_EVENT_NETWORK_RETRY_SUCCESS, 113)); codeMap.insert(pair(MEDIA_PLAYER_EVENT_SUBTITLE_SELECT_ERROR, 114)); + codeMap.insert(pair(MEDIA_PLAYER_EVENT_DECODER_RECOVER_SIZE, 115)); } diff --git a/mediaPlayer/SuperMediaPlayer.cpp b/mediaPlayer/SuperMediaPlayer.cpp index a70ea61c0..b46fba34f 100644 --- a/mediaPlayer/SuperMediaPlayer.cpp +++ b/mediaPlayer/SuperMediaPlayer.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #ifdef __APPLE__ @@ -559,6 +560,8 @@ namespace Cicada { mSet.bEnableVRC = (atoi(value) != 0); } else if (theKey == "maxAccurateSeekDelta") { mSet.maxASeekDelta = atoi(value) * 1000; + } else if (theKey == "maxVideoRecoverSize") { + mSet.maxVideoRecoverSize = atoi(value); } return 0; @@ -4048,6 +4051,15 @@ namespace Cicada { { if (mVideoDecoder) { mVideoDecoder->holdOn(hold); + + if (!hold) { + int size = mVideoDecoder->getRecoverQueueSize(); + + if (size > mSet.maxVideoRecoverSize) { + string des = "video decoder recover size too large:" + AfString::to_string(size); + mPNotifier->NotifyEvent(MEDIA_PLAYER_EVENT_DECODER_RECOVER_SIZE, des.c_str()); + } + } } } diff --git a/mediaPlayer/media_player_error_def.h b/mediaPlayer/media_player_error_def.h index b325e187e..8f8a964fb 100644 --- a/mediaPlayer/media_player_error_def.h +++ b/mediaPlayer/media_player_error_def.h @@ -80,6 +80,7 @@ namespace Cicada{ MEDIA_PLAYER_EVENT_DEMUXER_STARTUP_INFO, MEDIA_PLAYER_EVENT_SUBTITLE_SELECT_ERROR, + MEDIA_PLAYER_EVENT_DECODER_RECOVER_SIZE, }; } diff --git a/mediaPlayer/player_types.cpp b/mediaPlayer/player_types.cpp index 4854a04fd..7be2d06c2 100644 --- a/mediaPlayer/player_types.cpp +++ b/mediaPlayer/player_types.cpp @@ -58,6 +58,7 @@ namespace Cicada { // Don't reset AnalyticsID mOptions.reset(); maxASeekDelta = 21 * 1000 * 1000; + maxVideoRecoverSize = 300; } } diff --git a/mediaPlayer/player_types.h b/mediaPlayer/player_types.h index 95e833aa3..8da7c8843 100644 --- a/mediaPlayer/player_types.h +++ b/mediaPlayer/player_types.h @@ -57,7 +57,9 @@ namespace Cicada { int mDefaultBandWidth = 0; playerOptions mOptions; bool bEnableVRC = false; - int maxASeekDelta = 21 * 1000 * 1000; + int maxASeekDelta = 21 * 1000 * 1000;//us + + int maxVideoRecoverSize; }; }