gst-full-elements: cannot get element of videoparsersbad
Describe your issue
I use -Ddefault_library=static
option with -Dgst-full-elements=videoparsersbad:h264parse
according to official List of Elements and Plugins (along with -Dgst-plugins-bad:videoparsersbad=enabled
, -Dbad=enabled
). So, I need h264parse
element from videoparsersbad
plugin into libgstreamer-full-1.0.a
library.
Expected Behavior
h264parse
element gets available for application according to meson build options described in README.
Observed Behavior
No such element gets compiled and application cannot find the h264parse
element. As a proof:
$ nm libgstreamer-full-1.0.a | grep h264
U gst_element_register_h264parse
If searching among all static libraries produced by the build:
$ find lib -type f -name "*.a" | xargs nm | grep h264
0000000000001f20 T gst_codec_utils_h264_caps_set_level_and_profile
0000000000001a60 T gst_codec_utils_h264_get_level
0000000000001be0 T gst_codec_utils_h264_get_level_idc
0000000000001890 T gst_codec_utils_h264_get_profile
0000000000002150 T gst_codec_utils_h264_get_profile_flags_level
U gst_element_register_h264parse
So, we observe an undefined symbol is created which is not resolved anyhow. And no other h264
related functions present in the build output of gstreamer.
Setup
- Operating System: NixOS 21.11
- Device: Computer, x86_64
- GStreamer Version: 1.19.3
- Meson version: 0.59.1 (this being part of the problem eventually)
Steps to reproduce the bug
-
$ sh <(curl -L https://nixos.org/nix/install) --daemon
# install nix -
$ tar xf
issue965.tar.gz # unpack archive with issue related files describing the build $ cd issue965
-
$ nix-build fail.nix
# build gstreamer (implicitly gets required dependencies) -
$ find result/ -type f -name "*.a" | xargs nm -A | grep -E "T .*h264parse"
# check
nix-build
automatically gets all dependencies (including compiler, libraries, etc) and performs the build. After a successful build a symlink ./result
will be created pointing to the build output directory. You can retrieve a full log of a successful gstreamer build with nix log result/
. If you want to run commands manually, use nix-shell
instead of nix-build
, which will bring you into a sandbox with build dependencies supplied where you can run genericBuild
, meson
, make
commands.
The last step is a check for expected gst_element_register_h264parse
symbol presence in any of static libraries produced by the build.
How reproducible is the bug?
The reproducibility of the bug is Always.
Additional Information
Meson flags:
--buildtype=release
--libdir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/lib
--libexecdir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/libexec
--bindir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/bin
--sbindir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/sbin
--includedir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/include
--mandir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/share/man
--infodir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/share/info
--localedir=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3/share/locale
-Dauto_features=disabled
-Dwrap_mode=nodownload
--prefix=/nix/store/xix4vgbkpx3qrqzk78dga16pb19kin0l-gstreamer-1.19.3
-Dbad=enabled
-Dgst-plugins-bad:videoparsersbad=enabled
-Dgst-full-elements=videoparsersbad:h264parse
-Ddefault_library=static