Missing plugin after building GStreamerv1.22.6 on Windows

Hi,

We use GStreamer to recover stream video from a camera. To do that, we need to add a grayscale format to gstrtpvrawdepay and gstrtprawdepay, so that’s why we build gstreamer. We follow instructions on Gstreamer documentation to setup build with meson. Build is ok, and our application recover stream video from camera like expected.
But some plugins are missing like gdkpixbuf. How can we retrieve this plugin ?

Thanks.

There are different ways of building GStreamer (monorepo, cerbero, etc.).

I think we need more details about how you built it in order to be able to help.

Yes of course.

We installed python, meson and ninja.

We set an environment variable “GSTREAMER_1_0_ROOT_MSVC_X86_64” to the path where we want to “install” gstreamer.
We open a x64 native tools command prompt for VS2019
We go to the directory where we extracted the sources and launch the commands :

meson --prefix=%GSTREAMER_1_0_ROOT_MSVC_X86_64% build
meson install -C build

Hi,

We try to force build of gdkpixbuf plugin with the commands :
meson --prefix=%GSTREAMER_1_0_ROOT_MSVC_X86_64% -Dgst-plugins-good:gdk-pixbuf=enabled build (note for this first step we must install gstreamer and set path to gdk-pixbuf-2.0.dll directory to have the good dependencies but not convinced it’s correct)
meson install -C build

Here we have build errors :
(…)
FAILED: subprojects/gst-plugins-base/ext/ogg/gstogg.dll subprojects/gst-plugins-base/ext/ogg/gstogg.pdb
“link” /MACHINE:x64 /OUT:subprojects/gst-plugins-base/ext/ogg/gstogg.dll subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/dirac_parse.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/gstoggaviparse.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/gstoggplugin.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/gstoggdemux.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/gstoggmux.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/gstoggparse.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/gstoggstream.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/gstogmparse.c.obj subprojects/gst-plugins-base/ext/ogg/gstogg.dll.p/vorbis_parse.c.obj “/nologo” “/release” “/nologo” “/DEBUG” “/PDB:subprojects\gst-plugins-base\ext\ogg\gstogg.pdb” “/DLL” “/IMPLIB:subprojects\gst-plugins-base\ext\ogg\gstogg.lib” “subprojects\gst-plugins-base\gst-libs\gst\audio\gstaudio-1.0.lib” “subprojects\gst-plugins-base\gst-libs\gst\tag\gsttag-1.0.lib” “subprojects\gstreamer\libs\gst\base\gstbase-1.0.lib” “subprojects\gstreamer\gst\gstreamer-1.0.lib” “subprojects\orc\orc\orc-0.4.lib” “subprojects\gst-plugins-base\gst-libs\gst\pbutils\gstpbutils-1.0.lib” “subprojects\gst-plugins-base\gst-libs\gst\video\gstvideo-1.0.lib” “subprojects\gst-plugins-base\gst-libs\gst\riff\gstriff-1.0.lib” “/SAFESEH:NO” “/LIBPATH:C:/projects/repos/cerbero.git/1.22/build/dist/msvc_x86_64/lib” “ogg.lib” “C:/gstreamer/1.0/msvc_x86_64/lib/glib-2.0.lib” “C:/gstreamer/1.0/msvc_x86_64/lib/intl.lib” “C:/gstreamer/1.0/msvc_x86_64/lib/gobject-2.0.lib” “C:/gstreamer/1.0/msvc_x86_64/lib/gmodule-2.0.lib” “C:/gstreamer/1.0/msvc_x86_64/lib/z.lib” “kernel32.lib” “user32.lib” “gdi32.lib” “winspool.lib” “shell32.lib” “ole32.lib” “oleaut32.lib” “uuid.lib” “comdlg32.lib” “advapi32.lib”
LINK : fatal error LNK1181: impossible d’ouvrir le fichier en entrée ‘ogg.lib’
[996/3905] Compiling C object subprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gsttimeoverlay.c.obj
ninja: build stopped: subcommand failed.
Could not rebuild C:\DEV\Gstreamer\build3

Maybe we should use cerbero instead ?

But we don’t understand why a plugin is available with default installation and it is not built by default. So feeling we do something wrong but what … ?

With cerbero you should get the full plugin set that you get in the binary packages.

When building the monorepo you’ll get a more reduced plugin set on Windows because only those plugins get built for which dependencies are available as subprojects or on the system or that have no external dependencies.

For your particular linking problem with ogg, you can disable the ogg plugin with -Dgst-plugins-base:ogg=disabled if you don’t need it, and move on. (Possibly a problem in the wrap or with the wrap version, unsure.)

Finally, we succeed to build gdkpixbuf plugin with the commands :
meson --prefix=%GSTREAMER_1_0_ROOT_MSVC_X86_64% -Dgst-plugins-good:gdk-pixbuf=enabled
meson install -C build

To avoid linking errors (with ogg.lib for instance, like described in previous message), we add some path where those libs exist to the LIB environment variable set by x64 native tools command prompt for VS2019 :
set LIB=%LIB%;C:\gstreamer\1.0\msvc_x86_64\lib