Luma -> Alpha with v1.18
amindfv at mailbox.org
amindfv at mailbox.org
Wed Jan 12 20:11:21 UTC 2022
On Wed, Jan 12, 2022 at 08:48:17AM -0500, Nicolas Dufresne wrote:
> Le mardi 11 janvier 2022 à 20:21 -0800, amindfv at mailbox.org a écrit :
> > On Tue, Jan 11, 2022 at 01:51:47PM -0500, Nicolas Dufresne via gstreamer-devel wrote:
> > > Indeed, all the GST_ELEMENT_REGISTER* macros are unreleased. Remove all calls to
> > > GST_ELEMENT_REGISTER*, and use
> > >
> > > gst_element_register (plugin, "alphacombine", GST_RANK_NONE, GST_TYPE_ALPHA_COMBINE);
> > >
> > > Inside the plugin_init function.
> >
> > Thanks, the plugins are buiding cleanly now (finally!). I'm still running into an issue with registration, though:
> >
> > $ rm *.so && make
> > [... builds cleanly! ...]
> > $ GST_PLUGIN_PATH=$GST_PLUGIN_PATH:. gst-launch-1.0 videotestsrc ! alphacombine ! autovideosink
> > (gst-plugin-scanner:226263): GStreamer-WARNING **: 20:15:13.099: Failed to load plugin './libgstplugin.so': ./libgstplugin.so: undefined symbol: gst_alpha_combine_get_type
>
> This is not entirely clear to me, but one things pops, the name of the plugin.
> It should be named libgstcodecalpha.so, or libcodecalpha.so, this names is
> extracted by the plugin loaded to assemble the name
>
> gst_plugin_<plugin-name>_get_desc()
Huh. I tried this but got no further.
I wasn't clear on if you meant libgstalphacombine.so or libgstplugin.so was the one that should be named libgstcodecalpha.so, so I tried both (though I suspect it's libgstplugin.so).
Here were my steps:
$ vim Makefile
$ head -1 Makefile
all: libgstcodecalpha.so libgstalphacombine.so
$ mv -i gstplugin.c gstcodecalpha.c
$ rm *.so && make
# (cleanly builds - log below if it's helpful)
$ echo $?
0
$ GST_PLUGIN_PATH=$GST_PLUGIN_PATH:. gst-launch-1.0 videotestsrc ! alphacombine ! autovideosink
(gst-plugin-scanner:249209): GStreamer-WARNING **: 12:03:43.925: Failed to load plugin './libgstcodecalpha.so': ./libgstcodecalpha.so: undefined symbol: gst_alpha_combine_get_type
WARNING: erroneous pipeline: no element "alphacombine"
I tried this for every combination:
gstplugin -> codecalpha
gstplugin -> gstcodecalpha
gstalphacombine -> codecalpha
gstalphacombine -> gstcodecalpha
But no luck.
Thanks,
Tom
`make` log:
gcc -I. -pthread -I/usr/include/gstreamer-1.0 -I/usr/include/orc-0.4 -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wall -g -O2 -Wall -c gstcodecalpha.c -fPIC -DPIC -o gstcodecalpha.o
gcc -shared -fPIC -DPIC gstcodecalpha.o -lgstcontroller-1.0 -lgstaudio-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -pthread -g -O2 -pthread -Wl,-soname -Wl,libgstcodecalpha.so -o libgstcodecalpha.so
gcc -I. -pthread -I/usr/include/gstreamer-1.0 -I/usr/include/orc-0.4 -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wall -g -O2 -Wall -c gstalphacombine.c -fPIC -DPIC -o gstalphacombine.o
gcc -shared -fPIC -DPIC gstalphacombine.o -lgstcontroller-1.0 -lgstaudio-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -pthread -g -O2 -pthread -Wl,-soname -Wl,libgstalphacombine.so -o libgstalphacombine.so
rm gstalphacombine.o gstcodecalpha.o
>
> > WARNING: erroneous pipeline: no element "alphacombine"
> > $ nm -D --defined-only libgstplugin.so
> > 0000000000001150 T gst_plugin_codecalpha_get_desc
> > 0000000000001160 T gst_plugin_codecalpha_register
> > $ nm -D --defined-only libgstalphacombine.so
> > 0000000000006220 D format_map
> > 0000000000002830 T gst_alpha_combine_get_type
> >
> > Tom
> >
> > Here's the Makefile:
> >
> > all: libgstplugin.so libgstalphacombine.so
> > %.o: %.c
> > gcc -I. -pthread -I/usr/include/gstreamer-1.0 -I/usr/include/orc-0.4 -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wall -g -O2 -Wall -c $^ -fPIC -DPIC -o $@
> > lib%.so: %.o
> > gcc -shared -fPIC -DPIC $^ -lgstcontroller-1.0 -lgstaudio-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -pthread -g -O2 -pthread -Wl,-soname -Wl,$@ -o $@
> >
> >
> > And here's the current diff against current git HEAD:
> >
> > diff --git a/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.c b/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.c
> > index aeefeb94f8..089b31ad93 100644
> > --- a/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.c
> > +++ b/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.c
> > @@ -46,10 +46,9 @@
> >
> > #include "gstalphacombine.h"
> >
> > -
> > -#define SUPPORTED_SINK_FORMATS "{ I420, NV12 }"
> > -#define SUPPORTED_ALPHA_FORMATS "{ GRAY8, I420, NV12 }"
> > -#define SUPPORTED_SRC_FORMATS "{ A420, AV12 }"
> > +#define SUPPORTED_SINK_FORMATS "{ I420 }"
> > +#define SUPPORTED_ALPHA_FORMATS "{ GRAY8, I420 }"
> > +#define SUPPORTED_SRC_FORMATS "{ A420 }"
> >
> > /* *INDENT-OFF* */
> > struct {
> > @@ -69,18 +68,6 @@ struct {
> > .sink = GST_VIDEO_FORMAT_I420,
> > .alpha = GST_VIDEO_FORMAT_NV12,
> > .src = GST_VIDEO_FORMAT_A420
> > - }, {
> > - .sink = GST_VIDEO_FORMAT_NV12,
> > - .alpha = GST_VIDEO_FORMAT_NV12,
> > - .src = GST_VIDEO_FORMAT_AV12,
> > - }, {
> > - .sink = GST_VIDEO_FORMAT_NV12,
> > - .alpha = GST_VIDEO_FORMAT_GRAY8,
> > - .src = GST_VIDEO_FORMAT_AV12
> > - },{
> > - .sink = GST_VIDEO_FORMAT_NV12,
> > - .alpha = GST_VIDEO_FORMAT_I420,
> > - .src = GST_VIDEO_FORMAT_AV12
> > },
> > };
> > /* *INDENT-ON* */
> > @@ -117,8 +104,7 @@ G_DEFINE_TYPE_WITH_CODE (GstAlphaCombine, gst_alpha_combine,
> > GST_DEBUG_CATEGORY_INIT (alphacombine_debug, "alphacombine", 0,
> > "Alpha Combiner"));
> >
> > -GST_ELEMENT_REGISTER_DEFINE (alpha_combine, "alphacombine",
> > - GST_RANK_NONE, GST_TYPE_ALPHA_COMBINE);
> > +// GST_ELEMENT_REGISTER_DEFINE (alpha_combine);
> >
> > static GstStaticPadTemplate gst_alpha_combine_sink_template =
> > GST_STATIC_PAD_TEMPLATE ("sink",
> > diff --git a/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.h b/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.h
> > index 423717861f..e101c41184 100644
> > --- a/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.h
> > +++ b/subprojects/gst-plugins-bad/gst/codecalpha/gstalphacombine.h
> > @@ -29,7 +29,7 @@ G_BEGIN_DECLS
> > G_DECLARE_FINAL_TYPE (GstAlphaCombine,
> > gst_alpha_combine, GST, ALPHA_COMBINE, GstElement);
> >
> > -GST_ELEMENT_REGISTER_DECLARE (alpha_combine);
> > +// GST_ELEMENT_REGISTER_DECLARE (alpha_combine);
> >
> > G_END_DECLS
> > #endif
> > diff --git a/subprojects/gst-plugins-bad/gst/codecalpha/gstplugin.c b/subprojects/gst-plugins-bad/gst/codecalpha/gstplugin.c
> > index ff061c58f9..deece876cc 100644
> > --- a/subprojects/gst-plugins-bad/gst/codecalpha/gstplugin.c
> > +++ b/subprojects/gst-plugins-bad/gst/codecalpha/gstplugin.c
> > @@ -43,10 +43,7 @@
> >
> > #include <gst/gst.h>
> >
> > -#include "gstcodecalphademux.h"
> > #include "gstalphacombine.h"
> > -#include "gstvp8alphadecodebin.h"
> > -#include "gstvp9alphadecodebin.h"
> >
> > /* When wrapping, use the original rank plus this offset. The ad-hoc rules is
> > * that hardware implementation will use PRIMARY+1 or +2 to override the
> > @@ -59,18 +56,19 @@
> > static gboolean
> > plugin_init (GstPlugin * plugin)
> > {
> > - gboolean ret = FALSE;
> > + return gst_element_register (plugin, "alphacombine", GST_RANK_NONE, GST_TYPE_ALPHA_COMBINE);
> > +}
> >
> > - ret |= GST_ELEMENT_REGISTER (codec_alpha_demux, plugin);
> > - ret |= GST_ELEMENT_REGISTER (alpha_combine, plugin);
> > - ret |= GST_ELEMENT_REGISTER (vp8_alpha_decode_bin, plugin);
> > - ret |= GST_ELEMENT_REGISTER (vp9_alpha_decode_bin, plugin);
> > +#ifndef PACKAGE
> > +#define PACKAGE "codecalpha"
> > +#endif
> >
> > - return ret;
> > -}
> > +#ifndef GST_PACKAGE_NAME
> > +#define GST_PACKAGE_NAME "codecalpha"
> > +#endif
> >
> > GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
> > GST_VERSION_MINOR,
> > codecalpha,
> > "CODEC Alpha Utilities",
> > - plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
> > + plugin_init, "1.0.0", "LGPL", GST_PACKAGE_NAME, "http://gstreamer.net/")
> > \ No newline at end of file
> >
>
More information about the gstreamer-devel
mailing list