maxLiveSeekPosition
The furthest position on this player's timeline a seek will actually STICK on live content, in seconds — the engine pulls back anything closer to the live edge.
Return null when the engine cannot say, and on non-live content — null is safe: the SDK then does not clamp. Never guess: a guessed holdback — 18s only fits 6s segments — could place content worse than not clamping at all.
Why it exists: every engine enforces a minimum live offset it will not let playback sit inside. Seek past it and the engine quietly pulls back, so a target computed without it is a request the player is free to ignore.
Computed engine-side from whichever pair the engine exposes:
maxLiveSeekPosition = currentTime + currentLiveOffset - minimumOffsetOn ExoPlayer that is Player.getCurrentLiveOffset() against MediaItem.LiveConfiguration.minOffsetMs (both present in media3 1.4.1). Deriving it from the offset pair rather than from the seekable range keeps the core arithmetic identical across TS, Kotlin and Swift.