From b70890533963c59f4f7a72891da4287cdb7a704a Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Tue, 7 Mar 2023 15:29:13 +0000 Subject: gstreamer: add recipes for upstream 1.20.3 versions oe-core has moved to gstreamer 1.22.0 and recipes which don't have an imx version can no longer be built. Add older version of those components to be used with the gstreamer 1.20.3.imx. Signed-off-by: Samuli Piippo --- ...ix-for-APNG-encoder-property-registration.patch | 86 ++++++++++++++++++++++ .../gstreamer/gstreamer1.0-libav_1.20.3.bb | 32 ++++++++ .../gstreamer/gstreamer1.0-plugins-ugly_1.20.3.bb | 48 ++++++++++++ .../gstreamer/gstreamer1.0-rtsp-server_1.20.3.bb | 33 +++++++++ 4 files changed, 199 insertions(+) create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-libav-Fix-for-APNG-encoder-property-registration.patch create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.3.bb create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.3.bb create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.3.bb (limited to 'recipes-multimedia/gstreamer') diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-libav-Fix-for-APNG-encoder-property-registration.patch b/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-libav-Fix-for-APNG-encoder-property-registration.patch new file mode 100644 index 00000000..526bbb00 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-libav-Fix-for-APNG-encoder-property-registration.patch @@ -0,0 +1,86 @@ +From 78a97c1ec35ada76d83fc67d0549ba56c74d8875 Mon Sep 17 00:00:00 2001 +From: Seungha Yang +Date: Thu, 7 Jul 2022 22:16:30 +0900 +Subject: [PATCH] libav: Fix for APNG encoder property registration + +The AVClass name of Animated PNG in FFmpeg 5.x is "(A)PNG" +and it will be converted to "-a-png" through +g_ascii_strdown() and g_strcanon(). But GLib disallow leading '-' +character for a GType name. Strip leading '-' to workaround it. + +Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2724] + +Seungha Yangs patch was imported without modifications. + +Signed-off-by: Claus Stovgaard +--- + ext/libav/gstavcfg.c | 29 +++++++++++++++++++++++------ + 1 file changed, 23 insertions(+), 6 deletions(-) + +diff --git a/ext/libav/gstavcfg.c b/ext/libav/gstavcfg.c +index c736920..a8635a7 100644 +--- a/ext/libav/gstavcfg.c ++++ b/ext/libav/gstavcfg.c +@@ -91,10 +91,19 @@ register_enum (const AVClass ** obj, const AVOption * top_opt) + gchar *lower_obj_name = g_ascii_strdown ((*obj)->class_name, -1); + gchar *enum_name = g_strdup_printf ("%s-%s", lower_obj_name, top_opt->unit); + gboolean none_default = TRUE; ++ const gchar *enum_name_strip; + + g_strcanon (enum_name, G_CSET_a_2_z G_CSET_DIGITS, '-'); + +- if ((res = g_type_from_name (enum_name))) ++ /* strip leading '-'s */ ++ enum_name_strip = enum_name; ++ while (enum_name_strip[0] == '-') ++ enum_name_strip++; ++ ++ if (enum_name_strip[0] == '\0') ++ goto done; ++ ++ if ((res = g_type_from_name (enum_name_strip))) + goto done; + + while ((opt = av_opt_next (obj, opt))) { +@@ -150,9 +159,8 @@ register_enum (const AVClass ** obj, const AVOption * top_opt) + } + } + +- res = +- g_enum_register_static (enum_name, &g_array_index (values, GEnumValue, +- 0)); ++ res = g_enum_register_static (enum_name_strip, ++ &g_array_index (values, GEnumValue, 0)); + + gst_type_mark_as_plugin_api (res, 0); + } +@@ -177,10 +185,19 @@ register_flags (const AVClass ** obj, const AVOption * top_opt) + GArray *values = g_array_new (TRUE, TRUE, sizeof (GEnumValue)); + gchar *lower_obj_name = g_ascii_strdown ((*obj)->class_name, -1); + gchar *flags_name = g_strdup_printf ("%s-%s", lower_obj_name, top_opt->unit); ++ const gchar *flags_name_strip; + + g_strcanon (flags_name, G_CSET_a_2_z G_CSET_DIGITS, '-'); + +- if ((res = g_type_from_name (flags_name))) ++ /* strip leading '-'s */ ++ flags_name_strip = flags_name; ++ while (flags_name_strip[0] == '-') ++ flags_name_strip++; ++ ++ if (flags_name_strip[0] == '\0') ++ goto done; ++ ++ if ((res = g_type_from_name (flags_name_strip))) + goto done; + + while ((opt = av_opt_next (obj, opt))) { +@@ -211,7 +228,7 @@ register_flags (const AVClass ** obj, const AVOption * top_opt) + g_array_sort (values, (GCompareFunc) cmp_flags_value); + + res = +- g_flags_register_static (flags_name, &g_array_index (values, ++ g_flags_register_static (flags_name_strip, &g_array_index (values, + GFlagsValue, 0)); + + gst_type_mark_as_plugin_api (res, 0); diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.3.bb b/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.3.bb new file mode 100644 index 00000000..e0ee5778 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.3.bb @@ -0,0 +1,32 @@ +SUMMARY = "Libav-based GStreamer 1.x plugin" +DESCRIPTION = "Contains a GStreamer plugin for using the encoders, decoders, \ +muxers, and demuxers provided by FFmpeg." +HOMEPAGE = "http://gstreamer.freedesktop.org/" +SECTION = "multimedia" + +# ffmpeg has comercial license flags so add it as we need ffmpeg as a dependency +LICENSE_FLAGS = "commercial" +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \ + file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \ + " + +SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \ + file://0001-libav-Fix-for-APNG-encoder-property-registration.patch \ + " +SRC_URI[sha256sum] = "3fedd10560fcdfaa1b6462cbf79a38c4e7b57d7f390359393fc0cef6dbf27dfe" + +S = "${WORKDIR}/gst-libav-${PV}" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg" + +inherit meson pkgconfig upstream-version-is-even + +EXTRA_OEMESON += " \ + -Dtests=disabled \ +" + +FILES:${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" + +COMPATIBLE_MACHINE = "(imx-nxp-bsp)" diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.3.bb b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.3.bb new file mode 100644 index 00000000..9511984e --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.3.bb @@ -0,0 +1,48 @@ +require recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc +require recipes-multimedia/gstreamer/gstreamer1.0-plugins-license.inc + +DESCRIPTION = "'Ugly GStreamer plugins" +HOMEPAGE = "https://gstreamer.freedesktop.org/" +BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues" + +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068" + +LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later" +LICENSE_FLAGS = "commercial" + +SRC_URI = " \ + https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ + " +SRC_URI[sha256sum] = "8caa20789a09c304b49cf563d33cca9421b1875b84fcc187e4a385fa01d6aefd" + +S = "${WORKDIR}/gst-plugins-ugly-${PV}" + +DEPENDS += "gstreamer1.0-plugins-base" + +GST_PLUGIN_SET_HAS_EXAMPLES = "0" + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + a52dec mpeg2dec \ +" + +PACKAGECONFIG[amrnb] = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr" +PACKAGECONFIG[amrwb] = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr" +PACKAGECONFIG[a52dec] = "-Da52dec=enabled,-Da52dec=disabled,liba52" +PACKAGECONFIG[cdio] = "-Dcdio=enabled,-Dcdio=disabled,libcdio" +PACKAGECONFIG[dvdread] = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread" +PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec" +PACKAGECONFIG[x264] = "-Dx264=enabled,-Dx264=disabled,x264" + +GSTREAMER_GPL = "${@bb.utils.filter('PACKAGECONFIG', 'a52dec cdio dvdread mpeg2dec x264', d)}" + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Dsidplay=disabled \ +" + +FILES:${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs" +FILES:${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs" + +COMPATIBLE_MACHINE = "(imx-nxp-bsp)" diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.3.bb b/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.3.bb new file mode 100644 index 00000000..992dbda8 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.3.bb @@ -0,0 +1,33 @@ +SUMMARY = "A library on top of GStreamer for building an RTSP server" +HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/" +SECTION = "multimedia" +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base" + +PNREAL = "gst-rtsp-server" + +SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" + +SRC_URI[sha256sum] = "ee402718be9b127f0e5e66ca4c1b4f42e4926ec93ba307b7ccca5dc6cc9794ca" + +S = "${WORKDIR}/${PNREAL}-${PV}" + +inherit meson pkgconfig upstream-version-is-even gobject-introspection + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Dexamples=disabled \ + -Dtests=disabled \ +" + +GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_DISABLE_FLAG = "disabled" + +# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well +require recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc + +CVE_PRODUCT += "gst-rtsp-server" + +COMPATIBLE_MACHINE = "(imx-nxp-bsp)" -- cgit v1.2.3-54-g00ecf