Repository navigation
fix: Install the plugin in the OBS 33 plugin location - #67
Merged
Merged
Conversation
OBS Studio 33 flags a plugin whose module is in plugins/<name>/bin/64bit as Legacy, and loads plugins/<name>/<name>.dll with plugins/<name>/data first. Install the module and its PDB to <name>/ next to <name>/data, and copy them to rundir/<config>/<name> with the data in rundir/<config>/<name>/data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Install the module to <libdir>/obs-modules/plugins and its data to <datadir>/obs/obs-modules/plugins/<name>, the system plugin location that OBS Studio 33 loads without the Legacy flag. Copy the module to rundir/<config>/<name> with the data in rundir/<config>/<name>/data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Before copying files, delete bin\64bit\<name>.dll and bin\64bit\<name>.pdb from the install folder, then remove bin\64bit and bin when they are empty. Other files in those folders are kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add an installer task, checked by default, that also copies the module and its PDB to bin\64bit so that OBS Studio 31.1.1 to 32 can load the plugin. The task has English and Japanese descriptions, and a reinstall starts with the choice made last time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
State that OBS Studio 31.1.1 or later is required and that the plugin is installed in the plugin location used since OBS Studio 33. Describe the installer's legacy-location task and the manual copy to bin\64bit for OBS Studio 31.1.1 to 32, and state that the Ubuntu package needs OBS Studio 33 or later. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
semnil
force-pushed
the
fix/obs33-plugin-location
branch
from
November 1, 2026 05:12
cf7bfea to
a931f69
Compare
The obsproject PPA publishes OBS Studio 32.2.0 for Ubuntu 24.04, which loads plugins only from <libdir>/obs-plugins. Install the module and its data there as well as in obs-modules/plugins, from one list of plugin folders. OBS Studio 33 loads the copy in obs-modules/plugins and skips the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the OBS Studio 33 requirement for the Ubuntu package with the two locations it now installs to, so that OBS Studio 31.1.1 to 32 can load the plugin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
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.
Problem
OBS Studio 33's Plugin Manager marks Mix Track to Source as Legacy (旧方式 in Japanese). The Windows installer puts the module in
C:\ProgramData\obs-studio\plugins\mix-track-to-source\bin\64bit\, and the Ubuntu package puts it in/usr/lib/<arch>/obs-plugins/. OBS Studio 33.0.1 loads both through its legacy loader (loadLegacyPluginsinfrontend/plugin-manager/PluginModuleLoader_Windows.cppandPluginModuleLoader_Linux.cpp). OBS says that plugins in legacy locations will not be loaded in the future (Legacy Plugin Locations, Legacy Plugin Developer Info).Fix
mix-track-to-source/, next tomix-track-to-source/data/. OBS Studio 33 loads this asplugins/<name>/<name>.dllwithplugins/<name>/data(loadPluginsinPluginModuleLoader_Windows.cpp). The rundir uses the same layout, soOBS_PLUGINS_PATH=<build>/rundir/<config>loads a local build.<libdir>/obs-modules/pluginsand its data to<datadir>/obs/obs-modules/plugins/<name>, the system plugin location of OBS Studio 33 (OBS_PLATFORM_PLUGIN_MODULE_PATHandOBS_PLATFORM_PLUGIN_DATA_PATHinfrontend/cmake/feature-plugin-manager.cmake). The module and its data are also installed to<libdir>/obs-pluginsand<datadir>/obs/obs-plugins/<name>, the location OBS Studio 32 and earlier search: the obsproject PPA publishes OBS Studio 32.2.0 for Ubuntu 24.04 (noble), 32.1.2 for questing and 33.0.0 for resolute and stonking (LaunchpadgetPublishedSources), and CI's Ubuntu 24.04 job installsobs-studio (32.2.0-0obsproject1~noble). OBS Studio 33 loads the copy inobs-modules/pluginsfirst and skips the other. The rundir uses<name>/<name>.sowith<name>/data.bin\64bit\mix-track-to-source.dlland.pdbthat an earlier version installed, and removesbin\64bitandbinwhen they are empty. Other files in those folders are kept.bin\64bit. UnderC:\ProgramData\obs-studio\plugins\<name>, that is the only folder OBS Studio 31.1.1 and 32.2.2 search (AddExtraModulePathsinfrontend/widgets/OBSBasic.cpp). OBS Studio 33 loads the copy next todatafirst and skips the one inbin\64bitwithSkipping legacy plugin ... already loaded from ...in the log. A reinstall starts with the choice made last time.Also install for OBS Studio 31.1.1 to 32 (legacy plugin location)) and Japanese (OBS Studio 31.1.1〜32 でも使えるようにする (旧方式の場所にも置く)). The script is UTF-8 without a BOM, which Inno Setup reads since 6.3.0 (itswhatsnew.htm); thewindows-2022runner image lists InnoSetup 6.7.1.mix-track-to-source.pluginto~/Library/Application Support/obs-studio/plugins(the current-user-home domain incmake/macos/resources/distribution.in), which OBS Studio 33 loads as a plugin, not a legacy plugin (PluginModuleLoader_MacOS.mm).bin\64bitfor OBS Studio 31.1.1 to 32 when the archive is used, and that the Ubuntu package places the plugin in both locations.Impact
obs-modules/plugins(module_bininlibobs/obs-nix.c, withOBS_PLUGIN_DESTINATIONset to<libdir>/obs-pluginsincmake/linux/defaults.cmake), so it loads the copy inobs-plugins. With OBS Studio 33, the log showsSkipping legacy plugin ... already loaded from ...for that copy.src/.git merge-tree --write-treemerges it with feat: Remove output tracks from sources feeding the input and add the source to every scene #63 and fix: Keep the input track out of the plugin's outputs when they are set #66 without conflicts.Verification
Windows build of this head:
cmake --preset windows-x64 -DCMAKE_COMPILE_WARNING_AS_ERROR=ON,cmake --buildandcmake --installpass. The install tree and the rundir aremix-track-to-source/mix-track-to-source.dll,mix-track-to-source/mix-track-to-source.pdbandmix-track-to-source/data/locale/{en-US,ja-JP}.ini.OBS Studio 33.0.1 on Windows, started with
OBS_PLUGINS_PATHset to a rundir in this layout (a build that also contains the update check change on thefeat/update-checkbranch), while the released 1.0.2 was installed inbin\64bit:Skipping legacy plugin 'mix-track-to-source' at 'C:\ProgramData\obs-studio/plugins/mix-track-to-source/bin/64bit/mix-track-to-source.dll', already loaded from '<build>\rundir\RelWithDebInfo/mix-track-to-source/mix-track-to-source.dll'Installer:
iscccompiles this head'sinstaller.issthe wayPackage-Windows.ps1does. A copy of the script that only replacesAppId,DefaultDirName, the privileges and the uninstall registration was run silently against a scratch folder. In each case, the DLL and PDB it installed are byte-identical to the build.binremovedbin\64bitholding another file, task off → only the plugin's two files removed; the other file and the folders keptbinremoved[InstallDelete]removed, the upgrade with the task off keepsbin\64bit\mix-track-to-source.dlland.pdb.Linux install rules: a probe project that includes this head's
cmake/linux/helpers.cmake(withCMAKE_INSTALL_LIBDIRset tolib/x86_64-linux-gnu) installslib/x86_64-linux-gnu/obs-modules/plugins/<module>,lib/x86_64-linux-gnu/obs-plugins/<module>, andlocale/{en-US,ja-JP}.iniunder bothshare/obs/obs-modules/plugins/mix-track-to-source/andshare/obs/obs-plugins/mix-track-to-source/. The same probe with the helpers of the previous commit installs only theobs-modulescopies.gersemi 0.21.0 (the version in
obsproject/tools) reports no changes forcmake/windows/helpers.cmakeandcmake/linux/helpers.cmake.CI on 1ea6d2a passes (Ubuntu, Windows and macOS builds and the format checks).
Ubuntu, checked after the merge on
masterat e95a844 (which contains this change) in Docker:ubuntu:24.04with the obsproject PPA installsobs-studio 32.2.0-0obsproject1~noble, andubuntu:26.04installsobs-studio 33.0.0-0obsproject3~resolute. On both, the plugin is built and packaged with the options of.github/scripts/build-ubuntuandpackage-ubuntu(cmake --preset ubuntu-ci-x86_64 -G Ninja -DQT_VERSION=6 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr,cmake --build --preset ubuntu-ci-x86_64 --config RelWithDebInfo --parallel,cmake --build build_x86_64 --config RelWithDebInfo -t package).dpkg-deb -clistsmix-track-to-source.sounder both/usr/lib/x86_64-linux-gnu/obs-modules/plugins/and/usr/lib/x86_64-linux-gnu/obs-plugins/, andlocale/{en-US,ja-JP}.iniunder both/usr/share/obs/obs-modules/plugins/mix-track-to-source/and/usr/share/obs/obs-plugins/mix-track-to-source/. Afterapt-get install ./<deb>, OBS was started under Xvfb with both copies and with one of them moved away:obs-modules/pluginsonlyobs-pluginsonlyobs-modules/plugins, withSkipping legacy plugin 'mix-track-to-source' at '/usr/lib/x86_64-linux-gnu/obs-plugins/mix-track-to-source.so', already loaded from '/usr/lib/x86_64-linux-gnu/obs-modules/plugins/mix-track-to-source.so'Each start had no
obsprocess left from the previous one, and none of the logs hasOBS is already running.Not verified: loading from
bin\64bitin OBS Studio 31.1.1 to 32 on Windows.🤖 Generated with Claude Code