Luma -> Alpha with v1.18

amindfv at mailbox.org amindfv at mailbox.org
Mon Jan 10 09:36:48 UTC 2022


On Mon, Jan 10, 2022 at 09:48:26AM +0100, Florian Echtler wrote:
> On 10/01/2022 09:21, amindfv at mailbox.org wrote:
> > On Sun, Jan 09, 2022 at 12:33:24PM -0800, amindfv at mailbox.org wrote:
> > 
> > Here's my latest, boiled down to a simple example. I hope my inexperienced attempts aren't too horrifying, or if so they're easy enough to get on the right track.
> > 
> > I've built the .so file, which is in the current directory. I then launch a hello world pipeline (unrelated to the new plugin), and hit an error loading the .so:
> > 
> >      $ GST_PLUGIN_PATH=$GST_PLUGIN_PATH:. gst-launch-1.0 videotestsrc ! autovideosink
> >      (gst-plugin-scanner:149635): GStreamer-WARNING **: 00:02:44.715: Failed to load plugin './libgstalphacombine.so': ./libgstalphacombine.so: undefined symbol: gst_video_info_init
> >      Setting pipeline to PAUSED ...
> >      Pipeline is PREROLLING ...
> >      Pipeline is PREROLLED ...
> >      Setting pipeline to PLAYING ...
> > 
> > gstalphacombine.c contains "#include <gst/video/video.h>", which in turn includes gst/video/video-info.h. In other words, gst_video_info_init "shouldn't" be undefined.
> 
> It's defined for compile time, but apparently not for link time (which is
> partially deferred until the library is actually loaded in this case).

Thanks for the fast reply!

> You can check with `ldd ./libgstalphacombine.so` whether there's just a
> library path missing at load time;

Here's the output; seems to my untrained eye not to be missing anything:

    $ ldd ./libgstalphacombine.so
    linux-vdso.so.1 (0x00007ffdbeded000)
    libgstreamer-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0 (0x00007f75529fa000)
    libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f75529a0000)
    libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f7552871000)
    libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f755286b000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7552727000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7552721000)
    libunwind.so.8 => /usr/lib/x86_64-linux-gnu/libunwind.so.8 (0x00007f7552704000)
    libdw.so.1 => /usr/lib/x86_64-linux-gnu/libdw.so.1 (0x00007f755265b000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7552639000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7552474000)
    libffi.so.7 => /usr/lib/x86_64-linux-gnu/libffi.so.7 (0x00007f7552468000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f75523f5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f7552b8b000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f75523cb000)
    libelf.so.1 => /usr/lib/x86_64-linux-gnu/libelf.so.1 (0x00007f75523b0000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7552393000)
    libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f7552380000)

> if this is not the case, then you would
> need to modify your compiler flags to include whatever GStreamer sub-library
> contains gst_video_info_init.

The Makefile includes

    -I/usr/include/gstreamer-1.0

and /usr/include/gstreamer-1.0/gst/video/video-info.h appears to define `gst_video_info_init`.

Thanks,
Tom


More information about the gstreamer-devel mailing list