GNOME Bugzilla – Bug 721031
MSI installer does not set plugin directory and the automatic search does not use the GSTREAMER_ROOT environment variable.
Last modified: 2014-11-25 16:13:06 UTC
When installing gstreamer-1.0-x86-1.2.1.msi, a Windows (Visual Studio) program linked against the gstreamer SDK does not load any plugins when relying on the gstreamer MSI to be separately installed. I looked into it, and the MSI is setting the system environment variable, GSTREAMER_ROOT, correctly but it is not setting GST_PLUGIN_SYSTEM_PATH_1_0 or any other GST PLUGIN path variable. In the scan_and_update_registry() function, the closest it gets is: DEBUG GST_REGISTRY gstregistry.c:1596:scan_and_update_registry: scanning main plugins /c/gstreamer/1.0/x86/lib/gstreamer-1.0 In win32/common/config.h, it specifically lists "c:/", so I'm not sure where the "/c/" comes from. This may be because the shipped MSI is using Cygwin or a cross compiler? Either way, the default location for installing the MSI ended up being "D:\gstreamer", not C:. D: isn't the system root, just where the MSI was located. This should be corrected to install to the system root or preferably the Program Files, as access can always be found through the GSTREAMER_ROOT variable. The suggested solution for the above problems is to adjust the scan_and_update_registry() function to use GSTREAMER_ROOT and build the path from there, instead of the constants in the config.h file. Another option is to adjust the MSI to set the system environment variable, GST_PLUGIN_SYSTEM_PATH_1_0, to the correct value. This would require no code change. Also, I think that the 0.10 msi (from OSSBuild on Google Code) either set the paths to the bin dlls or had a copy somewhere that was on the path. I would suggest also doing that for the the 1.0 gstreamer MSI. Thanks.
It's the job of your application to make sure that these environment variables are properly set. Also a system-wide installed GStreamer version is not the best idea on Windows due to dll hell. The path you see there comes from during the compilation. On Windows GStreamer will also look in $dlldir\..\lib\gstreamer-1.0 (where $dlldir is the directory where libgstreamer-1.0.dll is located). Does this show up in the logs too, why does it not load anything from there?
Closing this bug report as no further information has been provided. Please feel free to reopen this bug if you can provide the information asked for. Thanks!