问题描述
在 HarmonyOS NEXT 设备上使用 Moonlight V+ 进行 120fps 串流时,如果系统屏幕刷新率设置为「智能帧率 / Smart」,不触摸屏幕后屏幕刷新率可能回落到 60Hz,导致 Moonlight 的实际显示帧率跑不满 120fps。
表现上比较像:
- Moonlight 客户端设置为 120fps;
- 主机端游戏 / Sunshine / 显示器或虚拟显示器也配置为 120Hz / 120fps;
- 客户端在触摸屏幕时可能短暂维持高刷新率;
- 停止触摸后,系统刷新率疑似被智能帧率策略降到 60Hz;
- 最终实际显示 / Moonlight 统计值只能接近 60fps,可能伴随 frame pacing / 解码队列延迟上升。
复现步骤
- 在支持 120Hz 的 HarmonyOS NEXT 设备上,将系统屏幕刷新率设置为「智能帧率」。
- 打开 Moonlight V+。
- 连接 Sunshine / GameStream 主机,并将串流帧率设置为 120fps。
- 开始串流 120fps 游戏或桌面。
- 停止触摸屏幕,观察系统刷新率、Moonlight overlay FPS、frame pacing / decoder queue 等指标。
期望行为
当 Moonlight V+ 当前串流配置为 120fps 时,应用应尽量持续向系统请求 120Hz / 120fps 绘制帧率,使 HarmonyOS NEXT 的智能帧率策略不要在播放中回落到 60Hz。
实际行为
智能帧率模式下,不触摸屏幕后疑似会回落到 60Hz,导致 120fps 串流无法实际跑满 120fps。
可能原因 / 适配建议
目前项目里已经有 NativeVSync / NativeWindow 层面的高帧率适配逻辑,但 HarmonyOS NEXT 的智能帧率决策可能还需要 XComponent / ArkUI 显示层持续提供期望帧率提示。
建议排查是否需要在 Moonlight 的 XComponent / Native 渲染链路中补充或确保以下接口持续生效:
OH_NativeXComponent_SetExpectedFrameRateRange
OH_NativeXComponent_RegisterOnFrameCallback
OH_DisplaySoloist_SetExpectedFrameRateRange
- NativeWindow / NativeVSync 的 120fps range 是否只在初始化时设置,还是在串流开始、分辨率/帧率变化、前后台切换、画面恢复后都会重新设置
同时建议在日志中输出当前配置帧率和各层帧率 hint 设置结果,例如:
configured fps = 120
NativeVSync expected frame rate range = 120/120/120
NativeWindow frame rate range = 120/120/120
XComponent expected frame rate range = 120/120/120
临时规避方案
用户侧可以临时将系统刷新率从「智能帧率」切到「高刷新率 / 120Hz」,并关闭省电模式。但理想情况下,Moonlight V+ 在 120fps 串流中应能在智能帧率模式下持续请求高刷。
环境信息
- App:Moonlight V+
- OS:HarmonyOS NEXT
- 系统刷新率模式:智能帧率
- 串流配置:120fps
- 设备型号 / 系统版本 / App 版本:待补充
如果需要,我可以继续补充具体设备、系统 build、Moonlight 日志和录屏。
问题描述
在 HarmonyOS NEXT 设备上使用 Moonlight V+ 进行 120fps 串流时,如果系统屏幕刷新率设置为「智能帧率 / Smart」,不触摸屏幕后屏幕刷新率可能回落到 60Hz,导致 Moonlight 的实际显示帧率跑不满 120fps。
表现上比较像:
复现步骤
期望行为
当 Moonlight V+ 当前串流配置为 120fps 时,应用应尽量持续向系统请求 120Hz / 120fps 绘制帧率,使 HarmonyOS NEXT 的智能帧率策略不要在播放中回落到 60Hz。
实际行为
智能帧率模式下,不触摸屏幕后疑似会回落到 60Hz,导致 120fps 串流无法实际跑满 120fps。
可能原因 / 适配建议
目前项目里已经有 NativeVSync / NativeWindow 层面的高帧率适配逻辑,但 HarmonyOS NEXT 的智能帧率决策可能还需要 XComponent / ArkUI 显示层持续提供期望帧率提示。
建议排查是否需要在 Moonlight 的 XComponent / Native 渲染链路中补充或确保以下接口持续生效:
OH_NativeXComponent_SetExpectedFrameRateRangeOH_NativeXComponent_RegisterOnFrameCallbackOH_DisplaySoloist_SetExpectedFrameRateRange同时建议在日志中输出当前配置帧率和各层帧率 hint 设置结果,例如:
临时规避方案
用户侧可以临时将系统刷新率从「智能帧率」切到「高刷新率 / 120Hz」,并关闭省电模式。但理想情况下,Moonlight V+ 在 120fps 串流中应能在智能帧率模式下持续请求高刷。
环境信息
如果需要,我可以继续补充具体设备、系统 build、Moonlight 日志和录屏。