diff options
Diffstat (limited to 'external/poky/meta/recipes-multimedia')
128 files changed, 7025 insertions, 0 deletions
diff --git a/external/poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.6.bb b/external/poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.6.bb new file mode 100644 index 00000000..25e7a3c6 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/alsa/alsa-lib_1.1.6.bb @@ -0,0 +1,41 @@ +SUMMARY = "ALSA sound library" +HOMEPAGE = "http://www.alsa-project.org" +BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking" +SECTION = "libs/multimedia" +LICENSE = "LGPLv2.1 & GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \ + file://src/socket.c;md5=dd1bc7f44872690224d89c1a9806e495;beginline=1;endline=26 \ + " + +SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/${BP}.tar.bz2" +SRC_URI[md5sum] = "2f981a8f7897c59ec2ddc44916d33788" +SRC_URI[sha256sum] = "5f2cd274b272cae0d0d111e8a9e363f08783329157e8dd68b3de0c096de6d724" + +inherit autotools pkgconfig + +EXTRA_OECONF += " \ + ${@bb.utils.contains('TARGET_FPU', 'soft', '--with-softfloat', '', d)} \ + --disable-python \ +" + +PACKAGES =+ "alsa-server alsa-conf alsa-doc" + +FILES_alsa-server = "${bindir}/*" +FILES_alsa-conf = "${datadir}/alsa/" + +RDEPENDS_${PN}_class-target = "alsa-conf" + +# upgrade path +RPROVIDES_${PN} = "libasound" +RREPLACES_${PN} = "libasound" +RCONFLICTS_${PN} = "libasound" + +RPROVIDES_${PN}-dev = "alsa-dev" +RREPLACES_${PN}-dev = "alsa-dev" +RCONFLICTS_${PN}-dev = "alsa-dev" + +RPROVIDES_alsa-conf = "alsa-conf-base" +RREPLACES_alsa-conf = "alsa-conf-base" +RCONFLICTS_alsa-conf = "alsa-conf-base" + +BBCLASSEXTEND = "native nativesdk" diff --git a/external/poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.6.bb b/external/poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.6.bb new file mode 100644 index 00000000..17c1879f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/alsa/alsa-plugins_1.1.6.bb @@ -0,0 +1,103 @@ +SUMMARY = "ALSA Plugins" +HOMEPAGE = "http://alsa-project.org" +BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking" +SECTION = "multimedia" + +# The primary license of alsa-plugins is LGPLv2.1. +# +# m4/attributes.m4 is licensed under GPLv2+. m4/attributes.m4 is part of the +# build system, and doesn't affect the licensing of the build result. +# +# The samplerate plugin source code is licensed under GPLv2+ to be consistent +# with the libsamplerate license. However, if the licensee has a commercial +# license for libsamplerate, the samplerate plugin may be used under the terms +# of LGPLv2.1 like the rest of the plugins. +LICENSE = "LGPLv2.1 & GPLv2+" +LIC_FILES_CHKSUM = "\ + file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \ + file://COPYING.GPL;md5=59530bdf33659b29e73d4adb9f9f6552 \ + file://m4/attributes.m4;endline=33;md5=b25958da44c02231e3641f1bccef53eb \ + file://rate/rate_samplerate.c;endline=35;md5=fd77bce85f4a338c0e8ab18430b69fae \ +" + +SRC_URI = "ftp://ftp.alsa-project.org/pub/plugins/${BP}.tar.bz2" +SRC_URI[md5sum] = "8387279e99feeb2ecffaac5f293223d7" +SRC_URI[sha256sum] = "6f1d31ebe3b1fa1cc8dade60b7bed1cb2583ac998167002d350dc0a5e3e40c13" + +DEPENDS += "alsa-lib" + +inherit autotools pkgconfig + +PACKAGECONFIG ??= "\ + samplerate \ + speexdsp \ + ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)} \ +" +PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec,libav" +PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" +PACKAGECONFIG[maemo-plugin] = "--enable-maemo-plugin,--disable-maemo-plugin" +PACKAGECONFIG[maemo-resource-manager] = "--enable-maemo-resource-manager,--disable-maemo-resource-manager,dbus" +PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio" +PACKAGECONFIG[samplerate] = "--enable-samplerate,--disable-samplerate,libsamplerate0" +PACKAGECONFIG[speexdsp] = "--with-speex=lib,--with-speex=no,speexdsp" + +PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'alsa-plugins-pulseaudio-conf', '', d)}" + +PACKAGES_DYNAMIC = "^libasound-module-.*" + +# The alsa-plugins package doesn't itself contain anything, it just depends on +# all built plugins. +ALLOW_EMPTY_${PN} = "1" + +do_install_append() { + rm ${D}${libdir}/alsa-lib/*.la + + # We use the example as is, so just drop the .example suffix. + if [ "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'yes', 'no', d)}" = "yes" ]; then + mv ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf.example ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf + fi +} + +python populate_packages_prepend() { + plugindir = d.expand('${libdir}/alsa-lib/') + packages = " ".join(do_split_packages(d, plugindir, '^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends='')) + d.setVar("RDEPENDS_alsa-plugins", packages) +} + +# The rate plugins create some symlinks. For example, the samplerate plugin +# creates these links to the main plugin file: +# +# libasound_module_rate_samplerate_best.so +# libasound_module_rate_samplerate_linear.so +# libasound_module_rate_samplerate_medium.so +# libasound_module_rate_samplerate_order.so +# +# The other rate plugins create similar links. We have to add the links to +# FILES manually, because do_split_packages() skips the links (which is good, +# because we wouldn't want do_split_packages() to create separate packages for +# the symlinks). +# +# The symlinks cause QA errors, because usually it's a bug if a non +# -dev/-dbg/-nativesdk package contains links to .so files, but in this case +# the errors are false positives, so we disable the QA checks. +FILES_${MLPREFIX}libasound-module-rate-lavcrate += "${libdir}/alsa-lib/*rate_lavcrate_*.so" +FILES_${MLPREFIX}libasound-module-rate-samplerate += "${libdir}/alsa-lib/*rate_samplerate_*.so" +FILES_${MLPREFIX}libasound-module-rate-speexrate += "${libdir}/alsa-lib/*rate_speexrate_*.so" +INSANE_SKIP_${MLPREFIX}libasound-module-rate-lavcrate = "dev-so" +INSANE_SKIP_${MLPREFIX}libasound-module-rate-samplerate = "dev-so" +INSANE_SKIP_${MLPREFIX}libasound-module-rate-speexrate = "dev-so" + +# 50-pulseaudio.conf defines a device named "pulse" that applications can use +# if they explicitly want to use the PulseAudio plugin. +# 99-pulseaudio-default.conf configures the "default" device to use the +# PulseAudio plugin. +FILES_${PN}-pulseaudio-conf += "\ + ${datadir}/alsa/alsa.conf.d/50-pulseaudio.conf \ + ${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf \ +" + +RDEPENDS_${PN}-pulseaudio-conf += "\ + libasound-module-conf-pulse \ + libasound-module-ctl-pulse \ + libasound-module-pcm-pulse \ +" diff --git a/external/poky/meta/recipes-multimedia/alsa/alsa-tools/0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch b/external/poky/meta/recipes-multimedia/alsa/alsa-tools/0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch new file mode 100644 index 00000000..c137bc8a --- /dev/null +++ b/external/poky/meta/recipes-multimedia/alsa/alsa-tools/0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch @@ -0,0 +1,34 @@ +Upstream-Status: Backport +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +From a861bdabf02cd9bfb3ec7c0571c563c0fa14adfb Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 24 Apr 2018 12:24:32 -0700 +Subject: [PATCH] us428control: Fix clang -Wreserved-user-defined-literal + warnings + +| us428control.cc:66:18: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal] +| printf("usage: "PROGNAME" [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n"); +| ^ + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Takashi Iwai <tiwai@suse.de> +--- + us428control/us428control.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/us428control/us428control.cc b/us428control/us428control.cc +index e839bf4..8cb3c42 100644 +--- a/us428control/us428control.cc ++++ b/us428control/us428control.cc +@@ -63,7 +63,7 @@ static void usage(void) + { + printf("Tascam US-428 Control\n"); + printf("version %s\n", VERSION); +- printf("usage: "PROGNAME" [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n"); ++ printf("usage: " PROGNAME " [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n"); + printf("mode is one of (us224, us428, mixxx)\n"); + } + /* +-- +1.7.11.7 diff --git a/external/poky/meta/recipes-multimedia/alsa/alsa-tools/musl.patch b/external/poky/meta/recipes-multimedia/alsa/alsa-tools/musl.patch new file mode 100644 index 00000000..9eb129c3 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/alsa/alsa-tools/musl.patch @@ -0,0 +1,47 @@ +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From 235d9c5e8381518b0a8661786e7e0cbdd1bbcd01 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@intel.com> +Date: Tue, 12 Jun 2018 13:24:34 +0100 +Subject: [PATCH] ld10k1: define _GNU_SOURCE and use sighandler_t + +__sighandler_t is a glibc internal type which doesn't exist in musl. By using +AC_USE_SYSTEM_EXTENSIONS to get _GNU_SOURCE defined, both glibc and musl +then expose sighandler_t. + +Signed-off-by: Ross Burton <ross.burton@intel.com> +Signed-off-by: Takashi Iwai <tiwai@suse.de> +--- + ld10k1/configure.ac | 1 + + ld10k1/src/ld10k1_fnc1.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/ld10k1/configure.ac b/ld10k1/configure.ac +index 276b24e..f48ca31 100644 +--- a/ld10k1/configure.ac ++++ b/ld10k1/configure.ac +@@ -4,6 +4,7 @@ AC_CONFIG_MACRO_DIR([m4]) + AM_MAINTAINER_MODE([enable]) + + AC_CONFIG_HEADERS(config.h) ++AC_USE_SYSTEM_EXTENSIONS + AC_PROG_CC + AC_PROG_LD + AC_PROG_INSTALL +diff --git a/ld10k1/src/ld10k1_fnc1.c b/ld10k1/src/ld10k1_fnc1.c +index 343584c..ddc43c6 100644 +--- a/ld10k1/src/ld10k1_fnc1.c ++++ b/ld10k1/src/ld10k1_fnc1.c +@@ -179,7 +179,7 @@ int main_loop(comm_param *param, int audigy, const char *card_id, int tram_size, + { + fd_set active_fd_set/*, read_fd_set*/; + int i, j, res = 0; +- __sighandler_t old_sig_pipe; ++ sighandler_t old_sig_pipe; + + int main_sock = 0; + int data_sock = 0; +-- +2.11.0 + diff --git a/external/poky/meta/recipes-multimedia/alsa/alsa-tools_1.1.6.bb b/external/poky/meta/recipes-multimedia/alsa/alsa-tools_1.1.6.bb new file mode 100644 index 00000000..90e54dbb --- /dev/null +++ b/external/poky/meta/recipes-multimedia/alsa/alsa-tools_1.1.6.bb @@ -0,0 +1,87 @@ +SUMMARY = "Advanced tools for certain ALSA sound card drivers" +HOMEPAGE = "http://www.alsa-project.org" +BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking" +SECTION = "console/utils" +LICENSE = "GPLv2 & LGPLv2+" +DEPENDS = "alsa-lib" + +LIC_FILES_CHKSUM = "file://hdsploader/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \ + file://ld10k1/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7 \ + " + +SRC_URI = "ftp://ftp.alsa-project.org/pub/tools/${BP}.tar.bz2 \ + file://0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch \ + file://musl.patch \ + " + +SRC_URI[md5sum] = "5ca8c9437ae779997cd62fb2815fef19" +SRC_URI[sha256sum] = "d69c4dc2fb641a974d9903e9eb78c94cb0c7ac6c45bae664f0c9d6c0a1593227" + +inherit autotools-brokensep pkgconfig +# brokensep as as10k1 (and probably more) fail out of tree +CLEANBROKEN = "1" + +# Here we use PACKAGECONFIG options to pick which directories we configure/build. +# Remember on upgrades to check that no new tools have been added. +PACKAGECONFIG ??= "as10k1 hdajacksensetest hda-verb hdsploader ld10k1 mixartloader pcxhrloader \ + sb16_csp seq--sbiload sscape_ctl us428control usx2yloader vxloader \ + ${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK2DISTROFEATURES}', 'echomixer envy24control rmedigicontrol', '', d)} \ + ${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'hdajackretask', '', d)} \ + " + +PACKAGECONFIG[as10k1] = "" +PACKAGECONFIG[echomixer] = ",,gtk+" +PACKAGECONFIG[envy24control] = ",,gtk+" +PACKAGECONFIG[hda-verb] = "" +PACKAGECONFIG[hdajackretask] = ",,gtk+3" +PACKAGECONFIG[hdajacksensetest] = ",,glib-2.0" +PACKAGECONFIG[hdspconf] = ",,fltk" +PACKAGECONFIG[hdsploader] = "" +PACKAGECONFIG[hdspmixer] = ",,fltk" +PACKAGECONFIG[hwmixvolume] = ",,,python-core python-pygtk" +PACKAGECONFIG[ld10k1] = "" +PACKAGECONFIG[mixartloader] = "" +PACKAGECONFIG[pcxhrloader] = "" +PACKAGECONFIG[qlo10k1] = ",,qt-x11-free" +PACKAGECONFIG[rmedigicontrol] = ",,gtk+" +PACKAGECONFIG[sb16_csp] = "" +PACKAGECONFIG[seq--sbiload] = "" +PACKAGECONFIG[sscape_ctl] = "" +PACKAGECONFIG[us428control] = "" +PACKAGECONFIG[usx2yloader] = "" +PACKAGECONFIG[vxloader] = "" + +python do_configure() { + for subdir in d.getVar("PACKAGECONFIG").split(): + subdir = subdir.replace("--", "/") + bb.note("Configuring %s" % subdir) + dd = d.createCopy() + dd.setVar("S", os.path.join(d.getVar("S"), subdir)) + bb.build.exec_func("autotools_do_configure", dd) +} + +python do_compile() { + for subdir in d.getVar("PACKAGECONFIG").split(): + subdir = subdir.replace("--", "/") + bb.note("Compiling %s" % subdir) + dd = d.createCopy() + dd.setVar("S", os.path.join(d.getVar("S"), subdir)) + bb.build.exec_func("autotools_do_compile", dd) +} + +python do_install() { + for subdir in d.getVar("PACKAGECONFIG").split(): + subdir = subdir.replace("--", "/") + bb.note("Installing %s" % subdir) + dd = d.createCopy() + dd.setVar("S", os.path.join(d.getVar("S"), subdir)) + bb.build.exec_func("autotools_do_install", dd) + + # Just remove bash-needing init script that isn't installed as an init script + try: + os.remove(oe.path.join(d.getVar("D"), d.getVar("sbindir"), "ld10k1d")) + except: + pass +} + +FILES_${PN} += "${datadir}" diff --git a/external/poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.6.bb b/external/poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.6.bb new file mode 100644 index 00000000..fef79d9c --- /dev/null +++ b/external/poky/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.6.bb @@ -0,0 +1,25 @@ +require alsa-utils_${PV}.bb + +SUMMARY = "Shell scripts that show help info and create ALSA configuration files" +PROVIDES = "alsa-utils-alsaconf" + +FILESEXTRAPATHS_prepend := "${THISDIR}/alsa-utils:" + +PACKAGES = "${PN}" +RDEPENDS_${PN} += "bash" + +FILES_${PN} = "${sbindir}/alsaconf \ + ${sbindir}/alsa-info.sh \ + ${sbindir}/alsabat-test.sh \ + " + +S = "${WORKDIR}/alsa-utils-${PV}" + +do_install() { + install -d ${D}${sbindir} + install -m 0755 ${B}/alsaconf/alsaconf ${D}${sbindir}/ + install -m 0755 ${S}/alsa-info/alsa-info.sh ${D}${sbindir}/ + if ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'true', 'false', d)}; then + install -m 0755 ${S}/bat/alsabat-test.sh ${D}${sbindir}/ + fi +} diff --git a/external/poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.6.bb b/external/poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.6.bb new file mode 100644 index 00000000..b8ba0cb2 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/alsa/alsa-utils_1.1.6.bb @@ -0,0 +1,107 @@ +SUMMARY = "ALSA sound utilities" +HOMEPAGE = "http://www.alsa-project.org" +BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking" +SECTION = "console/utils" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \ + file://alsactl/utils.c;beginline=1;endline=20;md5=2ce7f7b6739487fb72c689d46521f958" +DEPENDS = "alsa-lib ncurses libsamplerate0" + +PACKAGECONFIG ??= "udev" + +# alsabat can be built also without fftw support (with reduced functionality). +# It would be better to always enable alsabat, but provide an option for +# enabling/disabling fftw. The configure script doesn't support that, however +# (at least in any obvious way), so for now we only support alsabat with fftw +# or no alsabat at all. +PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf" + +PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,--with-udev-rules-dir=/unwanted/rules.d,udev" +PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" + +SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \ + " + +SRC_URI[md5sum] = "50ae75567459646b843bed78d916b002" +SRC_URI[sha256sum] = "155caecc40b2220f686f34ba3655a53e3bdbc0586adb1056733949feaaf7d36e" + +# On build machines with python-docutils (not python3-docutils !!) installed +# rst2man (not rst2man.py) is detected and compile fails with +# | make[1]: *** No rule to make target 'alsaucm.1', needed by 'all-am'. Stop. +# Avoid this by disabling expicitly +EXTRA_OECONF = "--disable-rst2man" + +inherit autotools gettext pkgconfig manpages + +# This are all packages that we need to make. Also, the now empty alsa-utils +# ipk depends on them. + +ALSA_UTILS_PKGS = "\ + ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \ + alsa-utils-alsamixer \ + alsa-utils-alsatplg \ + alsa-utils-midi \ + alsa-utils-aplay \ + alsa-utils-amixer \ + alsa-utils-aconnect \ + alsa-utils-iecset \ + alsa-utils-speakertest \ + alsa-utils-aseqnet \ + alsa-utils-aseqdump \ + alsa-utils-alsactl \ + alsa-utils-alsaloop \ + alsa-utils-alsaucm \ + " + +PACKAGES += "${ALSA_UTILS_PKGS}" +RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}" + +FILES_${PN} = "" +FILES_alsa-utils-alsabat = "${bindir}/alsabat" +FILES_alsa-utils-alsatplg = "${bindir}/alsatplg" +FILES_alsa-utils-aplay = "${bindir}/aplay ${bindir}/arecord" +FILES_alsa-utils-amixer = "${bindir}/amixer" +FILES_alsa-utils-alsamixer = "${bindir}/alsamixer" +FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/" +FILES_alsa-utils-midi = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi" +FILES_alsa-utils-aconnect = "${bindir}/aconnect" +FILES_alsa-utils-aseqnet = "${bindir}/aseqnet" +FILES_alsa-utils-iecset = "${bindir}/iecset" +FILES_alsa-utils-alsactl = "${sbindir}/alsactl */udev/rules.d */*/udev/rules.d ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/" +FILES_alsa-utils-aseqdump = "${bindir}/aseqdump" +FILES_alsa-utils-alsaloop = "${bindir}/alsaloop" +FILES_alsa-utils-alsaucm = "${bindir}/alsaucm" + +SUMMARY_alsa-utils-alsabat = "Command-line sound tester for ALSA sound card driver" +SUMMARY_alsa-utils-alsatplg = "Converts topology text files into binary format for kernel" +SUMMARY_alsa-utils-aplay = "Play (and record) sound files using ALSA" +SUMMARY_alsa-utils-amixer = "Command-line control for ALSA mixer and settings" +SUMMARY_alsa-utils-alsamixer = "ncurses-based control for ALSA mixer and settings" +SUMMARY_alsa-utils-speakertest = "ALSA surround speaker test utility" +SUMMARY_alsa-utils-midi = "Miscellaneous MIDI utilities for ALSA" +SUMMARY_alsa-utils-aconnect = "ALSA sequencer connection manager" +SUMMARY_alsa-utils-aseqnet = "Network client/server for ALSA sequencer" +SUMMARY_alsa-utils-iecset = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits" +SUMMARY_alsa-utils-alsactl = "Saves/restores ALSA-settings in /etc/asound.state" +SUMMARY_alsa-utils-aseqdump = "Shows the events received at an ALSA sequencer port" +SUMMARY_alsa-utils-alsaloop = "ALSA PCM loopback utility" +SUMMARY_alsa-utils-alsaucm = "ALSA Use Case Manager" + +RRECOMMENDS_alsa-utils-alsactl = "alsa-states" + +ALLOW_EMPTY_alsa-utils = "1" + +do_install() { + autotools_do_install + + # We don't ship this here because it requires a dependency on bash. + # See alsa-utils-scripts_${PV}.bb + rm ${D}${sbindir}/alsaconf + rm ${D}${sbindir}/alsa-info.sh + rm -f ${D}${sbindir}/alsabat-test.sh + + # If udev is disabled, we told configure to install the rules + # in /unwanted, so we can remove them now. If udev is enabled, + # then /unwanted won't exist and this will have no effect. + rm -rf ${D}/unwanted +} diff --git a/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2018-15822.patch b/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2018-15822.patch new file mode 100644 index 00000000..7d5868a7 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2018-15822.patch @@ -0,0 +1,37 @@ +From 6b67d7f05918f7a1ee8fc6ff21355d7e8736aa10 Mon Sep 17 00:00:00 2001 +From: Michael Niedermayer <michael@niedermayer.cc> +Date: Sat, 28 Jul 2018 15:03:50 +0200 +Subject: [PATCH] avformat/flvenc: Check audio packet size + +Fixes: Assertion failure +Fixes: assert_flvenc.c:941_1.swf + +Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/6b67d7f05918f7a1ee8fc6ff21355d7e8736aa10] +CVE: CVE-2018-15822 + +Found-by: #CHEN HONGXU# <HCHEN017@e.ntu.edu.sg> +Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> +Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com> +--- + libavformat/flvenc.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c +index 1c552a3e6b..e4863f1fc7 100644 +--- a/libavformat/flvenc.c ++++ b/libavformat/flvenc.c +@@ -883,6 +883,11 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt) + int flags = -1, flags_size, ret; + int64_t cur_offset = avio_tell(pb); + ++ if (par->codec_type == AVMEDIA_TYPE_AUDIO && !pkt->size) { ++ av_log(s, AV_LOG_WARNING, "Empty audio Packet\n"); ++ return AVERROR(EINVAL); ++ } ++ + if (par->codec_id == AV_CODEC_ID_VP6F || par->codec_id == AV_CODEC_ID_VP6A || + par->codec_id == AV_CODEC_ID_VP6 || par->codec_id == AV_CODEC_ID_AAC) + flags_size = 2; +-- +2.17.1 + diff --git a/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch b/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch new file mode 100644 index 00000000..69429af8 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch @@ -0,0 +1,32 @@ +It will add -mips64r6 and -mips64r2 to cmdline which will +cause conflicts + +in OE we user mips32r2 and mips64r2 for mips arch versions +so there is no benefit of detecting it automatically by +poking at tools especially in cross env + +Fixes errors like + +linking -mnan=2008 module with previous -mnan=legacy modules +failed to merge target specific data of file + +-Khem +Upstream-Status: Inappropriate [OE-Specific] + +Index: ffmpeg-3.1.1/configure +=================================================================== +--- ffmpeg-3.1.1.orig/configure ++++ ffmpeg-3.1.1/configure +@@ -5220,12 +5220,9 @@ elif enabled mips; then + + # Enable minimum ISA based on selected options + if enabled mips64; then +- enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6' + enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2' + disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64' + else +- enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6' +- enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5' + enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2' + disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32' + fi diff --git a/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.0.2.bb b/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.0.2.bb new file mode 100644 index 00000000..7d1af040 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.0.2.bb @@ -0,0 +1,158 @@ +SUMMARY = "A complete, cross-platform solution to record, convert and stream audio and video." +DESCRIPTION = "FFmpeg is the leading multimedia framework, able to decode, encode, transcode, \ + mux, demux, stream, filter and play pretty much anything that humans and machines \ + have created. It supports the most obscure ancient formats up to the cutting edge." +HOMEPAGE = "https://www.ffmpeg.org/" +SECTION = "libs" + +LICENSE = "BSD & GPLv2+ & LGPLv2.1+ & MIT" +LICENSE_${PN} = "GPLv2+" +LICENSE_libavcodec = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_libavdevice = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_libavfilter = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_libavformat = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_libavresample = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_libavutil = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_libpostproc = "GPLv2+" +LICENSE_libswresample = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_libswscale = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}" +LICENSE_FLAGS = "commercial" + +LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \ + file://COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \ + file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02" + +SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \ + file://mips64_cpu_detection.patch \ + file://CVE-2018-15822.patch \ + " +SRC_URI[md5sum] = "ae0bfdf809306a212b4f0e6eb8d1c75e" +SRC_URI[sha256sum] = "a95c0cc9eb990e94031d2183f2e6e444cc61c99f6f182d1575c433d62afb2f97" + +# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717 +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" +ARM_INSTRUCTION_SET_armv6 = "arm" + +# Should be API compatible with libav (which was a fork of ffmpeg) +# libpostproc was previously packaged from a separate recipe +PROVIDES = "libav libpostproc" + +DEPENDS = "alsa-lib zlib libogg nasm-native" + +inherit autotools pkgconfig + +PACKAGECONFIG ??= "avdevice avfilter avcodec avformat swresample swscale postproc \ + bzlib gpl lzma theora x264 \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xv', '', d)}" + +# libraries to build in addition to avutil +PACKAGECONFIG[avdevice] = "--enable-avdevice,--disable-avdevice" +PACKAGECONFIG[avfilter] = "--enable-avfilter,--disable-avfilter" +PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec" +PACKAGECONFIG[avformat] = "--enable-avformat,--disable-avformat" +PACKAGECONFIG[swresample] = "--enable-swresample,--disable-swresample" +PACKAGECONFIG[swscale] = "--enable-swscale,--disable-swscale" +PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc" +PACKAGECONFIG[avresample] = "--enable-avresample,--disable-avresample" + +# features to support +PACKAGECONFIG[bzlib] = "--enable-bzlib,--disable-bzlib,bzip2" +PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl" +PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm" +PACKAGECONFIG[jack] = "--enable-indev=jack,--disable-indev=jack,jack" +PACKAGECONFIG[libvorbis] = "--enable-libvorbis,--disable-libvorbis,libvorbis" +PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz" +PACKAGECONFIG[mp3lame] = "--enable-libmp3lame,--disable-libmp3lame,lame" +PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl" +PACKAGECONFIG[sdl2] = "--enable-sdl2,--disable-sdl2,virtual/libsdl2" +PACKAGECONFIG[speex] = "--enable-libspeex,--disable-libspeex,speex" +PACKAGECONFIG[theora] = "--enable-libtheora,--disable-libtheora,libtheora" +PACKAGECONFIG[vaapi] = "--enable-vaapi,--disable-vaapi,libva" +PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau" +PACKAGECONFIG[vpx] = "--enable-libvpx,--disable-libvpx,libvpx" +PACKAGECONFIG[x264] = "--enable-libx264,--disable-libx264,x264" +PACKAGECONFIG[xv] = "--enable-outdev=xv,--disable-outdev=xv,libxv" + +# Check codecs that require --enable-nonfree +USE_NONFREE = "${@bb.utils.contains_any('PACKAGECONFIG', [ 'openssl' ], 'yes', '', d)}" + +def cpu(d): + for arg in (d.getVar('TUNE_CCARGS') or '').split(): + if arg.startswith('-mcpu='): + return arg[6:] + return 'generic' + +EXTRA_OECONF = " \ + --disable-stripping \ + --enable-pic \ + --enable-shared \ + --enable-pthreads \ + --disable-libxcb \ + --disable-libxcb-shm \ + --disable-libxcb-xfixes \ + --disable-libxcb-shape \ + ${@bb.utils.contains('USE_NONFREE', 'yes', '--enable-nonfree', '', d)} \ + \ + --cross-prefix=${TARGET_PREFIX} \ + \ + --ld="${CCLD}" \ + --cc="${CC}" \ + --cxx="${CXX}" \ + --arch=${TARGET_ARCH} \ + --target-os="linux" \ + --enable-cross-compile \ + --extra-cflags="${TARGET_CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" \ + --extra-ldflags="${TARGET_LDFLAGS}" \ + --sysroot="${STAGING_DIR_TARGET}" \ + --enable-hardcoded-tables \ + ${EXTRA_FFCONF} \ + --libdir=${libdir} \ + --shlibdir=${libdir} \ + --datadir=${datadir}/ffmpeg \ + ${@bb.utils.contains('AVAILTUNES', 'mips32r2', '', '--disable-mipsdsp --disable-mipsdspr2', d)} \ + --cpu=${@cpu(d)} \ + --pkg-config=pkg-config \ +" + +EXTRA_OECONF_append_linux-gnux32 = " --disable-asm" +# gold crashes on x86, another solution is to --disable-asm but thats more hacky +# ld.gold: internal error in relocate_section, at ../../gold/i386.cc:3684 + +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" + +do_configure() { + ${S}/configure ${EXTRA_OECONF} +} + +PACKAGES =+ "libavcodec \ + libavdevice \ + libavfilter \ + libavformat \ + libavresample \ + libavutil \ + libpostproc \ + libswresample \ + libswscale" + +FILES_libavcodec = "${libdir}/libavcodec${SOLIBS}" +FILES_libavdevice = "${libdir}/libavdevice${SOLIBS}" +FILES_libavfilter = "${libdir}/libavfilter${SOLIBS}" +FILES_libavformat = "${libdir}/libavformat${SOLIBS}" +FILES_libavresample = "${libdir}/libavresample${SOLIBS}" +FILES_libavutil = "${libdir}/libavutil${SOLIBS}" +FILES_libpostproc = "${libdir}/libpostproc${SOLIBS}" +FILES_libswresample = "${libdir}/libswresample${SOLIBS}" +FILES_libswscale = "${libdir}/libswscale${SOLIBS}" + +# ffmpeg disables PIC on some platforms (e.g. x86-32) +INSANE_SKIP_${MLPREFIX}libavcodec = "textrel" +INSANE_SKIP_${MLPREFIX}libavdevice = "textrel" +INSANE_SKIP_${MLPREFIX}libavfilter = "textrel" +INSANE_SKIP_${MLPREFIX}libavformat = "textrel" +INSANE_SKIP_${MLPREFIX}libavutil = "textrel" +INSANE_SKIP_${MLPREFIX}libavresample = "textrel" +INSANE_SKIP_${MLPREFIX}libswscale = "textrel" +INSANE_SKIP_${MLPREFIX}libswresample = "textrel" +INSANE_SKIP_${MLPREFIX}libpostproc = "textrel" diff --git a/external/poky/meta/recipes-multimedia/flac/flac/CVE-2017-6888.patch b/external/poky/meta/recipes-multimedia/flac/flac/CVE-2017-6888.patch new file mode 100644 index 00000000..f0179168 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/flac/flac/CVE-2017-6888.patch @@ -0,0 +1,37 @@ +From 43ecb6431077ff54e9df27f71737e6e96d6c039f Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Tue, 21 Aug 2018 14:46:43 +0800 +Subject: [PATCH] From 5f47b63e9c971e6391590caf00a0f2a5ed612e67 Mon Sep 17 + 00:00:00 2001 From: Erik de Castro Lopo <erikd@mega-nerd.com> Date: Sat, 8 + Apr 2017 18:34:49 +1000 Subject: [PATCH] stream_decoder.c: Fix a memory leak + +Leak reported by Secunia Research. + +Upstream-Status: Backport[https://git.xiph.org/?p=flac.git;a=commit; + h=4f47b63e9c971e6391590caf00a0f2a5ed612e67] + +Update patch to version 1.3.2 +CVE: CVE-2017-6888 + +Signed-off-by: Changqing Li <changqing.li@windriver.com> +--- + src/libFLAC/stream_decoder.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c +index d364b0c..ebf93da 100644 +--- a/src/libFLAC/stream_decoder.c ++++ b/src/libFLAC/stream_decoder.c +@@ -1759,6 +1759,9 @@ FLAC__bool read_metadata_vorbiscomment_(FLAC__StreamDecoder *decoder, FLAC__Stre + } + memset (obj->comments[i].entry, 0, obj->comments[i].length) ; + if (!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, obj->comments[i].entry, obj->comments[i].length)) { ++ /* Current i-th entry is bad, so we delete it. */\ ++ free (obj->comments[i].entry) ; ++ obj->comments[i].entry = NULL ; + obj->num_comments = i; + goto skip; + } +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/flac/flac_1.3.2.bb b/external/poky/meta/recipes-multimedia/flac/flac_1.3.2.bb new file mode 100644 index 00000000..92ef8973 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/flac/flac_1.3.2.bb @@ -0,0 +1,46 @@ +SUMMARY = "Free Lossless Audio Codec" +DESCRIPTION = "FLAC stands for Free Lossless Audio Codec, a lossless audio compression format." +HOMEPAGE = "https://xiph.org/flac/" +BUGTRACKER = "http://sourceforge.net/p/flac/bugs/" +SECTION = "libs" +LICENSE = "GFDL-1.2 & GPLv2+ & LGPLv2.1+ & BSD" +LIC_FILES_CHKSUM = "file://COPYING.FDL;md5=ad1419ecc56e060eccf8184a87c4285f \ + file://src/Makefile.am;beginline=1;endline=17;md5=09501c864f89dfc7ead65553129817ca \ + file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://src/flac/main.c;beginline=1;endline=18;md5=09777e2934947a36f13568d0beb81199 \ + file://COPYING.LGPL;md5=fbc093901857fcd118f065f900982c24 \ + file://src/plugin_common/all.h;beginline=1;endline=18;md5=f56cb4ba9a3bc9ec6102e8df03215271 \ + file://COPYING.Xiph;md5=b59c1b6d7fc0fb7965f821a3d36505e3 \ + file://include/FLAC/all.h;beginline=65;endline=70;md5=64474f2b22e9e77b28d8b8b25c983a48" +DEPENDS = "libogg" + +SRC_URI = "http://downloads.xiph.org/releases/flac/${BP}.tar.xz \ + file://CVE-2017-6888.patch " + + +SRC_URI[md5sum] = "454f1bfa3f93cc708098d7890d0499bd" +SRC_URI[sha256sum] = "91cfc3ed61dc40f47f050a109b08610667d73477af6ef36dcad31c31a4a8d53f" + +CVE_PRODUCT = "libflac" + +inherit autotools gettext + +EXTRA_OECONF = "--disable-oggtest \ + --with-ogg-libraries=${STAGING_LIBDIR} \ + --with-ogg-includes=${STAGING_INCDIR} \ + --disable-xmms-plugin \ + --without-libiconv-prefix \ + ac_cv_prog_NASM="" \ + " + +EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "altivec", " --enable-altivec", " --disable-altivec", d)}" +EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "core2", " --enable-sse", "", d)}" +EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "corei7", " --enable-sse", "", d)}" + +PACKAGES += "libflac libflac++ liboggflac liboggflac++" +FILES_${PN} = "${bindir}/*" +FILES_libflac = "${libdir}/libFLAC.so.*" +FILES_libflac++ = "${libdir}/libFLAC++.so.*" +FILES_liboggflac = "${libdir}/libOggFLAC.so.*" +FILES_liboggflac++ = "${libdir}/libOggFLAC++.so.*" + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch b/external/poky/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch new file mode 100644 index 00000000..a0d215c5 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch @@ -0,0 +1,38 @@ +From 0bd8004d8dddc486d3961a5316d24e8f2645e4c8 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 9 Sep 2018 17:38:10 -0700 +Subject: [PATCH] connect has a different signature on musl + +On linux when not using glibc and using musl for C library, connect +API has a different signature, this patch fixes this so it can compile +on musl, the functionality should remain same as it is immediately +typcasted to struct sockaddr_in* type inside the function before use + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + plugins/fault_injection/socket_interposer.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/plugins/fault_injection/socket_interposer.c b/plugins/fault_injection/socket_interposer.c +index 53c1ebb..ad7adf8 100644 +--- a/plugins/fault_injection/socket_interposer.c ++++ b/plugins/fault_injection/socket_interposer.c +@@ -100,10 +100,15 @@ socket_interposer_set_callback (struct sockaddr_in *addrin, + } + + int +-connect (int socket, const struct sockaddr_in *addrin, socklen_t address_len) ++#if defined(__linux__) && !defined(__GLIBC__) ++connect (int socket, const struct sockaddr *addr, socklen_t address_len) ++#else ++connect (int socket, const struct sockaddr_in *addr, socklen_t address_len) ++#endif + { + size_t i; + int override_errno = 0; ++ struct sockaddr_in* addrin = (struct sockaddr_in*)addr; + typedef ssize_t (*real_connect_fn) (int, const struct sockaddr_in *, + socklen_t); + static real_connect_fn real_connect = 0; diff --git a/external/poky/meta/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch b/external/poky/meta/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch new file mode 100644 index 00000000..67a872cd --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch @@ -0,0 +1,35 @@ +From a1d7c582392c8bc87fa9411af77b20e011944357 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 25 Jan 2018 17:55:02 +0200 +Subject: [PATCH] gst/gstpluginloader.c: when env var is set do not fall + through to system plugin scanner + +If we set a custom GST_PLUGIN_SCANNER env var, then we probably want to use that and only that. + +Falling through to the one installed on the system is problamatic in cross-compilation +environemnts, regardless of whether one pointed to by the env var succeeded or failed. + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + gst/gstpluginloader.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c +index 430829d..3a75731 100644 +--- a/gst/gstpluginloader.c ++++ b/gst/gstpluginloader.c +@@ -471,9 +471,7 @@ gst_plugin_loader_spawn (GstPluginLoader * loader) + helper_bin = g_strdup (env); + res = gst_plugin_loader_try_helper (loader, helper_bin); + g_free (helper_bin); +- } +- +- if (!res) { ++ } else { + GST_LOG ("Trying installed plugin scanner"); + + #ifdef G_OS_WIN32 +-- +2.15.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch b/external/poky/meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch new file mode 100644 index 00000000..1b7f1150 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch @@ -0,0 +1,40 @@ +From 2b0436f9a07773fae8c74df902d7024e8bfc3512 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 24 Nov 2015 16:46:27 +0200 +Subject: [PATCH] introspection.m4: prefix pkgconfig paths with + PKG_CONFIG_SYSROOT_DIR + +We can't use our tweaked introspection.m4 from gobject-introspection tarball +because gstreamer also defines INTROSPECTION_INIT in its introspection.m4, which +is later supplied to g-ir-scanner. + +Upstream-Status: Pending [review on oe-core list] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + +--- + common/m4/introspection.m4 | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/common/m4/introspection.m4 b/common/m4/introspection.m4 +index 162be57..933f979 100644 +--- a/common/m4/introspection.m4 ++++ b/common/m4/introspection.m4 +@@ -54,14 +54,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], + INTROSPECTION_GIRDIR= + INTROSPECTION_TYPELIBDIR= + if test "x$found_introspection" = "xyes"; then +- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` +- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` +- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` ++ INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` ++ INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` ++ INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` + INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` + INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" + INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` + INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` +- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection ++ INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection + INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);" + fi + AC_SUBST(INTROSPECTION_SCANNER) diff --git a/external/poky/meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch b/external/poky/meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch new file mode 100644 index 00000000..d02d8694 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch @@ -0,0 +1,69 @@ +From d61414bc17cf2df019510c2908048c4cabf5cf09 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Tue, 27 Feb 2018 09:27:01 +0800 +Subject: [PATCH] add targets for test installation + +Targets to make sure tests can be installed and then run on +the target. + +Upstream-Status: Inappropriate [specific to oe setup] + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +--- + tests/check/Makefile.am | 27 ++++++++++++++++++++------- + 1 file changed, 20 insertions(+), 7 deletions(-) + +diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am +index 13b916d..a66786d 100644 +--- a/tests/check/Makefile.am ++++ b/tests/check/Makefile.am +@@ -8,11 +8,7 @@ REGISTRY_ENVIRONMENT = \ + GST_REGISTRY=$(CHECK_REGISTRY) + + AM_TESTS_ENVIRONMENT += \ +- GST_STATE_IGNORE_ELEMENTS="$(STATE_IGNORE_ELEMENTS)" \ +- $(REGISTRY_ENVIRONMENT) \ +- GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner \ +- GST_PLUGIN_SYSTEM_PATH_1_0= \ +- GST_PLUGIN_PATH_1_0=$(top_builddir)/plugins ++ GST_STATE_IGNORE_ELEMENTS="$(STATE_IGNORE_ELEMENTS)" + + plugindir = $(libdir)/gstreamer-@GST_API_VERSION@ + +@@ -178,6 +174,23 @@ noinst_PROGRAMS = + + TESTS = $(check_PROGRAMS) + ++install-ptest: $(TESTS) ++ @$(INSTALL) -d $(DESTDIR) ++ @for dir in `find -maxdepth 1 -type d`; do \ ++ if [ -x $$dir/.libs ]; then \ ++ $(INSTALL) -d $(DESTDIR)/$$dir; \ ++ $(INSTALL_PROGRAM) $$dir/.libs/* $(DESTDIR)/$$dir/; \ ++ fi \ ++ done ++ ++runtests: ++ @for b in $(TESTS); do \ ++ if [ -x $$b ]; then \ ++ $(AM_TESTS_ENVIRONMENT) $(SHELL) test-driver --test-name "$$b" \ ++ --log-file $$b.log --trs-file $$b.trs $$b; \ ++ fi \ ++ done ++ + noinst_HEADERS = \ + gst/capslist.h \ + gst/struct_arm.h \ +@@ -221,9 +234,9 @@ gst_gstprintf_LDADD = \ + $(LDADD) + + elements_fdsrc_CFLAGS=$(GST_OBJ_CFLAGS) $(AM_CFLAGS) \ +- -DTESTFILE=\"$(top_srcdir)/configure.ac\" ++ -DTESTFILE=\"Makefile\" + elements_filesrc_CFLAGS=$(GST_OBJ_CFLAGS) $(AM_CFLAGS) \ +- -DTESTFILE=\"$(top_srcdir)/configure.ac\" ++ -DTESTFILE=\"Makefile\" + + libs_controller_LDADD = \ + $(top_builddir)/libs/gst/controller/libgstcontroller-@GST_API_VERSION@.la \ diff --git a/external/poky/meta/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch b/external/poky/meta/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch new file mode 100644 index 00000000..d86c78d7 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch @@ -0,0 +1,47 @@ +From 7018ca1c4bf26c8317e7fcd2e7e4e648195f42ca Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@intel.com> +Date: Wed, 20 Dec 2017 13:03:03 +0000 +Subject: [PATCH] gstreamer: use a patch instead of sed to fix gtk-doc + +Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient +binaries instead of libtool wrapper or running them directly. + +Also substitute a bogus plugin scanner, as trying to run the real one is causing +issues during build on x86_64. + +Upstream-Status: Inappropriate +Signed-off-by: Ross Burton <ross.burton@intel.com> + +--- + common/gtk-doc.mak | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak +index 3f83491..e5cb0d1 100644 +--- a/common/gtk-doc.mak ++++ b/common/gtk-doc.mak +@@ -6,11 +6,11 @@ + if GTK_DOC_USE_LIBTOOL + GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +-GTKDOC_RUN = $(LIBTOOL) --mode=execute ++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper + else + GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +-GTKDOC_RUN = ++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper + endif + + # We set GPATH here; this gives us semantics for GNU make +@@ -101,6 +101,7 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) + GST_PLUGIN_PATH_1_0= \ + GST_REGISTRY_1_0=doc-registry.xml \ + $(GTKDOC_EXTRA_ENVIRONMENT) \ ++ GST_PLUGIN_SCANNER_1_0="$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy" \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" \ + CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" \ + LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ +-- +2.15.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/files/run-ptest b/external/poky/meta/recipes-multimedia/gstreamer/files/run-ptest new file mode 100644 index 00000000..473d0b67 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/files/run-ptest @@ -0,0 +1,3 @@ +#!/bin/sh + +make -k runtests diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch b/external/poky/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch new file mode 100644 index 00000000..0338bad1 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch @@ -0,0 +1,39 @@ +From 755f6dab07565aca7b6aefacad8be65de364ff75 Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <jussi.kukkonen@intel.com> +Date: Thu, 17 Aug 2017 11:07:02 +0300 +Subject: [PATCH] Make player examples installable + +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Upstream-Status: Denied [Upstream considers these code examples, for now a least] + +https://bugzilla.gnome.org/show_bug.cgi?id=777827 +--- + playback/player/gst-play/meson.build | 1 + + playback/player/gtk/meson.build | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/playback/player/gst-play/meson.build b/playback/player/gst-play/meson.build +index 719b55b..a56fe13 100644 +--- a/playback/player/gst-play/meson.build ++++ b/playback/player/gst-play/meson.build +@@ -8,5 +8,6 @@ executable('gst-play', + ['gst-play.c', + 'gst-play-kb.c', + 'gst-play-kb.h'], ++ install: true, + dependencies : [gst_dep, gstplayer_dep, m_dep]) + +diff --git a/playback/player/gtk/meson.build b/playback/player/gtk/meson.build +index 08aae4f..671a65d 100644 +--- a/playback/player/gtk/meson.build ++++ b/playback/player/gtk/meson.build +@@ -18,5 +18,6 @@ executable('gtk-play', + gtk_play_resources, + 'gtk-video-renderer.h', + 'gtk-video-renderer.c'], ++ install: true, + dependencies : [glib_dep, gobject_dep, gmodule_dep, gst_dep, gsttag_dep, gstplayer_dep, gtk_dep, x11_dep]) + +-- +2.13.3 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gst-examples/gst-player.desktop b/external/poky/meta/recipes-multimedia/gstreamer/gst-examples/gst-player.desktop new file mode 100644 index 00000000..7ddd456a --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gst-examples/gst-player.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Media Player +Comment=Basic media player +Icon=multimedia-player +TryExec=gtk-play +Exec=gtk-play +StartupNotify=true +Terminal=false +Type=Application +Categories=GTK;AudioVideo; diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gst-examples_git.bb b/external/poky/meta/recipes-multimedia/gstreamer/gst-examples_git.bb new file mode 100644 index 00000000..1d87f24f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gst-examples_git.bb @@ -0,0 +1,32 @@ +SUMMARY = "GStreamer examples (including gtk-play, gst-play)" +LICENSE = "LGPL-2.0+" +LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9" + +DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 glib-2.0-native" + +SRC_URI = "git://anongit.freedesktop.org/gstreamer/gst-examples \ + file://0001-Make-player-examples-installable.patch \ + file://gst-player.desktop" + +SRCREV = "48247c6ab6807d6ae179cf653cbdc64714d3313c" +PV = "0.0.1+git${SRCPV}" +UPSTREAM_CHECK_COMMITS = "1" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig distro_features_check + + +ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" + +do_install_append() { + install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop +} + +RDEPENDS_${PN} = "gstreamer1.0-plugins-base-playback" +RRECOMMENDS_${PN} = "gstreamer1.0-plugins-base-meta \ + gstreamer1.0-plugins-good-meta \ + gstreamer1.0-plugins-bad-meta \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}" +RPROVIDES_${PN} += "gst-player gst-player-bin" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc b/external/poky/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc new file mode 100644 index 00000000..3fdb10e4 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc @@ -0,0 +1,56 @@ +PACKAGESPLITFUNCS_prepend = " split_gstreamer10_packages " +PACKAGESPLITFUNCS_append = " set_metapkg_rdepends " + +python split_gstreamer10_packages () { + gst_libdir = d.expand('${libdir}/gstreamer-${LIBV}') + postinst = d.getVar('plugin_postinst') + glibdir = d.getVar('libdir') + + do_split_packages(d, glibdir, '^lib(.*)\.so\.*', 'lib%s', 'gstreamer %s library', extra_depends='', allow_links=True) + do_split_packages(d, gst_libdir, 'libgst(.*)\.so$', d.expand('${PN}-%s'), 'GStreamer plugin for %s', postinst=postinst, extra_depends='') + do_split_packages(d, glibdir+'/girepository-1.0', 'Gst(.*)-1.0\.typelib$', d.expand('${PN}-%s-typelib'), 'GStreamer typelib file for %s', postinst=postinst, extra_depends='') + do_split_packages(d, gst_libdir, 'libgst(.*)\.la$', d.expand('${PN}-%s-dev'), 'GStreamer plugin for %s (development files)', extra_depends='${PN}-dev') + do_split_packages(d, gst_libdir, 'libgst(.*)\.a$', d.expand('${PN}-%s-staticdev'), 'GStreamer plugin for %s (static development files)', extra_depends='${PN}-staticdev') +} + +python set_metapkg_rdepends () { + import os + + pn = d.getVar('PN') + metapkg = pn + '-meta' + d.setVar('ALLOW_EMPTY_' + metapkg, "1") + d.setVar('FILES_' + metapkg, "") + blacklist = [ pn, pn + '-locale', pn + '-dev', pn + '-dbg', pn + '-doc', pn + '-meta' ] + metapkg_rdepends = [] + packages = d.getVar('PACKAGES').split() + pkgdest = d.getVar('PKGDEST') + for pkg in packages[1:]: + if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.endswith('-dbg') and not pkg.count('locale') and not pkg.count('-staticdev'): + # See if the package is empty by looking at the contents of its PKGDEST subdirectory. + # If this subdirectory is empty, then the package is. + # Empty packages do not get added to the meta package's RDEPENDS + pkgdir = os.path.join(pkgdest, pkg) + if os.path.exists(pkgdir): + dir_contents = os.listdir(pkgdir) or [] + else: + dir_contents = [] + is_empty = len(dir_contents) == 0 + if not is_empty: + metapkg_rdepends.append(pkg) + d.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends)) + d.setVar('DESCRIPTION_' + metapkg, pn + ' meta package') +} + +# each plugin-dev depends on PN-dev, plugin-staticdev on PN-staticdev +# so we need them even when empty (like in gst-plugins-good case) +ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY_${PN}-dev = "1" +ALLOW_EMPTY_${PN}-staticdev = "1" + +PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib" + +FILES_${PN} = "" +FILES_${PN}-apps = "${bindir}" +FILES_${PN}-glib = "${datadir}/glib-2.0" + +RRECOMMENDS_${PN} += "${PN}-meta" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gst-validate_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gst-validate_1.14.4.bb new file mode 100644 index 00000000..a4b3b465 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gst-validate_1.14.4.bb @@ -0,0 +1,25 @@ +SUMMARY = "Gstreamer validation tool" +DESCRIPTION = "A Tool to test GStreamer components" +HOMEPAGE = "https://gstreamer.freedesktop.org/releases/gst-validate/1.12.3.html" +SECTION = "multimedia" + +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343" + +SRC_URI = "https://gstreamer.freedesktop.org/src/${BPN}/${BP}.tar.xz \ + file://0001-connect-has-a-different-signature-on-musl.patch \ + " +SRC_URI[md5sum] = "1f4fc5308695adfdc11d13046aa4888c" +SRC_URI[sha256sum] = "18dccca94bdc0bab3cddb07817bd280df7ab4abbec9a83b92620367a22d955c7" + +DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base" +RRECOMMENDS_${PN} = "git" + +FILES_${PN} += "${datadir}/gstreamer-1.0/* ${libdir}/gst-validate-launcher/* ${libdir}/gstreamer-1.0/*" + +inherit pkgconfig gettext autotools gobject-introspection gtk-doc upstream-version-is-even + +# With gtk-doc enabled this recipe fails to build, so forcibly disable it: +# WORKDIR/build/docs/validate/gst-validate-scan: line 117: +# WORKDIR/build/docs/validate/.libs/lt-gst-validate-scan: No such file or directory +GTKDOC_ENABLED = "False" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch new file mode 100644 index 00000000..1d99ad12 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch @@ -0,0 +1,33 @@ +From 54bba228ea52d01fd84941d97be23c03f9862b64 Mon Sep 17 00:00:00 2001 +From: Carlos Rafael Giani <dv@pseudoterminal.org> +Date: Sat, 6 Apr 2013 01:22:22 +0200 +Subject: [PATCH] Disable yasm for libav when --disable-yasm + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Shane Wang <shane.wang@intel.com> +Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> +--- + configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 22ede88..ef3c050 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -305,6 +305,12 @@ else + emblibav_configure_args="$emblibav_configure_args --enable-gpl" + fi + ++ AC_ARG_ENABLE(yasm, ++ [AC_HELP_STRING([--disable-yasm], [disable use of yasm assembler])]) ++ if test "x$enable_yasm" = "xno"; then ++ emblibav_configure_args="$emblibav_configure_args --disable-yasm" ++ fi ++ + # if we are cross-compiling, tell libav so + case $host in + *android*) +-- +1.8.2 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-configure-check-for-armv7ve-variant.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-configure-check-for-armv7ve-variant.patch new file mode 100644 index 00000000..b80d0739 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-configure-check-for-armv7ve-variant.patch @@ -0,0 +1,35 @@ +From aac5902d3c9cb35c771e760d0e487622aa2e116a Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 20 Apr 2017 10:38:18 -0700 +Subject: [PATCH] configure: check for armv7ve variant + +OE passes -mcpu and -march via cmdline and if +package tries to detect one of it own then it +should be compatible otherwise, newer gcc7+ will +error out + +Check for relevant preprocessor macro to determine +armv7ve architecture + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + gst-libs/ext/libav/configure | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gst-libs/ext/libav/configure b/gst-libs/ext/libav/configure +index 4a5e477..727818e 100755 +--- a/gst-libs/ext/libav/configure ++++ b/gst-libs/ext/libav/configure +@@ -4295,6 +4295,7 @@ elif enabled arm; then + elif check_arm_arch 6Z; then echo armv6z + elif check_arm_arch 6ZK; then echo armv6zk + elif check_arm_arch 6T2; then echo armv6t2 ++ elif check_arm_arch EXT_IDIV; then echo armv7ve + elif check_arm_arch 7; then echo armv7 + elif check_arm_arch 7A 7_A; then echo armv7-a + elif check_arm_arch 7S; then echo armv7-a +-- +2.12.2 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch new file mode 100644 index 00000000..120c0798 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch @@ -0,0 +1,36 @@ +From c1700f867f876ee33c130a8e28b688e2b1d89663 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 11 Apr 2018 17:14:55 +0800 +Subject: [PATCH] Prevent host contamination + +Remove reference to host $(libdir) from .la files. + +Upstream-Status: Inappropriate [cross-compile specific] + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + gst-libs/ext/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gst-libs/ext/Makefile.am b/gst-libs/ext/Makefile.am +index 6cdc048..a19d255 100644 +--- a/gst-libs/ext/Makefile.am ++++ b/gst-libs/ext/Makefile.am +@@ -49,7 +49,7 @@ echo " GEN $1.la" && \ + echo "library_names=''" && \ + echo "old_library='$1.a'" && \ + echo "inherited_linker_flags=''" && \ +- echo "dependency_libs=' -L$(libdir) $(if $2,$(foreach dep,$2,$(abs_builddir)/$(dep).la)) $(call find_library_la,$3 $(LIBM),$(LDFLAGS)) '" && \ ++ echo "dependency_libs=' -L $(if $2,$(foreach dep,$2,$(abs_builddir)/$(dep).la)) $(call find_library_la,$3 $(LIBM),$(LDFLAGS)) '" && \ + echo "weak_library_names=''" && \ + echo "current=" && \ + echo "age=" && \ +@@ -58,7 +58,7 @@ echo " GEN $1.la" && \ + echo "shouldnotlink=no" && \ + echo "dlopen=''" && \ + echo "dlpreopen=''" && \ +- echo "libdir='$(libdir)'") > $1.la ++ echo "libdir=''") > $1.la + endef + + libavutil.la: diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/mips64_cpu_detection.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/mips64_cpu_detection.patch new file mode 100644 index 00000000..7a0b4488 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/mips64_cpu_detection.patch @@ -0,0 +1,32 @@ +It will add -mips64r6 and -mips64r2 to cmdline which will +cause conflicts + +in OE we user mips32r2 and mips64r2 for mips arch versions +so there is no benefit of detecting it automatically by +poking at tools especially in cross env + +Fixes errors like + +linking -mnan=2008 module with previous -mnan=legacy modules +failed to merge target specific data of file + +-Khem +Upstream-Status: Inappropriate [OE-Specific] + +Index: gst-libav-1.10.1/gst-libs/ext/libav/configure +=================================================================== +--- gst-libav-1.10.1.orig/gst-libs/ext/libav/configure ++++ gst-libav-1.10.1/gst-libs/ext/libav/configure +@@ -5269,12 +5269,9 @@ elif enabled mips; then + + # Enable minimum ISA based on selected options + if enabled mips64; then +- enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6' + enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2' + disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64' + else +- enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6' +- enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5' + enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2' + disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32' + fi diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch new file mode 100644 index 00000000..36abf860 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch @@ -0,0 +1,26 @@ +Description: Workaround to build libav for i586 with gcc 4.9.2 by avoiding memset +Author: Bernhard Übelacker <bernhardu@vr-web.de> + +--- +Bug-Debian: https://bugs.debian.org/783082 +Last-Update: 2015-04-28 + +Upstream-Status: Backport [debian] + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> + +--- gst-libav-1.4.5.orig/gst-libs/ext/libav/libavcodec/h264_cabac.c ++++ gst-libav-1.4.5/gst-libs/ext/libav/libavcodec/h264_cabac.c +@@ -2020,7 +2020,11 @@ decode_intra_mb: + // In deblocking, the quantizer is 0 + h->cur_pic.qscale_table[mb_xy] = 0; + // All coeffs are present +- memset(h->non_zero_count[mb_xy], 16, 48); ++ /*memset(h->non_zero_count[mb_xy], 16, 48);*/ ++ /* avoiding this memset because it leads at least with gcc4.9.2 to error: 'asm' operand has impossible constraints */ ++ for (size_t i = 0; i < 48; i++) { ++ ( (unsigned char*)(h->non_zero_count[mb_xy]) ) [i] = 16; ++ } + h->cur_pic.mb_type[mb_xy] = mb_type; + sl->last_qscale_diff = 0; + return 0; diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.4.bb new file mode 100644 index 00000000..5c9c372f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.4.bb @@ -0,0 +1,70 @@ +SUMMARY = "Libav-based GStreamer 1.x plugin" +HOMEPAGE = "http://gstreamer.freedesktop.org/" +SECTION = "multimedia" + +LICENSE = "GPLv2+ & LGPLv2+ & ( (GPLv2+ & LGPLv2.1+) | (GPLv3+ & LGPLv3+) )" +LICENSE_FLAGS = "commercial" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ + file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \ + file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \ + file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \ + file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02" + +SRC_URI = "http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \ + file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \ + file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \ + file://mips64_cpu_detection.patch \ + file://0001-configure-check-for-armv7ve-variant.patch \ + file://0001-fix-host-contamination.patch \ + " +SRC_URI[md5sum] = "58342db11dbb201a66a62577dcf7bab5" +SRC_URI[sha256sum] = "dfd78591901df7853eab7e56a86c34a1b03635da0d3d56b89aa577f1897865da" + +S = "${WORKDIR}/gst-libav-${PV}" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base zlib bzip2 xz" + +inherit autotools pkgconfig upstream-version-is-even gtk-doc + +# CAUTION: Using the system libav is not recommended. Since the libav API is changing all the time, +# compilation errors (and other, more subtle bugs) can happen. It is usually better to rely on the +# libav copy included in the gst-libav package. +PACKAGECONFIG ??= "orc yasm" + +PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl," +PACKAGECONFIG[libav] = "--with-system-libav,,libav" +PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc" +PACKAGECONFIG[yasm] = "--enable-yasm,--disable-yasm,nasm-native" +PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind" + +GSTREAMER_1_0_DEBUG ?= "--disable-debug" + +LIBAV_EXTRA_CONFIGURE = "--with-libav-extra-configure" + +LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \ + --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \ + --ranlib='${RANLIB}' \ + ${GSTREAMER_1_0_DEBUG} \ + --cross-prefix='${HOST_PREFIX}'" + +# Disable assembly optimizations for X32, as this libav lacks the support +PACKAGECONFIG_remove_linux-gnux32 = "yasm" +LIBAV_EXTRA_CONFIGURE_COMMON_ARG_append_linux-gnux32 = " --disable-asm" + +LIBAV_EXTRA_CONFIGURE_COMMON = \ +'${LIBAV_EXTRA_CONFIGURE}="${LIBAV_EXTRA_CONFIGURE_COMMON_ARG}"' + +EXTRA_OECONF = "${LIBAV_EXTRA_CONFIGURE_COMMON}" + +FILES_${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la" +FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" + +# http://errors.yoctoproject.org/Errors/Details/20493/ +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" + +# ffmpeg/libav disables PIC on some platforms (e.g. x86-32) +INSANE_SKIP_${PN} = "textrel" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb new file mode 100644 index 00000000..016e1767 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb @@ -0,0 +1,68 @@ +SUMMARY = "Gstreamer1.0 package groups" +LICENSE = "MIT" + +# Due to use of COMBINED_FEATURES +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit packagegroup + +COMMERCIAL_PLUGINS = "${COMMERCIAL_AUDIO_PLUGINS} ${COMMERCIAL_VIDEO_PLUGINS}" +DEPENDS_UGLY="${@'gstreamer1.0-plugins-ugly' if 'ugly' in COMMERCIAL_PLUGINS.split('-') else ''}" +DEPENDS_BAD="${@'gstreamer1.0-plugins-bad' if 'bad' in COMMERCIAL_PLUGINS.split('-') else ''}" +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good ${DEPENDS_UGLY} ${DEPENDS_BAD}" + +PACKAGES = "\ + gstreamer1.0-meta-base \ + gstreamer1.0-meta-x11-base \ + gstreamer1.0-meta-audio \ + gstreamer1.0-meta-debug \ + gstreamer1.0-meta-video" + +ALLOW_EMPTY_gstreamer1.0-meta-base = "1" +ALLOW_EMPTY_gstreamer1.0-meta-x11-base = "1" +ALLOW_EMPTY_gstreamer1.0-meta-audio = "1" +ALLOW_EMPTY_gstreamer1.0-meta-debug = "1" +ALLOW_EMPTY_gstreamer1.0-meta-video = "1" + +RDEPENDS_gstreamer1.0-meta-base = "\ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gstreamer1.0-meta-x11-base', '', d)} \ + gstreamer1.0 \ + gstreamer1.0-plugins-base-playback \ + gstreamer1.0-plugins-base-gio \ + ${@bb.utils.contains('COMBINED_FEATURES', 'alsa', 'gstreamer1.0-plugins-base-alsa', '',d)} \ + gstreamer1.0-plugins-base-volume \ + gstreamer1.0-plugins-base-audioconvert \ + gstreamer1.0-plugins-base-audioresample \ + gstreamer1.0-plugins-base-typefindfunctions \ + gstreamer1.0-plugins-base-videoscale \ + gstreamer1.0-plugins-base-videoconvert \ + gstreamer1.0-plugins-good-autodetect \ + gstreamer1.0-plugins-good-soup" + +RRECOMMENDS_gstreamer1.0-meta-x11-base = "\ + gstreamer1.0-plugins-base-ximagesink \ + gstreamer1.0-plugins-base-xvimagesink" + +RDEPENDS_gstreamer1.0-meta-audio = "\ + gstreamer1.0-meta-base \ + gstreamer1.0-plugins-base-vorbis \ + gstreamer1.0-plugins-base-ogg \ + gstreamer1.0-plugins-good-wavparse \ + gstreamer1.0-plugins-good-flac \ + ${COMMERCIAL_AUDIO_PLUGINS}" + +RDEPENDS_gstreamer1.0-meta-debug = "\ + gstreamer1.0-meta-base \ + gstreamer1.0-plugins-good-debug \ + gstreamer1.0-plugins-base-audiotestsrc \ + gstreamer1.0-plugins-base-videotestsrc" + +RDEPENDS_gstreamer1.0-meta-video = "\ + gstreamer1.0-meta-base \ + gstreamer1.0-plugins-good-avi \ + gstreamer1.0-plugins-good-matroska \ + gstreamer1.0-plugins-base-theora \ + ${COMMERCIAL_VIDEO_PLUGINS}" + +RRECOMMENDS_gstreamer1.0-meta-video = "\ + gstreamer1.0-meta-audio" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.14.4.bb new file mode 100644 index 00000000..39ca1e38 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.14.4.bb @@ -0,0 +1,57 @@ +SUMMARY = "OpenMAX IL plugins for GStreamer" +HOMEPAGE = "http://gstreamer.freedesktop.org/" +SECTION = "multimedia" + +LICENSE = "LGPLv2.1" +LICENSE_FLAGS = "commercial" +LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ + file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f" + +SRC_URI = "http://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz" + +SRC_URI[md5sum] = "81e67ea03be607b7c548ce911598d754" +SRC_URI[sha256sum] = "969870e75c1f75c96f8783530e2c2932fc3afbfd976eb0c466f51dae268ea3d4" + +S = "${WORKDIR}/gst-omx-${PV}" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" + +inherit autotools pkgconfig gettext gtk-doc upstream-version-is-even + +acpaths = "-I ${S}/common/m4 -I ${S}/m4" + +GSTREAMER_1_0_OMX_TARGET ?= "bellagio" +GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0" + +EXTRA_OECONF += "--disable-valgrind --with-omx-target=${GSTREAMER_1_0_OMX_TARGET}" + +python __anonymous () { + omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET") + if omx_target in ['generic', 'bellagio']: + # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,# + # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros); + # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this + d.appendVar("CFLAGS", " -I${S}/omx/openmax") + elif omx_target == "rpi": + # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific + d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH")) +} + +delete_pkg_m4_file() { + # Delete m4 files which we provide patched versions of but will be ignored + # if these exist + rm -f "${S}/common/m4/pkg.m4" + rm -f "${S}/common/m4/gtk-doc.m4" +} +do_configure[prefuncs] += "delete_pkg_m4_file" + +set_omx_core_name() { + sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf" +} +do_install[postfuncs] += " set_omx_core_name " + +FILES_${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la" +FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" + +RDEPENDS_${PN} = "libomxil" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch new file mode 100644 index 00000000..05b991a8 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch @@ -0,0 +1,43 @@ +From 7d8e8b8bcce34d01fc7ad7285b4eb17ad8949399 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 11 Apr 2018 11:06:39 +0800 +Subject: [PATCH] Makefile.am: don't hardcode libtool name when running + introspection tools + +Upstream-Status: Pending [review on oe-core list] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +Signed-off-by: Maxin B. John <maxin.john@intel.com> +--- + gst-libs/gst/insertbin/Makefile.am | 2 +- + gst-libs/gst/mpegts/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gst-libs/gst/insertbin/Makefile.am b/gst-libs/gst/insertbin/Makefile.am +index 1f8ea30..4b98ef6 100644 +--- a/gst-libs/gst/insertbin/Makefile.am ++++ b/gst-libs/gst/insertbin/Makefile.am +@@ -45,7 +45,7 @@ GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GS + --library=libgstinsertbin-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-base-@GST_API_VERSION@ \ + --pkg-export gstreamer-insertbin-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/mpegts/Makefile.am b/gst-libs/gst/mpegts/Makefile.am +index f264e33..9934a4d 100644 +--- a/gst-libs/gst/mpegts/Makefile.am ++++ b/gst-libs/gst/mpegts/Makefile.am +@@ -82,7 +82,7 @@ GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_ + --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \ + --library=libgstmpegts-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-video-@GST_API_VERSION@ \ + --pkg-export gstreamer-mpegts-@GST_API_VERSION@ \ +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/avoid-including-sys-poll.h-directly.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/avoid-including-sys-poll.h-directly.patch new file mode 100644 index 00000000..357fd780 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/avoid-including-sys-poll.h-directly.patch @@ -0,0 +1,30 @@ +From 72561a0fca562d03567ace7b4cfc94992cd6525c Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Wed, 3 Feb 2016 18:05:41 -0800 +Subject: [PATCH] avoid including <sys/poll.h> directly + +musl libc generates warnings if <sys/poll.h> is included directly. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> +--- + sys/dvb/gstdvbsrc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c +index b93255f..49f145a 100644 +--- a/sys/dvb/gstdvbsrc.c ++++ b/sys/dvb/gstdvbsrc.c +@@ -93,7 +93,7 @@ + #include <gst/gst.h> + #include <gst/glib-compat-private.h> + #include <sys/ioctl.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <fcntl.h> + #include <errno.h> + #include <stdio.h> +-- +1.9.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch new file mode 100644 index 00000000..ad863298 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch @@ -0,0 +1,61 @@ +From f59c5269f92d59a5296cbfeeb682d42095cd88ad Mon Sep 17 00:00:00 2001 +From: Wenzong Fan <wenzong.fan@windriver.com> +Date: Thu, 18 Sep 2014 02:24:07 -0400 +Subject: [PATCH] gstreamer1.0-plugins-bad: allow to disable libssh2 + +libssh2 is automatically linked to if present, this undetermined +dependency may cause build errors like: + + .../x86_64-poky-linux/4.9.0/ld: cannot find -lssh2 + +libssh2 isn't an oe-core recipe, so allow to disable it from +configure. + +Upstream-Status: Pending + +Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> +--- + configure.ac | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +Index: gst-plugins-bad-1.12.3/configure.ac +=================================================================== +--- gst-plugins-bad-1.12.3.orig/configure.ac ++++ gst-plugins-bad-1.12.3/configure.ac +@@ -2139,6 +2139,15 @@ AG_GST_CHECK_FEATURE(CHROMAPRINT, [chrom + ]) + + dnl *** Curl *** ++AC_ARG_ENABLE([libssh2], ++ [ --enable-libssh2 enable LIBSSH2 support @<:@default=auto@:>@], ++ [case "${enableval}" in ++ yes) NEED_SSH2=yes ;; ++ no) NEED_SSH2=no ;; ++ auto) NEED_SSH2=auto ;; ++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-libssh2]) ;; ++ esac],[NEED_SSH2=auto]) ++ + translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true) + AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [ + PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [ +@@ -2161,12 +2170,14 @@ AG_GST_CHECK_FEATURE(CURL, [Curl plugin] + ]) + AC_SUBST(CURL_CFLAGS) + AC_SUBST(CURL_LIBS) +- PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [ +- HAVE_SSH2="yes" +- AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available]) +- ], [ +- HAVE_SSH2="no" +- ]) ++ if test "x$NEED_SSH2" != "xno"; then ++ PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [ ++ HAVE_SSH2="yes" ++ AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available]) ++ ], [ ++ HAVE_SSH2="no" ++ ]) ++ fi + AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes") + AC_SUBST(SSH2_CFLAGS) + AC_SUBST(SSH2_LIBS) diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/ensure-valid-sentinels-for-gst_structure_get-etc.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/ensure-valid-sentinels-for-gst_structure_get-etc.patch new file mode 100644 index 00000000..20c9ffcd --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/ensure-valid-sentinels-for-gst_structure_get-etc.patch @@ -0,0 +1,85 @@ +From 2262ba4b686d5cc0d3e894707fe1d31619a3a8f1 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Tue, 9 Feb 2016 14:00:00 -0800 +Subject: [PATCH] ensure valid sentinals for gst_structure_get() etc + +For GStreamer functions declared with G_GNUC_NULL_TERMINATED, +ie __attribute__((__sentinel__)), gcc will generate a warning if the +last parameter passed to the function is not NULL (where a valid NULL +in this context is defined as zero with any pointer type). + +The C callers to such functions within gst-plugins-bad use the C NULL +definition (ie ((void*)0)), which is a valid sentinel. + +However the C++ NULL definition (ie 0L), is not a valid sentinel +without an explicit cast to a pointer type. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> +--- + sys/decklink/gstdecklink.cpp | 10 +++++----- + sys/decklink/gstdecklinkaudiosrc.cpp | 2 +- + sys/decklink/gstdecklinkvideosink.cpp | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) + +Index: gst-plugins-bad-1.10.2/sys/decklink/gstdecklink.cpp +=================================================================== +--- gst-plugins-bad-1.10.2.orig/sys/decklink/gstdecklink.cpp ++++ gst-plugins-bad-1.10.2/sys/decklink/gstdecklink.cpp +@@ -476,7 +476,7 @@ gst_decklink_mode_get_structure (GstDeck + "pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d, + "interlace-mode", G_TYPE_STRING, + mode->interlaced ? "interleaved" : "progressive", +- "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL); ++ "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, (void*)NULL); + + if (input && mode->interlaced) { + if (mode->tff) +@@ -489,16 +489,16 @@ gst_decklink_mode_get_structure (GstDeck + case bmdFormat8BitYUV: /* '2vuy' */ + gst_structure_set (s, "format", G_TYPE_STRING, "UYVY", + "colorimetry", G_TYPE_STRING, mode->colorimetry, +- "chroma-site", G_TYPE_STRING, "mpeg2", NULL); ++ "chroma-site", G_TYPE_STRING, "mpeg2", (void*)NULL); + break; + case bmdFormat10BitYUV: /* 'v210' */ +- gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL); ++ gst_structure_set (s, "format", G_TYPE_STRING, "v210", (void*)NULL); + break; + case bmdFormat8BitARGB: /* 'ARGB' */ +- gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL); ++ gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", (void*)NULL); + break; + case bmdFormat8BitBGRA: /* 'BGRA' */ +- gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL); ++ gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", (void*)NULL); + break; + case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */ + case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */ +Index: gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkaudiosrc.cpp +=================================================================== +--- gst-plugins-bad-1.10.2.orig/sys/decklink/gstdecklinkaudiosrc.cpp ++++ gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkaudiosrc.cpp +@@ -322,7 +322,7 @@ gst_decklink_audio_src_set_caps (GstBase + g_mutex_unlock (&self->input->lock); + + if (videosrc) { +- g_object_get (videosrc, "connection", &vconn, NULL); ++ g_object_get (videosrc, "connection", &vconn, (void *) NULL); + gst_object_unref (videosrc); + + switch (vconn) { +Index: gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkvideosink.cpp +=================================================================== +--- gst-plugins-bad-1.10.2.orig/sys/decklink/gstdecklinkvideosink.cpp ++++ gst-plugins-bad-1.10.2/sys/decklink/gstdecklinkvideosink.cpp +@@ -163,7 +163,7 @@ reset_framerate (GstCapsFeatures * featu + gpointer user_data) + { + gst_structure_set (structure, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, +- G_MAXINT, 1, NULL); ++ G_MAXINT, 1, (void *) NULL); + + return TRUE; + } diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch new file mode 100644 index 00000000..5ce57714 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch @@ -0,0 +1,28 @@ +From a67781000e82bd9ae3813da29401e8c0c852328a Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Tue, 26 Jan 2016 15:16:01 -0800 +Subject: [PATCH] fix maybe-uninitialized warnings when compiling with -Os + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> +--- + gst-libs/gst/codecparsers/gstvc1parser.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c +index fd16ee0..ddb890c 100644 +--- a/gst-libs/gst/codecparsers/gstvc1parser.c ++++ b/gst-libs/gst/codecparsers/gstvc1parser.c +@@ -1729,7 +1729,7 @@ gst_vc1_parse_sequence_layer (const guint8 * data, gsize size, + GstVC1SeqLayer * seqlayer) + { + guint32 tmp; +- guint8 tmp8; ++ guint8 tmp8 = 0; + guint8 structA[8] = { 0, }; + guint8 structB[12] = { 0, }; + GstBitReader br; +-- +1.9.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.4.bb new file mode 100644 index 00000000..8c7c235f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.4.bb @@ -0,0 +1,148 @@ +require gstreamer1.0-plugins.inc + +SRC_URI = " \ + http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \ + file://configure-allow-to-disable-libssh2.patch \ + file://fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch \ + file://avoid-including-sys-poll.h-directly.patch \ + file://ensure-valid-sentinels-for-gst_structure_get-etc.patch \ + file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ + file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \ +" +SRC_URI[md5sum] = "5d20a91d027708abcf924f6c1279dd25" +SRC_URI[sha256sum] = "910b4e0e2e897e8b6d06767af1779d70057c309f67292f485ff988d087aa0de5" + +S = "${WORKDIR}/gst-plugins-bad-${PV}" + +LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ + file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 " + +DEPENDS += "gstreamer1.0-plugins-base jpeg" + +inherit gettext bluetooth + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \ + bz2 curl dash dtls hls rsvg sbc smoothstreaming sndfile ttml uvch264 webp \ +" + +# the gl packageconfig enables OpenGL elements that haven't been ported +# to -base yet. They depend on the gstgl library in -base, so we do +# not add GL dependencies here, since these are taken care of in -base. + +PACKAGECONFIG[assrender] = "--enable-assrender,--disable-assrender,libass" +PACKAGECONFIG[bluez] = "--enable-bluez,--disable-bluez,${BLUEZ}" +PACKAGECONFIG[bz2] = "--enable-bz2,--disable-bz2,bzip2" +PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl" +PACKAGECONFIG[dash] = "--enable-dash,--disable-dash,libxml2" +PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394" +PACKAGECONFIG[directfb] = "--enable-directfb,--disable-directfb,directfb" +PACKAGECONFIG[dtls] = "--enable-dtls,--disable-dtls,openssl" +PACKAGECONFIG[faac] = "--enable-faac,--disable-faac,faac" +PACKAGECONFIG[faad] = "--enable-faad,--disable-faad,faad2" +PACKAGECONFIG[flite] = "--enable-flite,--disable-flite,flite-alsa" +PACKAGECONFIG[fluidsynth] = "--enable-fluidsynth,--disable-fluidsynth,fluidsynth" +PACKAGECONFIG[hls] = "--enable-hls --with-hls-crypto=nettle,--disable-hls,nettle" +PACKAGECONFIG[gl] = "--enable-gl,--disable-gl," +PACKAGECONFIG[kms] = "--enable-kms,--disable-kms,libdrm" +PACKAGECONFIG[libde265] = "--enable-libde265,--disable-libde265,libde265" +PACKAGECONFIG[libmms] = "--enable-libmms,--disable-libmms,libmms" +PACKAGECONFIG[libssh2] = "--enable-libssh2,--disable-libssh2,libssh2" +PACKAGECONFIG[lcms2] = "--enable-lcms2,--disable-lcms2,lcms" +PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug" +PACKAGECONFIG[msdk] = "--enable-msdk,--disable-msdk,intel-mediasdk" +PACKAGECONFIG[neon] = "--enable-neon,--disable-neon,neon" +PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft" +PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv" +PACKAGECONFIG[openh264] = "--enable-openh264,--disable-openh264,openh264" +PACKAGECONFIG[openjpeg] = "--enable-openjpeg,--disable-openjpeg,openjpeg" +PACKAGECONFIG[openmpt] = "--enable-openmpt,--disable-openmpt,libopenmpt" +# the opus encoder/decoder elements are now in the -base package, +# but the opus parser remains in -bad +PACKAGECONFIG[opusparse] = "--enable-opus,--disable-opus,libopus" +PACKAGECONFIG[resindvd] = "--enable-resindvd,--disable-resindvd,libdvdread libdvdnav" +PACKAGECONFIG[rsvg] = "--enable-rsvg,--disable-rsvg,librsvg" +PACKAGECONFIG[rtmp] = "--enable-rtmp,--disable-rtmp,rtmpdump" +PACKAGECONFIG[sbc] = "--enable-sbc,--disable-sbc,sbc" +PACKAGECONFIG[smoothstreaming] = "--enable-smoothstreaming,--disable-smoothstreaming,libxml2" +PACKAGECONFIG[sndfile] = "--enable-sndfile,--disable-sndfile,libsndfile1" +PACKAGECONFIG[srtp] = "--enable-srtp,--disable-srtp,libsrtp" +PACKAGECONFIG[tinyalsa] = "--enable-tinyalsa,--disable-tinyalsa,tinyalsa" +PACKAGECONFIG[ttml] = "--enable-ttml,--disable-ttml,libxml2 pango cairo" +PACKAGECONFIG[uvch264] = "--enable-uvch264,--disable-uvch264,libusb1 libgudev" +PACKAGECONFIG[voaacenc] = "--enable-voaacenc,--disable-voaacenc,vo-aacenc" +PACKAGECONFIG[voamrwbenc] = "--enable-voamrwbenc,--disable-voamrwbenc,vo-amrwbenc" +PACKAGECONFIG[vulkan] = "--enable-vulkan,--disable-vulkan,vulkan" +PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols libdrm" +PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp" +PACKAGECONFIG[webrtc] = "--enable-webrtc,--disable-webrtc,libnice" +PACKAGECONFIG[webrtcdsp] = "--enable-webrtcdsp,--disable-webrtcdsp,webrtc-audio-processing" + +# these plugins have no corresponding library in OE-core or meta-openembedded: +# openni2 winks direct3d directsound winscreencap acm apple_media iqa +# android_media avc bs2b chromaprint daala dts fdkaac gme gsm kate ladspa +# lv2 mpeg2enc mplex musepack nvenc ofa opensles soundtouch +# spandsp spc teletextdec vdpau wasapi x265 zbar + +EXTRA_OECONF += " \ + --enable-decklink \ + --enable-dvb \ + --enable-fbdev \ + --enable-ipcpipeline \ + --enable-netsim \ + --enable-shm \ + --enable-vcd \ + --disable-acm \ + --disable-android_media \ + --disable-aom \ + --disable-apple_media \ + --disable-avc \ + --disable-bs2b \ + --disable-chromaprint \ + --disable-daala \ + --disable-direct3d \ + --disable-directsound \ + --disable-dts \ + --disable-fdk_aac \ + --disable-gme \ + --disable-gsm \ + --disable-iqa \ + --disable-kate \ + --disable-ladspa \ + --disable-lv2 \ + --disable-mpeg2enc \ + --disable-mplex \ + --disable-musepack \ + --disable-nvenc \ + --disable-ofa \ + --disable-openexr \ + --disable-openni2 \ + --disable-opensles \ + --disable-soundtouch \ + --disable-spandsp \ + --disable-spc \ + --disable-srt \ + --disable-teletextdec \ + --disable-vdpau \ + --disable-wasapi \ + --disable-wildmidi \ + --disable-winks \ + --disable-winscreencap \ + --disable-x265 \ + --disable-zbar \ + ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--disable-yadif", "", d)} \ +" + +export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}" + +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" + +FILES_${PN}-freeverb += "${datadir}/gstreamer-${LIBV}/presets/GstFreeverb.prs" +FILES_${PN}-opencv += "${datadir}/gst-plugins-bad/${LIBV}/opencv*" +FILES_${PN}-voamrwbenc += "${datadir}/gstreamer-${LIBV}/presets/GstVoAmrwbEnc.prs" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch new file mode 100644 index 00000000..bcada34c --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch @@ -0,0 +1,167 @@ +From 7022b87353a37b78bae7cf0106a4e47913bb5c97 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 5 Apr 2018 10:15:08 +0800 +Subject: [PATCH] Makefile.am: don't hardcode libtool name when running + introspection tools + +Upstream-Status: Pending [review on oe-core maillist] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +--- + gst-libs/gst/allocators/Makefile.am | 2 +- + gst-libs/gst/app/Makefile.am | 2 +- + gst-libs/gst/audio/Makefile.am | 2 +- + gst-libs/gst/gl/Makefile.am | 2 +- + gst-libs/gst/pbutils/Makefile.am | 2 +- + gst-libs/gst/riff/Makefile.am | 2 +- + gst-libs/gst/rtp/Makefile.am | 2 +- + gst-libs/gst/rtsp/Makefile.am | 2 +- + gst-libs/gst/sdp/Makefile.am | 2 +- + gst-libs/gst/tag/Makefile.am | 2 +- + gst-libs/gst/video/Makefile.am | 2 +- + 11 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am +index 1957d28..1ecc950 100644 +--- a/gst-libs/gst/allocators/Makefile.am ++++ b/gst-libs/gst/allocators/Makefile.am +@@ -42,7 +42,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@ + --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + --library=libgstallocators-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg-export gstreamer-allocators-@GST_API_VERSION@ \ + --output $@ \ +diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am +index 52f6ad3..5bfd606 100644 +--- a/gst-libs/gst/app/Makefile.am ++++ b/gst-libs/gst/app/Makefile.am +@@ -56,7 +56,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO + --library=libgstapp-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-base-@GST_API_VERSION@ \ + --pkg-export gstreamer-app-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am +index 2922245..7fb65f2 100644 +--- a/gst-libs/gst/audio/Makefile.am ++++ b/gst-libs/gst/audio/Makefile.am +@@ -184,7 +184,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ + --include=GstTag-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-base-@GST_API_VERSION@ \ + --pkg-export gstreamer-audio-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am +index 4e77e8c..3276d7f 100644 +--- a/gst-libs/gst/gl/Makefile.am ++++ b/gst-libs/gst/gl/Makefile.am +@@ -193,7 +193,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ + --include=GstVideo-@GST_API_VERSION@ \ +- --libtool="${LIBTOOL}" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-base-@GST_API_VERSION@ \ + --pkg gstreamer-video-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am +index ae51993..35a6e44 100644 +--- a/gst-libs/gst/pbutils/Makefile.am ++++ b/gst-libs/gst/pbutils/Makefile.am +@@ -103,7 +103,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP + --include=GstTag-@GST_API_VERSION@ \ + --include=GstVideo-@GST_API_VERSION@ \ + --include=GstAudio-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-tag-@GST_API_VERSION@ \ + --pkg gstreamer-video-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am +index fb53f06..e66ef4f 100644 +--- a/gst-libs/gst/riff/Makefile.am ++++ b/gst-libs/gst/riff/Makefile.am +@@ -49,7 +49,7 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) + # --include=GstAudio-@GST_API_VERSION@ \ + # --include=GstTag-@GST_API_VERSION@ \ + # --include=Gst-@GST_API_VERSION@ \ +-# --libtool="$(top_builddir)/libtool" \ ++# --libtool="$(LIBTOOL)" \ + # --pkg gstreamer-@GST_API_VERSION@ \ + # --pkg gstreamer-tag-@GST_API_VERSION@ \ + # --pkg gstreamer-audio-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am +index a6f971d..77ebeeb 100644 +--- a/gst-libs/gst/rtp/Makefile.am ++++ b/gst-libs/gst/rtp/Makefile.am +@@ -69,7 +69,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO + --library=libgstrtp-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-base-@GST_API_VERSION@ \ + --pkg-export gstreamer-rtp-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am +index ceb07f4..db9d0fd 100644 +--- a/gst-libs/gst/rtsp/Makefile.am ++++ b/gst-libs/gst/rtsp/Makefile.am +@@ -76,7 +76,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS + --include=Gio-2.0 \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstSdp-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gio-2.0 \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-sdp-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am +index e197e9b..6e05cc7 100644 +--- a/gst-libs/gst/sdp/Makefile.am ++++ b/gst-libs/gst/sdp/Makefile.am +@@ -34,7 +34,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO + --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + --library=libgstsdp-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg-export gstreamer-sdp-@GST_API_VERSION@ \ + --output $@ \ +diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am +index 0247c33..c86515b 100644 +--- a/gst-libs/gst/tag/Makefile.am ++++ b/gst-libs/gst/tag/Makefile.am +@@ -66,7 +66,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO + --library=libgsttag-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-base-@GST_API_VERSION@ \ + --pkg-export gstreamer-tag-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am +index 9fc1ccf..0f8455f 100644 +--- a/gst-libs/gst/video/Makefile.am ++++ b/gst-libs/gst/video/Makefile.am +@@ -124,7 +124,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE + --library=libgstvideo-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-base-@GST_API_VERSION@ \ + --pkg-export gstreamer-video-@GST_API_VERSION@ \ diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch new file mode 100644 index 00000000..251dc172 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch @@ -0,0 +1,29 @@ +From 61a672e79c8cb1aeeeda4c968997c577ac73a8f3 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Fri, 12 May 2017 16:47:12 +0300 +Subject: [PATCH] gstreamer-gl.pc.in: don't append GL_CFLAGS to CFLAGS + +Dependencies' include directories should not be added in this way; +it causes problems when cross-compiling in sysroot environments. + +Upstream-Status: Pending + +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +Signed-off-by: Maxin B. John <maxin.john@intel.com> +--- + pkgconfig/gstreamer-gl.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pkgconfig/gstreamer-gl.pc.in b/pkgconfig/gstreamer-gl.pc.in +index dc672a9..8c290ba 100644 +--- a/pkgconfig/gstreamer-gl.pc.in ++++ b/pkgconfig/gstreamer-gl.pc.in +@@ -13,4 +13,4 @@ Version: @VERSION@ + Requires: gstreamer-video-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@ + + Libs: -L${libdir} -lgstgl-@GST_API_VERSION@ +-Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include @GL_CFLAGS@ ++Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch new file mode 100644 index 00000000..2e1190ba --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch @@ -0,0 +1,302 @@ +From 9601fc0cd6751a1affdc8717217b95931db31d7f Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 5 Apr 2018 10:26:25 +0800 +Subject: [PATCH] Makefile.am: prefix calls to pkg-config with + PKG_CONFIG_SYSROOT_DIR + +Upstream-Status: Pending [review on oe-core maillist] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +--- + gst-libs/gst/allocators/Makefile.am | 4 ++-- + gst-libs/gst/app/Makefile.am | 4 ++-- + gst-libs/gst/audio/Makefile.am | 12 ++++++------ + gst-libs/gst/gl/Makefile.am | 8 ++++---- + gst-libs/gst/pbutils/Makefile.am | 12 ++++++------ + gst-libs/gst/riff/Makefile.am | 8 ++++---- + gst-libs/gst/rtp/Makefile.am | 8 ++++---- + gst-libs/gst/rtsp/Makefile.am | 4 ++-- + gst-libs/gst/sdp/Makefile.am | 4 ++-- + gst-libs/gst/tag/Makefile.am | 8 ++++---- + gst-libs/gst/video/Makefile.am | 8 ++++---- + 11 files changed, 40 insertions(+), 40 deletions(-) + +diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am +index 1ecc950..d6417ac 100644 +--- a/gst-libs/gst/allocators/Makefile.am ++++ b/gst-libs/gst/allocators/Makefile.am +@@ -39,7 +39,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@ + --c-include "gst/allocators/allocators.h" \ + -I$(top_srcdir)/gst-libs \ + -I$(top_builddir)/gst-libs \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + --library=libgstallocators-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --libtool="$(LIBTOOL)" \ +@@ -63,7 +63,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + $(INTROSPECTION_COMPILER) \ + --includedir=$(srcdir) \ + --includedir=$(builddir) \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am +index 5bfd606..6441674 100644 +--- a/gst-libs/gst/app/Makefile.am ++++ b/gst-libs/gst/app/Makefile.am +@@ -51,8 +51,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO + --c-include "gst/app/app.h" \ + -I$(top_srcdir)/gst-libs \ + -I$(top_builddir)/gst-libs \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --library=libgstapp-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am +index 7fb65f2..5379f79 100644 +--- a/gst-libs/gst/audio/Makefile.am ++++ b/gst-libs/gst/audio/Makefile.am +@@ -174,12 +174,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE + -I$(top_srcdir)/gst-libs \ + -I$(top_builddir)/gst-libs \ + --c-include "gst/audio/audio.h" \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --add-include-path="$(top_builddir)/gst-libs/gst/tag/" \ + --library=libgstaudio-@GST_API_VERSION@.la \ +- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \ +- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \ ++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \ ++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \ + --library-path="$(top_builddir)/gst-libs/gst/tag/" \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +@@ -208,8 +208,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + --includedir=$(srcdir) \ + --includedir=$(builddir) \ + --includedir="$(top_builddir)/gst-libs/gst/tag/" \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am +index 3276d7f..0cdfe26 100644 +--- a/gst-libs/gst/gl/Makefile.am ++++ b/gst-libs/gst/gl/Makefile.am +@@ -186,9 +186,9 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@ + $(GST_PLUGINS_BASE_CFLAGS) \ + $(GL_CFLAGS) \ + --add-include-path="$(top_builddir)/gst-libs/gst/video/" \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --library-path="$(top_builddir)/gst-libs/gst/video/" \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --library=libgstgl-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +@@ -218,8 +218,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + --includedir=$(srcdir) \ + --includedir=$(builddir) \ + --includedir="$(top_builddir)/gst-libs/gst/video/" \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am +index 35a6e44..49d6894 100644 +--- a/gst-libs/gst/pbutils/Makefile.am ++++ b/gst-libs/gst/pbutils/Makefile.am +@@ -88,14 +88,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP + --c-include "gst/pbutils/pbutils.h" \ + -I$(top_srcdir)/gst-libs \ + -I$(top_builddir)/gst-libs \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --add-include-path="$(top_builddir)/gst-libs/gst/tag/" \ + --add-include-path="$(top_builddir)/gst-libs/gst/video/" \ + --add-include-path="$(top_builddir)/gst-libs/gst/audio/" \ + --library=libgstpbutils-@GST_API_VERSION@.la \ +- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \ +- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \ ++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \ ++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \ + --library-path="$(top_builddir)/gst-libs/gst/tag/" \ + --library-path="$(top_builddir)/gst-libs/gst/video/" \ + --library-path="$(top_builddir)/gst-libs/gst/audio/" \ +@@ -128,8 +128,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + $(INTROSPECTION_COMPILER) \ + --includedir=$(srcdir) \ + --includedir=$(builddir) \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --includedir="$(top_builddir)/gst-libs/gst/tag/" \ + --includedir="$(top_builddir)/gst-libs/gst/video/" \ + --includedir="$(top_builddir)/gst-libs/gst/audio/" \ +diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am +index e66ef4f..c8c588a 100644 +--- a/gst-libs/gst/riff/Makefile.am ++++ b/gst-libs/gst/riff/Makefile.am +@@ -43,8 +43,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) + # --c-include "gst/riff/riff.h" \ + # --add-include-path=$(builddir)/../tag \ + # --add-include-path=$(builddir)/../audio \ +-# --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +-# --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++# --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++# --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + # --library=libgstriff-@GST_API_VERSION@.la \ + # --include=GstAudio-@GST_API_VERSION@ \ + # --include=GstTag-@GST_API_VERSION@ \ +@@ -75,8 +75,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) + # --includedir=$(builddir) \ + # --includedir=$(builddir)/../tag \ + # --includedir=$(builddir)/../audio \ +-# --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +-# --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++# --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++# --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + # $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + # + #CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am +index 77ebeeb..9aee788 100644 +--- a/gst-libs/gst/rtp/Makefile.am ++++ b/gst-libs/gst/rtp/Makefile.am +@@ -64,8 +64,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO + --c-include "gst/rtp/rtp.h" \ + -I$(top_builddir)/gst-libs \ + -I$(top_srcdir)/gst-libs \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --library=libgstrtp-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +@@ -92,8 +92,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + $(INTROSPECTION_COMPILER) \ + --includedir=$(srcdir) \ + --includedir=$(builddir) \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am +index db9d0fd..79027cb 100644 +--- a/gst-libs/gst/rtsp/Makefile.am ++++ b/gst-libs/gst/rtsp/Makefile.am +@@ -71,7 +71,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS + -I$(top_builddir)/gst-libs \ + -I$(top_srcdir)/gst-libs \ + --add-include-path=$(builddir)/../sdp \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + --library=libgstrtsp-@GST_API_VERSION@.la \ + --include=Gio-2.0 \ + --include=Gst-@GST_API_VERSION@ \ +@@ -101,7 +101,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + --includedir=$(srcdir) \ + --includedir=$(builddir) \ + --includedir=$(builddir)/../sdp \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am +index 6e05cc7..c7cf514 100644 +--- a/gst-libs/gst/sdp/Makefile.am ++++ b/gst-libs/gst/sdp/Makefile.am +@@ -31,7 +31,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO + --warn-all \ + --c-include "gst/sdp/sdp.h" \ + -I$(top_srcdir)/gst-libs \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + --library=libgstsdp-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --libtool="$(LIBTOOL)" \ +@@ -55,7 +55,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + $(INTROSPECTION_COMPILER) \ + --includedir=$(srcdir) \ + --includedir=$(builddir) \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am +index c86515b..363e6d2 100644 +--- a/gst-libs/gst/tag/Makefile.am ++++ b/gst-libs/gst/tag/Makefile.am +@@ -61,8 +61,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO + --c-include "gst/tag/tag.h" \ + -I$(top_srcdir)/gst-libs \ + -I$(top_builddir)/gst-libs \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --library=libgsttag-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +@@ -89,8 +89,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + $(INTROSPECTION_COMPILER) \ + --includedir=$(srcdir) \ + --includedir=$(builddir) \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA) +diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am +index 0f8455f..8c9955c 100644 +--- a/gst-libs/gst/video/Makefile.am ++++ b/gst-libs/gst/video/Makefile.am +@@ -119,8 +119,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE + --c-include "gst/video/video.h" \ + -I$(top_srcdir)/gst-libs \ + -I$(top_builddir)/gst-libs \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + --library=libgstvideo-@GST_API_VERSION@.la \ + --include=Gst-@GST_API_VERSION@ \ + --include=GstBase-@GST_API_VERSION@ \ +@@ -147,8 +147,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) + $(INTROSPECTION_COMPILER) \ + --includedir=$(srcdir) \ + --includedir=$(builddir) \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ +- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ ++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \ + $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F) + + CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA) diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch new file mode 100644 index 00000000..98ffdb1c --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch @@ -0,0 +1,26 @@ +From b9765efb1696e3e2e79f2955f759be199fe34882 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 26 Oct 2015 17:29:37 +0200 +Subject: [PATCH] riff: add missing include directories when calling + introspection scanner + +Upstream-Status: Pending [review on oe-core maillist] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + +--- + gst-libs/gst/riff/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am +index c8c588a..c096453 100644 +--- a/gst-libs/gst/riff/Makefile.am ++++ b/gst-libs/gst/riff/Makefile.am +@@ -41,6 +41,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) + # --strip-prefix=Gst \ + # --warn-all \ + # --c-include "gst/riff/riff.h" \ ++# -I$(top_srcdir)/gst-libs \ ++# -I$(top_builddir)/gst-libs \ + # --add-include-path=$(builddir)/../tag \ + # --add-include-path=$(builddir)/../audio \ + # --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch new file mode 100644 index 00000000..9e955240 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch @@ -0,0 +1,227 @@ +From 918c96b24d10f61b7455b4cef3bab490849d0d77 Mon Sep 17 00:00:00 2001 +From: Mingke Wang <mingke.wang@freescale.com> +Date: Thu, 19 Mar 2015 14:17:10 +0800 +Subject: [PATCH] ssaparse: enhance SSA text lines parsing. + +some parser will pass in the original ssa text line which starts with "Dialog:" +and there's are maybe multiple Dialog lines in one input buffer. + +Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747496] + +Signed-off-by: Mingke Wang <mingke.wang@freescale.com> + +--- + gst/subparse/gstssaparse.c | 150 ++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 134 insertions(+), 16 deletions(-) + mode change 100644 => 100755 gst/subparse/gstssaparse.c + +diff --git a/gst/subparse/gstssaparse.c b/gst/subparse/gstssaparse.c +old mode 100644 +new mode 100755 +index c849c08..4b9636c +--- a/gst/subparse/gstssaparse.c ++++ b/gst/subparse/gstssaparse.c +@@ -262,6 +262,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt) + * gst_ssa_parse_push_line: + * @parse: caller element + * @txt: text to push ++ * @size: text size need to be parse + * @start: timestamp for the buffer + * @duration: duration for the buffer + * +@@ -271,27 +272,133 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt) + * Returns: result of the push of the created buffer + */ + static GstFlowReturn +-gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, ++gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, gint size, + GstClockTime start, GstClockTime duration) + { + GstFlowReturn ret; + GstBuffer *buf; +- gchar *t, *escaped; ++ gchar *t, *text, *p, *escaped, *p_start, *p_end; + gint num, i, len; ++ GstClockTime start_time = G_MAXUINT64, end_time = 0; + +- num = atoi (txt); +- GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT, +- num, GST_TIME_ARGS (start)); +- +- /* skip all non-text fields before the actual text */ ++ p = text = g_malloc(size + 1); ++ *p = '\0'; + t = txt; +- for (i = 0; i < 8; ++i) { +- t = strchr (t, ','); ++ ++ /* there are may have multiple dialogue lines at a time */ ++ while (*t) { ++ /* ignore leading white space characters */ ++ while (isspace(*t)) ++ t++; ++ ++ /* ignore Format: and Style: lines */ ++ if (strncmp(t, "Format:", 7) == 0 || strncmp(t, "Style:", 6) == 0) { ++ while (*t != '\0' && *t != '\n') { ++ t++; ++ } ++ } ++ ++ if (*t == '\0') ++ break; ++ ++ /* continue with next line */ ++ if (*t == '\n') { ++ t++; ++ continue; ++ } ++ ++ if(strncmp(t, "Dialogue:", 9) != 0) { ++ /* not started with "Dialogue:", it must be a line trimmed by demuxer */ ++ num = atoi (t); ++ GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT, ++ num, GST_TIME_ARGS (start)); ++ ++ /* skip all non-text fields before the actual text */ ++ for (i = 0; i < 8; ++i) { ++ t = strchr (t, ','); ++ if (t == NULL) ++ break; ++ ++t; ++ } ++ } else { ++ /* started with "Dialogue:", update timestamp and duration */ ++ /* time format are like Dialog:Mark,0:00:01.02,0:00:03.04,xx,xxx,... */ ++ guint hour, min, sec, msec, len; ++ GstClockTime tmp; ++ gchar t_str[12] = {0}; ++ ++ /* find the first ',' */ ++ p_start = strchr (t, ','); ++ if (p_start) ++ p_end = strchr (++p_start, ','); ++ ++ if (p_start && p_end) { ++ /* copy text between first ',' and second ',' */ ++ strncpy(t_str, p_start, p_end - p_start); ++ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) { ++ tmp = ((hour*3600) + (min*60) + sec) * GST_SECOND + msec*GST_MSECOND; ++ GST_DEBUG_OBJECT (parse, "Get start time:%02d:%02d:%02d:%03d\n", ++ hour, min, sec, msec); ++ if (start_time > tmp) ++ start_time = tmp; ++ } else { ++ GST_WARNING_OBJECT (parse, ++ "failed to parse ssa start timestamp string :%s", t_str); ++ } ++ ++ p_start = p_end; ++ p_end = strchr (++p_start, ','); ++ if (p_end) { ++ /* copy text between second ',' and third ',' */ ++ strncpy(t_str, p_start, p_end - p_start); ++ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) { ++ tmp = ((hour*3600) + (min*60) + sec)*GST_SECOND + msec*GST_MSECOND; ++ GST_DEBUG_OBJECT(parse, "Get end time:%02d:%02d:%02d:%03d\n", ++ hour, min, sec, msec); ++ if (end_time < tmp) ++ end_time = tmp; ++ } else { ++ GST_WARNING_OBJECT (parse, ++ "failed to parse ssa end timestamp string :%s", t_str); ++ } ++ } ++ } ++ ++ /* now skip all non-text fields before the actual text */ ++ for (i = 0; i <= 8; ++i) { ++ t = strchr (t, ','); ++ if (t == NULL) ++ break; ++ ++t; ++ } ++ } ++ ++ /* line end before expected number of ',', not a Dialogue line */ + if (t == NULL) +- return GST_FLOW_ERROR; +- ++t; ++ break; ++ ++ /* if not the first line, and the last character of previous line is '\0', ++ * then replace it with '\N' */ ++ if (p != text && *p == '\0') { ++ *p++ = '\\'; ++ *p++ = 'N'; ++ } ++ ++ /* copy all actual text of this line */ ++ while ((*t != '\0') && (*t != '\n')) ++ *p++ = *t++; ++ ++ /* add a terminator at the end */ ++ *p = '\0'; ++ } ++ ++ /* not valid text found in this buffer return OK to let caller unref buffer */ ++ if (strlen(text) <= 0) { ++ GST_WARNING_OBJECT (parse, "Not valid text found in this buffer\n"); ++ return GST_FLOW_ERROR; + } + ++ t = text; + GST_LOG_OBJECT (parse, "Text : %s", t); + + if (gst_ssa_parse_remove_override_codes (parse, t)) { +@@ -309,13 +416,22 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, + gst_buffer_fill (buf, 0, escaped, len + 1); + gst_buffer_set_size (buf, len); + g_free (escaped); ++ g_free(t); ++ ++ if (start_time != G_MAXUINT64) ++ GST_BUFFER_TIMESTAMP (buf) = start_time; ++ else ++ GST_BUFFER_TIMESTAMP (buf) = start; + +- GST_BUFFER_TIMESTAMP (buf) = start; +- GST_BUFFER_DURATION (buf) = duration; ++ if (end_time > start_time) ++ GST_BUFFER_DURATION (buf) = end_time - start_time; ++ else ++ GST_BUFFER_DURATION (buf) = duration; + + GST_LOG_OBJECT (parse, "Pushing buffer with timestamp %" GST_TIME_FORMAT +- " and duration %" GST_TIME_FORMAT, GST_TIME_ARGS (start), +- GST_TIME_ARGS (duration)); ++ " and duration %" GST_TIME_FORMAT, ++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), ++ GST_TIME_ARGS (GST_BUFFER_DURATION (buf))); + + ret = gst_pad_push (parse->srcpad, buf); + +@@ -335,6 +451,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf) + GstClockTime ts; + gchar *txt; + GstMapInfo map; ++ gint size; + + if (G_UNLIKELY (!parse->framed)) + goto not_framed; +@@ -352,13 +469,14 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf) + /* make double-sure it's 0-terminated and all */ + gst_buffer_map (buf, &map, GST_MAP_READ); + txt = g_strndup ((gchar *) map.data, map.size); ++ size = map.size; + gst_buffer_unmap (buf, &map); + + if (txt == NULL) + goto empty_text; + + ts = GST_BUFFER_TIMESTAMP (buf); +- ret = gst_ssa_parse_push_line (parse, txt, ts, GST_BUFFER_DURATION (buf)); ++ ret = gst_ssa_parse_push_line (parse, txt, size, ts, GST_BUFFER_DURATION (buf)); + + if (ret != GST_FLOW_OK && GST_CLOCK_TIME_IS_VALID (ts)) { + GstSegment segment; diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch new file mode 100644 index 00000000..aaeb611f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch @@ -0,0 +1,25 @@ +From 53b5868491cf99ee797192395dbfeb69df23edd2 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 26 Oct 2015 17:30:14 +0200 +Subject: [PATCH] rtsp: drop incorrect reference to gstreamer-sdp in + Makefile.am + +Upstream-Status: Pending [review on oe-core maillist] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + +--- + gst-libs/gst/rtsp/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am +index 79027cb..2987e23 100644 +--- a/gst-libs/gst/rtsp/Makefile.am ++++ b/gst-libs/gst/rtsp/Makefile.am +@@ -79,7 +79,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS + --libtool="$(LIBTOOL)" \ + --pkg gio-2.0 \ + --pkg gstreamer-@GST_API_VERSION@ \ +- --pkg gstreamer-sdp-@GST_API_VERSION@ \ + --pkg-export gstreamer-rtsp-@GST_API_VERSION@ \ + --add-init-section="$(INTROSPECTION_INIT)" \ + --output $@ \ diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch new file mode 100644 index 00000000..c81fb0f6 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch @@ -0,0 +1,32 @@ +From c6b37a80806f9128de47f1ccc3f2354f8d436bb6 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 a4b2540..0ccaacd 100644 +--- a/ext/gl/gstopengl.c ++++ b/ext/gl/gstopengl.c +@@ -118,7 +118,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; + } + +-- +2.1.4 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch new file mode 100644 index 00000000..45ba5075 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch @@ -0,0 +1,70 @@ +From a1b59ca6b1781442f37ffc1b697635db126b3a22 Mon Sep 17 00:00:00 2001 +From: Carlos Rafael Giani <dv@pseudoterminal.org> +Date: Thu, 19 Jul 2018 10:30:54 +0200 +Subject: [PATCH] gl: Add switch for explicitely enabling/disabling GBM support + +Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=796833] + +Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> +--- + m4/gst-gl.m4 | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +diff --git a/m4/gst-gl.m4 b/m4/gst-gl.m4 +index 1e9724094..aca5295cc 100644 +--- a/m4/gst-gl.m4 ++++ b/m4/gst-gl.m4 +@@ -117,6 +117,15 @@ AC_ARG_ENABLE([dispmanx], + *) AC_MSG_ERROR([bad value ${enableval} for --enable-dispmanx]) ;; + esac],[NEED_DISPMANX=auto]) + ++AC_ARG_ENABLE([gbm], ++ [ --enable-gbm Enable Mesa3D GBM support (requires EGL) @<:@default=auto@:>@], ++ [case "${enableval}" in ++ yes) NEED_GBM=yes ;; ++ no) NEED_GBM=no ;; ++ auto) NEED_GBM=auto ;; ++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-gbm]) ;; ++ esac],[NEED_GBM=auto]) ++ + AG_GST_PKG_CHECK_MODULES(X11_XCB, x11-xcb) + save_CPPFLAGS="$CPPFLAGS" + save_LIBS="$LIBS" +@@ -172,15 +181,32 @@ case $host in + AC_CHECK_LIB([EGL], [fbGetDisplay], [HAVE_VIV_FB_EGL=yes]) + fi + +- if test "x$HAVE_EGL" = "xyes"; then ++ if test "x$NEED_GBM" != "xno"; then ++ if test "x$HAVE_EGL" = "xyes"; then + PKG_CHECK_MODULES(DRM, libdrm >= 2.4.55, HAVE_DRM=yes, HAVE_DRM=no) + AC_SUBST(DRM_CFLAGS) + AC_SUBST(DRM_LIBS) ++ if test "x$NEED_GBM" = "xyes"; then ++ if test "x$HAVE_DRM" = "xno"; then ++ AC_MSG_ERROR([GBM support requested but libdrm is not available]) ++ fi ++ if test "x$HAVE_GUDEV" = "xno"; then ++ AC_MSG_ERROR([GBM support requested but gudev is not available]) ++ fi ++ fi + if test "x$HAVE_DRM" = "xyes" -a "x$HAVE_GUDEV" = "xyes"; then + PKG_CHECK_MODULES(GBM, gbm, HAVE_GBM_EGL=yes, HAVE_GBM_EGL=no) ++ if test "x$HAVE_GBM_EGL" = "xno" -a "x$NEED_GBM" = "xyes"; then ++ AC_MSG_ERROR([GBM support requested but gbm library is not available]) ++ fi + AC_SUBST(GBM_CFLAGS) + AC_SUBST(GBM_LIBS) +- fi ++ fi ++ elif test "x$NEED_GBM" = "xyes"; then ++ AC_MSG_ERROR([GBM support requested but EGL is not available]) ++ else ++ AC_MSG_NOTICE([GBM support requested but EGL is not available; not enabling GBM support]) ++ fi + fi + + dnl FIXME: Mali EGL depends on GLESv1 or GLESv2 +-- +2.17.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch new file mode 100644 index 00000000..65d191a3 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch @@ -0,0 +1,109 @@ +From 092aadfc1df69c46d920b0cd39f98d363d6988b3 Mon Sep 17 00:00:00 2001 +From: Carlos Rafael Giani <dv@pseudoterminal.org> +Date: Thu, 19 Jul 2018 11:16:05 +0200 +Subject: [PATCH] gl: Add switches for explicitely enabling/disabling PNG and + JPEG support + +Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=796833] + +Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> +--- + m4/gst-gl.m4 | 66 ++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 46 insertions(+), 20 deletions(-) + +diff --git a/m4/gst-gl.m4 b/m4/gst-gl.m4 +index 20b2233de..f8809981c 100644 +--- a/m4/gst-gl.m4 ++++ b/m4/gst-gl.m4 +@@ -126,6 +126,24 @@ AC_ARG_ENABLE([gbm], + *) AC_MSG_ERROR([bad value ${enableval} for --enable-gbm]) ;; + esac],[NEED_GBM=auto]) + ++AC_ARG_ENABLE([png], ++ [ --enable-png Enable libpng support @<:@default=auto@:>@], ++ [case "${enableval}" in ++ yes) NEED_PNG=yes ;; ++ no) NEED_PNG=no ;; ++ auto) NEED_PNG=auto ;; ++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-png]) ;; ++ esac],[NEED_PNG=auto]) ++ ++AC_ARG_ENABLE([jpeg], ++ [ --enable-jpeg Enable libjpeg support @<:@default=auto@:>@], ++ [case "${enableval}" in ++ yes) NEED_JPEG=yes ;; ++ no) NEED_JPEG=no ;; ++ auto) NEED_JPEG=auto ;; ++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-jpeg]) ;; ++ esac],[NEED_JPEG=auto]) ++ + AG_GST_PKG_CHECK_MODULES(X11_XCB, x11-xcb) + save_CPPFLAGS="$CPPFLAGS" + save_LIBS="$LIBS" +@@ -1043,9 +1061,13 @@ dnl Needed by plugins that use g_module_*() API + PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0) + + dnl libpng is optional +-PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no) +-if test "x$HAVE_PNG" = "xyes"; then +- AC_DEFINE(HAVE_PNG, [1] , [Use libpng]) ++if test "x$NEED_PNG" != "xno"; then ++ PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no) ++ if test "x$HAVE_PNG" = "xyes"; then ++ AC_DEFINE(HAVE_PNG, [1] , [Use libpng]) ++ elif test "x$NEED_PNG" = "xyes"; then ++ AC_MSG_ERROR([libpng support requested but libpng is not available]) ++ fi + fi + AC_SUBST(HAVE_PNG) + AC_SUBST(LIBPNG_LIBS) +@@ -1053,25 +1075,29 @@ AC_SUBST(LIBPNG_CFLAGS) + + dnl libjpeg is optional + AC_ARG_WITH(jpeg-mmx, [ --with-jpeg-mmx, path to MMX'ified JPEG library]) +-OLD_LIBS="$LIBS" +-if test x$with_jpeg_mmx != x; then +- LIBS="$LIBS -L$with_jpeg_mmx" +-fi +-AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no") +-JPEG_LIBS="$LIBS -ljpeg-mmx" +-LIBS="$OLD_LIBS" +-if test x$HAVE_JPEG != xyes; then +- JPEG_LIBS="-ljpeg" +- AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no") +-fi ++if test "x$NEED_JPEG" != "xno"; then ++ OLD_LIBS="$LIBS" ++ if test x$with_jpeg_mmx != x; then ++ LIBS="$LIBS -L$with_jpeg_mmx" ++ fi ++ AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no") ++ JPEG_LIBS="$LIBS -ljpeg-mmx" ++ LIBS="$OLD_LIBS" ++ if test x$HAVE_JPEG != xyes; then ++ JPEG_LIBS="-ljpeg" ++ AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no") ++ fi + +-if test x$HAVE_JPEG = xyes; then +- AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg]) +-else +- JPEG_LIBS= ++ if test x$HAVE_JPEG = xyes; then ++ AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg]) ++ elif test "x$NEED_JPEG" = "xyes"; then ++ AC_MSG_ERROR([libjpeg support requested but libjpeg is not available]) ++ else ++ JPEG_LIBS= ++ fi ++ AC_SUBST(JPEG_LIBS) ++ AC_SUBST(HAVE_JPEG) + fi +-AC_SUBST(JPEG_LIBS) +-AC_SUBST(HAVE_JPEG) + ]) + + dnl -------------------------------------------------------------------------- +-- +2.17.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/CVE-2019-9928.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/CVE-2019-9928.patch new file mode 100644 index 00000000..0ad7245c --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/CVE-2019-9928.patch @@ -0,0 +1,33 @@ +From f672277509705c4034bc92a141eefee4524d15aa Mon Sep 17 00:00:00 2001 +From: Tobias Ronge <tobiasr@axis.com> +Date: Thu, 14 Mar 2019 10:12:27 +0100 +Subject: [PATCH] gstrtspconnection: Security loophole making heap overflow + +The former code allowed an attacker to create a heap overflow by +sending a longer than allowed session id in a response and including a +semicolon to change the maximum length. With this change, the parser +will never go beyond 512 bytes. + +Upstream-Status: Backport +CVE: CVE-2019-9928 +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + gst-libs/gst/rtsp/gstrtspconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gst-libs/gst/rtsp/gstrtspconnection.c b/gst-libs/gst/rtsp/gstrtspconnection.c +index a6755bedd..c0429064a 100644 +--- a/gst-libs/gst/rtsp/gstrtspconnection.c ++++ b/gst-libs/gst/rtsp/gstrtspconnection.c +@@ -2461,7 +2461,7 @@ build_next (GstRTSPBuilder * builder, GstRTSPMessage * message, + maxlen = sizeof (conn->session_id) - 1; + /* the sessionid can have attributes marked with ; + * Make sure we strip them */ +- for (i = 0; session_id[i] != '\0'; i++) { ++ for (i = 0; i < maxlen && session_id[i] != '\0'; i++) { + if (session_id[i] == ';') { + maxlen = i; + /* parse timeout */ +-- +2.21.0 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch new file mode 100644 index 00000000..a4727e23 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch @@ -0,0 +1,42 @@ +From 41de2ec64ab06bb58c82c1659adaa3811bc5bcf8 Mon Sep 17 00:00:00 2001 +From: zhouming <b42586@freescale.com> +Date: Wed, 14 May 2014 10:16:20 +0800 +Subject: [PATCH] ENGR00312515: get caps from src pad when query caps + +https://bugzilla.gnome.org/show_bug.cgi?id=728312 + +Upstream-Status: Pending + +Signed-off-by: zhouming <b42586@freescale.com> + +--- + gst-libs/gst/tag/gsttagdemux.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + mode change 100644 => 100755 gst-libs/gst/tag/gsttagdemux.c + +diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c +old mode 100644 +new mode 100755 +index 8a127c8..71c5d78 +--- a/gst-libs/gst/tag/gsttagdemux.c ++++ b/gst-libs/gst/tag/gsttagdemux.c +@@ -1759,6 +1759,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) + } + break; + } ++ case GST_QUERY_CAPS: ++ { ++ ++ /* We can hijack caps query if we typefind already */ ++ if (demux->priv->src_caps) { ++ gst_query_set_caps_result (query, demux->priv->src_caps); ++ res = TRUE; ++ } else { ++ res = gst_pad_query_default (pad, parent, query); ++ } ++ break; ++ } ++ + default: + res = gst_pad_query_default (pad, parent, query); + break; diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch new file mode 100644 index 00000000..d5a7f6bd --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch @@ -0,0 +1,45 @@ +From 9866f51e5e0913f1e453eb574618bf7432f38cb6 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 11 Apr 2018 10:46:33 +0800 +Subject: [PATCH] Add -lvchostif to link when using -lEGL on rpi + +This is required because libEGL from userland uses sybols +from this library. + +lib/libEGL.so.1.0.0 121: 00000000 0 FUNC GLOBAL DEFAULT UND vc_dispmanx_element_add + 1552: 00000000 0 FUNC GLOBAL DEFAULT UND vc_dispmanx_element_add + +These symbols are provided by libvchostif as seen below + +lib/libvchostif.so + 252: 0000b161 192 FUNC GLOBAL DEFAULT 9 vc_dispmanx_element_add + 809: 0000b161 192 FUNC GLOBAL DEFAULT 9 vc_dispmanx_element_add + +With this explicit link, plugins fail during runtime + +(gst-plugin-scanner:571): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstomx.so': Error relocating /usr/lib/libgstgl-1.0.so.0: vc_dispmanx_element_add: symbol not found +(gst-plugin-scanner:571): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstopengl.so': Error relocating /usr/lib/libgstgl-1.0.so.0: vc_dispmanx_element_add: symbol not found + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + m4/gst-gl.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/m4/gst-gl.m4 b/m4/gst-gl.m4 +index 1e97240..ab7774c 100644 +--- a/m4/gst-gl.m4 ++++ b/m4/gst-gl.m4 +@@ -231,7 +231,7 @@ case $host in + HAVE_EGL=yes + HAVE_GLES2=yes + HAVE_EGL_RPI=yes +- EGL_LIBS="-lbcm_host -lvcos -lvchiq_arm" ++ EGL_LIBS="-lbcm_host -lvchostif -lvcos -lvchiq_arm" + EGL_CFLAGS="" + AC_DEFINE(USE_EGL_RPI, [1], [Use RPi platform]) + ]) +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch new file mode 100644 index 00000000..23950b67 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch @@ -0,0 +1,45 @@ +From 7ffa6e3d00e1d8a060f3f4c2bb9a72691af05d79 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Wed, 20 Jan 2016 13:00:00 -0800 +Subject: [PATCH] make gio_unix_2_0 dependency configurable + +Prior to 1.7.1, gst-plugins-base accepted a configure option to +disable gio_unix_2_0, however it was implemented incorrectly using +AG_GST_CHECK_FEATURE. That was fixed in 1.7.1 by making the +dependency unconditional. + + http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=aadefefba88afe4acbe64454650f24e7ce7c8d70 + +To make builds deterministic, re-instate support for +--disable-gio_unix_2_0, but implement it using the AC_ARG_ENABLE +instead of AG_GST_CHECK_FEATURE. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +--- + configure.ac | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 12807bc..35a0bf3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -806,9 +806,16 @@ AM_CONDITIONAL(HAVE_PNG, test "x$HAVE_PNG" = "xyes") + AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes") + + dnl *** gio-unix-2.0 for tests/check/pipelines/tcp.c *** ++AC_ARG_ENABLE([gio_unix_2_0], ++ [AS_HELP_STRING([--disable-gio_unix_2_0],[disable use of gio_unix_2_0])], ++ [], ++ [enable_gio_unix_2_0=yes]) ++ ++if test "x${enable_gio_unix_2_0}" != "xno"; then + PKG_CHECK_MODULES(GIO_UNIX_2_0, gio-unix-2.0 >= 2.24, + HAVE_GIO_UNIX_2_0="yes", + HAVE_GIO_UNIX_2_0="no") ++fi + AM_CONDITIONAL(USE_GIO_UNIX_2_0, test "x$HAVE_GIO_UNIX_2_0" = "xyes") + + dnl *** finalize CFLAGS, LDFLAGS, LIBS diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.4.bb new file mode 100644 index 00000000..0d8b033f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.4.bb @@ -0,0 +1,77 @@ +require gstreamer1.0-plugins.inc + +LICENSE = "GPLv2+ & LGPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ + file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ + file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607" + +SRC_URI = " \ + http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \ + file://get-caps-from-src-pad-when-query-caps.patch \ + file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \ + file://make-gio_unix_2_0-dependency-configurable.patch \ + file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ + file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \ + file://0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch \ + file://0003-riff-add-missing-include-directories-when-calling-in.patch \ + file://0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch \ + file://0009-glimagesink-Downrank-to-marginal.patch \ + file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \ + file://0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch \ + file://0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch \ + file://link-with-libvchostif.patch \ + file://CVE-2019-9928.patch \ + " +SRC_URI[md5sum] = "4dbe20c1bf44191c2b8833234df5cb2a" +SRC_URI[sha256sum] = "ca6139490e48863e7706d870ff4e8ac9f417b56f3b9e4b3ce490c13b09a77461" + +S = "${WORKDIR}/gst-plugins-base-${PV}" + +DEPENDS += "iso-codes util-linux" + +inherit gettext + +PACKAGES_DYNAMIC =+ "^libgst.*" + +# opengl packageconfig factored out to make it easy for distros +# and BSP layers to pick either (desktop) opengl, gles2, or no GL +PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}" + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + ${PACKAGECONFIG_GL} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \ + gio-unix-2.0 jpeg ogg pango png theora vorbis zlib \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \ +" + +X11DEPENDS = "virtual/libx11 libsm libxrender libxv" +X11ENABLEOPTS = "--enable-x --enable-xvideo --enable-xshm" +X11DISABLEOPTS = "--disable-x --disable-xvideo --disable-xshm" + +PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib" +PACKAGECONFIG[cdparanoia] = "--enable-cdparanoia,--disable-cdparanoia,cdparanoia" +PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl" +PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/libgbm libgudev libdrm" +PACKAGECONFIG[gio-unix-2.0] = "--enable-gio_unix_2_0,--disable-gio_unix_2_0,glib-2.0" +PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2" +PACKAGECONFIG[ivorbis] = "--enable-ivorbis,--disable-ivorbis,tremor" +PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg" +PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg" +PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,virtual/libgl libglu" +PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus" +PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango" +PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng" +PACKAGECONFIG[theora] = "--enable-theora,--disable-theora,libtheora" +PACKAGECONFIG[visual] = "--enable-libvisual,--disable-libvisual,libvisual" +PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis" +PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}" +PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols libdrm" +PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib" + +FILES_${PN}-dev += "${libdir}/gstreamer-${LIBV}/include/gst/gl/gstglconfig.h" +FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict" + +do_compile_prepend() { + export GIR_EXTRA_LIBS_PATH="${B}/gst-libs/gst/tag/.libs:${B}/gst-libs/gst/video/.libs:${B}/gst-libs/gst/audio/.libs:${B}/gst-libs/gst/rtp/.libs:${B}/gst-libs/gst/allocators/.libs" +} diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch new file mode 100644 index 00000000..a2cbb70f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch @@ -0,0 +1,62 @@ +From c782a30482908a4b4dd9cd4abff9f9bc4016698f Mon Sep 17 00:00:00 2001 +From: Song Bing <b06498@freescale.com> +Date: Tue, 5 Aug 2014 14:40:46 +0800 +Subject: [PATCH] gstrtpmp4gpay: set dafault value for MPEG4 without codec + data in caps. + +https://bugzilla.gnome.org/show_bug.cgi?id=734263 + +Upstream-Status: Submitted + +Signed-off-by: Song Bing <b06498@freescale.com> +--- + gst/rtp/gstrtpmp4gpay.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +diff --git a/gst/rtp/gstrtpmp4gpay.c b/gst/rtp/gstrtpmp4gpay.c +index 7913d9a..1749d39 100644 +--- a/gst/rtp/gstrtpmp4gpay.c ++++ b/gst/rtp/gstrtpmp4gpay.c +@@ -391,6 +391,7 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) + const GValue *codec_data; + const gchar *media_type = NULL; + gboolean res; ++ const gchar *name; + + rtpmp4gpay = GST_RTP_MP4G_PAY (payload); + +@@ -401,7 +402,6 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) + GST_LOG_OBJECT (rtpmp4gpay, "got codec_data"); + if (G_VALUE_TYPE (codec_data) == GST_TYPE_BUFFER) { + GstBuffer *buffer; +- const gchar *name; + + buffer = gst_value_get_buffer (codec_data); + GST_LOG_OBJECT (rtpmp4gpay, "configuring codec_data"); +@@ -427,6 +427,23 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) + + rtpmp4gpay->config = gst_buffer_copy (buffer); + } ++ } else { ++ name = gst_structure_get_name (structure); ++ ++ if (!strcmp (name, "video/mpeg")) { ++ rtpmp4gpay->profile = g_strdup ("1"); ++ ++ /* fixed rate */ ++ rtpmp4gpay->rate = 90000; ++ /* video stream type */ ++ rtpmp4gpay->streamtype = "4"; ++ /* no params for video */ ++ rtpmp4gpay->params = NULL; ++ /* mode */ ++ rtpmp4gpay->mode = "generic"; ++ ++ media_type = "video"; ++ } + } + if (media_type == NULL) + goto config_failed; +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/avoid-including-sys-poll.h-directly.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/avoid-including-sys-poll.h-directly.patch new file mode 100644 index 00000000..c7f3630e --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/avoid-including-sys-poll.h-directly.patch @@ -0,0 +1,44 @@ +From 4bfe2c8570a4a7080ec662504882969054d8a072 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Wed, 3 Feb 2016 18:12:38 -0800 +Subject: [PATCH] avoid including <sys/poll.h> directly + +musl libc generates warnings if <sys/poll.h> is included directly. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> +--- + ext/raw1394/gstdv1394src.c | 2 +- + ext/raw1394/gsthdv1394src.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ext/raw1394/gstdv1394src.c b/ext/raw1394/gstdv1394src.c +index dbc7607..3c42b41 100644 +--- a/ext/raw1394/gstdv1394src.c ++++ b/ext/raw1394/gstdv1394src.c +@@ -37,7 +37,7 @@ + #include "config.h" + #endif + #include <unistd.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <sys/socket.h> + #include <errno.h> + #include <fcntl.h> +diff --git a/ext/raw1394/gsthdv1394src.c b/ext/raw1394/gsthdv1394src.c +index 0b07a37..9785a15 100644 +--- a/ext/raw1394/gsthdv1394src.c ++++ b/ext/raw1394/gsthdv1394src.c +@@ -36,7 +36,7 @@ + #include "config.h" + #endif + #include <unistd.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <sys/socket.h> + #include <errno.h> + #include <fcntl.h> +-- +1.9.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/ensure-valid-sentinel-for-gst_structure_get.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/ensure-valid-sentinel-for-gst_structure_get.patch new file mode 100644 index 00000000..bc7ac0b6 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/ensure-valid-sentinel-for-gst_structure_get.patch @@ -0,0 +1,40 @@ +From 2169f2205c0205a220d826d7573e5a863bd36e0a Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Tue, 9 Feb 2016 14:00:00 -0800 +Subject: [PATCH] ensure valid sentinal for gst_structure_get() + +gst_structure_get() is declared with G_GNUC_NULL_TERMINATED, ie +__attribute__((__sentinel__)), which means gcc will generate a +warning if the last parameter passed to the function is not NULL +(where a valid NULL in this context is defined as zero with any +pointer type). + +The C code callers to gst_structure_get() within gst-plugins-good +use the C NULL definition (ie ((void*)0)), which is a valid sentinel. + +However gstid3v2mux.cc uses the C++ NULL definition (ie 0L), which +is not a valid sentinel without an explicit cast to a pointer type. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> +--- + ext/taglib/gstid3v2mux.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ext/taglib/gstid3v2mux.cc b/ext/taglib/gstid3v2mux.cc +index 8651e77..a87234f 100644 +--- a/ext/taglib/gstid3v2mux.cc ++++ b/ext/taglib/gstid3v2mux.cc +@@ -465,7 +465,7 @@ add_image_tag (ID3v2::Tag * id3v2tag, const GstTagList * list, + + if (info_struct) { + if (gst_structure_get (info_struct, "image-type", +- GST_TYPE_TAG_IMAGE_TYPE, &image_type, NULL)) { ++ GST_TYPE_TAG_IMAGE_TYPE, &image_type, (void *) NULL)) { + if (image_type > 0 && image_type <= 18) { + image_type += 2; + } else { +-- +1.9.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.4.bb new file mode 100644 index 00000000..83066057 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.4.bb @@ -0,0 +1,79 @@ +require gstreamer1.0-plugins.inc + +SRC_URI = " \ + http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ + file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \ + file://avoid-including-sys-poll.h-directly.patch \ + file://ensure-valid-sentinel-for-gst_structure_get.patch \ + file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ + " + +SRC_URI[md5sum] = "6e3b247097366cf2639f22abfece7113" +SRC_URI[sha256sum] = "5f8b553260cb0aac56890053d8511db1528d53cae10f0287cfce2cb2acc70979" + +S = "${WORKDIR}/gst-plugins-good-${PV}" + +LICENSE = "GPLv2+ & LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \ + file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" + +DEPENDS += "gstreamer1.0-plugins-base libcap" +RPROVIDES_${PN}-pulseaudio += "${PN}-pulse" +RPROVIDES_${PN}-soup += "${PN}-souphttpsrc" + +inherit gettext + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \ + bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 soup speex taglib v4l2 zlib \ +" + +X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage" + +PACKAGECONFIG[bz2] = "--enable-bz2,--disable-bz2,bzip2" +PACKAGECONFIG[cairo] = "--enable-cairo,--disable-cairo,cairo" +PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libiec61883 libavc1394 libraw1394" +PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac" +PACKAGECONFIG[gdk-pixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf" +PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3" +PACKAGECONFIG[gudev] = "--with-gudev,--without-gudev,libgudev" +PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" +PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg" +PACKAGECONFIG[lame] = "--enable-lame,--disable-lame,lame" +PACKAGECONFIG[libpng] = "--enable-libpng,--disable-libpng,libpng" +PACKAGECONFIG[libv4l2] = "--with-libv4l2,--without-libv4l2,v4l-utils" +PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123" +PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio" +PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4" +PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex" +PACKAGECONFIG[taglib] = "--enable-taglib,--disable-taglib,taglib" +PACKAGECONFIG[v4l2] = "--enable-gst_v4l2 --enable-v4l2-probe,--disable-gst_v4l2" +PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx,libvpx" +PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack" +PACKAGECONFIG[x11] = "--enable-x,--disable-x,${X11DEPENDS}" +PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib" + +# qt5 support is disabled, because it is not present in OE core, and requires more work than +# just adding a packageconfig (it requires access to moc, uic, rcc, and qmake paths). +# This is better done in a separate qt5 layer (which then should add a "qt5" packageconfig +# in a gstreamer1.0-plugins-good bbappend). + +EXTRA_OECONF += " \ + --enable-oss \ + --disable-aalib \ + --disable-aalibtest \ + --disable-directsound \ + --disable-libcaca \ + --disable-libdv \ + --disable-oss4 \ + --disable-osx_audio \ + --disable-osx_video \ + --disable-qt \ + --disable-shout2 \ + --disable-twolame \ + --disable-waveform \ +" + +FILES_${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.4.bb new file mode 100644 index 00000000..c59ba1de --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.4.bb @@ -0,0 +1,40 @@ +require gstreamer1.0-plugins.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068" + +LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+" +LICENSE_FLAGS = "commercial" + +SRC_URI = " \ + http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ + file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ + " +SRC_URI[md5sum] = "90768a0074db071175ce980064d9a1ac" +SRC_URI[sha256sum] = "ac02d837f166c35ff6ce0738e281680d0b90052cfb1f0255dcf6aaca5f0f6d23" + +S = "${WORKDIR}/gst-plugins-ugly-${PV}" + +DEPENDS += "gstreamer1.0-plugins-base libid3tag" + +inherit gettext + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + a52dec mpeg2dec \ +" + +PACKAGECONFIG[a52dec] = "--enable-a52dec,--disable-a52dec,liba52" +PACKAGECONFIG[amrnb] = "--enable-amrnb,--disable-amrnb,opencore-amr" +PACKAGECONFIG[amrwb] = "--enable-amrwb,--disable-amrwb,opencore-amr" +PACKAGECONFIG[cdio] = "--enable-cdio,--disable-cdio,libcdio" +PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread,libdvdread" +PACKAGECONFIG[mpeg2dec] = "--enable-mpeg2dec,--disable-mpeg2dec,mpeg2dec" +PACKAGECONFIG[x264] = "--enable-x264,--disable-x264,x264" + +EXTRA_OECONF += " \ + --disable-sidplay \ +" + +FILES_${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs" +FILES_${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc new file mode 100644 index 00000000..5906e4ad --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc @@ -0,0 +1,41 @@ +SUMMARY = "Plugins for the GStreamer multimedia framework 1.x" +HOMEPAGE = "http://gstreamer.freedesktop.org/" +BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" +SECTION = "multimedia" + +DEPENDS = "gstreamer1.0 glib-2.0-native" + +SRC_URI_append = " file://gtk-doc-tweaks.patch" + +inherit autotools pkgconfig upstream-version-is-even gobject-introspection gtk-doc + +acpaths = "-I ${S}/common/m4 -I ${S}/m4" + +LIBV = "1.0" +require gst-plugins-package.inc + +# Orc enables runtime JIT compilation of data processing routines from Orc +# bytecode to SIMD instructions for various architectures (currently SSE, MMX, +# MIPS, Altivec and NEON are supported). + +GSTREAMER_ORC ?= "orc" + +PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" +PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc orc-native" +PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind" + +export ORCC = "${STAGING_DIR_NATIVE}${bindir}/orcc" + +EXTRA_OECONF = " \ + --disable-examples \ +" + +delete_pkg_m4_file() { + # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection + rm "${S}/common/m4/pkg.m4" || true + rm -f "${S}/common/m4/gtk-doc.m4" +} + +do_configure[prefuncs] += " delete_pkg_m4_file" + +PACKAGES_DYNAMIC = "^${PN}-.*" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.14.4.bb new file mode 100644 index 00000000..8d45ca26 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.14.4.bb @@ -0,0 +1,39 @@ +SUMMARY = "Python bindings for GStreamer 1.0" +HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-python/" +SECTION = "multimedia" + +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740" + +SRC_URI = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" +SRC_URI[md5sum] = "d4c0e3915f547feef49208ee08981e5a" +SRC_URI[sha256sum] = "d0fdb24f93b6d889f309d2f526b8ea9577e0084ff0a62b4623ef1aed52e85a1b" + +DEPENDS = "gstreamer1.0 python3-pygobject" +RDEPENDS_${PN} += "gstreamer1.0 python3-pygobject" + +PNREAL = "gst-python" + +S = "${WORKDIR}/${PNREAL}-${PV}" + +inherit autotools pkgconfig distutils3-base upstream-version-is-even gobject-introspection + +do_install_append() { + # gstpythonplugin hardcodes the location of the libpython from the build + # workspace and then fails at runtime. We can override it using + # --with-libpython-dir=${libdir}, but it still fails because it looks for a + # symlinked library ending in .so instead of the actually library with + # LIBNAME.so.MAJOR.MINOR. Although we could patch the code to use the path + # we want, it will break again if the library version ever changes. We need + # to think about the best way of handling this and possibly consult + # upstream. + # + # Note that this particular find line is taken from the Debian packaging for + # gst-python1.0. + find "${D}" \ + -name '*.pyc' -o \ + -name '*.pyo' -o \ + -name '*.la' -o \ + -name 'libgstpythonplugin*' \ + -delete +} diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/0001-Don-t-hardcode-libtool-name-when-using-introspection.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/0001-Don-t-hardcode-libtool-name-when-using-introspection.patch new file mode 100644 index 00000000..89d6384a --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/0001-Don-t-hardcode-libtool-name-when-using-introspection.patch @@ -0,0 +1,27 @@ +From 4a12569e5ae5be63cd92a9b178860026a99746b1 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 27 Oct 2015 16:55:45 +0200 +Subject: [PATCH] Don't hardcode libtool name when using introspection + +Upstream-Status: Pending [review on oe-core maillist] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + gst/rtsp-server/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gst/rtsp-server/Makefile.am b/gst/rtsp-server/Makefile.am +index 4fcd366..c67f5ab 100644 +--- a/gst/rtsp-server/Makefile.am ++++ b/gst/rtsp-server/Makefile.am +@@ -87,7 +87,7 @@ GstRtspServer-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtspserver-@ + --include=Gst-@GST_API_VERSION@ \ + --include=GstRtsp-@GST_API_VERSION@ \ + --include=GstNet-@GST_API_VERSION@ \ +- --libtool="$(top_builddir)/libtool" \ ++ --libtool="$(LIBTOOL)" \ + --pkg gstreamer-@GST_API_VERSION@ \ + --pkg gstreamer-rtsp-@GST_API_VERSION@ \ + --pkg gstreamer-net-@GST_API_VERSION@ \ +-- +2.1.4 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.4.bb new file mode 100644 index 00000000..7efc1b35 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.4.bb @@ -0,0 +1,35 @@ +SUMMARY = "A library on top of GStreamer for building an RTSP server" +HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/" +SECTION = "multimedia" +LICENSE = "LGPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base" + +PNREAL = "gst-rtsp-server" + +SRC_URI = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz \ + file://0001-Don-t-hardcode-libtool-name-when-using-introspection.patch \ + file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ + file://gtk-doc-tweaks.patch \ + " + +SRC_URI[md5sum] = "ab0fb5c829266a500e14b46b7bdf06bf" +SRC_URI[sha256sum] = "3d0ece2afdcd601c175ece24e32a30bc19247b454f4eafd3deeec2533c6884f1" + +S = "${WORKDIR}/${PNREAL}-${PV}" + +inherit autotools pkgconfig upstream-version-is-even gobject-introspection gtk-doc + +EXTRA_OECONF = "--disable-examples --disable-tests" + +# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well +LIBV = "1.0" +require gst-plugins-package.inc + +delete_pkg_m4_file() { + # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection + rm "${S}/common/m4/pkg.m4" || true +} + +do_configure[prefuncs] += " delete_pkg_m4_file" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch new file mode 100644 index 00000000..d7b89849 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch @@ -0,0 +1,33 @@ +From 5403a89e6a7ac72a23e0221075c0c19b5f85a021 Mon Sep 17 00:00:00 2001 +From: Fabio Berton <fabio.berton@ossystems.com.br> +Date: Wed, 13 Jun 2018 09:09:25 -0300 +Subject: [PATCH] gst/vaapi/Makefile.am: Add EGL_CFLAGS to libgstvaapi CFLAGS +Organization: O.S. Systems Software LTDA. + +We need this to pass correctly EGL CFLAGS when building with EGL support. + +Upstream-Status: Pending + +Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br> +--- + gst/vaapi/Makefile.am | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/gst/vaapi/Makefile.am b/gst/vaapi/Makefile.am +index b299ac98..d6cab71f 100644 +--- a/gst/vaapi/Makefile.am ++++ b/gst/vaapi/Makefile.am +@@ -24,6 +24,10 @@ libgstvaapi_LIBS += $(top_builddir)/gst-libs/gst/vaapi/libgstvaapi-glx.la + endif + + if USE_EGL ++libgstvaapi_CFLAGS += \ ++ $(EGL_CFLAGS) \ ++ $(NULL) ++ + libgstvaapi_LIBS += $(top_builddir)/gst-libs/gst/vaapi/libgstvaapi-egl.la + endif + +-- +2.17.1 + diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-vaapsink-downgrade-to-marginal.patch b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-vaapsink-downgrade-to-marginal.patch new file mode 100644 index 00000000..c861f3be --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-vaapsink-downgrade-to-marginal.patch @@ -0,0 +1,46 @@ +From 0c28cf7bfa90f8947833722cddf23d513490c6c3 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 28 Nov 2018 15:08:48 +0800 +Subject: [PATCH] vaapsink: downgrade to marginal + +Using vaapisink with default poky configuration results in an +unresponsive display as of today because DRI2 rendering is currently broken +in non composited environments [1] and libva doesn't support DRI3 [2]. + +Downgrade vaapisink to marginal for now so playbin (and in turn gst-play +and gtk-play examples) use xvimagesink or others out of box. + +[1] https://gitlab.freedesktop.org/xorg/xserver/issues/13 +[2] https://github.com/intel/libva/issues/122 + +Upstream-Status: Pending + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + gst/vaapi/gstvaapi.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/gst/vaapi/gstvaapi.c b/gst/vaapi/gstvaapi.c +index 9a82454..4d94f2b 100644 +--- a/gst/vaapi/gstvaapi.c ++++ b/gst/vaapi/gstvaapi.c +@@ -210,7 +210,6 @@ plugin_init (GstPlugin * plugin) + { + GstVaapiDisplay *display; + GArray *decoders; +- guint rank; + + plugin_add_dependencies (plugin); + +@@ -235,10 +234,7 @@ plugin_init (GstPlugin * plugin) + gst_element_register (plugin, "vaapidecodebin", + GST_RANK_PRIMARY + 2, GST_TYPE_VAAPI_DECODE_BIN); + +- rank = GST_RANK_PRIMARY; +- if (g_getenv ("WAYLAND_DISPLAY")) +- rank = GST_RANK_MARGINAL; +- gst_element_register (plugin, "vaapisink", rank, GST_TYPE_VAAPISINK); ++ gst_element_register (plugin, "vaapisink", GST_RANK_MARGINAL, GST_TYPE_VAAPISINK); + + #if USE_ENCODERS + gst_vaapiencode_register (plugin, display); diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.14.4.bb new file mode 100644 index 00000000..38964341 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.14.4.bb @@ -0,0 +1,49 @@ +SUMMARY = "VA-API support to GStreamer" +DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \ +based plugins for GStreamer and helper libraries: `vaapidecode', \ +`vaapiconvert', and `vaapisink'." + +REALPN = "gstreamer-vaapi" + +LICENSE = "LGPLv2.1+" +LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c" + +SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz \ + file://0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch \ + file://0001-vaapsink-downgrade-to-marginal.patch \ + " + +SRC_URI[md5sum] = "2fae3442f5f23e7354a0c592bc7b9065" +SRC_URI[sha256sum] = "ce18dbfe961c6a8d31270231686075586bf7a7df62b778c8e7f5ec148251d0a3" + +S = "${WORKDIR}/${REALPN}-${PV}" +DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" + +inherit autotools pkgconfig gtk-doc distro_features_check upstream-version-is-even + +REQUIRED_DISTRO_FEATURES ?= "opengl" + +PACKAGES =+ "${PN}-tests" + +# OpenGL packageconfig factored out to make it easy for distros +# and BSP layers to pick either glx, egl, or no GL. By default, +# try detecting X11 first, and if found (with OpenGL), use GLX, +# otherwise try to check if EGL can be used. +PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', \ + bb.utils.contains('DISTRO_FEATURES', 'opengl', 'egl', \ + '', d), d)}" + +PACKAGECONFIG ??= "drm \ + ${PACKAGECONFIG_GL} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[drm] = "--enable-drm,--disable-drm,udev libdrm" +PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl" +PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,virtual/libgl" +PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland" +PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxrandr libxrender" + +FILES_${PN} += "${libdir}/gstreamer-*/*.so" +FILES_${PN}-dbg += "${libdir}/gstreamer-*/.debug" +FILES_${PN}-dev += "${libdir}/gstreamer-*/*.la ${libdir}/gstreamer-*/*.a" +FILES_${PN}-tests = "${bindir}/*" diff --git a/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.14.4.bb b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.14.4.bb new file mode 100644 index 00000000..232234b8 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.14.4.bb @@ -0,0 +1,90 @@ +SUMMARY = "GStreamer 1.0 multimedia framework" +DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \ +It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime." +HOMEPAGE = "http://gstreamer.freedesktop.org/" +BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" +SECTION = "multimedia" +LICENSE = "LGPLv2+" + +DEPENDS = "glib-2.0 glib-2.0-native libcap libxml2 bison-native flex-native" + +inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection gtk-doc ptest + +# This way common/m4/introspection.m4 will come first +# (it has a custom INTROSPECTION_INIT macro, and so must be used instead of our common introspection.m4 file) +acpaths = "-I ${S}/common/m4 -I ${S}/m4" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ + file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d" + +S = "${WORKDIR}/gstreamer-${PV}" + +SRC_URI = " \ + http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \ + file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \ + file://gtk-doc-tweaks.patch \ + file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \ + file://add-a-target-to-compile-tests.patch \ + file://run-ptest \ +" +SRC_URI[md5sum] = "f67fbbc42bd85a0701df119f52fb52bd" +SRC_URI[sha256sum] = "f94f6696c5f05a3b3a9183e39c5f5c0b779f75a04c0efa497e7920afa985ffc7" + +PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \ + " + +PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" +PACKAGECONFIG[tests] = "--enable-tests,--disable-tests" +PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind," +PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks," +PACKAGECONFIG[unwind] = "--with-unwind,--without-unwind,libunwind" +PACKAGECONFIG[dw] = "--with-dw,--without-dw,elfutils" + +EXTRA_OECONF = " \ + --disable-examples \ +" + +CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no" + +# musl libc generates warnings if <sys/poll.h> is included directly +CACHED_CONFIGUREVARS += "ac_cv_header_sys_poll_h=no" + +PACKAGES += "${PN}-bash-completion" + +FILES_${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la ${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include" +FILES_${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*" + +RDEPENDS_${PN}-ptest += "make" + +delete_pkg_m4_file() { + # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection + rm "${S}/common/m4/pkg.m4" || true + rm -f "${S}/common/m4/gtk-doc.m4" +} + +do_configure[prefuncs] += "delete_pkg_m4_file" + +do_compile_prepend() { + export GIR_EXTRA_LIBS_PATH="${B}/gst/.libs:${B}/libs/gst/base/.libs" +} + +do_compile_ptest() { + oe_runmake build-checks +} + +do_install_ptest() { + oe_runmake -C tests/check DESTDIR=${D}${PTEST_PATH} install-ptest + install -m 644 ${B}/tests/check/Makefile ${D}${PTEST_PATH} + install -m 755 ${S}/test-driver ${D}${PTEST_PATH} + sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \ + -e 's|${DEBUG_PREFIX_MAP}||g' \ + -e 's:${HOSTTOOLS_DIR}/::g' \ + -e 's:${RECIPE_SYSROOT_NATIVE}::g' \ + -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \-e 's/^Makefile:/_Makefile:/' \ + -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/^top_srcdir = \(.*\)/top_srcdir = ./' \ + -e 's/^builddir = \(.*\)/builddir = ./' -e 's/^top_builddir = \(.*\)/top_builddir = ./' \ + -i ${D}${PTEST_PATH}/Makefile +} + +CVE_PRODUCT = "gstreamer" diff --git a/external/poky/meta/recipes-multimedia/lame/lame/no-gtk1.patch b/external/poky/meta/recipes-multimedia/lame/lame/no-gtk1.patch new file mode 100644 index 00000000..e88d7f1b --- /dev/null +++ b/external/poky/meta/recipes-multimedia/lame/lame/no-gtk1.patch @@ -0,0 +1,20 @@ +Upstream-Status: Inappropriate [configuration] + +# Acquired from OpenEmbedded + +--- lame-3.96.1/configure.in~no-gtk1.patch 2004-07-25 15:52:12.000000000 +0100 ++++ lame-3.96.1/configure.in 2004-09-10 15:54:39.000000000 +0100 +@@ -363,7 +363,12 @@ + + dnl configure use of features + +-AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no") ++#AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no") ++HAVE_GTK="no" ++GTK_CFLAGS="" ++GTK_LIBS="" ++AC_SUBST(GTK_CFLAGS) ++AC_SUBST(GTK_LIBS) + + dnl ElectricFence malloc debugging + AC_MSG_CHECKING(use of ElectricFence malloc debugging) diff --git a/external/poky/meta/recipes-multimedia/lame/lame_3.100.bb b/external/poky/meta/recipes-multimedia/lame/lame_3.100.bb new file mode 100644 index 00000000..7f8996fb --- /dev/null +++ b/external/poky/meta/recipes-multimedia/lame/lame_3.100.bb @@ -0,0 +1,25 @@ +SUMMARY = "High quality MP3 audio encoder" +HOMEPAGE = "http://lame.sourceforge.net/" +BUGTRACKER = "http://sourceforge.net/tracker/?group_id=290&atid=100290" +SECTION = "console/utils" +LICENSE = "LGPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=c46bda00ffbb0ba1dac22f8d087f54d9 \ + file://include/lame.h;beginline=1;endline=20;md5=a2258182c593c398d15a48262130a92b \ +" + +DEPENDS = "ncurses gettext-native" + +SRC_URI = "${SOURCEFORGE_MIRROR}/lame/lame-${PV}.tar.gz \ + file://no-gtk1.patch \ + " + +SRC_URI[md5sum] = "83e260acbe4389b54fe08e0bdbf7cddb" +SRC_URI[sha256sum] = "ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e" + +inherit autotools pkgconfig + +PACKAGES += "libmp3lame libmp3lame-dev" +FILES_${PN} = "${bindir}/lame" +FILES_libmp3lame = "${libdir}/libmp3lame.so.*" +FILES_libmp3lame-dev = "${includedir} ${libdir}/*" +FILES_${PN}-dev = "" diff --git a/external/poky/meta/recipes-multimedia/liba52/liba52/buildcleanup.patch b/external/poky/meta/recipes-multimedia/liba52/liba52/buildcleanup.patch new file mode 100644 index 00000000..5168100f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/liba52/liba52/buildcleanup.patch @@ -0,0 +1,89 @@ +It makes much more sense to control our own CFLAGS and avoiding fPIC breaks +some arches too. Assume we know what we're doing and remove all the messing +around. + +RP 23/2/10 + +Upstream-Status: Inappropriate [configuration] + +Index: a52dec-0.7.4/configure.in +=================================================================== +--- a52dec-0.7.4.orig/configure.in 2010-02-23 14:51:50.000000000 +0000 ++++ a52dec-0.7.4/configure.in 2010-02-23 14:52:36.000000000 +0000 +@@ -14,62 +14,6 @@ + AC_PROG_CC + AC_PROG_GCC_TRADITIONAL + +-if test x"$GCC" = x"yes"; then +- +- dnl GCC-specific flags - try to optimize them sometime +- dnl -Wall -Werror moved to the end to not disturb the configure script +- +- dnl -O3 +- changequote(<<,>>) +- OPT_CFLAGS=`echo "$CFLAGS"|sed "s/-O[0-9]*//g"` +- changequote([,]) +- OPT_CFLAGS="$OPT_CFLAGS -O3" +- AC_TRY_CFLAGS([$OPT_CFLAGS],[CFLAGS=$OPT_CFLAGS]) +- +- dnl -fomit-frame-pointer +- OPT_CFLAGS="$CFLAGS -fomit-frame-pointer" +- AC_TRY_CFLAGS([$OPT_CFLAGS],[CFLAGS=$OPT_CFLAGS]) +- +- dnl arch-specific flags +- case "$host" in +- i?86-* | k?-*) +- case "$host" in +- i386-*) OPT_CFLAGS="$CFLAGS -mcpu=i386";; +- i486-*) OPT_CFLAGS="$CFLAGS -mcpu=i486";; +- i586-*) OPT_CFLAGS="$CFLAGS -mcpu=pentium";; +- i686-*) OPT_CFLAGS="$CFLAGS -mcpu=pentiumpro";; +- k6-*) OPT_CFLAGS="$CFLAGS -mcpu=k6";; +- esac +- AC_TRY_CFLAGS([$OPT_CFLAGS],[CFLAGS=$OPT_CFLAGS]);; +- sparc-* | sparc64-*) +- OPT_CFLAGS="$CFLAGS -mtune=ultrasparc" +- AC_TRY_CFLAGS([$OPT_CFLAGS],[CFLAGS=$OPT_CFLAGS]);; +- mips-sgi-irix6.*) dnl do we need to be that specific ? +- OPT_CFLAGS="$CFLAGS -mabi=64" +- AC_TRY_CFLAGS([$OPT_CFLAGS],[CFLAGS=$OPT_CFLAGS]);; +- esac +-elif test x"$CC" = x"tcc" -a x"`$CC -version 2>&1 | grep TenDRA`" != x""; then +- dnl TenDRA portability checking compiler +- TENDRA=yes +- CFLAGS="-Xp -Yansi -f`pwd`/include/tendra.h -DELIDE_CODE" +- enable_mlib=no +- enable_oss=no +- enable_solaris_audio=no +-elif test x"$CC" = x"icc" -a x"`$CC -V 2>&1 | grep Intel`" != x""; then +- dnl Intel C++ compiler +- CFLAGS="-g -O3 -unroll -ip" +-else +- dnl non-gcc flags - we probably need exact configuration triplets here. +- case "$host" in +- mips-sgi-irix6.*) +- OPT_CFLAGS="$CFLAGS -64" +- AC_TRY_CFLAGS([$OPT_CFLAGS],[CFLAGS=$OPT_CFLAGS]);; +- sparc-sun-solaris*) +- OPT_CFLAGS="$CFLAGS -xCC -fast -xO5" +- AC_TRY_CFLAGS([$OPT_CFLAGS],[CFLAGS=$OPT_CFLAGS]);; +- esac +-fi +- + dnl Checks for libtool - this must be done after we set cflags + AC_DISABLE_SHARED + AC_LIBTOOL_WIN32_DLL +Index: a52dec-0.7.4/liba52/configure.incl +=================================================================== +--- a52dec-0.7.4.orig/liba52/configure.incl 2010-02-23 14:51:44.000000000 +0000 ++++ a52dec-0.7.4/liba52/configure.incl 2010-02-23 14:51:59.000000000 +0000 +@@ -1,9 +1,6 @@ + AC_SUBST([LIBA52_CFLAGS]) + AC_SUBST([LIBA52_LIBS]) + +-dnl avoid -fPIC when possible +-LIBA52_CFLAGS="$LIBA52_CFLAGS -prefer-non-pic" +- + AC_ARG_ENABLE([double], + [ --enable-double use double-precision samples]) + if test x"$enable_double" = x"yes"; then diff --git a/external/poky/meta/recipes-multimedia/liba52/liba52_0.7.4.bb b/external/poky/meta/recipes-multimedia/liba52/liba52_0.7.4.bb new file mode 100644 index 00000000..8ff8889b --- /dev/null +++ b/external/poky/meta/recipes-multimedia/liba52/liba52_0.7.4.bb @@ -0,0 +1,26 @@ +SUMMARY = "ATSC A/52 surround sound stream decoder" +HOMEPAGE = "http://liba52.sourceforge.net/" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \ + file://include/a52.h;beginline=1;endline=12;md5=81152ceb3562bf20a60d1b6018175dd1" +SECTION = "libs" +PR = "r4" + +inherit autotools + +SRC_URI = "http://liba52.sourceforge.net/files/a52dec-${PV}.tar.gz \ + file://buildcleanup.patch" + +SRC_URI[md5sum] = "caa9f5bc44232dc8aeea773fea56be80" +SRC_URI[sha256sum] = "a21d724ab3b3933330194353687df82c475b5dfb997513eef4c25de6c865ec33" + +UPSTREAM_CHECK_URI = "http://liba52.sourceforge.net/downloads.html" + +S = "${WORKDIR}/a52dec-${PV}" + +EXTRA_OECONF = " --enable-shared " + +PACKAGES =+ "a52dec a52dec-doc" + +FILES_a52dec = " ${bindir}/* " +FILES_a52dec-doc = " ${mandir}/man1/* " diff --git a/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/0001-Fix-gperf-3.1-incompatibility.patch b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/0001-Fix-gperf-3.1-incompatibility.patch new file mode 100644 index 00000000..54f49f6f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/0001-Fix-gperf-3.1-incompatibility.patch @@ -0,0 +1,40 @@ +From 91fcf66b9182c75cd2b96d88991d5a1c6307d4b4 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Wed, 2 Aug 2017 16:27:52 +0300 +Subject: [PATCH] Fix gperf 3.1 incompatibility. + +Upstream-Status: Pending +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + compat.h | 2 +- + frametype.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/compat.h b/compat.h +index 8af71ec..b3d80d9 100644 +--- a/compat.h ++++ b/compat.h +@@ -34,7 +34,7 @@ struct id3_compat { + }; + + struct id3_compat const *id3_compat_lookup(register char const *, +- register unsigned int); ++ register size_t); + + int id3_compat_fixup(struct id3_tag *); + +diff --git a/frametype.h b/frametype.h +index dd064b2..b5b7593 100644 +--- a/frametype.h ++++ b/frametype.h +@@ -37,6 +37,6 @@ extern struct id3_frametype const id3_frametype_unknown; + extern struct id3_frametype const id3_frametype_obsolete; + + struct id3_frametype const *id3_frametype_lookup(register char const *, +- register unsigned int); ++ register size_t); + + # endif +-- +2.13.2 + diff --git a/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.dpatch b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.dpatch new file mode 100644 index 00000000..8d09ce7b --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.dpatch @@ -0,0 +1,33 @@ +libid3tag: patch for CVE-2004-2779 + +The patch comes from +https://sources.debian.org/patches/libid3tag/0.15.1b-13/10_utf16.dpatch + +Upstream-Status: Pending + +CVE: CVE-2004-2779 + +Signed-off-by: Changqing Li <changqing.li@windriver.com> + +diff -urNad libid3tag-0.15.1b/utf16.c /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c +--- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100 ++++ /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100 +@@ -282,5 +282,18 @@ + + free(utf16); + ++ if (end == *ptr && length % 2 != 0) ++ { ++ /* We were called with a bogus length. It should always ++ * be an even number. We can deal with this in a few ways: ++ * - Always give an error. ++ * - Try and parse as much as we can and ++ * - return an error if we're called again when we ++ * already tried to parse everything we can. ++ * - tell that we parsed it, which is what we do here. ++ */ ++ (*ptr)++; ++ } ++ + return ucs4; + } diff --git a/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/addpkgconfig.patch b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/addpkgconfig.patch new file mode 100644 index 00000000..38d40c36 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/addpkgconfig.patch @@ -0,0 +1,43 @@ +Upstream-Status: Inappropriate [configuration] + +Index: libid3tag-0.15.1b/Makefile.am +=================================================================== +--- libid3tag-0.15.1b.orig/Makefile.am 2009-07-29 09:29:20.000000000 +0100 ++++ libid3tag-0.15.1b/Makefile.am 2009-07-29 09:29:47.000000000 +0100 +@@ -27,6 +27,9 @@ + lib_LTLIBRARIES = libid3tag.la + include_HEADERS = id3tag.h + ++pkgconfigdir = $(libdir)/pkgconfig ++pkgconfig_DATA = id3tag.pc ++ + ## From the libtool documentation on library versioning: + ## + ## CURRENT +Index: libid3tag-0.15.1b/configure.ac +=================================================================== +--- libid3tag-0.15.1b.orig/configure.ac 2009-07-29 09:27:15.000000000 +0100 ++++ libid3tag-0.15.1b/configure.ac 2009-07-29 09:27:45.000000000 +0100 +@@ -201,5 +201,5 @@ + dnl AC_SUBST(LTLIBOBJS) + + AC_CONFIG_FILES([Makefile msvc++/Makefile \ +- libid3tag.list]) ++ libid3tag.list id3tag.pc]) + AC_OUTPUT +Index: libid3tag-0.15.1b/id3tag.pc.in +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ libid3tag-0.15.1b/id3tag.pc.in 2009-07-29 09:29:10.000000000 +0100 +@@ -0,0 +1,11 @@ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: id3tag ++Description: ID3 tag reading library ++Requires: ++Version: @VERSION@ ++Libs: -L${libdir} -lid3tag -lz ++Cflags: -I${includedir} diff --git a/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/obsolete_automake_macros.patch b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/obsolete_automake_macros.patch new file mode 100644 index 00000000..2845fb1d --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag/obsolete_automake_macros.patch @@ -0,0 +1,15 @@ +Upstream-Status: Submitted [https://sourceforge.net/tracker/?func=detail&aid=3599280&group_id=12349&atid=112349] + +Signed-off-by: Marko Lindqvist <cazfi74@gmail.com> +diff -Nurd libid3tag-0.15.1b/configure.ac libid3tag-0.15.1b/configure.ac +--- libid3tag-0.15.1b/configure.ac 2004-01-24 01:22:46.000000000 +0200 ++++ libid3tag-0.15.1b/configure.ac 2013-01-03 06:41:02.734835014 +0200 +@@ -28,7 +28,7 @@ + +-AM_INIT_AUTOMAKE ++AM_INIT_AUTOMAKE([foreign]) + +-AM_CONFIG_HEADER([config.h]) ++AC_CONFIG_HEADERS([config.h]) + + dnl System type. diff --git a/external/poky/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb new file mode 100644 index 00000000..fe316461 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb @@ -0,0 +1,26 @@ +SUMMARY = "Library for interacting with ID3 tags in MP3 files" +HOMEPAGE = "http://sourceforge.net/projects/mad/" +BUGTRACKER = "http://sourceforge.net/tracker/?group_id=12349&atid=112349" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ + file://COPYRIGHT;md5=5e6279efb87c26c6e5e7a68317a6a87a \ + file://version.h;beginline=1;endline=8;md5=86ac68b67f054b7afde9e149bbc3fe63" +SECTION = "libs" +DEPENDS = "zlib gperf-native" +PR = "r7" + +SRC_URI = "${SOURCEFORGE_MIRROR}/mad/libid3tag-${PV}.tar.gz \ + file://addpkgconfig.patch \ + file://obsolete_automake_macros.patch \ + file://0001-Fix-gperf-3.1-incompatibility.patch \ + file://10_utf16.dpatch \ + " +UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/mad/files/libid3tag/" +UPSTREAM_CHECK_REGEX = "/projects/mad/files/libid3tag/(?P<pver>.*)/$" + +SRC_URI[md5sum] = "e5808ad997ba32c498803822078748c3" +SRC_URI[sha256sum] = "63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151" + +S = "${WORKDIR}/libid3tag-${PV}" + +inherit autotools pkgconfig diff --git a/external/poky/meta/recipes-multimedia/libogg/libogg_1.3.3.bb b/external/poky/meta/recipes-multimedia/libogg/libogg_1.3.3.bb new file mode 100644 index 00000000..8d88f1f9 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libogg/libogg_1.3.3.bb @@ -0,0 +1,17 @@ +SUMMARY = "Ogg bitstream and framing libary" +DESCRIPTION = "libogg is the bitstream and framing library \ +for the Ogg project. It provides functions which are \ +necessary to codec libraries like libvorbis." +HOMEPAGE = "http://xiph.org/" +BUGTRACKER = "https://trac.xiph.org/newticket" +SECTION = "libs" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \ + file://include/ogg/ogg.h;beginline=1;endline=11;md5=eda812856f13a3b1326eb8f020cc3b0b" + +SRC_URI = "http://downloads.xiph.org/releases/ogg/${BP}.tar.xz" + +SRC_URI[md5sum] = "87ed742047f065046eb6c36745d871b8" +SRC_URI[sha256sum] = "4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08" + +inherit autotools pkgconfig diff --git a/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/configure-fix.patch b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/configure-fix.patch new file mode 100644 index 00000000..876e80ef --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/configure-fix.patch @@ -0,0 +1,58 @@ +To enable --disable-Werror for libomxil to avoid some compilers which check code strictly. + +For example, at least the following errors happened to some compilers: + +1) OMX_INDEXTYPE in include/OMX_Index.h IS NOT OMX_INDEXVENDORTYPE in src/base/omx_base_component.h +| i586-poky-linux-libtool: compile: i586-poky-linux-gcc -m32 -march=i586 --sysroot=/home/yocto-build5/poky/build/tmp/sysroots/qemux86 -DHAVE_Climinate-unused-debug-types -Wall -Werror -DCONFIG_DEBUG_LEVEL=0 -c OMXComponentRMExt.c -fPIC -DPIC -o .libs/libomxbase_la-OMXComponentRMExt.o +| omx_base_component.c: In function 'omx_base_component_GetParameter': +| omx_base_component.c:991:3: error: case value '2130706435' not in enumerated type 'OMX_INDEXTYPE' [-Werror=switch] +| omx_base_component.c:918:3: error: case value '2130706436' not in enumerated type 'OMX_INDEXTYPE' [-Werror=switch] + +2) +| i586-poky-linux-gcc -m32 -march=i586 --sysroot=/home/yocto-build5/poky/build/tmp/sysroots/qemux86 -DHAVE_CONFIG_H -I. -I.. -DOMXILCOMPOminate-unused-debug-types -Wall -Werror -DCONFIG_DEBUG_LEVEL=0 -c -o omxregister_bellagio-omxregister.o `test -f 'omxregister.c' || echo './'`o +| omxregister.c: In function 'buildComponentsList': +| omxregister.c:175:7: error: variable 'err' set but not used [-Werror=unused-but-set-variable] +| cc1: all warnings being treated as errors + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Shane Wang <shane.wang@intel.com> + +diff -r 82d742d3ea90 configure.ac +--- a/configure.ac Tue Dec 27 15:30:35 2011 +0800 ++++ b/configure.ac Tue Dec 27 16:26:03 2011 +0800 +@@ -5,7 +5,7 @@ + AC_PREREQ([2.59]) + + AC_CONFIG_HEADERS([config.h]) +-CFLAGS="${CFLAGS} -Wall -Werror" ++CFLAGS="${CFLAGS} -Wall" + + ################################################################################ + # Set the shared versioning info, according to section 6.3 of the libtool info # +@@ -122,6 +122,14 @@ + [with_android=$enableval], + [with_android=no]) + ++AC_ARG_ENABLE( ++ [Werror], ++ [AC_HELP_STRING( ++ [--disable-Werror], ++ [whether to diable treating gcc warnings as errors])], ++ [with_Werror=$enableval], ++ [with_Werror=yes]) ++ + ################################################################################ + # Check for programs # + ################################################################################ +@@ -193,6 +201,10 @@ + CFG_DEBUG_LEVEL=255 + fi + ++if test "x$with_Werror" = "xyes"; then ++ CFLAGS="${CFLAGS} -Werror" ++fi ++ + AC_SUBST(CFG_DEBUG_LEVEL) + CFLAGS="${CFLAGS} -DCONFIG_DEBUG_LEVEL=$CFG_DEBUG_LEVEL" + diff --git a/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/disable-so-versioning.patch b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/disable-so-versioning.patch new file mode 100644 index 00000000..f408e4a6 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/disable-so-versioning.patch @@ -0,0 +1,36 @@ +Disable so versioning since they are really not a versioned shared lib. + +Upstream-Status: Submitted @ https://sourceforge.net/p/omxil/bugs/59/ + +Signed-off-by: Drew Moseley <drew_moseley@mentor.com> + +diff -rub libomxil-bellagio-0.9.3-orig/src/components/audio_effects/Makefile.am libomxil-bellagio-0.9.3/src/components/audio_effects/Makefile.am +--- libomxil-bellagio-0.9.3-orig/src/components/audio_effects/Makefile.am 2014-07-20 15:22:00.858425234 -0400 ++++ libomxil-bellagio-0.9.3/src/components/audio_effects/Makefile.am 2014-07-20 15:25:42.687525225 -0400 +@@ -10,4 +10,5 @@ + libomxaudio_effects_la_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/base ++libomxaudio_effects_la_LDFLAGS = -avoid-version + +diff -rub libomxil-bellagio-0.9.3-orig/src/components/clocksrc/Makefile.am libomxil-bellagio-0.9.3/src/components/clocksrc/Makefile.am +--- libomxil-bellagio-0.9.3-orig/src/components/clocksrc/Makefile.am 2014-07-20 15:22:00.858425234 -0400 ++++ libomxil-bellagio-0.9.3/src/components/clocksrc/Makefile.am 2014-07-20 15:24:49.151259753 -0400 +@@ -10,4 +10,4 @@ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/base +- ++libomxclocksrc_la_LDFLAGS = -avoid-version +diff -rub libomxil-bellagio-0.9.3-orig/src/components/videoscheduler/Makefile.am libomxil-bellagio-0.9.3/src/components/videoscheduler/Makefile.am +--- libomxil-bellagio-0.9.3-orig/src/components/videoscheduler/Makefile.am 2014-07-20 15:22:00.862425254 -0400 ++++ libomxil-bellagio-0.9.3/src/components/videoscheduler/Makefile.am 2014-07-20 15:22:36.462601786 -0400 +@@ -6,7 +6,7 @@ + library_entry_point.c + + libomxvideosched_la_LIBADD = $(top_builddir)/src/libomxil-bellagio.la +-libomxvideosched_la_LDFLAGS = ++libomxvideosched_la_LDFLAGS = -avoid-version + libomxvideosched_la_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/base diff --git a/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/dynamicloader-linking.patch b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/dynamicloader-linking.patch new file mode 100644 index 00000000..787953a9 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/dynamicloader-linking.patch @@ -0,0 +1,20 @@ +This patch fixes link issue when libomxdynamicloader.so is loaded : +Missing symbol RM_Deinit. + +This patch comes from "http://pkgs.fedoraproject.org/cgit/libomxil-bellagio.git/commit/?h=f17&id=4996a95828943d345e51ded6876c3103653eecf8" + +Upstream-Status: Pending + +Signed-off-by: Sébastien Mennetrier <s.mennetrier@innotis.org> + +--- a/src/dynamic_loader/Makefile.am 2014-02-25 15:29:10.128549636 +0100 ++++ b/src/dynamic_loader/Makefile.am 2014-02-25 15:30:15.756548808 +0100 +@@ -3,7 +3,7 @@ + omxdynamicloader_LTLIBRARIES = libomxdynamicloader.la + libomxdynamicloader_la_SOURCES = ste_dynamic_component_loader.c ste_dynamic_component_loader.h + +-libomxdynamicloader_la_LDFLAGS = ++libomxdynamicloader_la_LDFLAGS = -lomxil-bellagio -L$(top_builddir)/src/.libs + libomxdynamicloader_la_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/base \ diff --git a/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/makefile-docdir-fix.patch b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/makefile-docdir-fix.patch new file mode 100644 index 00000000..dbe8c41f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/makefile-docdir-fix.patch @@ -0,0 +1,19 @@ +This patch is to remove DESTDIR in docdir. +Otherwise, when users install by running `make install DESTDIR=/alternate/directory' specified in the file INSTALL, the doc will go into /alternate/directory/alternate/directory, which is not expected. + +Upstream-Status: Pending + +Signed-off-by: Shane Wang <shane.wang@intel.com> + +diff -r 30b597e4e70d Makefile.am +--- a/Makefile.am Wed Dec 28 15:38:35 2011 +0800 ++++ b/Makefile.am Wed Dec 28 15:39:25 2011 +0800 +@@ -7,7 +7,7 @@ + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libomxil-bellagio.pc + +-docdir = $(DESTDIR)$(prefix)/share/doc/@PACKAGE@ ++docdir = $(prefix)/share/doc/@PACKAGE@ + doc_DATA = README \ + ChangeLog \ + TODO diff --git a/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/parallel-make.patch b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/parallel-make.patch new file mode 100644 index 00000000..483ca132 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libomxil/libomxil-0.9.3/parallel-make.patch @@ -0,0 +1,18 @@ +This patch is to make libomxil Makefile support "make -jN". +The omxregister_bellagio stuffs depend on libomxil_bellagio library. + +Upstream-Status: Pending + +Signed-off-by: Shane Wang <shane.wang@intel.com> + +diff -r f59d077d3dd5 Makefile.am +--- a/src/Makefile.am Wed Dec 28 10:54:36 2011 +0800 ++++ b/src/Makefile.am Wed Dec 28 10:55:46 2011 +0800 +@@ -7,6 +7,7 @@ + omxregister_bellagio_SOURCES = omxregister.c common.c common.h + omxregister_bellagio_CFLAGS = -DOMXILCOMPONENTSPATH=\"$(plugindir)/\" \ + -I$(top_srcdir)/include ++omxregister_bellagio_LDADD = $(lib_LTLIBRARIES) + omxregister_bellagio_LDFLAGS = -lomxil-bellagio -L$(builddir) + + lib_LTLIBRARIES = libomxil-bellagio.la diff --git a/external/poky/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb b/external/poky/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb new file mode 100644 index 00000000..d83eb457 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb @@ -0,0 +1,37 @@ +SUMMARY = "Bellagio OpenMAX Integration Layer (IL)" +DESCRIPTION = "Bellagio is an opensource implementation of the Khronos OpenMAX \ + Integration Layer API to access multimedia components." +HOMEPAGE = "http://omxil.sourceforge.net/" + +LICENSE = "LGPLv2.1+" +LICENSE_FLAGS = "commercial" +LIC_FILES_CHKSUM = "file://COPYING;md5=ae6f0f4dbc7ac193b50f323a6ae191cb \ + file://src/omxcore.h;beginline=1;endline=27;md5=806b1e5566c06486fe8e42b461e03a90" + +SRC_URI = "${SOURCEFORGE_MIRROR}/omxil/libomxil-bellagio-${PV}.tar.gz \ + file://configure-fix.patch \ + file://parallel-make.patch \ + file://makefile-docdir-fix.patch \ + file://dynamicloader-linking.patch \ + file://disable-so-versioning.patch" + +SRC_URI[md5sum] = "a1de827fdb75c02c84e55f740ca27cb8" +SRC_URI[sha256sum] = "593c0729c8ef8c1467b3bfefcf355ec19a46dd92e31bfc280e17d96b0934d74c" + +S = "${WORKDIR}/${BPN}-bellagio-${PV}" + +inherit autotools + +EXTRA_OECONF += "--disable-doc --disable-Werror" + +# +# The .so files under ${libdir}/bellagio are not intended to be versioned and symlinked. +# Make sure they get packaged in the main package. +# +FILES_${PN} += "${libdir}/bellagio/*.so \ + ${libdir}/omxloaders/*${SOLIBS}" +FILES_${PN}-staticdev += "${libdir}/bellagio/*.a \ + ${libdir}/omxloaders/*.a" +FILES_${PN}-dev += "${libdir}/bellagio/*.la \ + ${libdir}/omxloaders/*.la \ + ${libdir}/omxloaders/*${SOLIBSDEV}" diff --git a/external/poky/meta/recipes-multimedia/libpng/libpng/CVE-2019-7317.patch b/external/poky/meta/recipes-multimedia/libpng/libpng/CVE-2019-7317.patch new file mode 100644 index 00000000..6ee1f8da --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libpng/libpng/CVE-2019-7317.patch @@ -0,0 +1,20 @@ +Use-after-free detected with static analysis. + +CVE: CVE-2019-7317 +Upstream-Status: Submitted [https://github.com/glennrp/libpng/issues/275] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +diff --git a/png.c b/png.c +index 9d9926f638..efd1aecfbd 100644 +--- a/png.c ++++ b/png.c +@@ -4588,8 +4588,7 @@ png_image_free(png_imagep image) + if (image != NULL && image->opaque != NULL && + image->opaque->error_buf == NULL) + { +- /* Ignore errors here: */ +- (void)png_safe_execute(image, png_image_free_function, image); ++ png_image_free_function(image); + image->opaque = NULL; + } + } diff --git a/external/poky/meta/recipes-multimedia/libpng/libpng_1.6.36.bb b/external/poky/meta/recipes-multimedia/libpng/libpng_1.6.36.bb new file mode 100644 index 00000000..a5862378 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libpng/libpng_1.6.36.bb @@ -0,0 +1,32 @@ +SUMMARY = "PNG image format decoding library" +HOMEPAGE = "http://www.libpng.org/" +SECTION = "libs" +LICENSE = "Libpng" +LIC_FILES_CHKSUM = "file://LICENSE;md5=12b4ec50384c800bc568f519671b120c \ + file://png.h;endline=144;md5=15ae15f53376306868259924a9db4e05 \ + " +DEPENDS = "zlib" + +LIBV = "16" + +SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz \ + file://CVE-2019-7317.patch" +SRC_URI[md5sum] = "df2be2d29c40937fe1f5349b16bc2826" +SRC_URI[sha256sum] = "eceb924c1fa6b79172fdfd008d335f0e59172a86a66481e09d4089df872aa319" + +MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/${PV}/" + +UPSTREAM_CHECK_URI = "http://libpng.org/pub/png/libpng.html" + +BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" + +inherit autotools binconfig-disabled pkgconfig + +# Work around missing symbols +EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off" ,d)}" + +PACKAGES =+ "${PN}-tools" + +FILES_${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp" + +BBCLASSEXTEND = "native nativesdk" diff --git a/external/poky/meta/recipes-multimedia/libsamplerate/libsamplerate0/0001-configure.ac-improve-alsa-handling.patch b/external/poky/meta/recipes-multimedia/libsamplerate/libsamplerate0/0001-configure.ac-improve-alsa-handling.patch new file mode 100644 index 00000000..d19b514e --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsamplerate/libsamplerate0/0001-configure.ac-improve-alsa-handling.patch @@ -0,0 +1,62 @@ +From 957ebce3837588f71016e37ffaf9aad0a9d41cec Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen <tanuk@iki.fi> +Date: Fri, 23 Sep 2016 12:02:06 +0300 +Subject: [PATCH] configure.ac: improve alsa handling + +Three improvements: + +1) "--enable-alsa" or "--disable-alsa" caused a warning about an +unsupported configure option, because AC_ARG_ENABLE was not used. + +2) If alsa was disabled, the "Have ALSA" item in the summary would print +an empty string instead of "no". + +3) If "--enable-alsa" was passed to configure, but the headers were not +found, configure would still succeed (with alsa disabled). It's better +to fail and abort configure if a feature that was explicitly requested +can't be enabled. + +Upstream-Status: Submitted [sent to src@mega-nerd.com] + +Signed-off-by: Tanu Kaskinen <tanuk@iki.fi> +--- + configure.ac | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 474c6ab..bad597e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -101,6 +101,9 @@ AC_ARG_ENABLE(cpu-clip, + AC_HELP_STRING([--disable-cpu-clip], [disable tricky cpu specific clipper]), + ac_arg_cpu_clip="N", ac_arg_cpu_clip="Y") + ++AC_ARG_ENABLE(alsa, ++ AC_HELP_STRING([--disable-alsa], [disable ALSA support in the varispeed-play example program])) ++ + #==================================================================================== + # Check types and their sizes. + +@@ -194,6 +197,10 @@ if test x$enable_alsa != xno ; then + if test x$ac_cv_header_alsa_asoundlib_h = xyes ; then + ALSA_LIBS="-lasound" + enable_alsa=yes ++ elif test x$enable_alsa = xyes ; then ++ AC_MSG_ERROR(["ALSA headers not found"]) ++ else ++ enable_alsa=no + fi + fi + +@@ -340,7 +347,7 @@ AC_MSG_RESULT([ + Have FFTW : ................... ${ac_cv_fftw3}]) + + AC_MSG_RESULT([ Have libsndfile : ............. ${ac_cv_sndfile}]) +-AC_MSG_RESULT([ Have ALSA : ................... ${ac_cv_header_alsa_asoundlib_h} ++AC_MSG_RESULT([ Have ALSA : ................... ${enable_alsa} + ]) + + AC_MSG_RESULT([ Installation directories : +-- +2.9.3 + diff --git a/external/poky/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.1.9.bb b/external/poky/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.1.9.bb new file mode 100644 index 00000000..ae081894 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.1.9.bb @@ -0,0 +1,28 @@ +SUMMARY = "Audio Sample Rate Conversion library" +HOMEPAGE = "http://www.mega-nerd.com/SRC/" +SECTION = "libs" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=336d6faf40fb600bafb0061f4052f1f4 \ + file://src/samplerate.c;beginline=1;endline=7;md5=5b6982a8c2811c7312c13cccbf55f55e" +DEPENDS = "libsndfile1" +PR = "r1" + +SRC_URI = "http://www.mega-nerd.com/SRC/libsamplerate-${PV}.tar.gz \ + file://0001-configure.ac-improve-alsa-handling.patch \ +" + +SRC_URI[md5sum] = "2b78ae9fe63b36b9fbb6267fad93f259" +SRC_URI[sha256sum] = "0a7eb168e2f21353fb6d84da152e4512126f7dc48ccb0be80578c565413444c1" + +CVE_PRODUCT = "libsamplerate" + +UPSTREAM_CHECK_URI = "http://www.mega-nerd.com/SRC/download.html" + +S = "${WORKDIR}/libsamplerate-${PV}" + +inherit autotools pkgconfig + +# FFTW and ALSA are only used in tests and examples, so they don't affect +# normal builds. It should be safe to ignore these, but explicitly disabling +# them adds some extra certainty that builds are deterministic. +EXTRA_OECONF = "--disable-fftw --disable-alsa" diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/0001-a-ulaw-fix-multiple-buffer-overflows-432.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/0001-a-ulaw-fix-multiple-buffer-overflows-432.patch new file mode 100644 index 00000000..a4679cef --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/0001-a-ulaw-fix-multiple-buffer-overflows-432.patch @@ -0,0 +1,107 @@ +This patch fixes #429 (CVE-2018-19661 CVE-2018-19662) and #344 (CVE-2017-17456 +CVE-2017-17457). As per +https://github.com/erikd/libsndfile/issues/344#issuecomment-448504425 it also +fixes #317 (CVE-2017-14245 CVE-2017-14246). + +CVE: CVE-2017-14245 CVE-2017-14246 +CVE: CVE-2017-17456 CVE-2017-17457 +CVE: CVE-2018-19661 CVE-2018-19662 + +Upstream-Status: Backport [8ddc442d539ca775d80cdbc7af17a718634a743f] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From 39453899fe1bb39b2e041fdf51a85aecd177e9c7 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Mon, 7 Jan 2019 15:55:03 +0800 +Subject: [PATCH] a/ulaw: fix multiple buffer overflows (#432) + +i2ulaw_array() and i2alaw_array() fail to handle ptr [count] = INT_MIN +properly, leading to buffer underflow. INT_MIN is a special value +since - INT_MIN cannot be represented as int. + +In this case round - INT_MIN to INT_MAX and proceed as usual. + +f2ulaw_array() and f2alaw_array() fail to handle ptr [count] = NaN +properly, leading to null pointer dereference. + +In this case, arbitrarily set the buffer value to 0. + +This commit fixes #429 (CVE-2018-19661 and CVE-2018-19662) and +fixes #344 (CVE-2017-17456 and CVE-2017-17457). + +--- + src/alaw.c | 9 +++++++-- + src/ulaw.c | 9 +++++++-- + 2 files changed, 14 insertions(+), 4 deletions(-) + +diff --git a/src/alaw.c b/src/alaw.c +index 063fd1a..4220224 100644 +--- a/src/alaw.c ++++ b/src/alaw.c +@@ -19,6 +19,7 @@ + #include "sfconfig.h" + + #include <math.h> ++#include <limits.h> + + #include "sndfile.h" + #include "common.h" +@@ -326,7 +327,9 @@ s2alaw_array (const short *ptr, int count, unsigned char *buffer) + static inline void + i2alaw_array (const int *ptr, int count, unsigned char *buffer) + { while (--count >= 0) +- { if (ptr [count] >= 0) ++ { if (ptr [count] == INT_MIN) ++ buffer [count] = alaw_encode [INT_MAX >> (16 + 4)] ; ++ else if (ptr [count] >= 0) + buffer [count] = alaw_encode [ptr [count] >> (16 + 4)] ; + else + buffer [count] = 0x7F & alaw_encode [- ptr [count] >> (16 + 4)] ; +@@ -346,7 +349,9 @@ f2alaw_array (const float *ptr, int count, unsigned char *buffer, float normfact + static inline void + d2alaw_array (const double *ptr, int count, unsigned char *buffer, double normfact) + { while (--count >= 0) +- { if (ptr [count] >= 0) ++ { if (!isfinite (ptr [count])) ++ buffer [count] = 0 ; ++ else if (ptr [count] >= 0) + buffer [count] = alaw_encode [lrint (normfact * ptr [count])] ; + else + buffer [count] = 0x7F & alaw_encode [- lrint (normfact * ptr [count])] ; +diff --git a/src/ulaw.c b/src/ulaw.c +index e50b4cb..b6070ad 100644 +--- a/src/ulaw.c ++++ b/src/ulaw.c +@@ -19,6 +19,7 @@ + #include "sfconfig.h" + + #include <math.h> ++#include <limits.h> + + #include "sndfile.h" + #include "common.h" +@@ -827,7 +828,9 @@ s2ulaw_array (const short *ptr, int count, unsigned char *buffer) + static inline void + i2ulaw_array (const int *ptr, int count, unsigned char *buffer) + { while (--count >= 0) +- { if (ptr [count] >= 0) ++ { if (ptr [count] == INT_MIN) ++ buffer [count] = ulaw_encode [INT_MAX >> (16 + 2)] ; ++ else if (ptr [count] >= 0) + buffer [count] = ulaw_encode [ptr [count] >> (16 + 2)] ; + else + buffer [count] = 0x7F & ulaw_encode [-ptr [count] >> (16 + 2)] ; +@@ -847,7 +850,9 @@ f2ulaw_array (const float *ptr, int count, unsigned char *buffer, float normfact + static inline void + d2ulaw_array (const double *ptr, int count, unsigned char *buffer, double normfact) + { while (--count >= 0) +- { if (ptr [count] >= 0) ++ { if (!isfinite (ptr [count])) ++ buffer [count] = 0 ; ++ else if (ptr [count] >= 0) + buffer [count] = ulaw_encode [lrint (normfact * ptr [count])] ; + else + buffer [count] = 0x7F & ulaw_encode [- lrint (normfact * ptr [count])] ; +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-12562.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-12562.patch new file mode 100644 index 00000000..491dae31 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-12562.patch @@ -0,0 +1,96 @@ +Heap-based Buffer Overflow in the psf_binheader_writef function in common.c in +libsndfile through 1.0.28 allows remote attackers to cause a denial of service +(application crash) or possibly have unspecified other impact. + +CVE: CVE-2017-12562 +Upstream-Status: Backport [cf7a8182c2642c50f1cf90dddea9ce96a8bad2e8] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From b6a9d7e95888ffa77d8c75ce3f03e6c7165587cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rn=20Heusipp?= <osmanx@problemloesungsmaschine.de> +Date: Wed, 14 Jun 2017 12:25:40 +0200 +Subject: [PATCH] src/common.c: Fix heap buffer overflows when writing strings + in binheader + +Fixes the following problems: + 1. Case 's' only enlarges the buffer by 16 bytes instead of size bytes. + 2. psf_binheader_writef() enlarges the header buffer (if needed) prior to the + big switch statement by an amount (16 bytes) which is enough for all cases + where only a single value gets added. Cases 's', 'S', 'p' however + additionally write an arbitrary length block of data and again enlarge the + buffer to the required amount. However, the required space calculation does + not take into account the size of the length field which gets output before + the data. + 3. Buffer size requirement calculation in case 'S' does not account for the + padding byte ("size += (size & 1) ;" happens after the calculation which + uses "size"). + 4. Case 'S' can overrun the header buffer by 1 byte when no padding is + involved + ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ;" while + the buffer is only guaranteed to have "size" space available). + 5. "psf->header.ptr [psf->header.indx] = 0 ;" in case 'S' always writes 1 byte + beyond the space which is guaranteed to be allocated in the header buffer. + 6. Case 's' can overrun the provided source string by 1 byte if padding is + involved ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ;" + where "size" is "strlen (strptr) + 1" (which includes the 0 terminator, + plus optionally another 1 which is padding and not guaranteed to be + readable via the source string pointer). + +Closes: https://github.com/erikd/libsndfile/issues/292 +--- + src/common.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git a/src/common.c b/src/common.c +index 1a6204ca..6b2a2ee9 100644 +--- a/src/common.c ++++ b/src/common.c +@@ -681,16 +681,16 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...) + /* Write a C string (guaranteed to have a zero terminator). */ + strptr = va_arg (argptr, char *) ; + size = strlen (strptr) + 1 ; +- size += (size & 1) ; + +- if (psf->header.indx + (sf_count_t) size >= psf->header.len && psf_bump_header_allocation (psf, 16)) ++ if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1))) + return count ; + + if (psf->rwf_endian == SF_ENDIAN_BIG) +- header_put_be_int (psf, size) ; ++ header_put_be_int (psf, size + (size & 1)) ; + else +- header_put_le_int (psf, size) ; ++ header_put_le_int (psf, size + (size & 1)) ; + memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ; ++ size += (size & 1) ; + psf->header.indx += size ; + psf->header.ptr [psf->header.indx - 1] = 0 ; + count += 4 + size ; +@@ -703,16 +703,15 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...) + */ + strptr = va_arg (argptr, char *) ; + size = strlen (strptr) ; +- if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size)) ++ if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1))) + return count ; + if (psf->rwf_endian == SF_ENDIAN_BIG) + header_put_be_int (psf, size) ; + else + header_put_le_int (psf, size) ; +- memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ; ++ memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + (size & 1)) ; + size += (size & 1) ; + psf->header.indx += size ; +- psf->header.ptr [psf->header.indx] = 0 ; + count += 4 + size ; + break ; + +@@ -724,7 +723,7 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...) + size = (size & 1) ? size : size + 1 ; + size = (size > 254) ? 254 : size ; + +- if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size)) ++ if (psf->header.indx + 1 + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, 1 + size)) + return count ; + + header_put_byte (psf, size) ; diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch new file mode 100644 index 00000000..39b4ec11 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch @@ -0,0 +1,42 @@ +From 85c877d5072866aadbe8ed0c3e0590fbb5e16788 Mon Sep 17 00:00:00 2001 +From: Fabian Greffrath <fabian@greffrath.com> +Date: Thu, 28 Sep 2017 12:15:04 +0200 +Subject: [PATCH] double64_init: Check psf->sf.channels against upper bound + +This prevents division by zero later in the code. + +While the trivial case to catch this (i.e. sf.channels < 1) has already +been covered, a crafted file may report a number of channels that is +so high (i.e. > INT_MAX/sizeof(double)) that it "somehow" gets +miscalculated to zero (if this makes sense) in the determination of the +blockwidth. Since we only support a limited number of channels anyway, +make sure to check here as well. + +CVE: CVE-2017-14634 + +Closes: https://github.com/erikd/libsndfile/issues/318 + +Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/85c877d5072866aadbe8ed0c3e0590fbb5e16788] + +Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com> +Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com> +--- + src/double64.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/double64.c b/src/double64.c +index b318ea8..78dfef7 100644 +--- a/src/double64.c ++++ b/src/double64.c +@@ -91,7 +91,7 @@ int + double64_init (SF_PRIVATE *psf) + { static int double64_caps ; + +- if (psf->sf.channels < 1) ++ if (psf->sf.channels < 1 || psf->sf.channels > SF_MAX_CHANNELS) + { psf_log_printf (psf, "double64_init : internal error : channels = %d\n", psf->sf.channels) ; + return SFE_INTERNAL ; + } ; +-- +2.13.3 + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-6892.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-6892.patch new file mode 100644 index 00000000..89552ac2 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-6892.patch @@ -0,0 +1,34 @@ +From f833c53cb596e9e1792949f762e0b33661822748 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Tue, 23 May 2017 20:15:24 +1000 +Subject: [PATCH] src/aiff.c: Fix a buffer read overflow + +Secunia Advisory SA76717. + +Found by: Laurent Delosieres, Secunia Research at Flexera Software + +CVE: CVE-2017-6892 +Upstream-Status: Backport + +Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com> + +--- + src/aiff.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/aiff.c b/src/aiff.c +index 5b5f9f5..45864b7 100644 +--- a/src/aiff.c ++++ b/src/aiff.c +@@ -1759,7 +1759,7 @@ aiff_read_chanmap (SF_PRIVATE * psf, unsigned dword) + psf_binheader_readf (psf, "j", dword - bytesread) ; + + if (map_info->channel_map != NULL) +- { size_t chanmap_size = psf->sf.channels * sizeof (psf->channel_map [0]) ; ++ { size_t chanmap_size = SF_MIN (psf->sf.channels, layout_tag & 0xffff) * sizeof (psf->channel_map [0]) ; + + free (psf->channel_map) ; + +-- +1.9.1 + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8361-8365.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8361-8365.patch new file mode 100644 index 00000000..ac99516b --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8361-8365.patch @@ -0,0 +1,73 @@ +From fd0484aba8e51d16af1e3a880f9b8b857b385eb3 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Wed, 12 Apr 2017 19:45:30 +1000 +Subject: [PATCH] FLAC: Fix a buffer read overrun + +Buffer read overrun occurs when reading a FLAC file that switches +from 2 channels to one channel mid-stream. Only option is to +abort the read. + +Closes: https://github.com/erikd/libsndfile/issues/230 + +CVE: CVE-2017-8361 CVE-2017-8365 + +Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/fd0484aba8e51d16af1e3a880f9b8b857b385eb3] + +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> +--- + src/common.h | 1 + + src/flac.c | 13 +++++++++++++ + src/sndfile.c | 1 + + 3 files changed, 15 insertions(+) + +diff --git a/src/common.h b/src/common.h +index 0bd810c..e2669b6 100644 +--- a/src/common.h ++++ b/src/common.h +@@ -725,6 +725,7 @@ enum + SFE_FLAC_INIT_DECODER, + SFE_FLAC_LOST_SYNC, + SFE_FLAC_BAD_SAMPLE_RATE, ++ SFE_FLAC_CHANNEL_COUNT_CHANGED, + SFE_FLAC_UNKOWN_ERROR, + + SFE_WVE_NOT_WVE, +diff --git a/src/flac.c b/src/flac.c +index 84de0e2..986a7b8 100644 +--- a/src/flac.c ++++ b/src/flac.c +@@ -434,6 +434,19 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_ + + switch (metadata->type) + { case FLAC__METADATA_TYPE_STREAMINFO : ++ if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels) ++ { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n" ++ "Nothing to be but to error out.\n" , ++ psf->sf.channels, metadata->data.stream_info.channels) ; ++ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ; ++ return ; ++ } ; ++ ++ if (psf->sf.channels > 0 && psf->sf.samplerate != (int) metadata->data.stream_info.sample_rate) ++ { psf_log_printf (psf, "Warning: FLAC stream changed sample rates from %d to %d.\n" ++ "Carrying on as if nothing happened.", ++ psf->sf.samplerate, metadata->data.stream_info.sample_rate) ; ++ } ; + psf->sf.channels = metadata->data.stream_info.channels ; + psf->sf.samplerate = metadata->data.stream_info.sample_rate ; + psf->sf.frames = metadata->data.stream_info.total_samples ; +diff --git a/src/sndfile.c b/src/sndfile.c +index 4187561..e2a87be 100644 +--- a/src/sndfile.c ++++ b/src/sndfile.c +@@ -245,6 +245,7 @@ ErrorStruct SndfileErrors [] = + { SFE_FLAC_INIT_DECODER , "Error : problem with initialization of the flac decoder." }, + { SFE_FLAC_LOST_SYNC , "Error : flac decoder lost sync." }, + { SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this sample rate." }, ++ { SFE_FLAC_CHANNEL_COUNT_CHANGED, "Error : flac channel changed mid stream." }, + { SFE_FLAC_UNKOWN_ERROR , "Error : unknown error in flac decoder." }, + + { SFE_WVE_NOT_WVE , "Error : not a WVE file." }, +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8362.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8362.patch new file mode 100644 index 00000000..9ee7e46a --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8362.patch @@ -0,0 +1,59 @@ +From ef1dbb2df1c0e741486646de40bd638a9c4cd808 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Fri, 14 Apr 2017 15:19:16 +1000 +Subject: [PATCH] src/flac.c: Fix a buffer read overflow + +A file (generated by a fuzzer) which increased the number of channels +from one frame to the next could cause a read beyond the end of the +buffer provided by libFLAC. Only option is to abort the read. + +Closes: https://github.com/erikd/libsndfile/issues/231 + +CVE: CVE-2017-8362 + +Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/ef1dbb2df1c0e741486646de40bd638a9c4cd808] + +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> +--- + src/flac.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/flac.c b/src/flac.c +index 5a4f8c2..e4f9aaa 100644 +--- a/src/flac.c ++++ b/src/flac.c +@@ -169,6 +169,14 @@ flac_buffer_copy (SF_PRIVATE *psf) + const int32_t* const *buffer = pflac->wbuffer ; + unsigned i = 0, j, offset, channels, len ; + ++ if (psf->sf.channels != (int) frame->header.channels) ++ { psf_log_printf (psf, "Error: FLAC frame changed from %d to %d channels\n" ++ "Nothing to do but to error out.\n" , ++ psf->sf.channels, frame->header.channels) ; ++ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ; ++ return 0 ; ++ } ; ++ + /* + ** frame->header.blocksize is variable and we're using a constant blocksize + ** of FLAC__MAX_BLOCK_SIZE. +@@ -202,7 +210,6 @@ flac_buffer_copy (SF_PRIVATE *psf) + return 0 ; + } ; + +- + len = SF_MIN (pflac->len, frame->header.blocksize) ; + + if (pflac->remain % channels != 0) +@@ -436,7 +443,7 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_ + { case FLAC__METADATA_TYPE_STREAMINFO : + if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels) + { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n" +- "Nothing to be but to error out.\n" , ++ "Nothing to do but to error out.\n" , + psf->sf.channels, metadata->data.stream_info.channels) ; + psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ; + return ; +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8363.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8363.patch new file mode 100644 index 00000000..e526e5a3 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-8363.patch @@ -0,0 +1,37 @@ +From cd7da8dbf6ee4310d21d9e44b385d6797160d9e8 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Wed, 12 Apr 2017 20:19:34 +1000 +Subject: [PATCH] src/flac.c: Fix another memory leak + +When the FLAC decoder was passed a malformed file, the associated +`FLAC__StreamDecoder` object was not getting released. + +Closes: https://github.com/erikd/libsndfile/issues/233 + +CVE: CVE-2017-8363 + +Upstream-Status: Backport [https://github.com/erikd/libsndfile/commit/cd7da8dbf6ee4310d21d9e44b385d6797160d9e8] + +Signed-off-by: Jackie Huang <jackie.huang@windriver.com> +--- + src/flac.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/flac.c b/src/flac.c +index 986a7b8..5a4f8c2 100644 +--- a/src/flac.c ++++ b/src/flac.c +@@ -841,7 +841,9 @@ flac_read_header (SF_PRIVATE *psf) + + psf_log_printf (psf, "End\n") ; + +- if (psf->error == 0) ++ if (psf->error != 0) ++ FLAC__stream_decoder_delete (pflac->fsd) ; ++ else + { FLAC__uint64 position ; + + FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ; +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-13139.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-13139.patch new file mode 100644 index 00000000..707373d4 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-13139.patch @@ -0,0 +1,37 @@ +CVE: CVE-2018-13139 +Upstream-Status: Backport [9dc989eb89cd697e19897afa616d6ab0debe4822] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From 9dc989eb89cd697e19897afa616d6ab0debe4822 Mon Sep 17 00:00:00 2001 +From: "Brett T. Warden" <brett.t.warden@intel.com> +Date: Tue, 28 Aug 2018 12:01:17 -0700 +Subject: [PATCH] Check MAX_CHANNELS in sndfile-deinterleave + +Allocated buffer has space for only 16 channels. Verify that input file +meets this limit. + +Fixes #397 +--- + programs/sndfile-deinterleave.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/programs/sndfile-deinterleave.c b/programs/sndfile-deinterleave.c +index e27593e2..cb497e1f 100644 +--- a/programs/sndfile-deinterleave.c ++++ b/programs/sndfile-deinterleave.c +@@ -89,6 +89,13 @@ main (int argc, char **argv) + exit (1) ; + } ; + ++ if (sfinfo.channels > MAX_CHANNELS) ++ { printf ("\nError : Input file '%s' has too many (%d) channels. Limit is %d.\n", ++ argv [1], sfinfo.channels, MAX_CHANNELS) ; ++ exit (1) ; ++ } ; ++ ++ + state.channels = sfinfo.channels ; + sfinfo.channels = 1 ; + +-- +2.11.0 diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19432.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19432.patch new file mode 100644 index 00000000..8ded2c0f --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19432.patch @@ -0,0 +1,115 @@ +From 6f3266277bed16525f0ac2f0f03ff4626f1923e5 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Thu, 8 Mar 2018 18:00:21 +1100 +Subject: [PATCH] Fix max channel count bug + +The code was allowing files to be written with a channel count of exactly +`SF_MAX_CHANNELS` but was failing to read some file formats with the same +channel count. + +Upstream-Status: Backport [https://github.com/erikd/libsndfile/ +commit/6f3266277bed16525f0ac2f0f03ff4626f1923e5] + +CVE: CVE-2018-19432 + +Signed-off-by: Changqing Li <changqing.li@windriver.com> + +--- + src/aiff.c | 6 +++--- + src/rf64.c | 4 ++-- + src/w64.c | 4 ++-- + src/wav.c | 4 ++-- + 4 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/aiff.c b/src/aiff.c +index fbd43cb..6386bce 100644 +--- a/src/aiff.c ++++ b/src/aiff.c +@@ -1,5 +1,5 @@ + /* +-** Copyright (C) 1999-2016 Erik de Castro Lopo <erikd@mega-nerd.com> ++** Copyright (C) 1999-2018 Erik de Castro Lopo <erikd@mega-nerd.com> + ** Copyright (C) 2005 David Viens <davidv@plogue.com> + ** + ** This program is free software; you can redistribute it and/or modify +@@ -950,7 +950,7 @@ aiff_read_header (SF_PRIVATE *psf, COMM_ + if (psf->sf.channels < 1) + return SFE_CHANNEL_COUNT_ZERO ; + +- if (psf->sf.channels >= SF_MAX_CHANNELS) ++ if (psf->sf.channels > SF_MAX_CHANNELS) + return SFE_CHANNEL_COUNT ; + + if (! (found_chunk & HAVE_FORM)) +@@ -1030,7 +1030,7 @@ aiff_read_comm_chunk (SF_PRIVATE *psf, C + psf_log_printf (psf, " Sample Rate : %d\n", samplerate) ; + psf_log_printf (psf, " Frames : %u%s\n", comm_fmt->numSampleFrames, (comm_fmt->numSampleFrames == 0 && psf->filelength > 104) ? " (Should not be 0)" : "") ; + +- if (comm_fmt->numChannels < 1 || comm_fmt->numChannels >= SF_MAX_CHANNELS) ++ if (comm_fmt->numChannels < 1 || comm_fmt->numChannels > SF_MAX_CHANNELS) + { psf_log_printf (psf, " Channels : %d (should be >= 1 and < %d)\n", comm_fmt->numChannels, SF_MAX_CHANNELS) ; + return SFE_CHANNEL_COUNT_BAD ; + } ; +diff --git a/src/rf64.c b/src/rf64.c +index d57f0f3..876cd45 100644 +--- a/src/rf64.c ++++ b/src/rf64.c +@@ -1,5 +1,5 @@ + /* +-** Copyright (C) 2008-2017 Erik de Castro Lopo <erikd@mega-nerd.com> ++** Copyright (C) 2008-2018 Erik de Castro Lopo <erikd@mega-nerd.com> + ** Copyright (C) 2009 Uli Franke <cls@nebadje.org> + ** + ** This program is free software; you can redistribute it and/or modify +@@ -382,7 +382,7 @@ rf64_read_header (SF_PRIVATE *psf, int * + if (psf->sf.channels < 1) + return SFE_CHANNEL_COUNT_ZERO ; + +- if (psf->sf.channels >= SF_MAX_CHANNELS) ++ if (psf->sf.channels > SF_MAX_CHANNELS) + return SFE_CHANNEL_COUNT ; + + /* WAVs can be little or big endian */ +diff --git a/src/w64.c b/src/w64.c +index 939b716..a37d2c5 100644 +--- a/src/w64.c ++++ b/src/w64.c +@@ -1,5 +1,5 @@ + /* +-** Copyright (C) 1999-2016 Erik de Castro Lopo <erikd@mega-nerd.com> ++** Copyright (C) 1999-2018 Erik de Castro Lopo <erikd@mega-nerd.com> + ** + ** This program is free software; you can redistribute it and/or modify + ** it under the terms of the GNU Lesser General Public License as published by +@@ -383,7 +383,7 @@ w64_read_header (SF_PRIVATE *psf, int *b + if (psf->sf.channels < 1) + return SFE_CHANNEL_COUNT_ZERO ; + +- if (psf->sf.channels >= SF_MAX_CHANNELS) ++ if (psf->sf.channels > SF_MAX_CHANNELS) + return SFE_CHANNEL_COUNT ; + + psf->endian = SF_ENDIAN_LITTLE ; /* All W64 files are little endian. */ +diff --git a/src/wav.c b/src/wav.c +index 7bd97bc..dc97545 100644 +--- a/src/wav.c ++++ b/src/wav.c +@@ -1,5 +1,5 @@ + /* +-** Copyright (C) 1999-2016 Erik de Castro Lopo <erikd@mega-nerd.com> ++** Copyright (C) 1999-2018 Erik de Castro Lopo <erikd@mega-nerd.com> + ** Copyright (C) 2004-2005 David Viens <davidv@plogue.com> + ** + ** This program is free software; you can redistribute it and/or modify +@@ -627,7 +627,7 @@ wav_read_header (SF_PRIVATE *psf, int *b + if (psf->sf.channels < 1) + return SFE_CHANNEL_COUNT_ZERO ; + +- if (psf->sf.channels >= SF_MAX_CHANNELS) ++ if (psf->sf.channels > SF_MAX_CHANNELS) + return SFE_CHANNEL_COUNT ; + + if (format != WAVE_FORMAT_PCM && (parsestage & HAVE_fact) == 0) +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19758.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19758.patch new file mode 100644 index 00000000..c3586f9d --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2018-19758.patch @@ -0,0 +1,34 @@ +There is a heap-based buffer over-read at wav.c in wav_write_header in +libsndfile 1.0.28 that will cause a denial of service. + +CVE: CVE-2018-19758 +Upstream-Status: Backport [42132c543358cee9f7c3e9e9b15bb6c1063a608e] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From c12173b0197dd0c5cfa2cd27977e982d2ae59486 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Tue, 1 Jan 2019 20:11:46 +1100 +Subject: [PATCH] src/wav.c: Fix heap read overflow + +This is CVE-2018-19758. + +Closes: https://github.com/erikd/libsndfile/issues/435 +--- + src/wav.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/wav.c b/src/wav.c +index e8405b55..6fb94ae8 100644 +--- a/src/wav.c ++++ b/src/wav.c +@@ -1094,6 +1094,8 @@ wav_write_header (SF_PRIVATE *psf, int calc_length) + psf_binheader_writef (psf, "44", 0, 0) ; /* SMTPE format */ + psf_binheader_writef (psf, "44", psf->instrument->loop_count, 0) ; + ++ /* Loop count is signed 16 bit number so we limit it range to something sensible. */ ++ psf->instrument->loop_count &= 0x7fff ; + for (tmp = 0 ; tmp < psf->instrument->loop_count ; tmp++) + { int type ; + +-- +2.11.0 diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2019-3832.patch b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2019-3832.patch new file mode 100644 index 00000000..ab372113 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2019-3832.patch @@ -0,0 +1,37 @@ +From 43886efc408c21e1e329086ef70c88860310f25b Mon Sep 17 00:00:00 2001 +From: Emilio Pozuelo Monfort <pochu27@gmail.com> +Date: Tue, 5 Mar 2019 11:27:17 +0100 +Subject: [PATCH] wav_write_header: don't read past the array end + +CVE-2018-19758 wasn't entirely fixed in the fix, so fix it harder. + +CVE: CVE-2019-3832 +Upstream-Status: Backport [7408c4c788ce047d4e652b60a04e7796bcd7267e] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +If loop_count is bigger than the array, truncate it to the array +length (and not to 32k). + +CVE-2019-3832 + +--- + src/wav.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/wav.c b/src/wav.c +index daae3cc..8851549 100644 +--- a/src/wav.c ++++ b/src/wav.c +@@ -1094,8 +1094,10 @@ wav_write_header (SF_PRIVATE *psf, int calc_length) + psf_binheader_writef (psf, "44", 0, 0) ; /* SMTPE format */ + psf_binheader_writef (psf, "44", psf->instrument->loop_count, 0) ; + +- /* Loop count is signed 16 bit number so we limit it range to something sensible. */ +- psf->instrument->loop_count &= 0x7fff ; ++ /* Make sure we don't read past the loops array end. */ ++ if (psf->instrument->loop_count > ARRAY_LEN (psf->instrument->loops)) ++ psf->instrument->loop_count = ARRAY_LEN (psf->instrument->loops) ; ++ + for (tmp = 0 ; tmp < psf->instrument->loop_count ; tmp++) + { int type ; + diff --git a/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb new file mode 100644 index 00000000..77393db8 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb @@ -0,0 +1,40 @@ +SUMMARY = "Audio format Conversion library" +HOMEPAGE = "http://www.mega-nerd.com/libsndfile" +AUTHOR = "Erik de Castro Lopo" +DEPENDS = "flac libogg libvorbis sqlite3" +SECTION = "libs/multimedia" +LICENSE = "LGPLv2.1" + +SRC_URI = "http://www.mega-nerd.com/libsndfile/files/libsndfile-${PV}.tar.gz \ + file://CVE-2017-6892.patch \ + file://CVE-2017-8361-8365.patch \ + file://CVE-2017-8362.patch \ + file://CVE-2017-8363.patch \ + file://CVE-2017-14634.patch \ + file://CVE-2018-13139.patch \ + file://0001-a-ulaw-fix-multiple-buffer-overflows-432.patch \ + file://CVE-2018-19432.patch \ + file://CVE-2017-12562.patch \ + file://CVE-2018-19758.patch \ + file://CVE-2019-3832.patch \ + " + +SRC_URI[md5sum] = "646b5f98ce89ac60cdb060fcd398247c" +SRC_URI[sha256sum] = "1ff33929f042fa333aed1e8923aa628c3ee9e1eb85512686c55092d1e5a9dfa9" + +LIC_FILES_CHKSUM = "file://COPYING;md5=e77fe93202736b47c07035910f47974a" + +CVE_PRODUCT = "libsndfile" + +S = "${WORKDIR}/libsndfile-${PV}" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}" +PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib" + +inherit autotools lib_package pkgconfig + +do_configure_prepend_arm() { + export ac_cv_sys_largefile_source=1 + export ac_cv_sys_file_offset_bits=64 +} + diff --git a/external/poky/meta/recipes-multimedia/libtheora/libtheora-1.1.1/no-docs.patch b/external/poky/meta/recipes-multimedia/libtheora/libtheora-1.1.1/no-docs.patch new file mode 100644 index 00000000..359f3d1a --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtheora/libtheora-1.1.1/no-docs.patch @@ -0,0 +1,15 @@ +Upstream-Status: Inappropriate [configuration] + +Index: libtheora-1.1.1/Makefile.am +=================================================================== +--- libtheora-1.1.1.orig/Makefile.am 2009-11-25 22:01:53.593775926 +0100 ++++ libtheora-1.1.1/Makefile.am 2009-11-25 22:02:00.777524017 +0100 +@@ -8,7 +8,7 @@ + EXAMPLES_DIR = + endif + +-SUBDIRS = lib include doc tests m4 $(EXAMPLES_DIR) ++SUBDIRS = lib include tests m4 $(EXAMPLES_DIR) + + + # we include the whole debian/ dir in EXTRA_DIST because there's a problem diff --git a/external/poky/meta/recipes-multimedia/libtheora/libtheora_1.1.1.bb b/external/poky/meta/recipes-multimedia/libtheora/libtheora_1.1.1.bb new file mode 100644 index 00000000..664d8480 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtheora/libtheora_1.1.1.bb @@ -0,0 +1,22 @@ +SUMMARY = "Theora Video Codec" +DESCRIPTION = "The libtheora reference implementation provides the standard encoder and decoder under a BSD license." +HOMEPAGE = "http://xiph.org/" +BUGTRACKER = "https://trac.xiph.org/newticket" +SECTION = "libs" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=cf91718f59eb6a83d06dc7bcaf411132" +DEPENDS = "libogg" + +PR = "r1" + +SRC_URI = "http://downloads.xiph.org/releases/theora/libtheora-${PV}.tar.bz2 \ + file://no-docs.patch" + +SRC_URI[md5sum] = "292ab65cedd5021d6b7ddd117e07cd8e" +SRC_URI[sha256sum] = "b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d3affbc" + +UPSTREAM_CHECK_REGEX = "libtheora-(?P<pver>\d+(\.\d)+)\.(tar\.gz|tgz)" + +inherit autotools pkgconfig + +EXTRA_OECONF = "--disable-examples" diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-17095.patch b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-17095.patch new file mode 100644 index 00000000..9b9962ed --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-17095.patch @@ -0,0 +1,46 @@ +From 9171da596c88e6a2dadcab4a3a89dddd6e1b4655 Mon Sep 17 00:00:00 2001 +From: Nathan Baker <elitebadger@gmail.com> +Date: Thu, 25 Jan 2018 21:28:15 +0000 +Subject: [PATCH] Add workaround to pal2rgb buffer overflow. + +CVE: CVE-2017-17095 + +Upstream-Status: Backport (unchanged) [gitlab.com/libtiff/libtiff/commit/9171da5...] + +Signed-off-by: Joe Slater <joe.slater@windriver.com. + +--- + tools/pal2rgb.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/tools/pal2rgb.c b/tools/pal2rgb.c +index 0423598..01fcf94 100644 +--- a/tools/pal2rgb.c ++++ b/tools/pal2rgb.c +@@ -182,8 +182,21 @@ main(int argc, char* argv[]) + { unsigned char *ibuf, *obuf; + register unsigned char* pp; + register uint32 x; +- ibuf = (unsigned char*)_TIFFmalloc(TIFFScanlineSize(in)); +- obuf = (unsigned char*)_TIFFmalloc(TIFFScanlineSize(out)); ++ tmsize_t tss_in = TIFFScanlineSize(in); ++ tmsize_t tss_out = TIFFScanlineSize(out); ++ if (tss_out / tss_in < 3) { ++ /* ++ * BUG 2750: The following code does not know about chroma ++ * subsampling of JPEG data. It assumes that the output buffer is 3x ++ * the length of the input buffer due to exploding the palette into ++ * RGB tuples. If this assumption is incorrect, it could lead to a ++ * buffer overflow. Go ahead and fail now to prevent that. ++ */ ++ fprintf(stderr, "Could not determine correct image size for output. Exiting.\n"); ++ return -1; ++ } ++ ibuf = (unsigned char*)_TIFFmalloc(tss_in); ++ obuf = (unsigned char*)_TIFFmalloc(tss_out); + switch (config) { + case PLANARCONFIG_CONTIG: + for (row = 0; row < imagelength; row++) { +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-18013.patch b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-18013.patch new file mode 100644 index 00000000..878e0de9 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-18013.patch @@ -0,0 +1,42 @@ +From 293c8b0298e91d20ba51291e2351ab7d110671d0 Mon Sep 17 00:00:00 2001 +From: Even Rouault <even.rouault@spatialys.com> +Date: Sun, 31 Dec 2017 15:09:41 +0100 +Subject: [PATCH] libtiff/tif_print.c: TIFFPrintDirectory(): fix null pointer + dereference on corrupted file. Fixes + http://bugzilla.maptools.org/show_bug.cgi?id=2770 + +Upstream-Status: Backport +[https://gitlab.com/libtiff/libtiff/commit/c6f41df7b581402dfba3c19a1e3df4454c551a01] + +CVE: CVE-2017-18013 + +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + libtiff/tif_print.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/libtiff/tif_print.c b/libtiff/tif_print.c +index 24d4b98..f494cfb 100644 +--- a/libtiff/tif_print.c ++++ b/libtiff/tif_print.c +@@ -667,13 +667,13 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags) + #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) + fprintf(fd, " %3lu: [%8I64u, %8I64u]\n", + (unsigned long) s, +- (unsigned __int64) td->td_stripoffset[s], +- (unsigned __int64) td->td_stripbytecount[s]); ++ td->td_stripoffset ? (unsigned __int64) td->td_stripoffset[s] : 0, ++ td->td_stripbytecount ? (unsigned __int64) td->td_stripbytecount[s] : 0); + #else + fprintf(fd, " %3lu: [%8llu, %8llu]\n", + (unsigned long) s, +- (unsigned long long) td->td_stripoffset[s], +- (unsigned long long) td->td_stripbytecount[s]); ++ td->td_stripoffset ? (unsigned long long) td->td_stripoffset[s] : 0, ++ td->td_stripbytecount ? (unsigned long long) td->td_stripbytecount[s] : 0); + #endif + } + } +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-9935.patch b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-9935.patch new file mode 100644 index 00000000..60684dd2 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2017-9935.patch @@ -0,0 +1,160 @@ +From abb0055d21c52a9925314d5b0628fb2b6307619c Mon Sep 17 00:00:00 2001 +From: Brian May <brian@linuxpenguins.xyz> +Date: Thu, 7 Dec 2017 07:46:47 +1100 +Subject: [PATCH] tiff2pdf: Fix CVE-2017-9935 + +Fix for http://bugzilla.maptools.org/show_bug.cgi?id=2704 + +This vulnerability - at least for the supplied test case - is because we +assume that a tiff will only have one transfer function that is the same +for all pages. This is not required by the TIFF standards. + +We than read the transfer function for every page. Depending on the +transfer function, we allocate either 2 or 4 bytes to the XREF buffer. +We allocate this memory after we read in the transfer function for the +page. + +For the first exploit - POC1, this file has 3 pages. For the first page +we allocate 2 extra extra XREF entries. Then for the next page 2 more +entries. Then for the last page the transfer function changes and we +allocate 4 more entries. + +When we read the file into memory, we assume we have 4 bytes extra for +each and every page (as per the last transfer function we read). Which +is not correct, we only have 2 bytes extra for the first 2 pages. As a +result, we end up writing past the end of the buffer. + +There are also some related issues that this also fixes. For example, +TIFFGetField can return uninitalized pointer values, and the logic to +detect a N=3 vs N=1 transfer function seemed rather strange. + +It is also strange that we declare the transfer functions to be of type +float, when the standard says they are unsigned 16 bit values. This is +fixed in another patch. + +This patch will check to ensure that the N value for every transfer +function is the same for every page. If this changes, we abort with an +error. In theory, we should perhaps check that the transfer function +itself is identical for every page, however we don't do that due to the +confusion of the type of the data in the transfer function. + +Upstream-Status: Backport +[https://gitlab.com/libtiff/libtiff/commit/3dd8f6a357981a4090f126ab9025056c938b6940] + +CVE: CVE-2017-9935 + +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + libtiff/tif_dir.c | 3 +++ + tools/tiff2pdf.c | 65 +++++++++++++++++++++++++++++++++++++------------------ + 2 files changed, 47 insertions(+), 21 deletions(-) + +diff --git a/libtiff/tif_dir.c b/libtiff/tif_dir.c +index f00f808..c36a5f3 100644 +--- a/libtiff/tif_dir.c ++++ b/libtiff/tif_dir.c +@@ -1067,6 +1067,9 @@ _TIFFVGetField(TIFF* tif, uint32 tag, va_list ap) + if (td->td_samplesperpixel - td->td_extrasamples > 1) { + *va_arg(ap, uint16**) = td->td_transferfunction[1]; + *va_arg(ap, uint16**) = td->td_transferfunction[2]; ++ } else { ++ *va_arg(ap, uint16**) = NULL; ++ *va_arg(ap, uint16**) = NULL; + } + break; + case TIFFTAG_REFERENCEBLACKWHITE: +diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c +index 454befb..0b5973e 100644 +--- a/tools/tiff2pdf.c ++++ b/tools/tiff2pdf.c +@@ -1047,6 +1047,8 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){ + uint16 pagen=0; + uint16 paged=0; + uint16 xuint16=0; ++ uint16 tiff_transferfunctioncount=0; ++ float* tiff_transferfunction[3]; + + directorycount=TIFFNumberOfDirectories(input); + t2p->tiff_pages = (T2P_PAGE*) _TIFFmalloc(TIFFSafeMultiply(tmsize_t,directorycount,sizeof(T2P_PAGE))); +@@ -1147,26 +1149,48 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){ + } + #endif + if (TIFFGetField(input, TIFFTAG_TRANSFERFUNCTION, +- &(t2p->tiff_transferfunction[0]), +- &(t2p->tiff_transferfunction[1]), +- &(t2p->tiff_transferfunction[2]))) { +- if((t2p->tiff_transferfunction[1] != (float*) NULL) && +- (t2p->tiff_transferfunction[2] != (float*) NULL) && +- (t2p->tiff_transferfunction[1] != +- t2p->tiff_transferfunction[0])) { +- t2p->tiff_transferfunctioncount = 3; +- t2p->tiff_pages[i].page_extra += 4; +- t2p->pdf_xrefcount += 4; +- } else { +- t2p->tiff_transferfunctioncount = 1; +- t2p->tiff_pages[i].page_extra += 2; +- t2p->pdf_xrefcount += 2; +- } +- if(t2p->pdf_minorversion < 2) +- t2p->pdf_minorversion = 2; ++ &(tiff_transferfunction[0]), ++ &(tiff_transferfunction[1]), ++ &(tiff_transferfunction[2]))) { ++ ++ if((tiff_transferfunction[1] != (float*) NULL) && ++ (tiff_transferfunction[2] != (float*) NULL) ++ ) { ++ tiff_transferfunctioncount=3; ++ } else { ++ tiff_transferfunctioncount=1; ++ } + } else { +- t2p->tiff_transferfunctioncount=0; ++ tiff_transferfunctioncount=0; + } ++ ++ if (i > 0){ ++ if (tiff_transferfunctioncount != t2p->tiff_transferfunctioncount){ ++ TIFFError( ++ TIFF2PDF_MODULE, ++ "Different transfer function on page %d", ++ i); ++ t2p->t2p_error = T2P_ERR_ERROR; ++ return; ++ } ++ } ++ ++ t2p->tiff_transferfunctioncount = tiff_transferfunctioncount; ++ t2p->tiff_transferfunction[0] = tiff_transferfunction[0]; ++ t2p->tiff_transferfunction[1] = tiff_transferfunction[1]; ++ t2p->tiff_transferfunction[2] = tiff_transferfunction[2]; ++ if(tiff_transferfunctioncount == 3){ ++ t2p->tiff_pages[i].page_extra += 4; ++ t2p->pdf_xrefcount += 4; ++ if(t2p->pdf_minorversion < 2) ++ t2p->pdf_minorversion = 2; ++ } else if (tiff_transferfunctioncount == 1){ ++ t2p->tiff_pages[i].page_extra += 2; ++ t2p->pdf_xrefcount += 2; ++ if(t2p->pdf_minorversion < 2) ++ t2p->pdf_minorversion = 2; ++ } ++ + if( TIFFGetField( + input, + TIFFTAG_ICCPROFILE, +@@ -1828,9 +1852,8 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){ + &(t2p->tiff_transferfunction[1]), + &(t2p->tiff_transferfunction[2]))) { + if((t2p->tiff_transferfunction[1] != (float*) NULL) && +- (t2p->tiff_transferfunction[2] != (float*) NULL) && +- (t2p->tiff_transferfunction[1] != +- t2p->tiff_transferfunction[0])) { ++ (t2p->tiff_transferfunction[2] != (float*) NULL) ++ ) { + t2p->tiff_transferfunctioncount=3; + } else { + t2p->tiff_transferfunctioncount=1; +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-10963.patch b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-10963.patch new file mode 100644 index 00000000..7252298b --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-10963.patch @@ -0,0 +1,39 @@ +From de144fd228e4be8aa484c3caf3d814b6fa88c6d9 Mon Sep 17 00:00:00 2001 +From: Even Rouault <even.rouault@spatialys.com> +Date: Sat, 12 May 2018 14:24:15 +0200 +Subject: [PATCH] TIFFWriteDirectorySec: avoid assertion. Fixes + http://bugzilla.maptools.org/show_bug.cgi?id=2795. + CVE-2018-10963 + +--- +CVE: CVE-2018-10963 + +Upstream-Status: Backport [gitlab.com/libtiff/libtiff/commit/de144f...] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> + +--- + libtiff/tif_dirwrite.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/libtiff/tif_dirwrite.c b/libtiff/tif_dirwrite.c +index 2430de6..c15a28d 100644 +--- a/libtiff/tif_dirwrite.c ++++ b/libtiff/tif_dirwrite.c +@@ -695,8 +695,11 @@ TIFFWriteDirectorySec(TIFF* tif, int isimage, int imagedone, uint64* pdiroff) + } + break; + default: +- assert(0); /* we should never get here */ +- break; ++ TIFFErrorExt(tif->tif_clientdata,module, ++ "Cannot write tag %d (%s)", ++ TIFFFieldTag(o), ++ o->field_name ? o->field_name : "unknown"); ++ goto bad; + } + } + } +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-5784.patch b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-5784.patch new file mode 100644 index 00000000..406001d5 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-5784.patch @@ -0,0 +1,135 @@ +From 6cdea15213be6b67d9f8380c7bb40e325d3adace Mon Sep 17 00:00:00 2001 +From: Nathan Baker <nathanb@lenovo-chrome.com> +Date: Tue, 6 Feb 2018 10:13:57 -0500 +Subject: [PATCH] Fix for bug 2772 + +It is possible to craft a TIFF document where the IFD list is circular, +leading to an infinite loop while traversing the chain. The libtiff +directory reader has a failsafe that will break out of this loop after +reading 65535 directory entries, but it will continue processing, +consuming time and resources to process what is essentially a bogus TIFF +document. + +This change fixes the above behavior by breaking out of processing when +a TIFF document has >= 65535 directories and terminating with an error. + +Upstream-Status: Backport +[https://gitlab.com/libtiff/libtiff/commit/473851d211cf8805a161820337ca74cc9615d6ef] + +CVE: CVE-2018-5784 + +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + contrib/addtiffo/tif_overview.c | 14 +++++++++++++- + tools/tiff2pdf.c | 10 ++++++++++ + tools/tiffcrop.c | 13 +++++++++++-- + 3 files changed, 34 insertions(+), 3 deletions(-) + +diff --git a/contrib/addtiffo/tif_overview.c b/contrib/addtiffo/tif_overview.c +index c61ffbb..03b3573 100644 +--- a/contrib/addtiffo/tif_overview.c ++++ b/contrib/addtiffo/tif_overview.c +@@ -65,6 +65,8 @@ + # define MAX(a,b) ((a>b) ? a : b) + #endif + ++#define TIFF_DIR_MAX 65534 ++ + void TIFFBuildOverviews( TIFF *, int, int *, int, const char *, + int (*)(double,void*), void * ); + +@@ -91,6 +93,7 @@ uint32 TIFF_WriteOverview( TIFF *hTIFF, uint32 nXSize, uint32 nYSize, + { + toff_t nBaseDirOffset; + toff_t nOffset; ++ tdir_t iNumDir; + + (void) bUseSubIFDs; + +@@ -147,7 +150,16 @@ uint32 TIFF_WriteOverview( TIFF *hTIFF, uint32 nXSize, uint32 nYSize, + return 0; + + TIFFWriteDirectory( hTIFF ); +- TIFFSetDirectory( hTIFF, (tdir_t) (TIFFNumberOfDirectories(hTIFF)-1) ); ++ iNumDir = TIFFNumberOfDirectories(hTIFF); ++ if( iNumDir > TIFF_DIR_MAX ) ++ { ++ TIFFErrorExt( TIFFClientdata(hTIFF), ++ "TIFF_WriteOverview", ++ "File `%s' has too many directories.\n", ++ TIFFFileName(hTIFF) ); ++ exit(-1); ++ } ++ TIFFSetDirectory( hTIFF, (tdir_t) (iNumDir - 1) ); + + nOffset = TIFFCurrentDirOffset( hTIFF ); + +diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c +index 0b5973e..ef5d6a0 100644 +--- a/tools/tiff2pdf.c ++++ b/tools/tiff2pdf.c +@@ -68,6 +68,8 @@ extern int getopt(int, char**, char*); + + #define PS_UNIT_SIZE 72.0F + ++#define TIFF_DIR_MAX 65534 ++ + /* This type is of PDF color spaces. */ + typedef enum { + T2P_CS_BILEVEL = 0x01, /* Bilevel, black and white */ +@@ -1051,6 +1053,14 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){ + float* tiff_transferfunction[3]; + + directorycount=TIFFNumberOfDirectories(input); ++ if(directorycount > TIFF_DIR_MAX) { ++ TIFFError( ++ TIFF2PDF_MODULE, ++ "TIFF contains too many directories, %s", ++ TIFFFileName(input)); ++ t2p->t2p_error = T2P_ERR_ERROR; ++ return; ++ } + t2p->tiff_pages = (T2P_PAGE*) _TIFFmalloc(TIFFSafeMultiply(tmsize_t,directorycount,sizeof(T2P_PAGE))); + if(t2p->tiff_pages==NULL){ + TIFFError( +diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c +index c69177e..c60cb38 100644 +--- a/tools/tiffcrop.c ++++ b/tools/tiffcrop.c +@@ -217,6 +217,8 @@ extern int getopt(int argc, char * const argv[], const char *optstring); + #define DUMP_TEXT 1 + #define DUMP_RAW 2 + ++#define TIFF_DIR_MAX 65534 ++ + /* Offsets into buffer for margins and fixed width and length segments */ + struct offset { + uint32 tmargin; +@@ -2233,7 +2235,7 @@ main(int argc, char* argv[]) + pageNum = -1; + else + total_images = 0; +- /* read multiple input files and write to output file(s) */ ++ /* Read multiple input files and write to output file(s) */ + while (optind < argc - 1) + { + in = TIFFOpen (argv[optind], "r"); +@@ -2241,7 +2243,14 @@ main(int argc, char* argv[]) + return (-3); + + /* If only one input file is specified, we can use directory count */ +- total_images = TIFFNumberOfDirectories(in); ++ total_images = TIFFNumberOfDirectories(in); ++ if (total_images > TIFF_DIR_MAX) ++ { ++ TIFFError (TIFFFileName(in), "File contains too many directories"); ++ if (out != NULL) ++ (void) TIFFClose(out); ++ return (1); ++ } + if (image_count == 0) + { + dirnum = 0; +-- +2.7.4 + diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-7456.patch b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-7456.patch new file mode 100644 index 00000000..2c11f93d --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-7456.patch @@ -0,0 +1,178 @@ +From be4c85b16e8801a16eec25e80eb9f3dd6a96731b Mon Sep 17 00:00:00 2001 +From: Hugo Lefeuvre <hle@debian.org> +Date: Sun, 8 Apr 2018 14:07:08 -0400 +Subject: [PATCH] Fix NULL pointer dereference in TIFFPrintDirectory + +The TIFFPrintDirectory function relies on the following assumptions, +supposed to be guaranteed by the specification: + +(a) A Transfer Function field is only present if the TIFF file has + photometric type < 3. + +(b) If SamplesPerPixel > Color Channels, then the ExtraSamples field + has count SamplesPerPixel - (Color Channels) and contains + information about supplementary channels. + +While respect of (a) and (b) are essential for the well functioning of +TIFFPrintDirectory, no checks are realized neither by the callee nor +by TIFFPrintDirectory itself. Hence, following scenarios might happen +and trigger the NULL pointer dereference: + +(1) TIFF File of photometric type 4 or more has illegal Transfer + Function field. + +(2) TIFF File has photometric type 3 or less and defines a + SamplesPerPixel field such that SamplesPerPixel > Color Channels + without defining all extra samples in the ExtraSamples fields. + +In this patch, we address both issues with respect of the following +principles: + +(A) In the case of (1), the defined transfer table should be printed + safely even if it isn't 'legal'. This allows us to avoid expensive + checks in TIFFPrintDirectory. Also, it is quite possible that + an alternative photometric type would be developed (not part of the + standard) and would allow definition of Transfer Table. We want + libtiff to be able to handle this scenario out of the box. + +(B) In the case of (2), the transfer table should be printed at its + right size, that is if TIFF file has photometric type Palette + then the transfer table should have one row and not three, even + if two extra samples are declared. + +In order to fulfill (A) we simply add a new 'i < 3' end condition to +the broken TIFFPrintDirectory loop. This makes sure that in any case +where (b) would be respected but not (a), everything stays fine. + +(B) is fulfilled by the loop condition +'i < td->td_samplesperpixel - td->td_extrasamples'. This is enough as +long as (b) is respected. + +Naturally, we also make sure (b) is respected. This is done in the +TIFFReadDirectory function by making sure any non-color channel is +counted in ExtraSamples. + +This commit addresses CVE-2018-7456. + +--- +CVE: CVE-2018-7456 + +Upstream-Status: Backport [gitlab.com/libtiff/libtiff/commit/be4c85b...] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> + +--- + libtiff/tif_dirread.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ + libtiff/tif_print.c | 2 +- + 2 files changed, 63 insertions(+), 1 deletion(-) + +diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c +index 6baa7b3..af5b84a 100644 +--- a/libtiff/tif_dirread.c ++++ b/libtiff/tif_dirread.c +@@ -165,6 +165,7 @@ static int TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, uint32 nstrips, uin + static int TIFFFetchSubjectDistance(TIFF*, TIFFDirEntry*); + static void ChopUpSingleUncompressedStrip(TIFF*); + static uint64 TIFFReadUInt64(const uint8 *value); ++static int _TIFFGetMaxColorChannels(uint16 photometric); + + static int _TIFFFillStrilesInternal( TIFF *tif, int loadStripByteCount ); + +@@ -3505,6 +3506,35 @@ static void TIFFReadDirEntryOutputErr(TIFF* tif, enum TIFFReadDirEntryErr err, c + } + + /* ++ * Return the maximum number of color channels specified for a given photometric ++ * type. 0 is returned if photometric type isn't supported or no default value ++ * is defined by the specification. ++ */ ++static int _TIFFGetMaxColorChannels( uint16 photometric ) ++{ ++ switch (photometric) { ++ case PHOTOMETRIC_PALETTE: ++ case PHOTOMETRIC_MINISWHITE: ++ case PHOTOMETRIC_MINISBLACK: ++ return 1; ++ case PHOTOMETRIC_YCBCR: ++ case PHOTOMETRIC_RGB: ++ case PHOTOMETRIC_CIELAB: ++ return 3; ++ case PHOTOMETRIC_SEPARATED: ++ case PHOTOMETRIC_MASK: ++ return 4; ++ case PHOTOMETRIC_LOGL: ++ case PHOTOMETRIC_LOGLUV: ++ case PHOTOMETRIC_CFA: ++ case PHOTOMETRIC_ITULAB: ++ case PHOTOMETRIC_ICCLAB: ++ default: ++ return 0; ++ } ++} ++ ++/* + * Read the next TIFF directory from a file and convert it to the internal + * format. We read directories sequentially. + */ +@@ -3520,6 +3550,7 @@ TIFFReadDirectory(TIFF* tif) + uint32 fii=FAILED_FII; + toff_t nextdiroff; + int bitspersample_read = FALSE; ++ int color_channels; + + tif->tif_diroff=tif->tif_nextdiroff; + if (!TIFFCheckDirOffset(tif,tif->tif_nextdiroff)) +@@ -4024,6 +4055,37 @@ TIFFReadDirectory(TIFF* tif) + } + } + } ++ ++ /* ++ * Make sure all non-color channels are extrasamples. ++ * If it's not the case, define them as such. ++ */ ++ color_channels = _TIFFGetMaxColorChannels(tif->tif_dir.td_photometric); ++ if (color_channels && tif->tif_dir.td_samplesperpixel - tif->tif_dir.td_extrasamples > color_channels) { ++ uint16 old_extrasamples; ++ uint16 *new_sampleinfo; ++ ++ TIFFWarningExt(tif->tif_clientdata,module, "Sum of Photometric type-related " ++ "color channels and ExtraSamples doesn't match SamplesPerPixel. " ++ "Defining non-color channels as ExtraSamples."); ++ ++ old_extrasamples = tif->tif_dir.td_extrasamples; ++ tif->tif_dir.td_extrasamples = (tif->tif_dir.td_samplesperpixel - color_channels); ++ ++ // sampleinfo should contain information relative to these new extra samples ++ new_sampleinfo = (uint16*) _TIFFcalloc(tif->tif_dir.td_extrasamples, sizeof(uint16)); ++ if (!new_sampleinfo) { ++ TIFFErrorExt(tif->tif_clientdata, module, "Failed to allocate memory for " ++ "temporary new sampleinfo array (%d 16 bit elements)", ++ tif->tif_dir.td_extrasamples); ++ goto bad; ++ } ++ ++ memcpy(new_sampleinfo, tif->tif_dir.td_sampleinfo, old_extrasamples * sizeof(uint16)); ++ _TIFFsetShortArray(&tif->tif_dir.td_sampleinfo, new_sampleinfo, tif->tif_dir.td_extrasamples); ++ _TIFFfree(new_sampleinfo); ++ } ++ + /* + * Verify Palette image has a Colormap. + */ +diff --git a/libtiff/tif_print.c b/libtiff/tif_print.c +index 8deceb2..1d86adb 100644 +--- a/libtiff/tif_print.c ++++ b/libtiff/tif_print.c +@@ -544,7 +544,7 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags) + uint16 i; + fprintf(fd, " %2ld: %5u", + l, td->td_transferfunction[0][l]); +- for (i = 1; i < td->td_samplesperpixel; i++) ++ for (i = 1; i < td->td_samplesperpixel - td->td_extrasamples && i < 3; i++) + fprintf(fd, " %5u", + td->td_transferfunction[i][l]); + fputc('\n', fd); +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-8905.patch b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-8905.patch new file mode 100644 index 00000000..962646db --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/CVE-2018-8905.patch @@ -0,0 +1,61 @@ +From 58a898cb4459055bb488ca815c23b880c242a27d Mon Sep 17 00:00:00 2001 +From: Even Rouault <even.rouault@spatialys.com> +Date: Sat, 12 May 2018 15:32:31 +0200 +Subject: [PATCH] LZWDecodeCompat(): fix potential index-out-of-bounds write. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2780 / + CVE-2018-8905 + +The fix consists in using the similar code LZWDecode() to validate we +don't write outside of the output buffer. + +--- +CVE: CVE-2018-8905 + +Upstream-Status: Backport [gitlab.com/libtiff/libtiff/commit/58a898...] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> + +--- + libtiff/tif_lzw.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/libtiff/tif_lzw.c b/libtiff/tif_lzw.c +index 4ccb443..94d85e3 100644 +--- a/libtiff/tif_lzw.c ++++ b/libtiff/tif_lzw.c +@@ -602,6 +602,7 @@ LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s) + char *tp; + unsigned char *bp; + int code, nbits; ++ int len; + long nextbits, nextdata, nbitsmask; + code_t *codep, *free_entp, *maxcodep, *oldcodep; + +@@ -753,13 +754,18 @@ LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s) + } while (--occ); + break; + } +- assert(occ >= codep->length); +- op += codep->length; +- occ -= codep->length; +- tp = op; ++ len = codep->length; ++ tp = op + len; + do { +- *--tp = codep->value; +- } while( (codep = codep->next) != NULL ); ++ int t; ++ --tp; ++ t = codep->value; ++ codep = codep->next; ++ *tp = (char)t; ++ } while (codep && tp > op); ++ assert(occ >= len); ++ op += len; ++ occ -= len; + } else { + *op++ = (char)code; + occ--; +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/libtiff/files/libtool2.patch b/external/poky/meta/recipes-multimedia/libtiff/files/libtool2.patch new file mode 100644 index 00000000..a84c6889 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/files/libtool2.patch @@ -0,0 +1,19 @@ +Upstream-Status: Inappropriate [configuration] + +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: tiff-4.0.9/configure.ac +=================================================================== +--- tiff-4.0.9.orig/configure.ac ++++ tiff-4.0.9/configure.ac +@@ -27,7 +27,7 @@ dnl Process this file with autoconf to p + AC_PREREQ(2.64) + AC_INIT([LibTIFF Software],[4.0.9],[tiff@lists.maptools.org],[tiff]) + AC_CONFIG_AUX_DIR(config) +-AC_CONFIG_MACRO_DIR(m4) ++dnl AC_CONFIG_MACRO_DIR(m4) + AC_LANG(C) + + dnl Compute the canonical host (run-time) system type variable diff --git a/external/poky/meta/recipes-multimedia/libtiff/tiff_4.0.9.bb b/external/poky/meta/recipes-multimedia/libtiff/tiff_4.0.9.bb new file mode 100644 index 00000000..93beddb4 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libtiff/tiff_4.0.9.bb @@ -0,0 +1,59 @@ +SUMMARY = "Provides support for the Tag Image File Format (TIFF)" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=34da3db46fab7501992f9615d7e158cf" + +CVE_PRODUCT = "libtiff" + +SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \ + file://libtool2.patch \ + file://CVE-2017-9935.patch \ + file://CVE-2017-18013.patch \ + file://CVE-2018-5784.patch \ + file://CVE-2018-10963.patch \ + file://CVE-2018-8905.patch \ + file://CVE-2018-7456.patch \ + file://CVE-2017-17095.patch \ + " + +SRC_URI[md5sum] = "54bad211279cc93eb4fca31ba9bfdc79" +SRC_URI[sha256sum] = "6e7bdeec2c310734e734d19aae3a71ebe37a4d842e0e23dbb1b8921c0026cfcd" + +# exclude betas +UPSTREAM_CHECK_REGEX = "tiff-(?P<pver>\d+(\.\d+)+).tar" + +inherit autotools multilib_header + +CACHED_CONFIGUREVARS = "ax_cv_check_gl_libgl=no" + +PACKAGECONFIG ?= "cxx jpeg zlib lzma \ + strip-chopping extrasample-as-alpha check-ycbcr-subsampling" + +PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx,," +PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg," +PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib," +PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz," + +# Convert single-strip uncompressed images to multiple strips of specified +# size (default: 8192) to reduce memory usage +PACKAGECONFIG[strip-chopping] = "--enable-strip-chopping,--disable-strip-chopping,," + +# Treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA +PACKAGECONFIG[extrasample-as-alpha] = "--enable-extrasample-as-alpha,--disable-extrasample-as-alpha,," + +# Control picking up YCbCr subsample info. Disable to support files lacking +# the tag +PACKAGECONFIG[check-ycbcr-subsampling] = "--enable-check-ycbcr-subsampling,--disable-check-ycbcr-subsampling,," + +# Support a mechanism allowing reading large strips (usually one strip files) +# in chunks when using TIFFReadScanline. Experimental 4.0+ feature +PACKAGECONFIG[chunky-strip-read] = "--enable-chunky-strip-read,--disable-chunky-strip-read,," + +PACKAGES =+ "tiffxx tiff-utils" +FILES_tiffxx = "${libdir}/libtiffxx.so.*" +FILES_tiff-utils = "${bindir}/*" + +do_install_append() { + oe_multilib_header tiffconf.h +} + +BBCLASSEXTEND = "native" diff --git a/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch new file mode 100644 index 00000000..b06029b9 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch @@ -0,0 +1,56 @@ +From d619ccf6c11ab574466914c57994a82fb99401af Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 22 Mar 2017 16:06:55 +0000 +Subject: [PATCH] configure: Check for clang + +Disable gcc specific options if using clang + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- +Upstream-Status: Pending + + configure.ac | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 28b0a14..2d4e984 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -98,6 +98,16 @@ AC_ARG_ENABLE(examples, + + AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = xyes]) + ++AC_MSG_CHECKING([whether C compiler is clang]) ++$CC -x c /dev/null -dM -E > conftest.txt 2>&1 ++if grep "__clang__" conftest.txt >/dev/null 2>&1; then ++ AC_SUBST([CC_CLANG], [1]) ++ AC_MSG_RESULT([yes]) ++ else ++ AC_SUBST([CC_CLANG], [0]) ++ AC_MSG_RESULT([no]) ++fi ++ + dnl -------------------------------------------------- + dnl Set build flags based on environment + dnl -------------------------------------------------- +@@ -132,10 +142,15 @@ else + AC_MSG_RESULT([$GCC_VERSION]) + case $host in + *86-*-linux*) ++ if test "$CC_CLANG" = "1"; then ++ ieeefp="" ++ else ++ ieefp="-mno-ieee-fp" ++ fi + DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" +- CFLAGS="-O3 -Wall -Wextra -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char" ++ CFLAGS="-O3 -Wall -Wextra -ffast-math -D_REENTRANT -fsigned-char ${ieefp}" + # PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static" +- PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline" ++ PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math ${ieefp} -D_REENTRANT -fsigned-char -fno-inline" + + # glibc < 2.1.3 has a serious FP bug in the math inline header + # that will cripple Vorbis. Look to see if the magic FP stack +-- +2.17.0 + diff --git a/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch new file mode 100644 index 00000000..b7603c3b --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch @@ -0,0 +1,34 @@ +From 018ca26dece618457dd13585cad52941193c4a25 Mon Sep 17 00:00:00 2001 +From: Thomas Daede <daede003@umn.edu> +Date: Wed, 9 May 2018 14:56:59 -0700 +Subject: [PATCH] CVE-2017-14160: fix bounds check on very low sample rates. + +--- +CVE: CVE-2017-14160 CVE-2018-10393 + +Upstream-Status: Backport [gitlab.com/Xiph.Org/Vorbis/Commits/018ca26d...] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> +--- +--- + lib/psy.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/psy.c b/lib/psy.c +index 422c6f1..1310123 100644 +--- a/lib/psy.c ++++ b/lib/psy.c +@@ -602,8 +602,9 @@ static void bark_noise_hybridmp(int n,const long *b, + for (i = 0, x = 0.f;; i++, x += 1.f) { + + lo = b[i] >> 16; +- if( lo>=0 ) break; + hi = b[i] & 0xffff; ++ if( lo>=0 ) break; ++ if( hi>=n ) break; + + tN = N[hi] + N[-lo]; + tX = X[hi] - X[-lo]; +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch new file mode 100644 index 00000000..b7936b4b --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch @@ -0,0 +1,34 @@ +From 112d3bd0aaacad51305e1464d4b381dabad0e88b Mon Sep 17 00:00:00 2001 +From: Thomas Daede <daede003@umn.edu> +Date: Thu, 17 May 2018 16:19:19 -0700 +Subject: [PATCH] Sanity check number of channels in setup. + +Fixes #2335. + +--- +CVE: CVE-2018-10392 + +Upstream-Status: Backport [gitlab.com/Xiph.Org/Vorbis/Commits/112d3bd...] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> +--- + + lib/vorbisenc.c | 1 + + 1 file changed, 1 insertion(+) + + +diff --git a/lib/vorbisenc.c b/lib/vorbisenc.c +index 4fc7b62..64a51b5 100644 +--- a/lib/vorbisenc.c ++++ b/lib/vorbisenc.c +@@ -684,6 +684,7 @@ int vorbis_encode_setup_init(vorbis_info *vi){ + highlevel_encode_setup *hi=&ci->hi; + + if(ci==NULL)return(OV_EINVAL); ++ if(vi->channels<1||vi->channels>255)return(OV_EINVAL); + if(!hi->impulse_block_p)i0=1; + + /* too low/high an ATH floater is nonsensical, but doesn't break anything */ +-- +1.7.9.5 + diff --git a/external/poky/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb new file mode 100644 index 00000000..cbda6dc2 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb @@ -0,0 +1,21 @@ +SUMMARY = "Ogg Vorbis Audio Codec" +DESCRIPTION = "Ogg Vorbis is a high-quality lossy audio codec \ +that is free of intellectual property restrictions. libvorbis \ +is the main vorbis codec library." +HOMEPAGE = "http://www.vorbis.com/" +BUGTRACKER = "https://trac.xiph.org" +SECTION = "libs" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=70c7063491d2d9f76a098d62ed5134f1 \ + file://include/vorbis/vorbisenc.h;beginline=1;endline=11;md5=d1c1d138863d6315131193d4046d81cb" +DEPENDS = "libogg" + +SRC_URI = "http://downloads.xiph.org/releases/vorbis/${BP}.tar.xz \ + file://0001-configure-Check-for-clang.patch \ + file://CVE-2018-10392.patch \ + file://CVE-2017-14160.patch \ + " +SRC_URI[md5sum] = "b7d1692f275c73e7833ed1cc2697cd65" +SRC_URI[sha256sum] = "af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415" + +inherit autotools pkgconfig diff --git a/external/poky/meta/recipes-multimedia/mpeg2dec/files/0001-check-for-available-arm-optimizations.patch b/external/poky/meta/recipes-multimedia/mpeg2dec/files/0001-check-for-available-arm-optimizations.patch new file mode 100644 index 00000000..5bf68b39 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/mpeg2dec/files/0001-check-for-available-arm-optimizations.patch @@ -0,0 +1,55 @@ +From cbcff58ed670c8edc0be1004384cbe0fd07d8d26 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 5 Jul 2017 18:49:21 -0700 +Subject: [PATCH 1/2] check for available arm optimizations + +Taken From +http://sources.debian.net/src/mpeg2dec/0.5.1-7/debian/patches/65_arm-test-with-compiler.patch/ + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + configure.ac | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index acdcb1e..2c0a721 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -59,7 +59,7 @@ elif test x"$GCC" = x"yes"; then + AC_TRY_CFLAGS([$TRY_CFLAGS $CFLAGS],[OPT_CFLAGS="$TRY_CFLAGS"]) + + dnl arch-specific flags +- arm_conditional=false ++ build_arm_opt=false + case "$host" in + i?86-* | k?-* | x86_64-* | amd64-*) + AC_DEFINE([ARCH_X86],,[x86 architecture]) +@@ -102,8 +102,12 @@ elif test x"$GCC" = x"yes"; then + alpha*) + AC_DEFINE([ARCH_ALPHA],,[alpha architecture]);; + arm*) +- arm_conditional=: +- AC_DEFINE([ARCH_ARM],,[ARM architecture]);; ++ AC_LANG(C) ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE([[ ++ void foo(void) { __asm__ volatile("pld [r1]"); }]])], ++ build_arm_opt=true; AC_DEFINE([ARCH_ARM],,[ARM architecture]), ++ build_arm_opt=false);; + esac + elif test x"$CC" = x"tendracc"; then + dnl TenDRA portability checking compiler +@@ -123,7 +127,7 @@ else + esac + fi + +-AM_CONDITIONAL(ARCH_ARM, ${arm_conditional}) ++AM_CONDITIONAL(ARCH_ARM, test x$build_arm_opt = xtrue) + + dnl Checks for libtool - this must be done after we set cflags + AC_LIBTOOL_WIN32_DLL +-- +2.13.2 + diff --git a/external/poky/meta/recipes-multimedia/mpeg2dec/files/0002-Set-visibility-of-global-symbols-used-in-ARM-specifi.patch b/external/poky/meta/recipes-multimedia/mpeg2dec/files/0002-Set-visibility-of-global-symbols-used-in-ARM-specifi.patch new file mode 100644 index 00000000..83016923 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/mpeg2dec/files/0002-Set-visibility-of-global-symbols-used-in-ARM-specifi.patch @@ -0,0 +1,63 @@ +From f9d9dc92d75f8910e3cd5fdcbea72e505cdf3493 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 5 Jul 2017 19:03:36 -0700 +Subject: [PATCH 2/2] Set visibility of global symbols used in ARM specific + assembly file to internal + +Taken from +http://sources.debian.net/src/mpeg2dec/0.5.1-7/debian/patches/60_arm-private-symbols.patch/ + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + libmpeg2/motion_comp_arm_s.S | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/libmpeg2/motion_comp_arm_s.S b/libmpeg2/motion_comp_arm_s.S +index f6c3d7d..c921f7c 100644 +--- a/libmpeg2/motion_comp_arm_s.S ++++ b/libmpeg2/motion_comp_arm_s.S +@@ -23,7 +23,8 @@ + + @ ---------------------------------------------------------------- + .align +- .global MC_put_o_16_arm ++ .global MC_put_o_16_arm ++ .internal MC_put_o_16_arm + MC_put_o_16_arm: + @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height) + pld [r1] +@@ -83,7 +84,8 @@ MC_put_o_16_arm_align_jt: + + @ ---------------------------------------------------------------- + .align +- .global MC_put_o_8_arm ++ .global MC_put_o_8_arm ++ .internal MC_put_o_8_arm + MC_put_o_8_arm: + @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height) + pld [r1] +@@ -152,7 +154,8 @@ MC_put_o_8_arm_align_jt: + .endm + + .align +- .global MC_put_x_16_arm ++ .global MC_put_x_16_arm ++ .internal MC_put_x_16_arm + MC_put_x_16_arm: + @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height) + pld [r1] +@@ -244,7 +247,8 @@ MC_put_x_16_arm_align_jt: + + @ ---------------------------------------------------------------- + .align +- .global MC_put_x_8_arm ++ .global MC_put_x_8_arm ++ .internal MC_put_x_8_arm + MC_put_x_8_arm: + @@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height) + pld [r1] +-- +2.13.2 + diff --git a/external/poky/meta/recipes-multimedia/mpeg2dec/files/altivec_h_needed.patch b/external/poky/meta/recipes-multimedia/mpeg2dec/files/altivec_h_needed.patch new file mode 100644 index 00000000..5113ad44 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/mpeg2dec/files/altivec_h_needed.patch @@ -0,0 +1,43 @@ +Add new method to judge whether <altivec.h> is needed + +The original logic will use "typedef vector int t;" to judge +whether <altivec.h> is needed. altivec.h contains the following +statement: + + #if !defined(__APPLE_ALTIVEC__) + #define vector __vector + #define pixel __pixel + #define bool + #endif + +In gcc-4.3.3, __APPLE_ALTIVEC__ is not defined by compiler, neither +as vector, pixel, and bool. In order to make "typedef vector int t;" +pass the compilation, we need to include altivec.h. + +However in gcc-4.5.0, __APPLE_ALTIVEC__ is defined by compiler, +so as vector, pixel, and bool. We could not judge whether +altivec.h is needed by "typedef vector int t;". +Here we include another statement "int tmp = __CR6_EQ;", in +which __CR6_EQ is defined in altivec.h. + +Upstream-Status: Pending + +Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> + +diff -ruN a/configure.in b/configure.in +--- a/configure.ac 2010-09-14 20:55:42.399687663 +0800 ++++ b/configure.ac 2010-09-14 20:56:43.403204648 +0800 +@@ -79,11 +79,11 @@ + CFLAGS="$OPT_CFLAGS $TRY_CFLAGS $CFLAGS" + AC_MSG_CHECKING([if <altivec.h> is needed]) + AC_TRY_COMPILE([], +- [typedef vector int t; ++ [typedef vector int t; int tmp = __CR6_EQ; + vec_ld(0, (unsigned char *)0);], + [have_altivec=yes; AC_MSG_RESULT(no)], + [AC_TRY_COMPILE([#include <altivec.h>], +- [typedef vector int t; vec_ld(0, (unsigned char *)0);], ++ [typedef vector int t; int tmp = __CR6_EQ; vec_ld(0, (unsigned char *)0);], + [AC_DEFINE([HAVE_ALTIVEC_H],, + [Define to 1 if you have the <altivec.h> header.]) + have_altivec=yes; AC_MSG_RESULT(yes)], diff --git a/external/poky/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb b/external/poky/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb new file mode 100644 index 00000000..7711c2dc --- /dev/null +++ b/external/poky/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb @@ -0,0 +1,45 @@ +SUMMARY = "Library and test program for decoding MPEG-2 and MPEG-1 video streams" +HOMEPAGE = "http://libmpeg2.sourceforge.net/" +SECTION = "libs" +LICENSE = "GPLv2+" +LICENSE_FLAGS = "commercial" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ + file://include/mpeg2.h;beginline=1;endline=22;md5=7766f4fcb58f0f8413c49a746f2ab89b" + +SRC_URI = "http://libmpeg2.sourceforge.net/files/libmpeg2-${PV}.tar.gz \ + file://altivec_h_needed.patch \ + file://0001-check-for-available-arm-optimizations.patch \ + file://0002-Set-visibility-of-global-symbols-used-in-ARM-specifi.patch \ + " + +S = "${WORKDIR}/libmpeg2-${PV}" + +SRC_URI[md5sum] = "0f92c7454e58379b4a5a378485bbd8ef" +SRC_URI[sha256sum] = "dee22e893cb5fc2b2b6ebd60b88478ab8556cb3b93f9a0d7ce8f3b61851871d4" + +UPSTREAM_CHECK_URI = "http://libmpeg2.sourceforge.net/downloads.html" + +inherit autotools pkgconfig + +EXTRA_OECONF = "--enable-shared --disable-sdl" + +PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" +PACKAGECONFIG[x11] = "--with-x,--without-x,virtual/libx11 libxext libxv" + +PACKAGES = "mpeg2dec-dbg mpeg2dec mpeg2dec-doc libmpeg2 libmpeg2-dev libmpeg2convert libmpeg2convert-dev libmpeg2-staticdev libmpeg2convert-staticdev" + +FILES_${PN} = "${bindir}/*" +FILES_libmpeg2 = "${libdir}/libmpeg2.so.*" +FILES_libmpeg2convert = "${libdir}/libmpeg2convert.so.*" +FILES_libmpeg2-dev = "${libdir}/libmpeg2.so \ + ${libdir}/libmpeg2.la \ + ${libdir}/libmpeg2arch.la \ + ${libdir}/pkgconfig/libmpeg2.pc \ + ${includedir}/mpeg2dec/mpeg2.h" +FILES_libmpeg2-staticdev = "${libdir}/libmpeg2.a" +FILES_libmpeg2convert-dev = "${libdir}/libmpeg2convert.so \ + ${libdir}/libmpeg2convert.la \ + ${libdir}/libmpeg2convertarch.la \ + ${libdir}/pkgconfig/libmpeg2convert.pc \ + ${includedir}/mpeg2dec/mpeg2convert.h" +FILES_libmpeg2convert-staticdev = "${libdir}/libmpeg2convert.a" diff --git a/external/poky/meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb b/external/poky/meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb new file mode 100644 index 00000000..ff2b7d89 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb @@ -0,0 +1,50 @@ +SUMMARY = "Audio decoder for MPEG-1 Layer 1/2/3" +DESCRIPTION = "The core of mpg123 is an MPEG-1 Layer 1/2/3 decoding library, which can be used by other programs. \ +mpg123 also comes with a command-line tool which can playback using ALSA, PulseAudio, OSS, and several other APIs, \ +and also can write the decoded audio to WAV." +HOMEPAGE = "http://mpg123.de/" +BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/" +SECTION = "multimedia" + +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=1e86753638d3cf2512528b99079bc4f3" + +SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2" +SRC_URI[md5sum] = "ea32caa61d41d8be797f0b04a1b43ad9" +SRC_URI[sha256sum] = "6c1337aee2e4bf993299851c70b7db11faec785303cfca3a5c3eb5f329ba7023" + +inherit autotools pkgconfig + +# The options should be mutually exclusive for configuration script. +# If both alsa and pulseaudio are specified (as in the default distro features) +# pulseaudio takes precedence. +PACKAGECONFIG_ALSA = "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}" +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '${PACKAGECONFIG_ALSA}', d)}" + +PACKAGECONFIG[alsa] = "--with-default-audio=alsa,,alsa-lib" +PACKAGECONFIG[esd] = ",,esound" +PACKAGECONFIG[jack] = ",,jack" +PACKAGECONFIG[openal] = ",,openal-soft" +PACKAGECONFIG[portaudio] = ",,portaudio-v19" +PACKAGECONFIG[pulseaudio] = "--with-default-audio=pulse,,pulseaudio" +PACKAGECONFIG[sdl] = ",,libsdl" + +# Following are possible sound output modules: +# alsa arts coreaudio dummy esd jack nas openal os2 oss portaudio pulse sdl sndio sun tinyalsa win32 win32_wasapi +AUDIOMODS += "${@bb.utils.filter('PACKAGECONFIG', 'alsa esd jack openal portaudio sdl', d)}" +AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'pulse', '', d)}" + +EXTRA_OECONF = " \ + --enable-shared \ + --with-audio='${AUDIOMODS}' \ + ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \ + ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \ +" +# Fails to build with thumb-1 (qemuarm) +#| {standard input}: Assembler messages: +#| {standard input}:47: Error: selected processor does not support Thumb mode `smull r5,r6,r7,r4' +#| {standard input}:48: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r5,r5,lsr#24' +#... +#| make[3]: *** [equalizer.lo] Error 1 +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" diff --git a/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc new file mode 100644 index 00000000..f5266903 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio.inc @@ -0,0 +1,267 @@ +SUMMARY = "Sound server for Linux and Unix-like operating systems" +HOMEPAGE = "http://www.pulseaudio.org" +AUTHOR = "Lennart Poettering" +SECTION = "libs/multimedia" + +# Most of PulseAudio code is under LGPLv2.1+. There are a few exceptions: +# +# The "adrian" echo canceller variant has code under a non-standard permissive +# license. See src/modules/echo-cancel/adrian-license.txt for details. This +# recipe disables the adrian echo canceller to avoid hassle with the unusual +# license. +# +# The src/modules/reserve* and src/pulsecore/rtkit* files are under the MIT +# license. +# +# The src/pulsecore/filter/ directory contains code under the 3-clause BSD +# license. +# +# People who distribute PulseAudio binaries need to also consider that there +# are some dependencies to GPL libraries. LGPL code that depends on GPL +# libraries probably becomes effectively GPL-licensed (at compile-time? or at +# at link-time?). I'm not a lawyer, though, so I'm not sure of the exact +# implications. The GPL dependencies only affect the server, not the client +# library, with the exception of libdbus that affects both. These are the GPL +# library dependencies: +# +# One of the resampler implementations uses libsamplerate. This recipe doesn't +# enable that resampler, however. +# +# One of the database implementations uses gdbm. This recipe doesn't enable +# that database implementation, however. +# +# module-lirc (enabled by PACKAGECONFIG[lirc]) uses LIRC. +# +# module-equalizer-sink uses FFTW. This recipe disables that, however. +# +# The dependency with the most complicated licensing considerations is libdbus. +# When PACKAGECONFIG[dbus] is enabled (like it is by default), libdbus will be +# used by both the server and the client library (libpulse). Does this affect +# applications that use libpulse? It should be also noted that libdbus is +# dual-licensed: either GPLv2+ or AFL-2 terms apply. Whose decision is it which +# of the licenses apply? What a mess. Some people hold the view that libdbus is +# a system library that is covered by the "special exception" in GPLv2's +# section 3, and therefore libdbus's GPL license doesn't affect PulseAudio. +LICENSE = "LGPLv2.1+ & MIT & BSD-3-Clause" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=0e5cd938de1a7a53ea5adac38cc10c39 \ + file://GPL;md5=4325afd396febcb659c36b49533135d4 \ + file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \ + file://src/modules/echo-cancel/adrian-license.txt;md5=abbab006a561fbffccedf1c3531f34ab \ + file://src/pulsecore/filter/LICENSE.WEBKIT;md5=49defbaffddf8c51faf606ff7fc3b1f7 \ + file://src/pulsecore/resampler.h;beginline=4;endline=21;md5=09794012ae16912c0270f3280cc8ff84 \ + file://src/modules/reserve.h;beginline=6;endline=28;md5=0e23094760367d51b6609750e9b31fbb \ + file://src/pulsecore/rtkit.h;beginline=6;endline=29;md5=3f00ff966716ae0817c31576d1473528 \ + file://src/modules/echo-cancel/adrian-aec.h;beginline=3;endline=12;md5=d3ed4fad1c073f8b06f37495dc5d1026 \ + file://src/pulsecore/filter/biquad.h;beginline=1;endline=4;md5=6d46d1365206528a20137355924233c1 \ +" + +DEPENDS = "libatomic-ops libsndfile1 libtool intltool-native" +# optional +DEPENDS += "udev alsa-lib glib-2.0 gconf" +DEPENDS += "speexdsp libxml-parser-perl-native libcap" + +inherit autotools bash-completion pkgconfig useradd gettext perlnative bluetooth systemd manpages + +# *.desktop rules wont be generated during configure and build will fail +# if using --disable-nls +USE_NLS = "yes" + +EXTRA_OECONF = "\ + --disable-hal-compat \ + --disable-orc \ + --enable-tcpwrap=no \ + --with-access-group=audio \ + --disable-openssl \ + --with-database=simple \ + --without-zsh-completion-dir \ + --with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d \ + ac_cv_header_valgrind_memcheck_h=no \ + --disable-tests \ +" + +# soxr (the SoX Resampler library) doesn't seem to be currently packaged in +# oe-core nor meta-oe, so let's not add a PACKAGECONFIG entry for it for now. +EXTRA_OECONF += "--without-soxr" + +# The FFTW dependency (for module-equalizer-sink) was removed in commit +# ddbd713293 without explaining why it was not made a PACKAGECONFIG item +# instead. Oh well, let's keep it disabled until someone expresses some +# interest in having it enabled. +EXTRA_OECONF += "--without-fftw" + +# The "adrian" echo canceller implementation has a non-standard license +# (src/modules/echo-cancel/adrian-license.txt). It's a permissive license, so +# the licensing terms are probably not problematic, but it would be an extra +# hassle to add the license to OE-Core's set of licenses. The canceller isn't +# very good anyway, better alternatives exist (such as the webrtc canceller). +EXTRA_OECONF += "--disable-adrian-aec" + +# FIXME: The gsettings module is temporarily disabled, because adding support +# for it is a bit complicated. +EXTRA_OECONF += "--disable-gsettings" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', '3g', 'ofono', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd x11', d)} \ + dbus \ + " + +PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus" +PACKAGECONFIG[bluez4] = "--enable-bluez4,--disable-bluez4,bluez4 sbc" +PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5 sbc" +PACKAGECONFIG[ofono] = "--enable-bluez5-ofono-headset,--disable-bluez5-ofono-headset,ofono" +PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3" +PACKAGECONFIG[systemd] = "--enable-systemd-daemon --enable-systemd-login --enable-systemd-journal --with-systemduserunitdir=${systemd_user_unitdir},--disable-systemd-daemon --disable-systemd-login --disable-systemd-journal,systemd" +PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxtst libice libsm libxcb" +PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" +PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" +# Since many embedded systems don't have non-root users, it's useful to be +# able to use pulseaudio autospawn for root as well. +PACKAGECONFIG[autospawn-for-root] = ",,," +PACKAGECONFIG[lirc] = "--enable-lirc,--disable-lirc,lirc" +PACKAGECONFIG[webrtc] = "--enable-webrtc-aec,--disable-webrtc-aec,webrtc-audio-processing" +PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," +PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, " + +EXTRA_OECONF_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}" +EXTRA_OECONF_append_armeb = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}" + + +export TARGET_PFPU = "${TARGET_FPU}" + +# TODO: Use more fine granular version +#OE_LT_RPATH_ALLOW=":${libdir}/pulse-0.9:" +OE_LT_RPATH_ALLOW = "any" +OE_LT_RPATH_ALLOW[export]="1" + +set_cfg_value () { + sed -i -e "s/\(; *\)\?$2 =.*/$2 = $3/" "$1" + if ! grep -q "^$2 = $3\$" "$1"; then + die "Use of sed to set '$2' to '$3' in '$1' failed" + fi +} + +do_compile_append () { + if ${@bb.utils.contains('PACKAGECONFIG', 'autospawn-for-root', 'true', 'false', d)}; then + set_cfg_value src/client.conf allow-autospawn-for-root yes + fi +} + +do_install_append() { + install -d ${D}${sysconfdir}/default/volatiles + install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/volatiles.04_pulse +} + +USERADD_PACKAGES = "pulseaudio-server" +GROUPADD_PARAM_pulseaudio-server = "--system pulse" +USERADD_PARAM_pulseaudio-server = "--system --home /var/run/pulse \ + --no-create-home --shell /bin/false \ + --groups audio,pulse --gid pulse pulse" + +# The console-kit module is included here explicitly so bitbake can map to the +# RDEPENDS we define for it in this recipe, and thereby ensure that when +# adding the console-kit module to an image, we also get the necessary +# consolekit package produced. +PACKAGES =+ "libpulsecore libpulsecommon libpulse libpulse-simple libpulse-mainloop-glib \ + pulseaudio-server pulseaudio-misc ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'pulseaudio-module-console-kit', '', d)}" + +#upgrade path: +RREPLACES_pulseaudio-server = "libpulse-bin libpulse-conf" + +PACKAGES_DYNAMIC += "^pulseaudio-lib-.* ^pulseaudio-module-.*" + +FILES_libpulsecore = "${libdir}/pulseaudio/libpulsecore*.so" +FILES_libpulsecommon = "${libdir}/pulseaudio/libpulsecommon*.so" + +# client.conf configures the behaviour of libpulse, so it belongs in the same +# package. +FILES_libpulse = "${libdir}/libpulse.so.* ${sysconfdir}/pulse/client.conf" + +FILES_libpulse-simple = "${libdir}/libpulse-simple.so.*" +FILES_libpulse-mainloop-glib = "${libdir}/libpulse-mainloop-glib.so.*" + +FILES_${PN}-dev += "${libdir}/pulse-${PV}/modules/*.la ${datadir}/vala ${libdir}/cmake" +FILES_${PN}-conf = "${sysconfdir}" +FILES_${PN}-bin += "${sysconfdir}/default/volatiles/volatiles.04_pulse" +FILES_${PN}-server = "${bindir}/pulseaudio ${bindir}/start-* ${sysconfdir} ${bindir}/pactl */udev/rules.d/*.rules */*/udev/rules.d/*.rules ${systemd_user_unitdir}/*" + +#SYSTEMD_PACKAGES = "${PN}-server" +SYSTEMD_SERVICE_${PN}-server = "pulseaudio.service" + +FILES_${PN}-misc = "${bindir}/* ${libdir}/pulseaudio/libpulsedsp.so" + +# Allow the pulseaudio package to be created empty as a placeholder (-dbg and -dev depend on it) +ALLOW_EMPTY_${PN} = "1" + +CONFFILES_libpulse = "${sysconfdir}/pulse/client.conf" + +CONFFILES_pulseaudio-server = "\ + ${sysconfdir}/pulse/default.pa \ + ${sysconfdir}/pulse/daemon.conf \ + ${sysconfdir}/pulse/system.pa \ + " + +pkg_postinst_${PN}-server() { + if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ] ; then + ${sysconfdir}/init.d/populate-volatile.sh update + fi +} + +python populate_packages_prepend() { + #d.setVar('PKG_pulseaudio', 'pulseaudio') + + plugindir = d.expand('${libdir}/pulse-${PV}/modules/') + do_split_packages(d, plugindir, '^module-(.*)\.so$', 'pulseaudio-module-%s', 'PulseAudio module for %s', extra_depends='', prepend=True) + do_split_packages(d, plugindir, '^lib(.*)\.so$', 'pulseaudio-lib-%s', 'PulseAudio library for %s', extra_depends='', prepend=True) +} + +RDEPENDS_pulseaudio-server = " \ + pulseaudio-module-filter-apply \ + pulseaudio-module-filter-heuristics \ + pulseaudio-module-udev-detect \ + pulseaudio-module-null-sink \ + pulseaudio-module-device-restore \ + pulseaudio-module-stream-restore \ + pulseaudio-module-card-restore \ + pulseaudio-module-augment-properties \ + pulseaudio-module-detect \ + pulseaudio-module-alsa-sink \ + pulseaudio-module-alsa-source \ + pulseaudio-module-alsa-card \ + pulseaudio-module-native-protocol-unix \ + pulseaudio-module-default-device-restore \ + pulseaudio-module-intended-roles \ + pulseaudio-module-rescue-streams \ + pulseaudio-module-always-sink \ + pulseaudio-module-suspend-on-idle \ + pulseaudio-module-position-event-sounds \ + pulseaudio-module-role-cork \ + pulseaudio-module-switch-on-port-available" + +# If the server is installed, it's usually desirable to make ALSA applications +# use PulseAudio. alsa-plugins-pulseaudio-conf will install the configuration +# that makes the PulseAudio plugin the default ALSA device. +RDEPENDS_pulseaudio-server += "alsa-plugins-pulseaudio-conf" + +# pulseaudio-module-console-kit is built whenever dbus is enabled by PACKAGECONFIG +# but consolekit depends on libx11 and is available only for DISTRO with x11 in DISTRO_FEATURES +RDEPENDS_pulseaudio-module-console-kit =+ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d)}" +RDEPENDS_pulseaudio-misc += "pulseaudio-module-cli-protocol-unix" + +FILES_pulseaudio-module-gconf += "${libexecdir}/pulse/gconf-helper" +FILES_pulseaudio-module-alsa-card += "${datadir}/pulseaudio/alsa-mixer" + +# The console-kit module is good to have on X11 systems (it keeps PulseAudio +# running for the duration of the user login session). The device-manager and +# x11-* modules are referenced from the start-pulseaudio-x11 script, so those +# modules must be installed when X11 is enabled. +RDEPENDS_pulseaudio-server += "\ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '\ + pulseaudio-module-console-kit \ + pulseaudio-module-device-manager \ + pulseaudio-module-x11-cork-request \ + pulseaudio-module-x11-publish \ + pulseaudio-module-x11-xsmp \ + ', '', d)}" diff --git a/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch new file mode 100644 index 00000000..33f7709a --- /dev/null +++ b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch @@ -0,0 +1,97 @@ +From babec3a50dd710d26b72f6c6d43bd79b04e954a6 Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen <tanu.kaskinen@linux.intel.com> +Date: Tue, 28 Apr 2015 14:32:43 +0300 +Subject: [PATCH] client-conf: Add allow-autospawn-for-root + +Usually autospawning for root is a bad idea, since it can easily +interfere with other users' PulseAudio instances, but in embedded +environments where only root exists, autospawning is fine. + +Upstream-Status: Denied [Upstream hasn't so far been convinced that +this feature is needed. The view is that running the graphical session +as root doesn't make sense even on embedded systems, or if it does, +running PulseAudio in the system mode should be a good solution for +that use case. If someone can prove otherwise, the patch would +probably be accepted.] + +Signed-off-by: Tanu Kaskinen <tanu.kaskinen@linux.intel.com> +--- + man/pulse-client.conf.5.xml.in | 9 +++++++++ + src/pulse/client-conf.c | 1 + + src/pulse/client-conf.h | 1 + + src/pulse/client.conf.in | 1 + + src/pulse/context.c | 2 +- + 5 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in +index b88898c..e737c96 100644 +--- a/man/pulse-client.conf.5.xml.in ++++ b/man/pulse-client.conf.5.xml.in +@@ -82,6 +82,15 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. + </option> + + <option> ++ <p><opt>allow-autospawn-for-root=</opt> Allow autospawning also for root. ++ Takes a boolean value, defaults to <opt>no</opt>. If the <opt>autospawn ++ </opt> option is disabled, this option has no effect. Autospawning for ++ root is disabled by default, because running PulseAudio as root will ++ interfere with regular users' PulseAudio instances. This option should be ++ enabled only in environments where there are no regular users at all.</p> ++ </option> ++ ++ <option> + <p><opt>daemon-binary=</opt> Path to the PulseAudio daemon to + run when autospawning. Defaults to a path configured at compile + time.</p> +diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c +index a3c9486..9f68ee5 100644 +--- a/src/pulse/client-conf.c ++++ b/src/pulse/client-conf.c +@@ -138,6 +138,7 @@ void pa_client_conf_load(pa_client_conf *c, bool load_from_x11, bool load_from_e + { "default-server", pa_config_parse_string, &c->default_server, NULL }, + { "default-dbus-server", pa_config_parse_string, &c->default_dbus_server, NULL }, + { "autospawn", pa_config_parse_bool, &c->autospawn, NULL }, ++ { "allow-autospawn-for-root", pa_config_parse_bool, &c->allow_autospawn_for_root, NULL }, + { "cookie-file", pa_config_parse_string, &c->cookie_file_from_client_conf, NULL }, + { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL }, + { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL }, +diff --git a/src/pulse/client-conf.h b/src/pulse/client-conf.h +index 7691ec7..19db7ed 100644 +--- a/src/pulse/client-conf.h ++++ b/src/pulse/client-conf.h +@@ -38,6 +38,7 @@ typedef struct pa_client_conf { + char *cookie_file_from_application; + char *cookie_file_from_client_conf; + bool autospawn, disable_shm, disable_memfd, auto_connect_localhost, auto_connect_display; ++ bool allow_autospawn_for_root; + size_t shm_size; + } pa_client_conf; + +diff --git a/src/pulse/client.conf.in b/src/pulse/client.conf.in +index 26b7790..69830ef 100644 +--- a/src/pulse/client.conf.in ++++ b/src/pulse/client.conf.in +@@ -23,6 +23,7 @@ + ; default-dbus-server = + + ; autospawn = yes ++; allow-autospawn-for-root = no + ; daemon-binary = @PA_BINARY@ + ; extra-arguments = --log-target=syslog + +diff --git a/src/pulse/context.c b/src/pulse/context.c +index 69be5f4..d6e13e8 100644 +--- a/src/pulse/context.c ++++ b/src/pulse/context.c +@@ -1027,7 +1027,7 @@ int pa_context_connect( + if (!(flags & PA_CONTEXT_NOAUTOSPAWN) && c->conf->autospawn) { + + #ifdef HAVE_GETUID +- if (getuid() == 0) ++ if (!c->conf->allow_autospawn_for_root && getuid() == 0) + pa_log_debug("Not doing autospawn since we are root."); + else { + c->do_autospawn = true; +-- +2.8.1 + diff --git a/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/volatiles.04_pulse b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/volatiles.04_pulse new file mode 100644 index 00000000..5b199803 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio/volatiles.04_pulse @@ -0,0 +1,2 @@ +# <type> <owner> <group> <mode> <path> <linksource> +d pulse pulse 0755 /var/run/pulse none diff --git a/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb new file mode 100644 index 00000000..36d92bca --- /dev/null +++ b/external/poky/meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb @@ -0,0 +1,13 @@ +require pulseaudio.inc + +SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \ + file://0001-client-conf-Add-allow-autospawn-for-root.patch \ + file://volatiles.04_pulse \ + " +SRC_URI[md5sum] = "c42f1f1465e8df9859d023dc184734bf" +SRC_URI[sha256sum] = "809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055" + +do_compile_prepend() { + mkdir -p ${S}/libltdl + cp ${STAGING_LIBDIR}/libltdl* ${S}/libltdl +} diff --git a/external/poky/meta/recipes-multimedia/sbc/sbc_1.3.bb b/external/poky/meta/recipes-multimedia/sbc/sbc_1.3.bb new file mode 100644 index 00000000..2bb895de --- /dev/null +++ b/external/poky/meta/recipes-multimedia/sbc/sbc_1.3.bb @@ -0,0 +1,23 @@ +SUMMARY = "SBC Audio Codec" +DESCRIPTION = "Bluetooth low-complexity, subband codec (SBC) library." +HOMEPAGE = "https://www.bluez.org" +SECTION = "libs" +LICENSE = "GPLv2+ & LGPLv2.1+" +LICENSE_${PN} = "LGPLv2.1+" +LICENSE_${PN}-examples = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \ + file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \ + file://src/sbcenc.c;beginline=1;endline=24;md5=08e7a70b127f4100ff2cd7d629147d8d \ + file://sbc/sbc.h;beginline=1;endline=26;md5=0f57d0df22b0d40746bdd29805a4361b" + +DEPENDS = "libsndfile1" + +SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/${BP}.tar.xz" + +SRC_URI[md5sum] = "2d8b7841f2c11ab287718d562f2b981c" +SRC_URI[sha256sum] = "e61022cf576f14190241e7071753fdacdce5d1dea89ffd704110fc50be689309" + +inherit autotools pkgconfig + +PACKAGES =+ "${PN}-examples" +FILES_${PN}-examples += "${bindir}/*" diff --git a/external/poky/meta/recipes-multimedia/speex/speex_1.2.0.bb b/external/poky/meta/recipes-multimedia/speex/speex_1.2.0.bb new file mode 100644 index 00000000..19636bb2 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/speex/speex_1.2.0.bb @@ -0,0 +1,20 @@ +SUMMARY = "Speech Audio Codec" +DESCRIPTION = "Speex is an Open Source/Free Software patent-free audio compression format designed for speech." +HOMEPAGE = "http://www.speex.org" +SECTION = "libs" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=314649d8ba9dd7045dfb6683f298d0a8 \ + file://include/speex/speex.h;beginline=1;endline=34;md5=ef8c8ea4f7198d71cf3509c6ed05ea50" +DEPENDS = "libogg speexdsp" + +SRC_URI = "http://downloads.xiph.org/releases/speex/speex-${PV}.tar.gz" +UPSTREAM_CHECK_REGEX = "speex-(?P<pver>\d+(\.\d+)+)\.tar" + +SRC_URI[md5sum] = "8ab7bb2589110dfaf0ed7fa7757dc49c" +SRC_URI[sha256sum] = "eaae8af0ac742dc7d542c9439ac72f1f385ce838392dc849cae4536af9210094" + +inherit autotools pkgconfig lib_package + +EXTRA_OECONF = "\ + ${@bb.utils.contains('TARGET_FPU', 'soft', '--enable-fixed-point --disable-float-api --disable-vbr', '', d)} \ +" diff --git a/external/poky/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch b/external/poky/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch new file mode 100644 index 00000000..c7067daa --- /dev/null +++ b/external/poky/meta/recipes-multimedia/speex/speexdsp/0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch @@ -0,0 +1,63 @@ +From c73370ceafd138becee8ca3c688ba75756830bfe Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen <tanu.kaskinen@linux.intel.com> +Date: Sun, 5 Jul 2015 17:48:16 +0300 +Subject: [PATCH] Don't rely on HAVE_STDINT_H et al. being defined + +Not everyone who includes speexdsp_config_types.h will have a test +which defines those, and if we've chosen to use the stdint types at +configure time then we know exactly which header(s) are available, so +just choose the best one then and generate the header to use it. + +This patch, including the above text, is copied from a commit in the +speex repository[1]. The original commit for speex was made by Ron +<ron@debian.org>. + +[1] https://git.xiph.org/?p=speex.git;a=commitdiff;h=774c87d6cb7dd8dabdd17677fc6da753ecf4aa87 + +Upstream-Status: Backport + +Signed-off-by: Tanu Kaskinen <tanu.kaskinen@linux.intel.com> +--- + configure.ac | 6 ++++++ + include/speex/speexdsp_config_types.h.in | 8 +------- + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2cd2d1e..1de0c23 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -334,6 +334,12 @@ AC_SUBST([USIZE16]) + AC_SUBST([SIZE32]) + AC_SUBST([USIZE32]) + ++AS_IF([test "$ac_cv_header_stdint_h" = "yes"], [INCLUDE_STDINT="#include <stdint.h>"], ++ [test "$ac_cv_header_inttypes_h" = "yes"], [INCLUDE_STDINT="#include <inttypes.h>"], ++ [test "$ac_cv_header_sys_types_h" = "yes"], [INCLUDE_STDINT="#include <sys/types.h>"]) ++ ++AC_SUBST([INCLUDE_STDINT]) ++ + AC_CONFIG_FILES([ + Makefile libspeexdsp/Makefile doc/Makefile SpeexDSP.spec + include/Makefile include/speex/Makefile speexdsp.pc +diff --git a/include/speex/speexdsp_config_types.h.in b/include/speex/speexdsp_config_types.h.in +index 02b82fd..5ea7b55 100644 +--- a/include/speex/speexdsp_config_types.h.in ++++ b/include/speex/speexdsp_config_types.h.in +@@ -1,13 +1,7 @@ + #ifndef __SPEEX_TYPES_H__ + #define __SPEEX_TYPES_H__ + +-#if defined HAVE_STDINT_H +-# include <stdint.h> +-#elif defined HAVE_INTTYPES_H +-# include <inttypes.h> +-#elif defined HAVE_SYS_TYPES_H +-# include <sys/types.h> +-#endif ++@INCLUDE_STDINT@ + + typedef @SIZE16@ spx_int16_t; + typedef @USIZE16@ spx_uint16_t; +-- +1.9.3 + diff --git a/external/poky/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb b/external/poky/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb new file mode 100644 index 00000000..6b1acedb --- /dev/null +++ b/external/poky/meta/recipes-multimedia/speex/speexdsp_1.2rc3.bb @@ -0,0 +1,39 @@ +SUMMARY = "A patent-free DSP library" +DESCRIPTION = "SpeexDSP is a patent-free, Open Source/Free Software DSP library." +HOMEPAGE = "http://www.speex.org" +SECTION = "libs" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=314649d8ba9dd7045dfb6683f298d0a8" + +SRC_URI = "http://downloads.xiph.org/releases/speex/speexdsp-${PV}.tar.gz \ + file://0001-Don-t-rely-on-HAVE_STDINT_H-et-al.-being-defined.patch" + +SRC_URI[md5sum] = "70d9d31184f7eb761192fd1ef0b73333" +SRC_URI[sha256sum] = "4ae688600039f5d224bdf2e222d2fbde65608447e4c2f681585e4dca6df692f1" + +inherit autotools pkgconfig + +EXTRA_OECONF = "\ + --disable-examples \ + ${@bb.utils.contains('TARGET_FPU', 'soft', '--enable-fixed-point --disable-float-api', '', d)} \ +" + +# Workaround for a build failure when building with MACHINE=qemuarm64. I think +# aarch64 is supposed to support NEON just fine, but building for qemuarm64 +# fails in NEON code: +# +# .../speexdsp-1.2rc3/libspeexdsp/resample_neon.h:148:5: error: impossible constraint in 'asm' +# asm volatile (" cmp %[len], #0\n" +# ^ +# +# I sent an email about the issue to speex-dev. At the time of writing there +# are no responses yet: +# http://thread.gmane.org/gmane.comp.audio.compression.speex.devel/7360 +EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '--disable-neon', '', d)}" + +# speexdsp was split off from speex in 1.2rc2. Older versions of speex can't +# be installed together with speexdsp, since they contain overlapping files. +RCONFLICTS_${PN} = "speex (< 1.2rc2)" +RCONFLICTS_${PN}-dbg = "speex-dbg (< 1.2rc2)" +RCONFLICTS_${PN}-dev = "speex-dev (< 1.2rc2)" +RCONFLICTS_${PN}-staticdev = "speex-staticdev (< 1.2rc2)" diff --git a/external/poky/meta/recipes-multimedia/webp/libwebp_1.0.0.bb b/external/poky/meta/recipes-multimedia/webp/libwebp_1.0.0.bb new file mode 100644 index 00000000..1a9679f9 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/webp/libwebp_1.0.0.bb @@ -0,0 +1,53 @@ +SUMMARY = "WebP is an image format designed for the Web" +DESCRIPTION = "WebP is a method of lossy and lossless compression that can be \ + used on a large variety of photographic, translucent and \ + graphical images found on the web. The degree of lossy \ + compression is adjustable so a user can choose the trade-off \ + between file size and image quality. WebP typically achieves \ + an average of 30% more compression than JPEG and JPEG 2000, \ + without loss of image quality." +HOMEPAGE = "https://developers.google.com/speed/webp/" +SECTION = "libs" + +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://COPYING;md5=6e8dee932c26f2dab503abf70c96d8bb \ + file://PATENTS;md5=c6926d0cb07d296f886ab6e0cc5a85b7" + +SRC_URI = "http://downloads.webmproject.org/releases/webp/${BP}.tar.gz" +SRC_URI[md5sum] = "967b8f087cb392e6cc94d5e116a120c0" +SRC_URI[sha256sum] = "84259c4388f18637af3c5a6361536d754a5394492f91be1abc2e981d4983225b" + +UPSTREAM_CHECK_URI = "http://downloads.webmproject.org/releases/webp/index.html" + +EXTRA_OECONF = " \ + --disable-wic \ + --enable-libwebpmux \ + --enable-libwebpdemux \ + --enable-threading \ +" +# Do not trust configure to determine if neon is available. +# +EXTRA_OECONF_append_arm = " \ + ${@bb.utils.contains("TUNE_FEATURES","neon","--enable-neon","--disable-neon",d)} \ +" + +inherit autotools lib_package + +PACKAGECONFIG ??= "" + +# libwebpdecoder is a subset of libwebp, don't build it unless requested +PACKAGECONFIG[decoder] = "--enable-libwebpdecoder,--disable-libwebpdecoder" + +# Apply for examples programs: cwebp and dwebp +PACKAGECONFIG[gif] = "--enable-gif,--disable-gif,giflib" +PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg" +PACKAGECONFIG[png] = "--enable-png,--disable-png,,libpng" +PACKAGECONFIG[tiff] = "--enable-tiff,--disable-tiff,tiff" + +# Apply only for example program vwebp +PACKAGECONFIG[gl] = "--enable-gl,--disable-gl,mesa-glut" + +PACKAGES =+ "${PN}-gif2webp" + +DESCRIPTION_${PN}-gif2webp = "Simple tool to convert animated GIFs to WebP" +FILES_${PN}-gif2webp = "${bindir}/gif2webp" diff --git a/external/poky/meta/recipes-multimedia/x264/x264/Fix-X32-build-by-disabling-asm.patch b/external/poky/meta/recipes-multimedia/x264/x264/Fix-X32-build-by-disabling-asm.patch new file mode 100644 index 00000000..087a448e --- /dev/null +++ b/external/poky/meta/recipes-multimedia/x264/x264/Fix-X32-build-by-disabling-asm.patch @@ -0,0 +1,53 @@ +From 66b120079fb21ed38cab0900c63360b0a7853eaa Mon Sep 17 00:00:00 2001 +From: Christopher Larson <chris_larson@mentor.com> +Date: Tue, 13 Dec 2016 14:22:32 -0700 +Subject: [PATCH] Fix X32 build by disabling asm + +This applies gentoo's x32 patch, adjusted slightly, which disables asm support +for x32 as well as correcting -m. + +Debian has a different patch which does the same, and there's a superior yet +out of date patch series on the x264 list which keeps asm support enabled, but +doesn't successfully build at this time, and my assembly is very rusty. + +Upstream-Status: Pending +Signed-off-by: Christopher Larson <chris_larson@mentor.com> +--- + configure | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 3109ec4..844aeae 100755 +--- a/configure ++++ b/configure +@@ -703,7 +703,13 @@ case $host_cpu in + AS_EXT=".asm" + ASFLAGS="$ASFLAGS -DARCH_X86_64=1 -I\$(SRCPATH)/common/x86/" + stack_alignment=16 +- [ $compiler = GNU ] && CFLAGS="-m64 $CFLAGS" && LDFLAGS="-m64 $LDFLAGS" ++ if [ $compiler = GNU ]; then ++ if cpp_check "" "" "__ILP32__" ; then ++ CFLAGS="-mx32 $CFLAGS" && LDFLAGS="-mx32 $LDFLAGS" ++ else ++ CFLAGS="-m64 $CFLAGS" && LDFLAGS="-m64 $LDFLAGS" ++ fi ++ fi + if [ "$SYS" = MACOSX ]; then + ASFLAGS="$ASFLAGS -f macho64 -DPIC -DPREFIX" + if cc_check '' "-arch x86_64"; then +@@ -722,7 +728,11 @@ case $host_cpu in + RCFLAGS="--target=pe-x86-64 $RCFLAGS" + fi + else +- ASFLAGS="$ASFLAGS -f elf64" ++ if cpp_check "" "" "__ILP32__" ; then ++ asm=no ++ else ++ ASFLAGS="$ASFLAGS -f elf64" ++ fi + fi + ;; + powerpc*) +-- +2.8.0 + diff --git a/external/poky/meta/recipes-multimedia/x264/x264/don-t-default-to-cortex-a9-with-neon.patch b/external/poky/meta/recipes-multimedia/x264/x264/don-t-default-to-cortex-a9-with-neon.patch new file mode 100644 index 00000000..065e3b35 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/x264/x264/don-t-default-to-cortex-a9-with-neon.patch @@ -0,0 +1,33 @@ +From a72bf499a0674fc75eedf15008b424e28f67e4bd Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan <andrei@gherzan.ro> +Date: Fri, 2 Feb 2018 15:10:08 +0200 +Subject: [PATCH] dont default to cortex-a9 with neon + +-march flag is not in CFLAGS so this will always default to + -mcpu=cortex-a8 -mfpu=neon. + +Upstream-Status: Pending + +Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> +Signed-off-by: Maxin B. John <maxin.john@intel.com> +--- + configure | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/configure b/configure +index 0e3ef23..955b993 100755 +--- a/configure ++++ b/configure +@@ -911,9 +911,6 @@ if [ $asm = auto -a \( $ARCH = X86 -o $ARCH = X86_64 \) ] ; then + fi + + if [ $asm = auto -a $ARCH = ARM ] ; then +- # set flags so neon is built by default +- [ $compiler == CL ] || echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon" +- + cc_check '' '' '__asm__("add r0, r1, r2");' && define HAVE_ARM_INLINE_ASM + if [ $compiler = CL ] && cpp_check '' '' 'defined(_M_ARM) && _M_ARM >= 7' ; then + define HAVE_ARMV6 +-- +2.4.0 + diff --git a/external/poky/meta/recipes-multimedia/x264/x264_git.bb b/external/poky/meta/recipes-multimedia/x264/x264_git.bb new file mode 100644 index 00000000..4174cb28 --- /dev/null +++ b/external/poky/meta/recipes-multimedia/x264/x264_git.bb @@ -0,0 +1,56 @@ +SUMMARY = "H.264/MPEG-4 AVC video encoder" +DESCRIPTION = "A free software library and application for encoding video streams into the H.264/MPEG-4 AVC format." +HOMEPAGE = "http://www.videolan.org/developers/x264.html" + +LICENSE = "GPLv2" +LICENSE_FLAGS = "commercial" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" + +DEPENDS = "nasm-native" + +SRC_URI = "git://github.com/mirror/x264;branch=stable \ + file://don-t-default-to-cortex-a9-with-neon.patch \ + file://Fix-X32-build-by-disabling-asm.patch \ + " +UPSTREAM_CHECK_COMMITS = "1" + +SRCREV = "e9a5903edf8ca59ef20e6f4894c196f135af735e" + +PV = "r2854+git${SRCPV}" + +S = "${WORKDIR}/git" + +inherit lib_package pkgconfig perlnative + +X264_DISABLE_ASM = "" +X264_DISABLE_ASM_x86_libc-musl = "--disable-asm" +X264_DISABLE_ASM_armv4 = "--disable-asm" +X264_DISABLE_ASM_armv5 = "--disable-asm" +X264_DISABLE_ASM_powerpc = "${@bb.utils.contains("TUNE_FEATURES", "spe", "--disable-asm", "", d)}" +X264_DISABLE_ASM_mipsarch = "${@bb.utils.contains("TUNE_FEATURES", "r6", "", "--disable-asm", d)}" + +EXTRA_OECONF = '--prefix=${prefix} \ + --host=${HOST_SYS} \ + --libdir=${libdir} \ + --cross-prefix=${TARGET_PREFIX} \ + --sysroot=${STAGING_DIR_TARGET} \ + --enable-shared \ + --enable-static \ + --disable-lavf \ + --disable-swscale \ + --disable-opencl \ + --enable-pic \ + ${X264_DISABLE_ASM} \ + ' + +do_configure() { + install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S} + install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S} + ./configure ${EXTRA_OECONF} +} + +do_install() { + oe_runmake install DESTDIR=${D} +} + +AS[unexport] = "1" |