Skip to content

实时窗口适配功能#151

Open
STUzhy wants to merge 1 commit intoThe-Fried-Fish:Integrationfrom
STUzhy:feature/realtime-window-adaptation
Open

实时窗口适配功能#151
STUzhy wants to merge 1 commit intoThe-Fried-Fish:Integrationfrom
STUzhy:feature/realtime-window-adaptation

Conversation

@STUzhy
Copy link
Copy Markdown

@STUzhy STUzhy commented Nov 9, 2025

实时窗口适配功能

功能概述

实现自适应窗口功能,允许用户在流媒体播放过程中实时调整窗口尺寸,自动重新配置流媒体分辨率以匹配新的窗口大小。

主要特性

✨ 核心功能

  • 实时窗口适配:窗口尺寸变化时自动调整视频分辨率
  • 用户可控开关:在设置-视频部分提供实时窗口适配开关
  • 智能重启机制:窗口稳定后自动重新连接流媒体
  • 防崩溃保护:增强的参数校验,防止 NaN/Inf 导致的计算错误

🔧 技术实现

VideoDecoderRenderer.m - 安全计算逻辑

// 添加了完整的参数校验,防止异常值
CGFloat viewW = _view.bounds.size.width;
CGFloat viewH = _view.bounds.size.height;
float ar = _streamAspectRatio;
if (!isfinite(ar) || ar <= 0.0f) {
    // 安全回退机制
}

SettingsViewController.m - UI控制

  • 在PiP设置下方添加实时窗口适配开关
  • 使用NSUserDefaults持久化用户偏好
  • 实时响应用户设置变化

StreamFrameViewController.m - 智能状态管理

  • 防重入保护机制
  • 异步操作管理
  • 双重通知机制确保可靠性

MainFrameViewController.m - 健壮重启流程

  • 多重重试机制(最多5次)
  • 智能主机和应用发现
  • 渐进式回退策略

⚠️ 重要安全警告

⚠️ 如果改变窗口操作间隔过短应用可能会崩!

使用注意事项:

  • 🚫 避免快速连续调整窗口尺寸
  • ⏱️ 建议每次调整间隔至少1-2秒
  • 🔧 在设置中可以随时关闭此功能
  • 📱 建议在稳定的网络环境下使用

代码变更文件

  • VoidLink/Stream/VideoDecoderRenderer.m - 增强的视频尺寸计算
  • VoidLink/ViewControllers/SettingsViewController.h/m - 新增设置UI
  • VoidLink/ViewControllers/StreamFrameViewController.m - 适配逻辑实现
  • VoidLink/ViewControllers/MainFrameViewController.h/m - 重启流程支持

- 实现流媒体播放过程中的自适应窗口调整
- 在视频设置中添加用户可控开关
- 增强视频解码渲染器的安全计算逻辑
- 添加智能重启机制和重试逻辑
- 包含全面的错误处理和参数验证
- 防止NaN/Inf值导致的触摸计算崩溃
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant