-
Notifications
You must be signed in to change notification settings - Fork 37
Feat: Add mixed-system games to .sub files with metadata and artwork #27
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
Open
SSSTAiNLESSS
wants to merge
20
commits into
phulshof:master
Choose a base branch
from
SSSTAiNLESSS:feature/mixed-collections
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Feat: Add mixed-system games to .sub files with metadata and artwork #27
SSSTAiNLESSS
wants to merge
20
commits into
phulshof:master
from
SSSTAiNLESSS:feature/mixed-collections
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Author
|
My primary motivation for developing this feature was to gain full control over the display order of games within |
The playbin3 element was introduced in commit 0c828bd (April 2023) but is not available in GStreamer 1.4 (2014). This caused video playback failure with legacy GStreamer installations. Reverted to playbin for backwards compatibility with GStreamer 1.4 while maintaining functionality with newer versions (playbin is available in all GStreamer 1.x versions). Error in log: [DEBUG] [Video] Could not create playbin - STAiNLESS
- STAiNLESS
Major Changes: - Complete replacement of GStreamer backend with libVLC - Smart volume-based playback (only decode when volume > 0.01) - Fixed audio to stereo output with optimized buffer - Added stop() function to Sound class for proper cleanup Performance Optimizations: - Videos/audio with volume=0 don't consume CPU - Background media only plays when needed - Proper cleanup when switching menus Files Added: - VLCVideo.cpp/h - Complete libVLC implementation - deploy_test.bat - Quick deployment script - BUILD_VLC.md - Comprehensive build documentation Files Modified: - VideoComponent.cpp - Smart playback based on volume - Video.cpp - Updated to use VLCVideo - Page.cpp - Stop sounds on menu switch - Sound.cpp/h - Added stop() function - SDL.cpp - Fixed audio configuration - CMakeLists.txt - VLC configuration Implementation by CORE Team Co-Authored-By: Claude <noreply@anthropic.com>
- Full technical details of the migration - Performance metrics and improvements - Complete bug fix list - Testing checklist - Migration guide - CORE Team credits Documentation for the complete GStreamer to libVLC backend replacement.
- Added proper attribution for RFSVIEIRA who pioneered the VLC migration - Updated both CHANGELOG and BUILD documentation - Credit where credit is due Thanks RFSVIEIRA for showing the way!
- Clarified that VLC SDK is already in tools/vlc-sdk/ - Runtime files in tools/vlc-runtime.zip - Users don't need to download VLC separately - Made included SDK the recommended option - Updated CMake instructions to use tools folder by default Easier compilation for contributors!
- Removed Package/Environment/Windows/core 1.4/ (GStreamer 1.4 files) - Removed Scripts/deploy_test.bat (temporary deployment script) - tools/vlc-sdk not tracked in git (as intended) Repository cleanup for VLC implementation
The build_and_store.ps1 script handles everything automatically. No need for separate documentation.
- Removed reference to deploy_test.bat - Removed reference to BUILD_VLC.md - Updated deployment instructions
- tools/ folder is gitignored - Added download instructions for VLC SDK - Developers need to download SDK separately
- Integrated VLC video backend - Smart volume-based playback - Performance optimizations - Audio improvements (stereo, proper cleanup) Mixed collections now uses VLC instead of GStreamer
4832eda to
c4cf1b2
Compare
- Added lib/msvc path hint for libvlc libraries - Supports RSATom/libvlc-sdk structure - Mixed-collections now builds with VLC
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This branch introduces the ability to create "Mixed Collections" where a single list can contain games from multiple different systems, launching them with their respective emulators and displaying correct metadata.
Added
SystemName:GameNamesyntax in.subfiles (e.g.,Nintendo Entertainment System:Super Mario Bros).CollectionInfoobjects on-the-fly for foreign systems found in a list.settings.conffor foreign systems to ensure artwork paths (screenshots, videos) and launcher configurations are resolved correctly.MetadataDatabase::injectItemMetadatato query the HyperList database for a specific game without requiring the full collection to be loaded..subfiles to prevent parsing errors on the first line.Fixed
CollectionInfoobjects in the main collection's destructor.settings.confis loaded into the global configuration.