diff options
Diffstat (limited to 'recipes-multimedia/gstreamer')
6 files changed, 234 insertions, 0 deletions
diff --git a/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch b/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch new file mode 100644 index 00000000..c0e45813 --- /dev/null +++ b/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From 73b1002eda17451db1f58431b42c25203f1d3097 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sun, 9 Sep 2018 17:38:10 -0700 | ||
4 | Subject: [PATCH] connect has a different signature on musl | ||
5 | |||
6 | On linux when not using glibc and using musl for C library, connect | ||
7 | API has a different signature, this patch fixes this so it can compile | ||
8 | on musl, the functionality should remain same as it is immediately | ||
9 | typcasted to struct sockaddr_in* type inside the function before use | ||
10 | |||
11 | Upstream-Status: Pending | ||
12 | |||
13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
14 | --- | ||
15 | validate/plugins/fault_injection/socket_interposer.c | 7 ++++++- | ||
16 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
17 | |||
18 | diff --git a/validate/plugins/fault_injection/socket_interposer.c b/validate/plugins/fault_injection/socket_interposer.c | ||
19 | index 53c1ebb..ad7adf8 100644 | ||
20 | --- a/validate/plugins/fault_injection/socket_interposer.c | ||
21 | +++ b/validate/plugins/fault_injection/socket_interposer.c | ||
22 | @@ -100,10 +100,15 @@ socket_interposer_set_callback (struct sockaddr_in *addrin, | ||
23 | } | ||
24 | |||
25 | int | ||
26 | -connect (int socket, const struct sockaddr_in *addrin, socklen_t address_len) | ||
27 | +#if defined(__linux__) && !defined(__GLIBC__) | ||
28 | +connect (int socket, const struct sockaddr *addr, socklen_t address_len) | ||
29 | +#else | ||
30 | +connect (int socket, const struct sockaddr_in *addr, socklen_t address_len) | ||
31 | +#endif | ||
32 | { | ||
33 | size_t i; | ||
34 | int override_errno = 0; | ||
35 | + struct sockaddr_in* addrin = (struct sockaddr_in*)addr; | ||
36 | typedef ssize_t (*real_connect_fn) (int, const struct sockaddr_in *, | ||
37 | socklen_t); | ||
38 | static real_connect_fn real_connect = 0; | ||
diff --git a/recipes-multimedia/gstreamer/gst-devtools_1.20.3.imx.bb b/recipes-multimedia/gstreamer/gst-devtools_1.20.3.imx.bb new file mode 100644 index 00000000..5daba9d7 --- /dev/null +++ b/recipes-multimedia/gstreamer/gst-devtools_1.20.3.imx.bb | |||
@@ -0,0 +1,56 @@ | |||
1 | SUMMARY = "Gstreamer validation tool" | ||
2 | DESCRIPTION = "A Tool to test GStreamer components" | ||
3 | HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html" | ||
4 | SECTION = "multimedia" | ||
5 | |||
6 | LICENSE = "LGPL-2.1-or-later" | ||
7 | LIC_FILES_CHKSUM = "file://validate/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343" | ||
8 | |||
9 | S = "${WORKDIR}/gst-devtools-${@get_gst_ver('${PV}')}" | ||
10 | |||
11 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${@get_gst_ver('${PV}')}.tar.xz \ | ||
12 | file://0001-connect-has-a-different-signature-on-musl.patch \ | ||
13 | " | ||
14 | |||
15 | SRC_URI[sha256sum] = "bbbd45ead703367ea8f4be9b3c082d7b62bef47b240a39083f27844e28758c47" | ||
16 | |||
17 | DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base" | ||
18 | RRECOMMENDS:${PN} = "git" | ||
19 | |||
20 | FILES:${PN} += "${datadir}/gstreamer-1.0/* ${libdir}/gst-validate-launcher/* ${libdir}/gstreamer-1.0/*" | ||
21 | |||
22 | inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection | ||
23 | |||
24 | # Drop .imx from PV | ||
25 | def get_gst_ver(v): | ||
26 | return oe.utils.trim_version(v, 3) | ||
27 | |||
28 | # TODO: put this in a gettext.bbclass patch | ||
29 | def gettext_oemeson(d): | ||
30 | if d.getVar('USE_NLS') == 'no': | ||
31 | return '-Dnls=disabled' | ||
32 | # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set | ||
33 | if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'): | ||
34 | return '-Dnls=disabled' | ||
35 | return '-Dnls=enabled' | ||
36 | |||
37 | # Build GstValidateVideo | ||
38 | PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo" | ||
39 | |||
40 | EXTRA_OEMESON += " \ | ||
41 | -Ddoc=disabled \ | ||
42 | -Ddebug_viewer=disabled \ | ||
43 | -Dtests=disabled \ | ||
44 | -Dvalidate=enabled \ | ||
45 | ${@gettext_oemeson(d)} \ | ||
46 | " | ||
47 | |||
48 | do_install:append () { | ||
49 | for fn in ${bindir}/gst-validate-launcher \ | ||
50 | ${libdir}/gst-validate-launcher/python/launcher/config.py; do | ||
51 | sed -i -e 's,${B},/usr/src/debug/${PN},g' -e 's,${S},/usr/src/debug/${PN},g' ${D}$fn | ||
52 | done | ||
53 | } | ||
54 | |||
55 | GIR_MESON_ENABLE_FLAG = "enabled" | ||
56 | GIR_MESON_DISABLE_FLAG = "disabled" | ||
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.3.imx.bb b/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.3.imx.bb new file mode 100644 index 00000000..dc1c8ba0 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.3.imx.bb | |||
@@ -0,0 +1,52 @@ | |||
1 | SUMMARY = "OpenMAX IL plugins for GStreamer" | ||
2 | DESCRIPTION = "Wraps available OpenMAX IL components and makes them available as standard GStreamer elements." | ||
3 | HOMEPAGE = "http://gstreamer.freedesktop.org/" | ||
4 | SECTION = "multimedia" | ||
5 | |||
6 | LICENSE = "LGPL-2.1-or-later" | ||
7 | LICENSE_FLAGS = "commercial" | ||
8 | LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ | ||
9 | file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f" | ||
10 | |||
11 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${@get_gst_ver('${PV}')}.tar.xz" | ||
12 | |||
13 | SRC_URI[sha256sum] = "8db48040bb41f09edf8d17ff6d16c54888d7777ba4501c2c69f0083350ea9a15" | ||
14 | |||
15 | S = "${WORKDIR}/gst-omx-${@get_gst_ver('${PV}')}" | ||
16 | |||
17 | DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/libomxil" | ||
18 | |||
19 | inherit meson pkgconfig upstream-version-is-even | ||
20 | |||
21 | GSTREAMER_1_0_OMX_TARGET ?= "bellagio" | ||
22 | GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0" | ||
23 | |||
24 | EXTRA_OEMESON += "-Dtarget=${GSTREAMER_1_0_OMX_TARGET}" | ||
25 | |||
26 | python __anonymous () { | ||
27 | omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET") | ||
28 | if omx_target in ['generic', 'bellagio']: | ||
29 | # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,# | ||
30 | # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros); | ||
31 | # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this | ||
32 | d.appendVar("CFLAGS", " -I${S}/omx/openmax") | ||
33 | elif omx_target == "rpi": | ||
34 | # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific | ||
35 | d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH")) | ||
36 | } | ||
37 | |||
38 | set_omx_core_name() { | ||
39 | sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf" | ||
40 | } | ||
41 | |||
42 | # Drop .imx from PV | ||
43 | def get_gst_ver(v): | ||
44 | return oe.utils.trim_version(v, 3) | ||
45 | |||
46 | do_install[postfuncs] += " set_omx_core_name " | ||
47 | |||
48 | FILES:${PN} += "${libdir}/gstreamer-1.0/*.so" | ||
49 | FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" | ||
50 | |||
51 | VIRTUAL-RUNTIME_libomxil ?= "libomxil" | ||
52 | RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_libomxil}" | ||
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-Add-prototype-declaration-for-gst_v4l2_object_stream.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-Add-prototype-declaration-for-gst_v4l2_object_stream.patch new file mode 100644 index 00000000..0a6637de --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-Add-prototype-declaration-for-gst_v4l2_object_stream.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From 50c821e3578e3e0892574d88ef7edb25d60ae50a Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sun, 12 Mar 2023 19:39:46 -0700 | ||
4 | Subject: [PATCH] Add prototype declaration for gst_v4l2_object_streamoff | ||
5 | |||
6 | Fixes build with latest compilers e.g. clang-16 | ||
7 | |||
8 | ../git/sys/v4l2/gstv4l2videodec.c:354:10: error: call to undeclared function 'gst_v4l2_object_streamoff'; ISO C99 and later do not support implicit function declarations [ -Wimplicit-function-declaration] | ||
9 | if (!gst_v4l2_object_streamoff (self->v4l2capture)) | ||
10 | ^ | ||
11 | |||
12 | Upstream-Status: Submitted [https://github.com/nxp-imx/gst-plugins-good/pull/1] | ||
13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
14 | --- | ||
15 | sys/v4l2/gstv4l2object.h | 1 + | ||
16 | 1 file changed, 1 insertion(+) | ||
17 | |||
18 | diff --git a/sys/v4l2/gstv4l2object.h b/sys/v4l2/gstv4l2object.h | ||
19 | index 685086902..c84dc1724 100644 | ||
20 | --- a/sys/v4l2/gstv4l2object.h | ||
21 | +++ b/sys/v4l2/gstv4l2object.h | ||
22 | @@ -323,6 +323,7 @@ GstStructure * gst_v4l2_object_v4l2fourcc_to_structure (guint32 fourcc); | ||
23 | |||
24 | /* crop / compose */ | ||
25 | gboolean gst_v4l2_object_set_crop (GstV4l2Object * obj, struct v4l2_rect *result); | ||
26 | +gboolean gst_v4l2_object_streamoff (GstV4l2Object * v4l2object); | ||
27 | |||
28 | /* TODO Move to proper namespace */ | ||
29 | /* open/close the device */ | ||
30 | -- | ||
31 | 2.39.2 | ||
32 | |||
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.3.imx.bb b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.3.imx.bb index 8cbbd2d1..ccbf0196 100644 --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.3.imx.bb +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.3.imx.bb | |||
@@ -13,6 +13,7 @@ BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues | |||
13 | 13 | ||
14 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ | 14 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ |
15 | file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \ | 15 | file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \ |
16 | file://0001-Add-prototype-declaration-for-gst_v4l2_object_stream.patch \ | ||
16 | " | 17 | " |
17 | 18 | ||
18 | SRC_URI[sha256sum] = "f8f3c206bf5cdabc00953920b47b3575af0ef15e9f871c0b6966f6d0aa5868b7" | 19 | SRC_URI[sha256sum] = "f8f3c206bf5cdabc00953920b47b3575af0ef15e9f871c0b6966f6d0aa5868b7" |
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.3.imx.bb b/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.3.imx.bb new file mode 100644 index 00000000..503f828f --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.3.imx.bb | |||
@@ -0,0 +1,55 @@ | |||
1 | SUMMARY = "VA-API support to GStreamer" | ||
2 | HOMEPAGE = "https://gstreamer.freedesktop.org/" | ||
3 | DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \ | ||
4 | based plugins for GStreamer and helper libraries: `vaapidecode', \ | ||
5 | `vaapiconvert', and `vaapisink'." | ||
6 | |||
7 | REALPN = "gstreamer-vaapi" | ||
8 | |||
9 | LICENSE = "LGPL-2.1-or-later" | ||
10 | LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c" | ||
11 | |||
12 | SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${@get_gst_ver('${PV}')}.tar.xz" | ||
13 | |||
14 | SRC_URI[sha256sum] = "6ee99eb316abdde9ad37002915bd8c3867918f6fdc74b7cf2ac4c1ae0d690b45" | ||
15 | |||
16 | S = "${WORKDIR}/${REALPN}-${@get_gst_ver('${PV}')}" | ||
17 | DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" | ||
18 | |||
19 | inherit meson pkgconfig features_check upstream-version-is-even | ||
20 | |||
21 | REQUIRED_DISTRO_FEATURES ?= "opengl" | ||
22 | |||
23 | EXTRA_OEMESON += " \ | ||
24 | -Ddoc=disabled \ | ||
25 | -Dexamples=disabled \ | ||
26 | -Dtests=enabled \ | ||
27 | " | ||
28 | |||
29 | # Drop .imx from PV | ||
30 | def get_gst_ver(v): | ||
31 | return oe.utils.trim_version(v, 3) | ||
32 | |||
33 | PACKAGES =+ "${PN}-tests" | ||
34 | |||
35 | # OpenGL packageconfig factored out to make it easy for distros | ||
36 | # and BSP layers to pick either glx, egl, or no GL. By default, | ||
37 | # try detecting X11 first, and if found (with OpenGL), use GLX, | ||
38 | # otherwise try to check if EGL can be used. | ||
39 | PACKAGECONFIG_GL ?= "egl" | ||
40 | |||
41 | PACKAGECONFIG ??= "drm encoders \ | ||
42 | ${PACKAGECONFIG_GL} \ | ||
43 | ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" | ||
44 | |||
45 | PACKAGECONFIG[drm] = "-Dwith_drm=yes,-Dwith_drm=no,udev libdrm" | ||
46 | PACKAGECONFIG[egl] = "-Dwith_egl=yes,-Dwith_egl=no,virtual/egl" | ||
47 | PACKAGECONFIG[encoders] = "-Dwith_encoders=yes,-Dwith_encoders=no" | ||
48 | PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/libgl" | ||
49 | PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland wayland-protocols" | ||
50 | PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxrandr libxrender" | ||
51 | |||
52 | FILES:${PN} += "${libdir}/gstreamer-*/*.so" | ||
53 | FILES:${PN}-dbg += "${libdir}/gstreamer-*/.debug" | ||
54 | FILES:${PN}-dev += "${libdir}/gstreamer-*/*.a" | ||
55 | FILES:${PN}-tests = "${bindir}/*" | ||