retrohub-org / retrohub

Retrogaming library frontend, built to be a highly customizable platform.
https://retrohub-org.github.io/
MIT License
110 stars 6 forks source link

Replace `godot-videodecoder` with `EIRTeam.FFmpeg` #376

Closed rsubtil closed 2 months ago

rsubtil commented 2 months ago

Closes #361.

This replaces the internal FFMPEG backend from the old and buggy godot-videodecoder to EIRTeam.FFmpeg, which is being maintained and will hopefully be less painful to work with.

This works as a drop-in replacement, so no changes are required on the project. However, fetching the video length required a hack on the old backend, and the new one has the proper function call implemented. As such, themes will need to change to the new system.

Additionaly, the FFmpeg build from this new change uses openh264 instead of libx264. This no longer enforces a GPL3.0 license, but rather the LGPL3.0 one, which allows linking to the compiled library without enforcing its license. Thus, this allows for the app to be fully MIT, and no longer require the special GPL3.0 handling for compiled binaries, so all references for that scenario have been erased.

The CI actions were also refactored to be more modular. This reduces iteration times by ensuring time-consuming dependencies get cached even when the build process fails, and allows for some parallelism as well.

rsubtil commented 2 months ago

Seems like from 4.1 to 4.2.1, Godot stopped accepting the existing scenes/scripts if they had errors. The builds were therefore broken when using a vanilla build.

This thus forces us to also create a custom editor build to be able to export the project. Since we're now forced to do this, #377 is now handled as well.