summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2021-01-28 19:04:07 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2021-01-30 19:38:06 +0100
commitd9196bf045bb2a667536fe270d494690bd69d1c8 (patch)
tree99cf93896bd86919b79cfad35647fa9b6f10c350
parent094df0c63fe125b3b534df66875ca70125039e9f (diff)
gstreamer1.0-plugins-base: backport
meta-freescale master already has latest with 5.4.47-2.2.0. no change to 5.4.70-2.3.0 Related-to: ELB-3327 Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gst-libs-gst-gl-wayland-fix-meson-build.patch36
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-plugins-base-fix-meson-build-in-nxp-fork.patch220
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-build-gir-even-when-cross-compiling-if-introsp.patch34
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-viv-fb-code-must-link-against-libg2d.patch44
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-meson-Add-variables-for-gir-files.patch233
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch30
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch30
-rw-r--r--backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb102
8 files changed, 729 insertions, 0 deletions
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gst-libs-gst-gl-wayland-fix-meson-build.patch b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gst-libs-gst-gl-wayland-fix-meson-build.patch
new file mode 100644
index 0000000..61baf2f
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gst-libs-gst-gl-wayland-fix-meson-build.patch
@@ -0,0 +1,36 @@
+From a145a129a8122f21c1e243b3dc2e5708f4c13bef Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
+Date: Thu, 23 Jan 2020 12:54:10 +0000
+Subject: [PATCH] gst-libs gst gl wayland: fix meson build
+
+Since introduction of meson build system, modifications introduced in
+NXP fork are breaking the build, where xdg-shell-client-protocol.h
+is searched via relative path. This code is only present in NXP fork and
+should be removed.
+
+This reverts commit [48bde732b00fb42df636ebbaf3b06e5e7971c206]
+("wayland: fix build break in yocto") from upstream.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
+---
+ gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h b/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h
+index d1795591f..89dedd9b5 100644
+--- a/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h
++++ b/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h
+@@ -22,7 +22,7 @@
+ #define __GST_GL_WINDOW_WAYLAND_EGL_H__
+
+ #include <wayland-client.h>
+-#include <gst/gl/wayland/xdg-shell-client-protocol.h>
++#include "xdg-shell-client-protocol.h"
+ #include <wayland-egl.h>
+ #include <wayland-cursor.h>
+
+--
+2.17.1
+
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-plugins-base-fix-meson-build-in-nxp-fork.patch b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-plugins-base-fix-meson-build-in-nxp-fork.patch
new file mode 100644
index 0000000..da15253
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-plugins-base-fix-meson-build-in-nxp-fork.patch
@@ -0,0 +1,220 @@
+From def285f623bc30b9d1acede00393188e693cc741 Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
+Date: Sat, 22 Feb 2020 13:22:57 +0000
+Subject: [PATCH] gstreamer-plugins-base: fix meson build in nxp fork
+
+- Add missing IMX header file into istall target;
+- Allocator's meta data files are missing in meson.build, bring them back;
+- Add ION NXP-specific allocator to meson.build;
+- Introduce additional configuration option to pass extra include paths,
+ which are required to build ION allocator;
+- Some video sources are missing, bring them also into the build;
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
+---
+ gst-libs/gst/allocators/meson.build | 30 +++++++++++++++++++++++++++--
+ gst-libs/gst/gl/gstglconfig.h.meson | 2 ++
+ gst-libs/gst/gl/meson.build | 20 +++++++++++++++++++
+ gst-libs/gst/meson.build | 6 ++++++
+ gst-libs/gst/video/meson.build | 11 +++++++++++
+ meson.build | 3 +++
+ meson_options.txt | 4 ++++
+ 7 files changed, 74 insertions(+), 2 deletions(-)
+
+diff --git a/gst-libs/gst/allocators/meson.build b/gst-libs/gst/allocators/meson.build
+index 364baeebf..30b1495c9 100644
+--- a/gst-libs/gst/allocators/meson.build
++++ b/gst-libs/gst/allocators/meson.build
+@@ -5,18 +5,44 @@ gst_allocators_headers = [
+ 'gstphysmemory.h',
+ 'gstdmabuf.h',
+ ]
++
++imx_gst_allocators_headers = [
++ 'gstphymemmeta.h',
++ 'gstdmabufmeta.h',
++ 'gstallocatorphymem.h',
++]
++
++if cc.has_header('linux/ion.h', include_directories : imx_includes)
++ imx_gst_allocators_headers += [
++ 'gstionmemory.h',
++ ]
++endif
++
++gst_allocators_headers += imx_gst_allocators_headers
++
+ install_headers(gst_allocators_headers, subdir : 'gstreamer-1.0/gst/allocators/')
+
+ gst_allocators_sources = [ 'gstdmabuf.c', 'gstfdmemory.c', 'gstphysmemory.c']
++
++imx_gst_allocators_sources = ['gstdmabufmeta.c', 'gstphymemmeta.c', 'gstallocatorphymem.c']
++
++if cc.has_header('linux/ion.h', include_directories : imx_includes)
++ imx_gst_allocators_sources += [
++ 'gstionmemory.c',
++ ]
++endif
++
++gst_allocators_sources += imx_gst_allocators_sources
++
+ gstallocators = library('gstallocators-@0@'.format(api_version),
+ gst_allocators_sources,
+ c_args : gst_plugins_base_args + ['-DBUILDING_GST_ALLOCATORS'],
+- include_directories: [configinc, libsinc],
++ include_directories: [configinc, libsinc, imx_includes],
+ version : libversion,
+ soversion : soversion,
+ darwin_versions : osxversion,
+ install : true,
+- dependencies : [gst_dep],
++ dependencies : [video_dep, gst_dep],
+ )
+
+ allocators_gen_sources = []
+diff --git a/gst-libs/gst/gl/gstglconfig.h.meson b/gst-libs/gst/gl/gstglconfig.h.meson
+index 11795c16c..66cd54a7e 100644
+--- a/gst-libs/gst/gl/gstglconfig.h.meson
++++ b/gst-libs/gst/gl/gstglconfig.h.meson
+@@ -32,8 +32,10 @@ G_BEGIN_DECLS
+ #mesondefine GST_GL_HAVE_PLATFORM_CGL
+ #mesondefine GST_GL_HAVE_PLATFORM_EAGL
+
++#mesondefine GST_GL_HAVE_IONDMA
+ #mesondefine GST_GL_HAVE_DMABUF
+ #mesondefine GST_GL_HAVE_VIV_DIRECTVIV
++#mesondefine GST_GL_HAVE_PHYMEM
+
+ #mesondefine GST_GL_HAVE_GLEGLIMAGEOES
+ #mesondefine GST_GL_HAVE_GLCHAR
+diff --git a/gst-libs/gst/gl/meson.build b/gst-libs/gst/gl/meson.build
+index 0e0ba1b7d..6f6c6866d 100644
+--- a/gst-libs/gst/gl/meson.build
++++ b/gst-libs/gst/gl/meson.build
+@@ -123,8 +123,10 @@ glconf_options = [
+ 'GST_GL_HAVE_PLATFORM_CGL',
+ 'GST_GL_HAVE_PLATFORM_EAGL',
+
++ 'GST_GL_HAVE_IONDMA',
+ 'GST_GL_HAVE_DMABUF',
+ 'GST_GL_HAVE_VIV_DIRECTVIV',
++ 'GST_GL_HAVE_PHYMEM',
+
+ 'GST_GL_HAVE_GLEGLIMAGEOES',
+ 'GST_GL_HAVE_GLCHAR',
+@@ -146,6 +148,18 @@ if unneeded_dep.found()
+ error ('Found unfindable dependency')
+ endif
+
++if cc.has_header('linux/ion.h', include_directories : imx_includes)
++ glconf.set10('GST_GL_HAVE_IONDMA', 1)
++ gl_sources += [
++ 'gstglmemorydma.c',
++ ]
++ gl_headers += [
++ 'gstglmemorydma.h',
++ ]
++else
++ error('i.MX platform requires ION support to be enabled!')
++endif
++
+ # OpenGL/GLES2 libraries
+ gl_lib_deps = []
+ # GL platform - EGL, GLX, CGL, WGL, etc
+@@ -501,6 +515,7 @@ if need_platform_egl != 'no'
+ glconf.set10('GST_GL_HAVE_DMABUF', 1)
+ endif
+
++
+ egl_includes = '''
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
+@@ -808,9 +823,14 @@ if need_platform_egl != 'no' and need_win_viv_fb != 'no'
+ enabled_gl_winsys += 'viv-fb'
+ glconf.set10('GST_GL_HAVE_WINDOW_VIV_FB', 1)
+ glconf.set10('GST_GL_HAVE_VIV_DIRECTVIV', 1)
++ glconf.set10('GST_GL_HAVE_PHYMEM', 1)
+ gl_sources += [
+ 'viv-fb/gstgldisplay_viv_fb.c',
+ 'viv-fb/gstglwindow_viv_fb_egl.c',
++ 'gstglphymemory.c',
++ ]
++ gl_headers += [
++ 'gstglphymemory.h',
+ ]
+ gl_cpp_args += ['-DEGL_API_FB']
+ endif
+diff --git a/gst-libs/gst/meson.build b/gst-libs/gst/meson.build
+index cd3b5b043..1935f46e5 100644
+--- a/gst-libs/gst/meson.build
++++ b/gst-libs/gst/meson.build
+@@ -11,3 +11,9 @@ subdir('app')
+ subdir('allocators')
+ # FIXME: gl deps are automagic
+ subdir('gl')
++
++# Install dangling imx header, required by other plugins
++gst_imx_header = [
++ 'gstimxcommon.h',
++]
++install_headers(gst_imx_header, subdir : 'gstreamer-1.0/')
+diff --git a/gst-libs/gst/video/meson.build b/gst-libs/gst/video/meson.build
+index b4dfcdf65..d8531f199 100644
+--- a/gst-libs/gst/video/meson.build
++++ b/gst-libs/gst/video/meson.build
+@@ -35,6 +35,11 @@ video_sources = [
+ 'videooverlay.c',
+ ]
+
++imx_video_sources = [
++ 'gstvideohdr10meta.c',
++]
++video_sources += imx_video_sources
++
+ video_headers = [
+ 'colorbalance.h',
+ 'colorbalancechannel.h',
+@@ -70,6 +75,12 @@ video_headers = [
+ 'video-overlay-composition.h',
+ 'video-multiview.h',
+ ]
++
++imx_video_headers = [
++ 'gstvideohdr10meta.h',
++]
++video_headers += imx_video_headers
++
+ install_headers(video_headers, subdir : 'gstreamer-1.0/gst/video/')
+
+ video_mkenum_headers = [
+diff --git a/meson.build b/meson.build
+index 2fca28205..7781934cd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -103,6 +103,9 @@ if glib_checks.disabled() or (glib_checks.auto() and not gst_version_is_dev)
+ add_project_arguments('-DG_DISABLE_CHECKS', language: 'c')
+ endif
+
++# Define i.MX-specific include path as variable from options
++imx_includes = include_directories(get_option('extra_imx_incdir'))
++
+ check_headers = [
+ ['HAVE_DLFCN_H', 'dlfcn.h'],
+ ['HAVE_EMMINTRIN_H', 'emmintrin.h'],
+diff --git a/meson_options.txt b/meson_options.txt
+index e7af4dd45..d44401ca6 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -85,3 +85,7 @@ option('package-name', type : 'string', yield : true,
+ description : 'package name to use in plugins')
+ option('package-origin', type : 'string', value : 'Unknown package origin', yield : true,
+ description : 'package origin URL to use in plugins')
++
++# NXP specific options
++option('extra_imx_incdir', type : 'string', yield : true, description : 'i.MX specific header include path')
++
+--
+2.17.1
+
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-build-gir-even-when-cross-compiling-if-introsp.patch b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-build-gir-even-when-cross-compiling-if-introsp.patch
new file mode 100644
index 0000000..5587188
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-build-gir-even-when-cross-compiling-if-introsp.patch
@@ -0,0 +1,34 @@
+From f82db8496df8ffb8352248e895258c19f8f4776b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
+Date: Thu, 17 Oct 2019 20:06:24 +0100
+Subject: [PATCH] meson: build gir even when cross-compiling if introspection
+ was enabled explicitly
+
+This can be made to work in certain circumstances when
+cross-compiling, so default to not building g-i stuff
+when cross-compiling, but allow it if introspection was
+enabled explicitly via -Dintrospection=enabled.
+
+See gstreamer/gstreamer#454 and gstreamer/gstreamer#381.
+
+Upstream-Status: Backport [30672ba7d134553e59935ddc875104adba26f25c]
+
+Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
+
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 2fca28205..2714af718 100644
+--- a/meson.build
++++ b/meson.build
+@@ -355,7 +355,7 @@ endif
+
+ gir = find_program('g-ir-scanner', required : get_option('introspection'))
+ gnome = import('gnome')
+-build_gir = gir.found() and not meson.is_cross_build()
++build_gir = gir.found() and (not meson.is_cross_build() or get_option('introspection').enabled())
+ gir_init_section = [ '--add-init-section=extern void gst_init(gint*,gchar**);' + \
+ 'g_setenv("GST_REGISTRY_DISABLE", "yes", TRUE);' + \
+ 'g_setenv("GST_REGISTRY_1.0", "@0@", TRUE);'.format(meson.current_build_dir() + '/gir_empty_registry.reg') + \
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-viv-fb-code-must-link-against-libg2d.patch b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-viv-fb-code-must-link-against-libg2d.patch
new file mode 100644
index 0000000..c761619
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-meson-viv-fb-code-must-link-against-libg2d.patch
@@ -0,0 +1,44 @@
+From 8153e86dac04076fb80fc272c8374d4ba019fa3c Mon Sep 17 00:00:00 2001
+From: Zan Dobersek <zdobersek@igalia.com>
+Date: Wed, 4 Nov 2020 14:02:10 +0100
+Subject: [PATCH] meson: viv-fb code must link against libg2d
+
+Find the libg2d library and link against it, if necessary, avoiding
+linking errors for couple of libg2d symbols.
+
+Upstream-Status: Pending
+
+Signed-off-by: Zan Dobersek <zdobersek@igalia.com>
+---
+ gst-libs/gst/gl/meson.build | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/gst-libs/gst/gl/meson.build b/gst-libs/gst/gl/meson.build
+index 6f6c6866d..fb6a9aabf 100644
+--- a/gst-libs/gst/gl/meson.build
++++ b/gst-libs/gst/gl/meson.build
+@@ -818,9 +818,11 @@ if need_win_gbm != 'no'
+ endif
+
+ if need_platform_egl != 'no' and need_win_viv_fb != 'no'
+- if egl_dep.found() and cc.has_function ('fbGetDisplay', dependencies : egl_dep)
++ g2d_dep = cc.find_library('g2d', required : false)
++ if egl_dep.found() and g2d_dep.found() and cc.has_function ('fbGetDisplay', dependencies : egl_dep)
+ if cc.has_function ('glTexDirectVIV', dependencies : gles2_dep)
+ enabled_gl_winsys += 'viv-fb'
++ gl_winsys_deps += [g2d_dep]
+ glconf.set10('GST_GL_HAVE_WINDOW_VIV_FB', 1)
+ glconf.set10('GST_GL_HAVE_VIV_DIRECTVIV', 1)
+ glconf.set10('GST_GL_HAVE_PHYMEM', 1)
+@@ -834,6 +836,8 @@ if need_platform_egl != 'no' and need_win_viv_fb != 'no'
+ ]
+ gl_cpp_args += ['-DEGL_API_FB']
+ endif
++ else
++ g2d_dep = unneeded_dep
+ endif
+ endif
+
+--
+2.28.0
+
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-meson-Add-variables-for-gir-files.patch b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-meson-Add-variables-for-gir-files.patch
new file mode 100644
index 0000000..9494f62
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-meson-Add-variables-for-gir-files.patch
@@ -0,0 +1,233 @@
+From 7a21c86a3facfc7fe8285e764324839b2e55df8a Mon Sep 17 00:00:00 2001
+From: Thibault Saunier <tsaunier@igalia.com>
+Date: Mon, 22 Oct 2018 11:44:37 +0200
+Subject: [PATCH] meson: Add variables for gir files
+
+And flatten list of sources for dependencies
+
+Upstream-Status: Backport [685731e989dc074a4b0d48b6c8062e2738f09719]
+
+Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
+
+---
+ gst-libs/gst/allocators/meson.build | 5 +++--
+ gst-libs/gst/app/meson.build | 6 ++++--
+ gst-libs/gst/audio/meson.build | 5 +++--
+ gst-libs/gst/pbutils/meson.build | 5 +++--
+ gst-libs/gst/rtp/meson.build | 6 ++++--
+ gst-libs/gst/rtsp/meson.build | 5 +++--
+ gst-libs/gst/sdp/meson.build | 6 ++++--
+ gst-libs/gst/tag/meson.build | 5 +++--
+ gst-libs/gst/video/meson.build | 5 +++--
+ 9 files changed, 30 insertions(+), 18 deletions(-)
+
+diff --git a/gst-libs/gst/allocators/meson.build b/gst-libs/gst/allocators/meson.build
+index 364baeebf..56f156dc3 100644
+--- a/gst-libs/gst/allocators/meson.build
++++ b/gst-libs/gst/allocators/meson.build
+@@ -22,7 +22,7 @@ gstallocators = library('gstallocators-@0@'.format(api_version),
+ allocators_gen_sources = []
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/allocators/allocators.h' ]
+- allocators_gen_sources += [gnome.generate_gir(gstallocators,
++ allocators_gir = gnome.generate_gir(gstallocators,
+ sources : gst_allocators_sources + gst_allocators_headers,
+ namespace : 'GstAllocators',
+ nsversion : api_version,
+@@ -33,7 +33,8 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : [gst_dep]
+- )]
++ )
++ allocators_gen_sources += allocators_gir
+ endif
+
+ allocators_dep = declare_dependency(link_with: gstallocators,
+diff --git a/gst-libs/gst/app/meson.build b/gst-libs/gst/app/meson.build
+index 81dd0f42c..7a90f5e10 100644
+--- a/gst-libs/gst/app/meson.build
++++ b/gst-libs/gst/app/meson.build
+@@ -32,7 +32,7 @@ gstapp = library('gstapp-@0@'.format(api_version),
+
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/app/app.h' ]
+- app_gen_sources += [gnome.generate_gir(gstapp,
++ app_gir = gnome.generate_gir(gstapp,
+ sources : app_sources + app_headers + [gstapp_c] + [gstapp_h],
+ namespace : 'GstApp',
+ nsversion : api_version,
+@@ -43,7 +43,9 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : [gst_dep, gst_base_dep]
+- )]
++ )
++
++ app_gen_sources += app_gir
+ endif
+
+ app_dep = declare_dependency(link_with: gstapp,
+diff --git a/gst-libs/gst/audio/meson.build b/gst-libs/gst/audio/meson.build
+index 0e4efab2e..2a449d4bf 100644
+--- a/gst-libs/gst/audio/meson.build
++++ b/gst-libs/gst/audio/meson.build
+@@ -153,7 +153,7 @@ gstaudio = library('gstaudio-@0@'.format(api_version),
+
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/audio/audio.h' ]
+- audio_gen_sources += [gnome.generate_gir(gstaudio,
++ audio_gir = gnome.generate_gir(gstaudio,
+ sources : audio_src + audio_headers + [gstaudio_c] + [gstaudio_h],
+ namespace : 'GstAudio',
+ nsversion : api_version,
+@@ -164,7 +164,8 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : gstaudio_deps
+- )]
++ )
++ audio_gen_sources += [audio_gir]
+ endif
+
+ audio_dep = declare_dependency(link_with : gstaudio,
+diff --git a/gst-libs/gst/pbutils/meson.build b/gst-libs/gst/pbutils/meson.build
+index 2faf62622..0e96722fd 100644
+--- a/gst-libs/gst/pbutils/meson.build
++++ b/gst-libs/gst/pbutils/meson.build
+@@ -63,7 +63,7 @@ pbutils = library('gstpbutils-@0@'.format(api_version),
+ pbutils_gen_sources = [gstpbutils_h, gst_pbutils_version_h]
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/pbutils/pbutils.h' ]
+- pbutils_gen_sources += [gnome.generate_gir(pbutils,
++ pbutils_gir = gnome.generate_gir(pbutils,
+ sources : pbutils_sources + pbutils_headers + [gstpbutils_h, gst_pbutils_version_h],
+ namespace : 'GstPbutils',
+ nsversion : api_version,
+@@ -74,7 +74,8 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : gstpbutils_deps
+- )]
++ )
++ pbutils_gen_sources += [pbutils_gir]
+ endif
+
+ pbutils_dep = declare_dependency(link_with : pbutils,
+diff --git a/gst-libs/gst/rtp/meson.build b/gst-libs/gst/rtp/meson.build
+index f47ec6592..7ea6658d5 100644
+--- a/gst-libs/gst/rtp/meson.build
++++ b/gst-libs/gst/rtp/meson.build
+@@ -49,7 +49,7 @@ gst_rtp = library('gstrtp-@0@'.format(api_version),
+ rtp_gen_sources = [gstrtp_enum_h]
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/rtp/rtp.h' ]
+- rtp_gen_sources += [gnome.generate_gir(gst_rtp,
++ rtp_gir = gnome.generate_gir(gst_rtp,
+ sources : rtp_sources + rtp_headers + [gstrtp_enum_c] + [gstrtp_enum_h],
+ namespace : 'GstRtp',
+ nsversion : api_version,
+@@ -60,7 +60,9 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : gstrtp_deps
+- )]
++ )
++
++ rtp_gen_sources += [rtp_gir]
+ endif
+
+
+diff --git a/gst-libs/gst/rtsp/meson.build b/gst-libs/gst/rtsp/meson.build
+index 27e309d5a..3632adceb 100644
+--- a/gst-libs/gst/rtsp/meson.build
++++ b/gst-libs/gst/rtsp/meson.build
+@@ -54,7 +54,7 @@ gst_rtsp = library('gstrtsp-@0@'.format(api_version),
+ rtsp_gen_sources = [gstrtsp_h]
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/rtsp/rtsp.h' ]
+- rtsp_gen_sources += [gnome.generate_gir(gst_rtsp,
++ rtsp_gir = gnome.generate_gir(gst_rtsp,
+ sources : rtsp_sources + rtsp_headers + [gstrtsp_c] + [gstrtsp_h],
+ namespace : 'GstRtsp',
+ nsversion : api_version,
+@@ -65,7 +65,8 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : gstrtsp_deps + [sdp_dep]
+- )]
++ )
++ rtsp_gen_sources += [rtsp_gir]
+ endif
+
+ rtsp_dep = declare_dependency(link_with : gst_rtsp,
+diff --git a/gst-libs/gst/sdp/meson.build b/gst-libs/gst/sdp/meson.build
+index 62c18b732..24cdb5293 100644
+--- a/gst-libs/gst/sdp/meson.build
++++ b/gst-libs/gst/sdp/meson.build
+@@ -23,7 +23,7 @@ gstsdp = library('gstsdp-@0@'.format(api_version),
+ sdp_gen_sources = []
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/sdp/sdp.h' ]
+- sdp_gen_sources += [gnome.generate_gir(gstsdp,
++ sdp_gir = gnome.generate_gir(gstsdp,
+ sources : gst_sdp_sources + gst_sdp_headers,
+ namespace : 'GstSdp',
+ nsversion : api_version,
+@@ -34,7 +34,9 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : rtsp_deps
+- )]
++ )
++
++ sdp_gen_sources += [sdp_gir]
+ endif
+
+ sdp_dep = declare_dependency(link_with: gstsdp,
+diff --git a/gst-libs/gst/tag/meson.build b/gst-libs/gst/tag/meson.build
+index 27e66fd63..5ec37392a 100644
+--- a/gst-libs/gst/tag/meson.build
++++ b/gst-libs/gst/tag/meson.build
+@@ -93,7 +93,7 @@ gsttag = library('gsttag-@0@'.format(api_version),
+
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/tag/tag.h' ]
+- tag_gen_sources += [gnome.generate_gir(gsttag,
++ tag_gir = gnome.generate_gir(gsttag,
+ sources : tag_sources + tag_headers + [gsttag_h] + [gsttag_c],
+ namespace : 'GstTag',
+ nsversion : api_version,
+@@ -104,7 +104,8 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : tag_deps
+- )]
++ )
++ tag_gen_sources += [tag_gir]
+ endif
+
+ tag_dep = declare_dependency(link_with: gsttag,
+diff --git a/gst-libs/gst/video/meson.build b/gst-libs/gst/video/meson.build
+index b4dfcdf65..036c3a6a7 100644
+--- a/gst-libs/gst/video/meson.build
++++ b/gst-libs/gst/video/meson.build
+@@ -135,7 +135,7 @@ gstvideo = library('gstvideo-@0@'.format(api_version),
+
+ if build_gir
+ gst_gir_extra_args = gir_init_section + [ '--c-include=gst/video/video.h' ]
+- video_gen_sources += [gnome.generate_gir(gstvideo,
++ video_gir = gnome.generate_gir(gstvideo,
+ sources : video_sources + video_headers + [gstvideo_c] + [gstvideo_h],
+ namespace : 'GstVideo',
+ nsversion : api_version,
+@@ -146,7 +146,8 @@ if build_gir
+ install : true,
+ extra_args : gst_gir_extra_args,
+ dependencies : gstvideo_deps
+- )]
++ )
++ video_gen_sources += [video_gir]
+ endif
+
+ video_dep = declare_dependency(link_with : gstvideo,
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch
new file mode 100644
index 0000000..731ba87
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-viv-fb-Make-sure-config.h-is-included.patch
@@ -0,0 +1,30 @@
+From 616cf194dfd26818ed7b776321582b8e0ff9b3f1 Mon Sep 17 00:00:00 2001
+From: Carlos Rafael Giani <crg7475@mailbox.org>
+Date: Tue, 21 May 2019 14:01:11 +0200
+Subject: [PATCH] viv-fb: Make sure config.h is included
+
+This prevents build errors due to missing GST_API_* symbols
+
+Upstream-Status: Pending
+
+Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
+
+---
+ gst-libs/gst/gl/gl-prelude.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gst-libs/gst/gl/gl-prelude.h b/gst-libs/gst/gl/gl-prelude.h
+index 05e1f6229..96ce5e685 100644
+--- a/gst-libs/gst/gl/gl-prelude.h
++++ b/gst-libs/gst/gl/gl-prelude.h
+@@ -22,6 +22,10 @@
+ #ifndef __GST_GL_PRELUDE_H__
+ #define __GST_GL_PRELUDE_H__
+
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include <gst/gst.h>
+
+ #ifdef BUILDING_GST_GL
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch
new file mode 100644
index 0000000..fc67a48
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch
@@ -0,0 +1,30 @@
+From f18f1206ec44f4154e60546ecb82823f7a6569d7 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 24 Sep 2015 19:47:32 +0300
+Subject: [PATCH] glimagesink: Downrank to marginal
+
+On desktop, where there is good OpenGL, xvimagesink will come up first,
+on other platforms, OpenGL can't be trusted because it's either software (like
+in a VM) or broken (like on embedded)., so let ximagesink come above.
+
+Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=751684]
+
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ ext/gl/gstopengl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
+index 302e8452c..463be9cd8 100644
+--- a/ext/gl/gstopengl.c
++++ b/ext/gl/gstopengl.c
+@@ -127,7 +127,7 @@ plugin_init (GstPlugin * plugin)
+ #endif
+
+ if (!gst_element_register (plugin, "glimagesink",
+- GST_RANK_SECONDARY, gst_gl_image_sink_bin_get_type ())) {
++ GST_RANK_MARGINAL, gst_gl_image_sink_bin_get_type ())) {
+ return FALSE;
+ }
+
diff --git a/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb
new file mode 100644
index 0000000..db0b740
--- /dev/null
+++ b/backports/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.16.imx.bb
@@ -0,0 +1,102 @@
+require recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
+ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
+
+GST1.0-PLUGINS-BASE_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-base.git;protocol=https"
+SRCBRANCH = "MM_04.05.06_2008_L5.4.47"
+SRCREV = "3c4aa2a58576d68f6e684efa58609665679c9969"
+SRC_URI = "${GST1.0-PLUGINS-BASE_SRC};branch=${SRCBRANCH} \
+ file://0001-meson-build-gir-even-when-cross-compiling-if-introsp.patch \
+ file://0001-gstreamer-plugins-base-fix-meson-build-in-nxp-fork.patch \
+ file://0002-meson-Add-variables-for-gir-files.patch \
+ file://0005-viv-fb-Make-sure-config.h-is-included.patch \
+ file://0009-glimagesink-Downrank-to-marginal.patch \
+ file://0001-gst-libs-gst-gl-wayland-fix-meson-build.patch \
+ file://0001-meson-viv-fb-code-must-link-against-libg2d.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+DEPENDS += "iso-codes util-linux zlib"
+DEPENDS_append_imxgpu2d = " virtual/libg2d"
+
+inherit use-imx-headers gobject-introspection gtk-doc
+
+DEFAULT_PREFERENCE = "-1"
+
+PACKAGES_DYNAMIC =+ "^libgst.*"
+
+# opengl packageconfig factored out to make it easy for distros
+# and BSP layers to choose OpenGL APIs/platforms/window systems
+PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ ${PACKAGECONFIG_GL} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
+ ogg pango png theora vorbis \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
+"
+
+OPENGL_APIS = 'opengl gles2'
+OPENGL_PLATFORMS = 'egl'
+OPENGL_WINSYS = 'x11 wayland gbm viv-fb'
+
+X11DEPENDS = "virtual/libx11 libsm libxrender libxv"
+X11ENABLEOPTS = "-Dx11=enabled -Dxvideo=enabled -Dxshm=enabled"
+X11DISABLEOPTS = "-Dx11=disabled -Dxvideo=disabled -Dxshm=disabled"
+
+PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib"
+PACKAGECONFIG[cdparanoia] = "-Dcdparanoia=enabled,-Dcdparanoia=disabled,cdparanoia"
+PACKAGECONFIG[jpeg] = "-Dgl-jpeg=enabled,-Dgl-jpeg=disabled,jpeg"
+PACKAGECONFIG[ogg] = "-Dogg=enabled,-Dogg=disabled,libogg"
+PACKAGECONFIG[opus] = "-Dopus=enabled,-Dopus=disabled,libopus"
+PACKAGECONFIG[pango] = "-Dpango=enabled,-Dpango=disabled,pango"
+PACKAGECONFIG[png] = "-Dgl-png=enabled,-Dgl-png=disabled,libpng"
+PACKAGECONFIG[theora] = "-Dtheora=enabled,-Dtheora=disabled,libtheora"
+PACKAGECONFIG[tremor] = "-Dtremor=enabled,-Dtremor=disabled,tremor"
+PACKAGECONFIG[visual] = "-Dlibvisual=enabled,-Dlibvisual=disabled,libvisual"
+PACKAGECONFIG[vorbis] = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis"
+PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
+
+# OpenGL API packageconfigs
+PACKAGECONFIG[opengl] = ",,virtual/libgl libglu"
+PACKAGECONFIG[gles2] = ",,virtual/libgles2"
+
+# OpenGL platform packageconfigs
+PACKAGECONFIG[egl] = ",,virtual/egl"
+
+# OpenGL window systems (except for X11)
+PACKAGECONFIG[gbm] = ",,virtual/libgbm libgudev libdrm"
+PACKAGECONFIG[wayland] = ",,wayland-native wayland wayland-protocols libdrm"
+PACKAGECONFIG[viv-fb] = ",,virtual/libgles2 virtual/libg2d"
+
+EXTRA_OEMESON += " \
+ -Dgl-graphene=disabled \
+ ${@get_opengl_cmdline_list('gl_api', d.getVar('OPENGL_APIS'), d)} \
+ ${@get_opengl_cmdline_list('gl_platform', d.getVar('OPENGL_PLATFORMS'), d)} \
+ ${@get_opengl_cmdline_list('gl_winsys', d.getVar('OPENGL_WINSYS'), d)} \
+ -Dextra_imx_incdir=${STAGING_INCDIR_IMX} \
+"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+GTKDOC_MESON_ENABLE_FLAG = "enabled"
+GTKDOC_MESON_DISABLE_FLAG = "disabled"
+
+FILES_${PN} += "${libdir}/gstreamer-1.0/include"
+FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
+
+def get_opengl_cmdline_list(switch_name, options, d):
+ selected_options = []
+ if bb.utils.contains('DISTRO_FEATURES', 'opengl', True, False, d):
+ for option in options.split():
+ if bb.utils.contains('PACKAGECONFIG', option, True, False, d):
+ selected_options += [option]
+ if selected_options:
+ return '-D' + switch_name + '=' + ','.join(selected_options)
+ else:
+ return ''