All-
I'm working my way through updating the gstreamer1 components to the
latest version (1.16.2 -> 1.18.5). They've switched from autoconf to
meson, so the biggest hurdle has been converting the Makefile to use
the new configuration options.
With the current 1.16.2, gst-plugins-base1 specifies
CONFIGURE_OPTIONS += --disable-gles2
but nothing else OpenGL related.
Unfortunately, gst-plugins-base1 for 1.18.5 with meson doesn't have
the same option meanings, so there's no one-to-one mapping between our
old configuration and the new. The meson_options related to OpenGL are
# OpenGL integration library options
option('gl_api', type : 'array', choices : ['opengl', 'gles2',
'auto'],
value : ['auto'],
description : 'A comma separated list of opengl APIs to enable
building against'
)
option('gl_platform', type : 'array',
choices : ['glx', 'egl', 'cgl', 'wgl', 'eagl', 'auto'],
value : ['auto'],
description : 'A comma separated list of opengl platforms to
enable building against'
)
option('gl_winsys', type : 'array',
choices : ['x11', 'wayland', 'win32', 'winrt', 'cocoa',
'dispmanx', 'egl', 'viv-fb', 'gbm', 'android', 'auto'],
value : ['auto'],
description : 'A comma separated list of opengl windows systems
to enable building against. Supported values are x11,
wayland,
win32, winrt, cocoa, dispmanx, egl, viv-fb, gbm, and
android'
)
option('egl_module_name', type : 'string',
value : '',
description : 'The file to pass to g_module_open to open the
libEGL library (default: libEGL)'
)
option('opengl_module_name', type : 'string',
value : '',
description : 'The file to pass to g_module_open to open the
libGL library (default: libGL)'
)
option('gles2_module_name', type : 'string',
value : '',
description : 'The file to pass to g_module_open to open the
libGLESv2 library (default: libGLESv2)'
)
#
# Feature option for opengl plugin and integration library
#
option('gl', type : 'feature',
value : 'auto',
description : 'OpenGL integration library and OpenGL plugin'
)
option('gl-graphene', type : 'feature',
value : 'auto',
description : 'Use Graphene in OpenGL plugin'
)
option('gl-jpeg', type : 'feature',
value : 'auto',
description : 'Use libjpeg in OpenGL plugin'
)
option('gl-png', type : 'feature',
value : 'auto',
description : 'Use libpng in OpenGL plugin'
)
Now, with the available meson options, what I have (so far) specified
for the
updated build is
CONFIGURE_OPTIONS += -Dgl_api=opengl
CONFIGURE_OPTIONS += -Dgl_platform=glx,egl
CONFIGURE_OPTIONS += -Dgl_winsys=x11,egl
CONFIGURE_OPTIONS += -Dgl-graphene=disabled
With those options specified, the updated manifest isn't missing
anything
that was present in the 1.16.2 component.
It seems like some new stuff is being added, though:
file path=usr/lib/pkgconfig/gstreamer-gl-1.0.pc
+file path=usr/lib/pkgconfig/gstreamer-gl-egl-1.0.pc
+file path=usr/lib/pkgconfig/gstreamer-gl-prototypes-1.0.pc
+file path=usr/lib/pkgconfig/gstreamer-gl-x11-1.0.pc
There are also new GL-related header files and several files related to
introspection (for the 64 bit build; the 32 bit build has introspection
disabled):
+file path=usr/lib/$(MACH64)/girepository-1.0/GstGLEGL-1.0.typelib
+file path=usr/lib/$(MACH64)/girepository-1.0/GstGLX11-1.0.typelib
+file path=usr/share/gir-1.0/GstGLEGL-1.0.gir
+file path=usr/share/gir-1.0/GstGLX11-1.0.gir
I also note that the existing package has dependency skips for libGL and
libEGL:
file path=usr/lib/$(MACH64)/libgstgl-1.0.so.0.1602.0 \
pkg.depend.bypass-generate=libGL\.so\.1 \
pkg.depend.bypass-generate=libEGL\.so\.1
This leads me to wonder whether the set of meson options I chose are
what we want. Would it be better if I dropped "egl" from gl_platform
and gl_winsys?
If I include stuff by mistake that we later decide we don't want, it's
going to be more difficult to get rid of it later than it is to get the
right stuff selected now.
Tim