Skip to content

Nova for Android offers the frame rates your screen can show, plus a few experimental options that change how it handles decoded frames. This page explains why a 60 Hz phone offers only 30 and 60 FPS, which part of a stream each frame rate describes, and what LFR, Ultra Low Latency and Warp actually change. The experimental options are trade-offs to test on your own device, not switches that make every stream faster.

The decoder and frame-pacing details below describe Android’s MediaCodec path for H.264, HEVC and AV1. PyroWave uses a separate Vulkan decoder and presenter: LFR and Ultra Low Latency do not tune that path, and the pacing modes below do not describe how PyroWave presents frames. The screen’s FPS choices and the host launch-rate rules still apply.

A screen refreshes a fixed number of times each second: 60 times on a 60 Hz phone. It cannot show more different pictures per second than that. On a 60 Hz screen, a 120 FPS stream would make the host encode twice the frames and the network carry them, and half of them would never be seen.

So Nova offers a standard frame rate only when your screen can present it:

  • 30 and 60 FPS are always offered.
  • 90, 120, 144, 165 and 240 FPS are offered when the screen’s fastest refresh rate is within 2 Hz of that number. A 119.88 Hz screen still gets 120 FPS; a 60 Hz screen gets none of them.

Settings and Play Setup use the same rule. A saved choice the screen can no longer show, for example after a refresh-rate change or on a different display, drops to the fastest rate that remains. Unlock all possible frame rates under Settings → Advanced does not add rates above what the screen can show.

When Polaris resolves a launch, Nova sends it the screen’s fastest refresh rate and stops the launch, saying why, if the resolved frame rate is higher. A 60 Hz screen without a 120 FPS choice is working as intended.

Nova sends a frame rate twice: in the launch request that starts or resumes the session, and again when the video stream opens. Normally both are the same number; Warp is the exception, described below. A running stream then has four separate rates:

Rate What it is
Game rate How often the game finishes a new frame on the host. The game’s settings and frame limiter, the host GPU and the display the game runs on decide it.
Encode rate How often the host encodes a frame. Polaris, with Limit capture framerate (limit_framerate, on by default), encodes at most at the launch frame rate; with it off, at the stream’s rate.
Stream rate The frame rate Nova requests for the video. With Polaris, it is the rate Polaris resolved for this launch.
Display rate How often your screen refreshes during the stream. Nova picks a display mode for the stream, and Video frame pacing decides which decoded frames are shown.

A stream cannot add frames the game did not render: a game drawing 45 FPS gives a 60 FPS stream no more than 45 new pictures a second. When a stream feels wrong, Doctor separates host, network and client evidence instead of relying on one FPS counter.

Setting Where
Video frame rate Settings → Client Stream Defaults. Nova’s default for every game.
Frame Rate Play Setup, for one game. Auto keeps the host-resolved or Settings rate; a number pins it.
Video frame pacing Settings → Client Stream Defaults. Warp Drive and Warp 2 are choices here.
LFR, Ultra Low Latency Settings → Advanced.

Pacing, LFR and Ultra Low Latency control how this device decodes and shows frames. Play Setup does not show them, and a per-game choice there does not change them.

Choice What Nova does with decoded frames
Prefer lowest latency (default) Shows the newest decoded frame as soon as it is ready and drops older frames queued behind it.
Balanced Holds up to two decoded frames and shows one per screen refresh.
Balanced with FPS limit Paces like Prefer smoothest video. With a host that is not Polaris, it also requests one FPS less when your chosen rate is the screen’s refresh rate.
Prefer smoothest video Drops frames that arrive too late for their refresh. The app warns that it may significantly increase latency.
Warp Drive, Warp 2 Pace exactly like Prefer lowest latency; see Warp Drive and Warp 2.

Prefer smoothest video and Balanced with FPS limit also let Nova prefer a lower screen refresh rate that matches the stream. Balanced does so only with Allow refresh rate reduction on.

Settings → Advanced, off by default. Its caption reads “Minimizes delay by dropping queued frames.” With it on:

  • Nova waits less for each decoded frame before checking again: 0.5 ms instead of 2 ms.
  • With any pacing choice except Balanced, Nova takes every decoded frame that is ready, discards all but the newest, and shows that one at once.
  • With Balanced, frames still wait their turn at each screen refresh, then go to the screen without a scheduled display time.

LFR removes waiting inside Nova only. It does not make the host render or encode sooner, or the network deliver frames sooner. Discarded frames are never shown, so motion can look less even when frames arrive in bursts.

Settings → Advanced, off by default. It changes only how Nova sets up Android’s video decoder; it is not sent to the host.

Nova always asks the decoder for low-latency decoding. When a decoder advertises Android’s standard low-latency feature (Android 11 and later), Nova normally uses that standard option alone. Ultra Low Latency makes Nova add the chip vendor’s own options on top:

  • Qualcomm (Snapdragon) decoders: Qualcomm’s low-latency options.
  • MediaTek decoders: a MediaTek low-latency preset.
  • Some HiSilicon Kirin, Samsung Exynos and Amlogic decoders: that vendor’s low-latency option.

Decoders that do not advertise the standard feature already get these vendor options, so for them the setting changes nothing. If a decoder rejects a combination, Nova retries with fewer options.

The caption, “Only effective for SD8Gen2/8(s)Gen3/8Elite and MTK devices”, is the app’s own short note. Nova picks options by the decoder’s name, not by checking the chip model, and a decoder can accept an option without behaving differently. Turn it off if a stream stutters, shows visual errors or will not start.

Both are Video frame pacing choices. On the device they pace frames exactly like Prefer lowest latency. They differ only in the stream rate Nova requests:

  • From a current Polaris host, which resolves every game launch and resume, Spaces included, Nova streams exactly the frame rate Polaris resolved. Warp adds nothing, so both behave as Prefer lowest latency.
  • From a host that is not Polaris, Nova starts the game at your chosen frame rate but requests 2 times that rate (Warp Drive) or 4 times (Warp 2) for the video stream. What happens next depends on that host’s software, which Nova does not check.

Neither choice lets your screen show more frames than it refreshes: on a 60 Hz screen, a 120 or 240 FPS stream request still shows at most 60 frames a second.

For reference, when a client asks Polaris for a stream rate that is a multiple of its launch rate, such as Warp’s two or four times, Polaris with Limit capture framerate on (the default) still encodes at most at the launch rate, and multiplies the stream’s bitrate budget by that multiple, up to the host’s bitrate cap. With that setting off, Polaris encodes at the requested stream rate and applies no multiplier.

Change one setting at a time. Keep the game, scene, resolution, codec, bitrate and network the same, then compare NovaHUD or Doctor before and after. A higher FPS number on its own does not show lower latency.

For a game’s launch plan, read Play Setup. For the host’s capture and encoder settings, read Configuration.