diff --git a/Telegram/SourceFiles/media/streaming/media_streaming_player.cpp b/Telegram/SourceFiles/media/streaming/media_streaming_player.cpp index d2fef9b12..9a52a7efb 100644 --- a/Telegram/SourceFiles/media/streaming/media_streaming_player.cpp +++ b/Telegram/SourceFiles/media/streaming/media_streaming_player.cpp @@ -805,10 +805,15 @@ Media::Player::TrackState Player::prepareLegacyState() const { } crl::time Player::getCurrentReceivedTill(crl::time duration) const { + const auto forTrack = [&](const TrackState &state) { + return (state.duration > 0 && state.receivedTill == state.duration) + ? std::max(state.receivedTill, duration) + : state.receivedTill; + }; const auto previous = std::max(_previousReceivedTill, crl::time(0)); const auto result = std::min( - std::max(_information.audio.state.receivedTill, previous), - std::max(_information.video.state.receivedTill, previous)); + std::max(forTrack(_information.audio.state), previous), + std::max(forTrack(_information.video.state), previous)); return (result >= 0 && duration > 1 && _options.loop) ? (result % duration) : result;