-
-
Notifications
You must be signed in to change notification settings - Fork 14
V0.2.2 Performance Improvements + Stability #98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Added functionality to fetch server mapping and queue data from PrintedWaste API. - Defined data structures for server mapping and queue data, including custom deserialization. - Implemented methods to fetch server mapping and queue data asynchronously. - Created a combined server info structure for displaying queue information. - Added utility functions for formatting ETA, calculating server scores, and sorting servers by various criteria. - Included error handling for API responses and data parsing.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- Implemented region filtering for queue servers. - Added sorting options based on best value, queue time, ping, and alphabetical order.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Audio: - Fix glitchy audio on multi-channel devices (e.g., 7.1 headsets) - Add proper channel upmixing from stereo (2ch) to device channels (up to 8ch) - Track input/output channels separately in AudioResampler - Map stereo to surround: FL/FR direct, center mixed, rear/side at reduced levels - Update resampler to handle both sample rate conversion and channel upmixing Rendering: - Fix render FPS running at double the decode rate (296fps instead of 120fps) - Remove duplicate request_redraw() call from RedrawRequested handler - Let about_to_wait handle frame pacing based on decoder output - Render rate now properly synchronized to decode rate
- Added Queue Times tab for viewing server queue information - Integrated PrintedWaste API for fetching queue data and server mapping - Added caching for queue server data - Added sorting/filtering options for queue times display - Added server selection modal for launching games with specific servers Resolves conflicts with Native branch formatting and structure.
Updated Raspberry Pi support status and codec information.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements significant performance improvements and stability enhancements for the OpenNOW streamer, focusing on video decoding and cross-platform compatibility. The main goal is to improve performance by using native platform-specific decoders instead of relying solely on FFmpeg, and to enhance stability through better error handling and state management.
Key changes:
- Removes AV1 codec support to simplify the codebase and focus on H.264/H.265
- Implements native D3D11 Video API decoder for Windows (bypassing FFmpeg limitations)
- Adds Vulkan Video decoder for modern Linux systems (Intel Arc, NVIDIA RTX, AMD RDNA2+)
- Adds GStreamer V4L2 decoder for Raspberry Pi and embedded devices
Reviewed changes
Copilot reviewed 29 out of 33 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| opennow-streamer/src/webrtc/sdp.rs | Removes AV1 codec handling, applies code formatting |
| opennow-streamer/src/webrtc/mod.rs | Removes AV1 depacketizer, updates to use UnifiedVideoDecoder |
| opennow-streamer/src/media/vulkan_video.rs | New Vulkan Video decoder for Linux (567 lines) |
| opennow-streamer/src/media/videotoolbox.rs | Adds legacy macOS support flag, formatting improvements |
| opennow-streamer/src/media/video.rs | Major refactoring: adds UnifiedVideoDecoder, removes AV1, adds transfer function support |
| opennow-streamer/src/media/vaapi.rs | New VAAPI zero-copy support for Linux (601 lines) |
| opennow-streamer/src/media/v4l2.rs | New V4L2 decoder support for Raspberry Pi (363 lines) |
| opennow-streamer/src/media/native_video.rs | New native DXVA decoder wrapper for Windows (305 lines) |
| opennow-streamer/src/media/mod.rs | Reorganizes exports, adds new decoder modules |
| opennow-streamer/src/media/hevc_parser.rs | New HEVC NAL unit parser for native DXVA (1014 lines) |
| opennow-streamer/src/media/gstreamer_decoder.rs | New GStreamer decoder for Linux (350 lines) |
| opennow-streamer/src/media/d3d11.rs | Adds P010 HDR support, GPU sync improvements |
| opennow-streamer/src/media/audio.rs | Improves resampling (Catmull-Rom spline), adds channel upmixing |
| opennow-streamer/src/input/windows.rs | Fixes window class registration, improves cleanup |
| opennow-streamer/src/gui/image_cache.rs | Adds image resizing for performance |
| opennow-streamer/src/app/types.rs | Adds queue times tab, sort/filter modes |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Todo's
Implementations