[Issue]: HEVC slideshow / extremely low visible FPS on Xiaomi TV Stick MiTV-AYFR0 with Android TV 14
Describe the bug
Describe the bug
HEVC streaming on Xiaomi TV Stick MiTV-AYFR0 running Android TV 14 becomes a slideshow with extremely low visible FPS.
Moonlight's performance overlay may still report a normal rendering frame rate even though the actual displayed video updates only a few times per second.
H.264 streaming works normally.
The issue appears to be caused by MediaCodec low-latency mode with:
c2.amlogic.hevc.decoder
Disabling MediaCodec low-latency options for HEVC completely fixes the issue.
Device
- Device: Xiaomi TV Stick
- Model: MiTV-AYFR0
- Android TV: 14
- Build: UKG3.250107.001.V816.0.26.6.10.UZFAATK
- Decoder: c2.amlogic.hevc.decoder
- Moonlight: 12.1
- Server: Sunshine
- HEVC 1920x1080 @ 60 FPS
Steps to reproduce
- Start a Moonlight stream using HEVC.
- Move around in a game or display rapidly changing content.
- Video becomes a slideshow / extremely low visible FPS.
- Switch to H.264 and the stream immediately works normally.
Troubleshooting performed
- H.264 in Moonlight works perfectly at 60 FPS.
- Local HEVC video playback in VLC on the same device works normally.
- The same Sunshine HEVC stream works normally on another Android phone.
- Tested Moonlight 12.1, 12.0.2 and 10.8.4 — same issue.
- Tested Sunshine NVENC and software HEVC encoding — same issue.
- Disabled HEVC Reference Frame Invalidation (RFI) — issue remained.
- Disabled MediaCodec low-latency options for HEVC — issue completely disappeared.
- Re-enabled RFI while keeping HEVC MediaCodec low-latency disabled — HEVC 1080p60 remains fully working.
Relevant behavior
With the broken configuration, logcat shows:
c2::u32 algo.low-latency.value = 1
and the Amlogic decoder reports:
use_low_latency_mode_:1
The problem disappears when setDecoderLowLatencyOptions() is skipped for HEVC on this device.
Working patch
I created a fork with a device-specific workaround that disables MediaCodec low-latency mode for HEVC on MiTV-AYFR0 while leaving RFI and H.264 behavior unchanged: https://github.com/Viktsolovevwork278/moonlight-android-hevc-fix
A prebuilt APK is also available in the Releases section of the fork.
I'd be happy to test a cleaner device-specific workaround or provide additional logcat output if needed.
Steps to reproduce
- Start a Moonlight stream using HEVC on Xiaomi TV Stick MiTV-AYFR0.
- Use 1920x1080 at 60 FPS.
- Display rapidly changing content or start a game.
- The video becomes a slideshow with extremely low visible FPS, while Moonlight may still report a normal rendering frame rate.
- Switch the codec to H.264 and the stream immediately works normally.
The issue also occurs at 720p/30 FPS and with default Moonlight settings.
Affected games
The issue is not game-specific. It also occurs while streaming the Windows desktop and other rapidly changing content.
Tested in games as well as on the desktop.
Other Moonlight clients
PC
Moonlight adjusted settings
Yes
Moonlight adjusted settings (please complete the following information)
Tested with HEVC at:
- 1920x1080 60 FPS
- 1280x720 30 FPS
- Prefer lowest latency frame pacing
Also tested after reverting Moonlight settings to defaults. The issue still occurs.
H.264 works normally with the same setup.
Moonlight default settings
Yes
Gamepad-related connection issue
Yes
Gamepad-related input issue
Yes
Gamepad-related streaming issue
Yes
Android version
Android TV 14
Device model
Xiaomi TV Stick MiTV-AYFR0
Server PC OS version
Windows 11
Server PC GeForce Experience version
N/A - using Sunshine
Server PC Nvidia GPU driver version
nvidia-smi
Server PC antivirus and firewall software
Windows Defender and Windows Firewall
Screenshots
No response
Relevant log output
Moonlight selects the Amlogic HEVC hardware decoder:
Selected HEVC decoder: c2.amlogic.hevc.decoder
Using codec c2.amlogic.hevc.decoder for hardware decoding video/hevc
MediaCodec low latency gets enabled:
c2::u32 algo.low-latency.value = 1
The Amlogic decoder then reports:
use_low_latency_mode_:1
Disabling setDecoderLowLatencyOptions() for video/hevc completely fixes the issue while keeping HEVC RFI enabled.Additional context
No response
Source: moonlight-stream/moonlight-android