73
recipes-gstreamer/gstreamer-0.10/gst-meta-base_0.10.bb
Normal file
73
recipes-gstreamer/gstreamer-0.10/gst-meta-base_0.10.bb
Normal file
@@ -0,0 +1,73 @@
|
||||
SUMMARY = "GStreamer package groups"
|
||||
LICENSE = "MIT"
|
||||
|
||||
DEPENDS = "gstreamer gst-plugins-base gst-plugins-good"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302 \
|
||||
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
|
||||
|
||||
PR = "r13"
|
||||
|
||||
PACKAGES = "\
|
||||
gst-meta-base \
|
||||
gst-meta-x11-base \
|
||||
gst-meta-audio \
|
||||
gst-meta-debug \
|
||||
gst-meta-video \
|
||||
"
|
||||
|
||||
ALLOW_EMPTY_gst-meta-base = "1"
|
||||
ALLOW_EMPTY_gst-meta-x11-base = "1"
|
||||
ALLOW_EMPTY_gst-meta-audio = "1"
|
||||
ALLOW_EMPTY_gst-meta-debug = "1"
|
||||
ALLOW_EMPTY_gst-meta-video = "1"
|
||||
|
||||
RDEPENDS_gst-meta-base = "\
|
||||
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gst-meta-x11-base', '', d)} \
|
||||
gstreamer \
|
||||
gst-plugins-base-playbin \
|
||||
gst-plugins-base-decodebin \
|
||||
gst-plugins-base-decodebin2 \
|
||||
gst-plugins-base-gio \
|
||||
gst-plugins-base-alsa \
|
||||
gst-plugins-base-volume \
|
||||
gst-plugins-base-audioconvert \
|
||||
gst-plugins-base-audioresample \
|
||||
gst-plugins-base-typefindfunctions \
|
||||
gst-plugins-base-videoscale \
|
||||
gst-plugins-base-ffmpegcolorspace \
|
||||
gst-plugins-good-autodetect \
|
||||
gst-plugins-good-souphttpsrc"
|
||||
|
||||
RRECOMMENDS_gst-meta-x11-base = "\
|
||||
gst-plugins-base-ximagesink \
|
||||
gst-plugins-base-xvimagesink \
|
||||
"
|
||||
|
||||
RDEPENDS_gst-meta-audio = "\
|
||||
gst-meta-base \
|
||||
gst-plugins-base-vorbis \
|
||||
gst-plugins-base-ogg \
|
||||
gst-plugins-good-wavparse \
|
||||
gst-plugins-good-flac \
|
||||
"
|
||||
|
||||
|
||||
RDEPENDS_gst-meta-debug = "\
|
||||
gst-meta-base \
|
||||
gst-plugins-good-debug \
|
||||
gst-plugins-base-audiotestsrc \
|
||||
gst-plugins-base-videotestsrc \
|
||||
"
|
||||
|
||||
|
||||
RDEPENDS_gst-meta-video = " \
|
||||
gst-meta-base \
|
||||
gst-plugins-good-avi \
|
||||
gst-plugins-good-matroska \
|
||||
gst-plugins-base-theora \
|
||||
"
|
||||
|
||||
RRECOMMENDS_gst-meta-video = " \
|
||||
gst-meta-audio \
|
||||
"
|
||||
@@ -0,0 +1,32 @@
|
||||
From 5478eafecf618cd8e742cc1b96d688a2c7ce5a79 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
|
||||
Date: Sun, 2 Oct 2016 21:49:33 +0200
|
||||
Subject: [PATCH] gst-glib2.m4: don't do crazy things to GLIB_CFLAGS
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
we are definitely not one of those poor souls mentioned
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
|
||||
---
|
||||
common/m4/gst-glib2.m4 | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4
|
||||
index b01f02f..4569ae5 100644
|
||||
--- a/common/m4/gst-glib2.m4
|
||||
+++ b/common/m4/gst-glib2.m4
|
||||
@@ -69,7 +69,6 @@ AC_DEFUN([AG_GST_GLIB_CHECK],
|
||||
fi
|
||||
|
||||
dnl for the poor souls who for example have glib in /usr/local
|
||||
- AS_SCRUB_INCLUDE(GLIB_CFLAGS)
|
||||
|
||||
AC_SUBST(GLIB_EXTRA_CFLAGS)
|
||||
])
|
||||
--
|
||||
2.5.5
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
audioresample: Fix build on x86 if emmintrin.h is available but can't be used
|
||||
|
||||
On x86, EMMINTRIN is defined but not usable without SSE so check for
|
||||
__SSE__ and __SSE2__ as well.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=670690
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
|
||||
---
|
||||
gst/audioresample/resample.c | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c
|
||||
index 98d006c..481fa01 100644
|
||||
--- a/gst/audioresample/resample.c
|
||||
+++ b/gst/audioresample/resample.c
|
||||
@@ -77,13 +77,13 @@
|
||||
#define EXPORT G_GNUC_INTERNAL
|
||||
|
||||
#ifdef _USE_SSE
|
||||
-#ifndef HAVE_XMMINTRIN_H
|
||||
+#if !defined(__SSE__) || !defined(HAVE_XMMINTRIN_H)
|
||||
#undef _USE_SSE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _USE_SSE2
|
||||
-#ifndef HAVE_EMMINTRIN_H
|
||||
+#if !defined(__SSE2__) || !defined(HAVE_EMMINTRIN_H)
|
||||
#undef _USE_SSE2
|
||||
#endif
|
||||
#endif
|
||||
--
|
||||
1.7.1
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
Upstream-Status: Submitted [similar patch by other author, bugzilla]
|
||||
Bugtracker-URL: https://bugzilla.gnome.org/show_bug.cgi?id=663600
|
||||
|
||||
Prepend PKG_CONFIG_SYSROOT to includedir, so configure doesn't
|
||||
search for gstconfig.h in /usr/include.
|
||||
|
||||
Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 1901bcf..460fb0a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -435,7 +435,7 @@ AG_GST_CHECK_PLUGIN(volume)
|
||||
dnl check for gstreamer core features (subsystems)
|
||||
dnl FIXME: this assumes srcdir == builddir for uninstalled setups
|
||||
GST_CONFIGPATH=`$PKG_CONFIG --variable=includedir gstreamer-0.10`"/gst/gstconfig.h"
|
||||
-AG_GST_PARSE_SUBSYSTEM_DISABLES($GST_CONFIGPATH)
|
||||
+AG_GST_PARSE_SUBSYSTEM_DISABLES($PKG_CONFIG_SYSROOT_DIR$GST_CONFIGPATH)
|
||||
AM_CONDITIONAL(USE_XML, test $GST_DISABLE_XML != "1")
|
||||
|
||||
dnl disable plug-ins that require libxml2's HTML support if it is not available
|
||||
--
|
||||
1.7.5.4
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
Remove -DTREMOR option since Tremor has dropped its internal
|
||||
libogg2, and gst-plugins-base has dependency on that.
|
||||
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
|
||||
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
|
||||
Signed-off-by: Shane Wang <shane.wang@intel.com>
|
||||
|
||||
diff -r 70065fb4e085 ext/vorbis/Makefile.am
|
||||
--- a/ext/vorbis/Makefile.am Tue Mar 13 16:36:56 2012 +0800
|
||||
+++ b/ext/vorbis/Makefile.am Tue Mar 13 16:38:53 2012 +0800
|
||||
@@ -30,7 +30,7 @@
|
||||
gstvorbisdec.c gstvorbisdeclib.c gstvorbiscommon.c
|
||||
libgstivorbisdec_la_CFLAGS = \
|
||||
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
|
||||
- -DTREMOR $(IVORBIS_CFLAGS)
|
||||
+ $(IVORBIS_CFLAGS)
|
||||
libgstivorbisdec_la_LIBADD = \
|
||||
$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_MAJORMINOR@.la \
|
||||
$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_MAJORMINOR@.la \
|
||||
43
recipes-gstreamer/gstreamer-0.10/gst-plugins-base_0.10.36.bb
Normal file
43
recipes-gstreamer/gstreamer-0.10/gst-plugins-base_0.10.36.bb
Normal file
@@ -0,0 +1,43 @@
|
||||
require gst-plugins.inc
|
||||
|
||||
LICENSE = "GPLv2+ & LGPLv2+"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
|
||||
file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
|
||||
file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \
|
||||
file://gst/ffmpegcolorspace/utils.c;beginline=1;endline=20;md5=9c83a200b8e597b26ca29df20fc6ecd0"
|
||||
|
||||
DEPENDS += "alsa-lib libogg libvorbis libtheora util-linux tremor glib-2.0-native"
|
||||
|
||||
SRC_URI += "file://gst-plugins-base-tremor.patch \
|
||||
file://configure.ac-fix-subparse-plugin.patch \
|
||||
file://audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch \
|
||||
file://0001-aclocal.m4-don-t-do-crazy-things-to-GLIB_CFLAGS.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "776c73883e567f67b9c4a2847d8d041a"
|
||||
SRC_URI[sha256sum] = "2cd3b0fa8e9b595db8f514ef7c2bdbcd639a0d63d154c00f8c9b609321f49976"
|
||||
|
||||
PR = "r8"
|
||||
|
||||
inherit gettext
|
||||
|
||||
EXTRA_OECONF += "--disable-freetypetest"
|
||||
|
||||
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
|
||||
|
||||
PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
|
||||
PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
|
||||
PACKAGECONFIG[x11] = "--enable-x --enable-xvideo,--disable-x --disable-xvideo,virtual/libx11 libxv libsm libice"
|
||||
PACKAGECONFIG[cdparanoia] = "--enable-cdparanoia,--disable-cdparanoia,cdparanoia"
|
||||
|
||||
do_configure_prepend() {
|
||||
# This m4 file contains nastiness which conflicts with libtool 2.2.2
|
||||
rm -f ${S}/m4/lib-link.m4
|
||||
}
|
||||
|
||||
FILES_${PN} += "${datadir}/${BPN}"
|
||||
|
||||
CACHED_CONFIGUREVARS_append_x86 = " ac_cv_header_emmintrin_h=no ac_cv_header_xmmintrin_h=no"
|
||||
|
||||
# /usr/bin/gst-visualise-0.10 is a perl script.
|
||||
RDEPENDS_${PN}-apps += "perl"
|
||||
@@ -0,0 +1,33 @@
|
||||
From 12d18fe4e98e7c232d59b56d529a0521f293fe6d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
|
||||
Date: Wed, 5 Sep 2012 18:54:42 +0200
|
||||
Subject: [PATCH] v4l2: fix build with recent kernels, the v4l2_buffer input
|
||||
field was removed
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
[1] http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=9f2aa8d47f835ea155aaf635f618c0fc1ca87012
|
||||
|
||||
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
|
||||
---
|
||||
sys/v4l2/gstv4l2bufferpool.c | 1 -
|
||||
1 files changed, 0 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
|
||||
index b81c6a4..51cc0ce 100644
|
||||
--- a/sys/v4l2/gstv4l2bufferpool.c
|
||||
+++ b/sys/v4l2/gstv4l2bufferpool.c
|
||||
@@ -181,7 +181,6 @@ gst_v4l2_buffer_new (GstV4l2BufferPool * pool, guint index, GstCaps * caps)
|
||||
GST_LOG_OBJECT (pool->v4l2elem, " MMAP offset: %u",
|
||||
ret->vbuffer.m.offset);
|
||||
GST_LOG_OBJECT (pool->v4l2elem, " length: %u", ret->vbuffer.length);
|
||||
- GST_LOG_OBJECT (pool->v4l2elem, " input: %u", ret->vbuffer.input);
|
||||
|
||||
data = (guint8 *) v4l2_mmap (0, ret->vbuffer.length,
|
||||
PROT_READ | PROT_WRITE, MAP_SHARED, pool->video_fd,
|
||||
--
|
||||
1.7.6.5
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From ccb01de8096a32d86d47b0d92ec3416c57ee4d25 Mon Sep 17 00:00:00 2001
|
||||
From: Bruce Ashfield <bruce.ashfield@windriver.com>
|
||||
Date: Thu, 22 Aug 2013 12:15:54 -0400
|
||||
Subject: [PATCH] v4l2_calls: define V4L2_CID_HCENTER and V4L2_CID_VCENTER
|
||||
|
||||
kernel commit 24b9f5017 [[media] V4L: Remove deprecated image centering controls]
|
||||
removed the definitions of V4L2_CID_HCENTER and V4L2_CID_VCENTER after three
|
||||
years of depreciation.
|
||||
|
||||
The ioctl values are still free, and the case statement which processess them
|
||||
in v4l2 userspace falls through to the proper replacement. So in the short
|
||||
term, we can explicitly define them using the old absolute values, and everything
|
||||
will work.
|
||||
|
||||
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
||||
---
|
||||
sys/v4l2/v4l2_calls.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c
|
||||
index 309bfb6..3c64544 100644
|
||||
--- a/sys/v4l2/v4l2_calls.c
|
||||
+++ b/sys/v4l2/v4l2_calls.c
|
||||
@@ -54,11 +54,16 @@
|
||||
#include "gst/gst-i18n-plugin.h"
|
||||
|
||||
/* Those are ioctl calls */
|
||||
+
|
||||
+/* V4L2_CID_HCENTER has been removed from the mainline kernel, but
|
||||
+ the ioctl space is still present. Since these values fall through
|
||||
+ to their replacement, it is safe (in the short term) to re-use the
|
||||
+ old values explictily */
|
||||
#ifndef V4L2_CID_HCENTER
|
||||
-#define V4L2_CID_HCENTER V4L2_CID_HCENTER_DEPRECATED
|
||||
+#define V4L2_CID_HCENTER V4L2_CID_BASE+22
|
||||
#endif
|
||||
#ifndef V4L2_CID_VCENTER
|
||||
-#define V4L2_CID_VCENTER V4L2_CID_VCENTER_DEPRECATED
|
||||
+#define V4L2_CID_VCENTER V4L2_CID_BASE+23
|
||||
#endif
|
||||
|
||||
GST_DEBUG_CATEGORY_EXTERN (v4l2_debug);
|
||||
--
|
||||
1.7.10.4
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
From ce94b2c2b91b6db190c121860e12a6afafce7ae1 Mon Sep 17 00:00:00 2001
|
||||
From: Roland Krikava <rkrikava@gmail.com>
|
||||
Date: Fri, 2 Nov 2012 12:38:44 -0400
|
||||
Subject: [PATCH 407/440] mulawdec: fix integer overrun
|
||||
|
||||
There might be more than 65535 samples in a chunk of data.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=687469
|
||||
|
||||
Commit - 3be45f70220310ec1c60d819f90b5f2ae03b5d83 in 0.10 branch
|
||||
|
||||
Upstream Status: Backported
|
||||
|
||||
Signed-off-by: Roland Krikava <rkrikava@gmail.com>
|
||||
---
|
||||
gst/law/mulaw-conversion.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gst/law/mulaw-conversion.c b/gst/law/mulaw-conversion.c
|
||||
index 8afae80..190a9f5 100644
|
||||
--- a/gst/law/mulaw-conversion.c
|
||||
+++ b/gst/law/mulaw-conversion.c
|
||||
@@ -51,9 +51,10 @@ mulaw_encode (gint16 * in, guint8 * out, gint numsamples)
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
|
||||
};
|
||||
- gint16 sign, exponent, mantissa, i;
|
||||
+ gint16 sign, exponent, mantissa;
|
||||
gint16 sample;
|
||||
guint8 ulawbyte;
|
||||
+ gint i;
|
||||
|
||||
for (i = 0; i < numsamples; i++) {
|
||||
sample = in[i];
|
||||
@@ -102,7 +103,8 @@ mulaw_decode (guint8 * in, gint16 * out, gint numsamples)
|
||||
static gint16 exp_lut[8] = { 0, 132, 396, 924, 1980, 4092, 8316, 16764 };
|
||||
gint16 sign, exponent, mantissa;
|
||||
guint8 ulawbyte;
|
||||
- gint16 linear, i;
|
||||
+ gint16 linear;
|
||||
+ gint i;
|
||||
|
||||
for (i = 0; i < numsamples; i++) {
|
||||
ulawbyte = in[i];
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
47
recipes-gstreamer/gstreamer-0.10/gst-plugins-good_0.10.31.bb
Normal file
47
recipes-gstreamer/gstreamer-0.10/gst-plugins-good_0.10.31.bb
Normal file
@@ -0,0 +1,47 @@
|
||||
require gst-plugins.inc
|
||||
|
||||
LICENSE = "GPLv2+ & LGPLv2.1+"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
|
||||
file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
|
||||
file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
|
||||
|
||||
PR = "r8"
|
||||
|
||||
PACKAGECONFIG ?= "jpeg v4l \
|
||||
${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \
|
||||
"
|
||||
PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio"
|
||||
PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
|
||||
PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
|
||||
PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack"
|
||||
PACKAGECONFIG[gdkpixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf"
|
||||
PACKAGECONFIG[v4l] = "--enable-gst_v4l2 --with-gudev,--disable-gst_v4l2 --without-gudev,libgudev"
|
||||
# sub-feature of v4l, but control separately since libv4l is not part of oe-core
|
||||
PACKAGECONFIG[libv4l] = "--with-libv4l2,--without-libv4l2,libv4l"
|
||||
PACKAGECONFIG[bzip2] = "--enable-bz2,--disable-bz2,bzip2"
|
||||
PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
|
||||
PACKAGECONFIG[x11] = "--enable-x,--disable-x,virtual/libx11 libxfixes libxdamage"
|
||||
PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libraw1394 libiec61883 libavc1394"
|
||||
|
||||
DEPENDS += "gst-plugins-base gconf cairo libpng zlib libid3tag flac \
|
||||
speex libsoup-2.4 libcap"
|
||||
|
||||
inherit gettext gconf
|
||||
|
||||
SRC_URI += "file://0001-v4l2-fix-build-with-recent-kernels-the-v4l2_buffer-i.patch \
|
||||
file://0001-v4l2_calls-define-V4L2_CID_HCENTER-and-V4L2_CID_VCEN.patch \
|
||||
file://0407-mulawdec-fix-integer-overrun.patch \
|
||||
"
|
||||
EXTRA_OECONF += "--disable-aalib --disable-esd --disable-shout2 --disable-libcaca --disable-hal \
|
||||
--disable-examples --disable-taglib"
|
||||
|
||||
do_configure_prepend() {
|
||||
# This m4 file contains nastiness which conflicts with libtool 2.2.2
|
||||
rm ${S}/m4/lib-link.m4 || true
|
||||
}
|
||||
|
||||
SRC_URI[md5sum] = "24f98a294a2b521e1b29412bdadae2e6"
|
||||
SRC_URI[sha256sum] = "7e27840e40a7932ef2dc032d7201f9f41afcaf0b437daf5d1d44dc96d9e35ac6"
|
||||
|
||||
FILES_${PN}-gconfelements += "${sysconfdir}/gconf/schemas/gstreamer-0.10.schemas"
|
||||
FILES_${PN}-equalizer += "${datadir}/gstreamer-0.10/presets/*.prs"
|
||||
29
recipes-gstreamer/gstreamer-0.10/gst-plugins.inc
Normal file
29
recipes-gstreamer/gstreamer-0.10/gst-plugins.inc
Normal file
@@ -0,0 +1,29 @@
|
||||
SUMMARY = "Plugins for the GStreamer multimedia framework"
|
||||
HOMEPAGE = "http://gstreamer.freedesktop.org/"
|
||||
BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
|
||||
SECTION = "multimedia"
|
||||
DEPENDS = "gstreamer"
|
||||
|
||||
# gobject-introspection to get --disable-introspection into UNKNOWN_CONFIGURE_WHITELIST
|
||||
inherit autotools pkgconfig gobject-introspection
|
||||
|
||||
SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2"
|
||||
|
||||
GSTREAMER_DEBUG ?= "--disable-debug"
|
||||
EXTRA_OECONF = "--disable-valgrind ${GSTREAMER_DEBUG} --disable-examples --disable-introspection"
|
||||
|
||||
acpaths = "-I ${S}/common/m4 -I ${S}/m4"
|
||||
|
||||
LIBV = "0.10"
|
||||
require recipes-multimedia/gstreamer/gst-plugins-package.inc
|
||||
|
||||
PACKAGES_DYNAMIC += "^${PN}-.*"
|
||||
|
||||
# apply gstreamer hack after Makefile.in.in in source is replaced by our version from
|
||||
# ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in, but before configure is executed
|
||||
# http://lists.linuxtogo.org/pipermail/openembedded-core/2012-November/032233.html
|
||||
oe_runconf_prepend() {
|
||||
if [ -e ${S}/po/Makefile.in.in ]; then
|
||||
sed -i -e "1a\\" -e 'GETTEXT_PACKAGE = @GETTEXT_PACKAGE@' ${S}/po/Makefile.in.in
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
From ed7f4802222234eef192aa3f74bc92268f338f97 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Droege <sebastian.droege@collabora.co.uk>
|
||||
Date: Tue, 6 Mar 2012 12:28:02 +0100
|
||||
Subject: [PATCH] baseparse: Fix 'self-comparison always evaluates to true'
|
||||
|
||||
This was really a bug.
|
||||
|
||||
Commit is ed7f4802222234eef192aa3f74bc92268f338f97 in 0.10 branch
|
||||
|
||||
Upstream Status: Backported
|
||||
|
||||
Signed-off-by: Sebastian Droege <sebastian.droege@collabora.co.uk>
|
||||
---
|
||||
libs/gst/base/gstbaseparse.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
|
||||
index 851ec1d..108ee89 100644
|
||||
--- a/libs/gst/base/gstbaseparse.c
|
||||
+++ b/libs/gst/base/gstbaseparse.c
|
||||
@@ -3899,7 +3899,7 @@ gst_base_parse_handle_seek (GstBaseParse * parse, GstEvent * event)
|
||||
seek event (in bytes) to upstream. Segment / flush handling happens
|
||||
in corresponding src event handlers */
|
||||
GST_DEBUG_OBJECT (parse, "seek in PUSH mode");
|
||||
- if (seekstop >= 0 && seekpos <= seekpos)
|
||||
+ if (seekstop >= 0 && seekstop <= seekpos)
|
||||
seekstop = seekpos;
|
||||
new_event = gst_event_new_seek (rate, GST_FORMAT_BYTES, flags,
|
||||
GST_SEEK_TYPE_SET, seekpos, stop_type, seekstop);
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
From 60516f4798894f958fc53b470e1283318d0f8706 Mon Sep 17 00:00:00 2001
|
||||
From: Kerrick Staley <kerrick@kerrickstaley.com>
|
||||
Date: Tue, 20 Aug 2013 23:59:29 -0700
|
||||
Subject: [PATCH 1/2] parse: make grammar.y work with Bison 3
|
||||
|
||||
YYLEX_PARAM is no longer supported in Bison 3.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=706462
|
||||
---
|
||||
gst/parse/grammar.y | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y
|
||||
index 24fc87b..7f9dd16 100644
|
||||
--- a/gst/parse/grammar.y
|
||||
+++ b/gst/parse/grammar.y
|
||||
@@ -26,7 +26,6 @@
|
||||
*/
|
||||
|
||||
#define YYERROR_VERBOSE 1
|
||||
-#define YYLEX_PARAM scanner
|
||||
|
||||
#define YYENABLE_NLS 0
|
||||
|
||||
@@ -648,6 +647,7 @@ static int yyerror (void *scanner, graph_t *graph, const char *s);
|
||||
%right '.'
|
||||
%left '!' '='
|
||||
|
||||
+%lex-param { void *scanner }
|
||||
%parse-param { void *scanner }
|
||||
%parse-param { graph_t *graph }
|
||||
%pure-parser
|
||||
--
|
||||
2.7.2
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
From 4b145ceb22bbce7ba6e209c6ab61f2d5867e69f9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
|
||||
Date: Tue, 1 Nov 2016 19:02:30 +0100
|
||||
Subject: [PATCH] gst-glib2.m4: don't do crazy things to GLIB_CFLAGS
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
we are definitely not one of those poor souls mentioned
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
|
||||
---
|
||||
common/m4/gst-glib2.m4 | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4
|
||||
index b01f02f..4569ae5 100644
|
||||
--- a/common/m4/gst-glib2.m4
|
||||
+++ b/common/m4/gst-glib2.m4
|
||||
@@ -69,7 +69,6 @@ AC_DEFUN([AG_GST_GLIB_CHECK],
|
||||
fi
|
||||
|
||||
dnl for the poor souls who for example have glib in /usr/local
|
||||
- AS_SCRUB_INCLUDE(GLIB_CFLAGS)
|
||||
|
||||
AC_SUBST(GLIB_EXTRA_CFLAGS)
|
||||
])
|
||||
--
|
||||
2.5.5
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# gstreamer: Fix a problem with configure if check has already been built
|
||||
# Richard Purdie <rpurdie@linux.intel.com>
|
||||
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
|
||||
diff -urN gstreamer-0.10.29-orig/configure.ac gstreamer-0.10.29/configure.ac
|
||||
--- gstreamer-0.10.29-orig/configure.ac 2010-06-26 12:49:27.774930773 +0800
|
||||
+++ gstreamer-0.10.29/configure.ac 2010-06-26 12:51:12.899200233 +0800
|
||||
@@ -543,8 +543,10 @@
|
||||
*) BUILD_CHECK=yes ;;
|
||||
esac
|
||||
])
|
||||
+
|
||||
dnl bit of a misnomer, but keep the conditional named like this so we don't
|
||||
dnl have to change too much elsewhere
|
||||
+HAVE_CHECK=no
|
||||
AM_CONDITIONAL(HAVE_CHECK, test "x$BUILD_CHECK" = "xyes")
|
||||
|
||||
dnl configure the desired buffer alignment
|
||||
@@ -0,0 +1,16 @@
|
||||
# Fix crash with gst-inspect
|
||||
# Chris Lord <chris@openedhand.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
--- gstreamer-0.10.9/tools/gst-inspect.c.old 2006-09-12 11:56:53.000000000 +0100
|
||||
+++ gstreamer-0.10.9/tools/gst-inspect.c 2006-09-12 11:57:27.000000000 +0100
|
||||
@@ -1123,7 +1123,7 @@
|
||||
g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE);
|
||||
g_option_context_add_group (ctx, gst_init_get_option_group ());
|
||||
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
|
||||
- g_print ("Error initializing: %s\n", err->message);
|
||||
+ g_print ("Error initializing: %s\n", err ? err->message : "(null)");
|
||||
exit (1);
|
||||
}
|
||||
g_option_context_free (ctx);
|
||||
@@ -0,0 +1,487 @@
|
||||
/* GStreamer
|
||||
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||
* 2000 Wim Taymans <wtay@chello.be>
|
||||
* 2005 David A. Schleef <ds@schleef.org>
|
||||
*
|
||||
* gstregistryxml.c: GstRegistry object, support routines
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it ulnder the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include <gst/gstregistrybinary.h>
|
||||
|
||||
/*
|
||||
** Simple handy function to write a memory location to the registry cache file
|
||||
*/
|
||||
inline static gboolean
|
||||
gst_registry_binary_write(GstRegistry *registry, const void *mem, const ssize_t size)
|
||||
{
|
||||
if (write(registry->cache_file, mem, size) != size)
|
||||
{
|
||||
GST_ERROR("Failed to write binary registry element: ptr=%p size=%u error=%s\n",
|
||||
mem, size, strerror(errno));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
** Save features GstBinary style
|
||||
*/
|
||||
static gboolean
|
||||
gst_registry_binary_fill_feature(GList **list, GstPluginFeature *orig, GstBinaryPluginFeature *dest, const char *name)
|
||||
{
|
||||
GstBinaryChunck *chk;
|
||||
|
||||
if ((chk = calloc(1, sizeof (GstBinaryChunck))) == NULL)
|
||||
return FALSE;
|
||||
|
||||
chk->data = dest;
|
||||
chk->size = sizeof (GstBinaryPluginFeature);
|
||||
|
||||
*list = g_list_append(*list, chk);
|
||||
|
||||
dest->rank = orig->rank;
|
||||
if (!strncpy(dest->typename, name, GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN) ||
|
||||
!strncpy(dest->name, orig->name, GST_BINARY_REGISTRY_TYPENAME_NAME_LEN))
|
||||
{
|
||||
GST_ERROR("Failed to write binary registry feature");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (GST_IS_ELEMENT_FACTORY(orig))
|
||||
{
|
||||
GstElementFactory *factory = GST_ELEMENT_FACTORY(orig);
|
||||
|
||||
if (!strncpy(dest->longname, factory->details.longname, GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN) ||
|
||||
!strncpy(dest->class, factory->details.klass, GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN) ||
|
||||
!strncpy(dest->description, factory->details.description, GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN) ||
|
||||
!strncpy(dest->author, factory->details.author, GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN))
|
||||
{
|
||||
GST_ERROR("Failed to write binary registry feature");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
dest->npadtemplates = dest->ninterfaces = dest->nuritypes = 0;
|
||||
return TRUE;
|
||||
|
||||
fail:
|
||||
free(chk);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
** Initialize the GstBinaryRegistryMagic, setting both our magic number and gstreamer major/minor version
|
||||
*/
|
||||
inline static gboolean
|
||||
gst_registry_binary_initialize_magic(GstBinaryRegistryMagic *m)
|
||||
{
|
||||
if (!strncpy(m->magic, GST_MAGIC_BINARY_REGISTRY_STR, GST_MAGIC_BINARY_REGISTRY_LEN) ||
|
||||
!strncpy(m->version, GST_MAJORMINOR, GST_BINARY_REGISTRY_VERSION_LEN))
|
||||
{
|
||||
GST_ERROR("Failed to write magic to the registry magic structure");
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
** Check GstBinaryRegistryMagic validity.
|
||||
** Return a pointer pointing right after the magic structure
|
||||
*/
|
||||
static gchar *
|
||||
gst_registry_binary_check_magic(gchar *in)
|
||||
{
|
||||
GstBinaryRegistryMagic *m = (GstBinaryRegistryMagic *) in;
|
||||
|
||||
if (m == NULL || m->magic == NULL || m->version == NULL)
|
||||
{
|
||||
GST_ERROR("Binary registry magic structure is broken");
|
||||
return NULL;
|
||||
}
|
||||
if (strncmp(m->magic, GST_MAGIC_BINARY_REGISTRY_STR, GST_MAGIC_BINARY_REGISTRY_LEN) != 0)
|
||||
{
|
||||
GST_ERROR("Binary registry magic is different : %02x%02x%02x%02x != %02x%02x%02x%02x",
|
||||
GST_MAGIC_BINARY_REGISTRY_STR[0] & 0xff, GST_MAGIC_BINARY_REGISTRY_STR[1] & 0xff,
|
||||
GST_MAGIC_BINARY_REGISTRY_STR[2] & 0xff, GST_MAGIC_BINARY_REGISTRY_STR[3] & 0xff,
|
||||
m->magic[0] & 0xff, m->magic[1] & 0xff, m->magic[2] & 0xff, m->magic[3] & 0xff);
|
||||
return NULL;
|
||||
}
|
||||
if (strncmp(m->version, GST_MAJORMINOR, GST_BINARY_REGISTRY_VERSION_LEN))
|
||||
{
|
||||
GST_ERROR("Binary registry magic version is different : %s != %s",
|
||||
GST_MAJORMINOR, m->version);
|
||||
return NULL;
|
||||
}
|
||||
return (in + sizeof (GstBinaryRegistryMagic));
|
||||
}
|
||||
|
||||
/*
|
||||
** Adapt a GstPlugin to our GstBinaryPluginElement structure, and write it to the
|
||||
** registry file.
|
||||
*/
|
||||
static gboolean
|
||||
gst_registry_binary_save_plugin(GList **list, GstRegistry *registry, GstPlugin *plugin)
|
||||
{
|
||||
GstBinaryPluginElement *e;
|
||||
GstBinaryChunck *chk;
|
||||
GList *walk;
|
||||
|
||||
if ((e = calloc(1, sizeof (GstBinaryPluginElement))) == NULL ||
|
||||
(chk = calloc(1, sizeof (GstBinaryChunck))) == NULL)
|
||||
return FALSE;
|
||||
|
||||
chk->data = e;
|
||||
chk->size = sizeof (GstBinaryPluginElement);
|
||||
*list = g_list_append(*list, chk);
|
||||
|
||||
if (!strncpy(e->name, plugin->desc.name, GST_BINARY_REGISTRY_NAME_LEN) ||
|
||||
!strncpy(e->description, plugin->desc.description, GST_BINARY_REGISTRY_DESCRIPTION_LEN) ||
|
||||
!strncpy(e->filename, plugin->filename, _POSIX_PATH_MAX) ||
|
||||
!strncpy(e->version, plugin->desc.version, GST_BINARY_REGISTRY_VERSION_LEN) ||
|
||||
!strncpy(e->license, plugin->desc.license, GST_BINARY_REGISTRY_LICENSE_LEN) ||
|
||||
!strncpy(e->source, plugin->desc.source, GST_BINARY_REGISTRY_SOURCE_LEN) ||
|
||||
!strncpy(e->package, plugin->desc.package, GST_BINARY_REGISTRY_PACKAGE_LEN) ||
|
||||
!strncpy(e->origin, plugin->desc.origin, GST_BINARY_REGISTRY_ORIGIN_LEN))
|
||||
{
|
||||
GST_DEBUG("Can't adapt GstPlugin to GstBinaryPluginElement");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
e->size = plugin->file_size;
|
||||
e->m32p = plugin->file_mtime;
|
||||
|
||||
GList *ft_list = gst_registry_get_feature_list_by_plugin(registry, plugin->desc.name);
|
||||
|
||||
for (walk = ft_list; walk; walk = g_list_next(walk), e->nfeatures++)
|
||||
{
|
||||
GstPluginFeature *curfeat = GST_PLUGIN_FEATURE (walk->data);
|
||||
GstBinaryPluginFeature *newfeat;
|
||||
const char *feat_name = g_type_name(G_OBJECT_TYPE(curfeat));
|
||||
|
||||
if ((newfeat = calloc(1, sizeof (GstBinaryPluginFeature))) == NULL)
|
||||
goto fail;
|
||||
|
||||
if (!feat_name || !gst_registry_binary_fill_feature(list, curfeat, newfeat, feat_name))
|
||||
{
|
||||
GST_ERROR("Can't fill plugin feature, aborting.");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
GST_DEBUG("Found %d features in plugin \"%s\"\n", e->nfeatures, e->name);
|
||||
return TRUE;
|
||||
|
||||
fail:
|
||||
free(chk);
|
||||
free(e);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
** Write the cache to file. Part of the code was taken from gstregistryxml.c
|
||||
*/
|
||||
gboolean
|
||||
gst_registry_binary_write_cache(GstRegistry *registry, const char *location)
|
||||
{
|
||||
GList *walk;
|
||||
char *tmp_location;
|
||||
GstBinaryRegistryMagic *magic;
|
||||
GstBinaryChunck *magic_chunck;
|
||||
GList *to_write = NULL;
|
||||
|
||||
GST_INFO("Writing binary registry cache");
|
||||
|
||||
g_return_val_if_fail (GST_IS_REGISTRY (registry), FALSE);
|
||||
tmp_location = g_strconcat (location, ".tmpXXXXXX", NULL);
|
||||
registry->cache_file = g_mkstemp (tmp_location);
|
||||
if (registry->cache_file == -1)
|
||||
{
|
||||
char *dir;
|
||||
|
||||
/* oops, I bet the directory doesn't exist */
|
||||
dir = g_path_get_dirname (location);
|
||||
g_mkdir_with_parents (dir, 0777);
|
||||
g_free (dir);
|
||||
|
||||
registry->cache_file = g_mkstemp (tmp_location);
|
||||
}
|
||||
|
||||
if (registry->cache_file == -1)
|
||||
goto fail;
|
||||
|
||||
if ((magic = calloc(1, sizeof (GstBinaryRegistryMagic))) == NULL ||
|
||||
!gst_registry_binary_initialize_magic(magic))
|
||||
goto fail;
|
||||
|
||||
if ((magic_chunck = calloc(1, sizeof (GstBinaryChunck))) == NULL)
|
||||
goto fail;
|
||||
|
||||
magic_chunck->data = magic;
|
||||
magic_chunck->size = sizeof (GstBinaryRegistryMagic);
|
||||
to_write = g_list_append(to_write, magic_chunck);
|
||||
|
||||
/* Iterate trough the list of plugins in the GstRegistry and adapt them to our structures */
|
||||
for (walk = g_list_last(registry->plugins); walk; walk = g_list_previous(walk))
|
||||
{
|
||||
GstPlugin *plugin = GST_PLUGIN(walk->data);
|
||||
|
||||
if (!plugin->filename)
|
||||
continue;
|
||||
|
||||
if (plugin->flags & GST_PLUGIN_FLAG_CACHED)
|
||||
{
|
||||
int ret;
|
||||
struct stat statbuf;
|
||||
|
||||
ret = g_stat (plugin->filename, &statbuf);
|
||||
if ((ret = g_stat (plugin->filename, &statbuf)) < 0 ||
|
||||
plugin->file_mtime != statbuf.st_mtime ||
|
||||
plugin->file_size != statbuf.st_size)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!gst_registry_binary_save_plugin(&to_write, registry, plugin))
|
||||
{
|
||||
GST_ERROR("Can't write binary plugin information for \"%s\"", plugin->filename);
|
||||
continue; /* Try anyway */
|
||||
}
|
||||
}
|
||||
|
||||
for (walk = g_list_first(to_write); walk; walk = g_list_next(walk))
|
||||
{
|
||||
GstBinaryChunck *cur = walk->data;
|
||||
|
||||
if (!gst_registry_binary_write(registry, cur->data, cur->size))
|
||||
{
|
||||
free(cur->data);
|
||||
free(cur);
|
||||
g_list_free(to_write);
|
||||
goto fail;
|
||||
}
|
||||
free(cur->data);
|
||||
free(cur);
|
||||
}
|
||||
g_list_free(to_write);
|
||||
|
||||
if (close(registry->cache_file) < 0)
|
||||
{
|
||||
GST_DEBUG("Can't close registry file : %s", strerror(errno));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (g_file_test (tmp_location, G_FILE_TEST_EXISTS)) {
|
||||
#ifdef WIN32
|
||||
remove (location);
|
||||
#endif
|
||||
rename (tmp_location, location);
|
||||
}
|
||||
|
||||
g_free (tmp_location);
|
||||
return TRUE;
|
||||
|
||||
fail:
|
||||
g_free(tmp_location);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static GstPluginFeature*
|
||||
gst_registry_binary_load_feature(GstBinaryPluginFeature *in)
|
||||
{
|
||||
GstPluginFeature *feature;
|
||||
GType type;
|
||||
|
||||
if (!in->typename || !*(in->typename))
|
||||
return NULL;
|
||||
|
||||
/* GST_INFO("Plugin feature typename : %s", in->typename);*/
|
||||
|
||||
if (!(type = g_type_from_name(in->typename)))
|
||||
{
|
||||
GST_ERROR("Unknown type from typename");
|
||||
return NULL;
|
||||
}
|
||||
feature = g_object_new (type, NULL);
|
||||
|
||||
if (!feature) {
|
||||
GST_ERROR("Can't create feature from type");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!GST_IS_PLUGIN_FEATURE (feature)) {
|
||||
/* don't really know what it is */
|
||||
if (GST_IS_OBJECT (feature))
|
||||
gst_object_unref (feature);
|
||||
else
|
||||
g_object_unref (feature);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
feature->name = g_strdup(in->name);
|
||||
feature->rank = in->rank;
|
||||
|
||||
if (GST_IS_ELEMENT_FACTORY(feature))
|
||||
{
|
||||
GstElementFactory *factory = GST_ELEMENT_FACTORY(feature);
|
||||
|
||||
factory->details.longname = g_strdup(in->longname);
|
||||
factory->details.klass = g_strdup(in->class);
|
||||
factory->details.description = g_strdup(in->description);
|
||||
factory->details.author = g_strdup(in->author);
|
||||
|
||||
/* GST_INFO("Element factory : %s", factory->details.longname); */
|
||||
}
|
||||
|
||||
GST_DEBUG("Added feature %p with name %s", feature, feature->name);
|
||||
return feature;
|
||||
}
|
||||
|
||||
/*
|
||||
** Make a new plugin from current GstBinaryPluginElement structure
|
||||
** and save it to the GstRegistry. Return an offset to the next
|
||||
** GstBinaryPluginElement structure.
|
||||
*/
|
||||
static unsigned long
|
||||
gst_registry_binary_get_binary_plugin(GstRegistry *registry, gchar *in)
|
||||
{
|
||||
GstBinaryPluginElement *p = (GstBinaryPluginElement *) in;
|
||||
GstPlugin *plugin = NULL;
|
||||
GList *plugin_features = NULL;
|
||||
GstBinaryPluginFeature *feat;
|
||||
unsigned int i;
|
||||
unsigned long offset;
|
||||
|
||||
plugin = g_object_new (GST_TYPE_PLUGIN, NULL);
|
||||
|
||||
plugin->flags |= GST_PLUGIN_FLAG_CACHED;
|
||||
|
||||
plugin->desc.name = g_strdup(p->name);
|
||||
plugin->desc.description= g_strdup(p->description);
|
||||
plugin->filename = g_strdup(p->filename);
|
||||
plugin->desc.version = g_strdup(p->version);
|
||||
plugin->desc.license = g_strdup(p->license);
|
||||
plugin->desc.source = g_strdup(p->source);
|
||||
plugin->desc.package = g_strdup(p->package);
|
||||
plugin->desc.origin = g_strdup(p->origin);
|
||||
plugin->file_mtime = p->m32p;
|
||||
plugin->file_size = p->size;
|
||||
plugin->basename = g_path_get_basename (plugin->filename);
|
||||
|
||||
if (plugin->file_mtime < 0 || plugin->file_size < 0)
|
||||
{
|
||||
GST_ERROR("Plugin time or file size is not valid !");
|
||||
g_free(plugin);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (p->nfeatures < 0)
|
||||
{
|
||||
GST_ERROR("The number of feature structure is not valid !");
|
||||
gst_object_unref(plugin);
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (feat = (GstBinaryPluginFeature *) (in + sizeof (GstBinaryPluginElement)), i = 0;
|
||||
i < p->nfeatures; i++, feat++)
|
||||
{
|
||||
GstPluginFeature *gstfeat;
|
||||
|
||||
if ((gstfeat = gst_registry_binary_load_feature(feat)) == NULL)
|
||||
{
|
||||
g_list_free(plugin_features);
|
||||
g_free(plugin);
|
||||
GST_ERROR("Error while loading binary feature");
|
||||
return -1;
|
||||
}
|
||||
gstfeat->plugin_name = g_strdup(plugin->desc.name);
|
||||
plugin_features = g_list_prepend(plugin_features, gstfeat);
|
||||
}
|
||||
|
||||
GST_DEBUG("Added plugin \"%s\" to global registry from binary registry", plugin->desc.name);
|
||||
GList *g;
|
||||
|
||||
gst_registry_add_plugin (registry, plugin);
|
||||
for (g = plugin_features; g; g = g_list_next (g))
|
||||
gst_registry_add_feature (registry, GST_PLUGIN_FEATURE (g->data));
|
||||
/* g_list_free(plugin_features); */
|
||||
|
||||
offset = sizeof (GstBinaryPluginElement) + p->nfeatures * sizeof (GstBinaryPluginFeature);
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
** Read the cache and adapt it to fill GstRegistry
|
||||
*/
|
||||
gboolean
|
||||
gst_registry_binary_read_cache(GstRegistry *registry, const char *location)
|
||||
{
|
||||
GMappedFile *mapped = NULL;
|
||||
GTimer *timer = NULL;
|
||||
gchar *contents = NULL;
|
||||
gdouble seconds;
|
||||
unsigned long offset, inc;
|
||||
gsize size;
|
||||
|
||||
/* make sure these types exist */
|
||||
GST_TYPE_ELEMENT_FACTORY;
|
||||
GST_TYPE_TYPE_FIND_FACTORY;
|
||||
GST_TYPE_INDEX_FACTORY;
|
||||
|
||||
timer = g_timer_new ();
|
||||
|
||||
if ((mapped = g_mapped_file_new(location, FALSE, NULL)) == NULL ||
|
||||
(contents = g_mapped_file_get_contents(mapped)) == NULL)
|
||||
{
|
||||
GST_ERROR("Can't load file : %s", strerror(errno));
|
||||
return FALSE;
|
||||
}
|
||||
if ((contents = gst_registry_binary_check_magic(contents)) == NULL)
|
||||
{
|
||||
GST_ERROR("Binary registry type not recognized (invalid magic)");
|
||||
g_mapped_file_free(mapped);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((size = g_mapped_file_get_length(mapped)) < sizeof (GstBinaryPluginElement))
|
||||
{
|
||||
GST_INFO("No binary plugins structure to read");
|
||||
return TRUE; /* This is not really an error */
|
||||
}
|
||||
|
||||
for (offset = inc = 0; (offset + sizeof (GstBinaryPluginElement)) < size &&
|
||||
(inc = gst_registry_binary_get_binary_plugin(registry, contents + offset)) > 0;
|
||||
offset += inc)
|
||||
; /* May want in the future to do something here */
|
||||
if (inc < 0)
|
||||
{
|
||||
GST_DEBUG("Problem while reading binary registry");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_timer_stop (timer);
|
||||
seconds = g_timer_elapsed (timer, NULL);
|
||||
g_timer_destroy (timer);
|
||||
|
||||
GST_INFO ("loaded %s in %f seconds", location, seconds);
|
||||
|
||||
if (mapped)
|
||||
g_mapped_file_free (mapped);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
/* GStreamer
|
||||
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||
* 2000 Wim Taymans <wim.taymans@chello.be>
|
||||
*
|
||||
* gstregistry.h: Header for registry handling
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* SUGGESTIONS AND TODO :
|
||||
** ====================
|
||||
** - Use a compressed registry, but would induce performance loss
|
||||
** - Encrypt the registry, for security purpose, but would also reduce performances
|
||||
** - Also have a non-mmap based cache reading (work with file descriptors)
|
||||
*/
|
||||
|
||||
#ifndef __GST_REGISTRYBINARY_H__
|
||||
#define __GST_REGISTRYBINARY_H__
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/mman.h>
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <gst/gst_private.h>
|
||||
#include <gst/gstelement.h>
|
||||
#include <gst/gsttypefind.h>
|
||||
#include <gst/gsttypefindfactory.h>
|
||||
#include <gst/gsturi.h>
|
||||
#include <gst/gstinfo.h>
|
||||
#include <gst/gstenumtypes.h>
|
||||
#include <gst/gstregistry.h>
|
||||
#include <gst/gstpadtemplate.h>
|
||||
|
||||
#include "glib-compat-private.h"
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
/* A magic, written at the beginning of the file */
|
||||
#define GST_MAGIC_BINARY_REGISTRY_STR "\xc0\xde\xf0\x0d"
|
||||
#define GST_MAGIC_BINARY_REGISTRY_LEN (4)
|
||||
#define GST_MAGIC_BINARY_VERSION_LEN (64)
|
||||
|
||||
typedef struct _GstBinaryRegistryMagic
|
||||
{
|
||||
char magic[GST_MAGIC_BINARY_REGISTRY_LEN];
|
||||
char version[GST_MAGIC_BINARY_VERSION_LEN];
|
||||
} GstBinaryRegistryMagic;
|
||||
|
||||
|
||||
/* Used to store pointers to write */
|
||||
typedef struct _GstBinaryChunck
|
||||
{
|
||||
void *data;
|
||||
unsigned int size;
|
||||
} GstBinaryChunck;
|
||||
|
||||
|
||||
/* A structure containing (staticely) every information needed for a plugin
|
||||
**
|
||||
** Notes :
|
||||
** "nfeatures" is used to say how many GstBinaryPluginFeature structures we will have
|
||||
** right after the structure itself.
|
||||
*/
|
||||
|
||||
/* Various lenght defines for our GstBinaryPluginElement structure
|
||||
** Note : We could eventually use smaller size
|
||||
*/
|
||||
#define GST_BINARY_REGISTRY_NAME_LEN (256)
|
||||
#define GST_BINARY_REGISTRY_DESCRIPTION_LEN (1024)
|
||||
#define GST_BINARY_REGISTRY_VERSION_LEN (64)
|
||||
#define GST_BINARY_REGISTRY_LICENSE_LEN (256)
|
||||
#define GST_BINARY_REGISTRY_SOURCE_LEN (256)
|
||||
#define GST_BINARY_REGISTRY_PACKAGE_LEN (1024)
|
||||
#define GST_BINARY_REGISTRY_ORIGIN_LEN (1024)
|
||||
|
||||
typedef struct _GstBinaryPluginElement
|
||||
{
|
||||
char name[GST_BINARY_REGISTRY_NAME_LEN];
|
||||
char description[GST_BINARY_REGISTRY_DESCRIPTION_LEN];
|
||||
char filename[_POSIX_PATH_MAX];
|
||||
char version[GST_BINARY_REGISTRY_VERSION_LEN];
|
||||
char license[GST_BINARY_REGISTRY_LICENSE_LEN];
|
||||
char source[GST_BINARY_REGISTRY_SOURCE_LEN];
|
||||
char package[GST_BINARY_REGISTRY_PACKAGE_LEN];
|
||||
char origin[GST_BINARY_REGISTRY_ORIGIN_LEN];
|
||||
unsigned long size;
|
||||
unsigned long m32p;
|
||||
unsigned int nfeatures;
|
||||
} GstBinaryPluginElement;
|
||||
|
||||
|
||||
/* A structure containing the plugin features
|
||||
**
|
||||
** Note :
|
||||
** "npadtemplates" is used to store the number of GstBinaryPadTemplate structures following the structure itself.
|
||||
** "ninterfaces" is used to store the number of GstBinaryInterface structures following the structure itself.
|
||||
** "nuritypes" is used to store the number of GstBinaryUriType structures following the structure itself.
|
||||
*/
|
||||
#define GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN (256)
|
||||
#define GST_BINARY_REGISTRY_TYPENAME_NAME_LEN (256)
|
||||
#define GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN (1024)
|
||||
#define GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN (512)
|
||||
#define GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN (1024)
|
||||
#define GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN (256)
|
||||
|
||||
typedef struct _GstBinaryPluginFeature
|
||||
{
|
||||
char typename[GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN];
|
||||
char name[GST_BINARY_REGISTRY_TYPENAME_NAME_LEN];
|
||||
unsigned long rank;
|
||||
char longname[GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN];
|
||||
char class[GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN];
|
||||
char description[GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN];
|
||||
char author[GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN];
|
||||
unsigned int npadtemplates;
|
||||
unsigned int ninterfaces;
|
||||
unsigned int nuritypes;
|
||||
} GstBinaryPluginFeature;
|
||||
|
||||
|
||||
/*
|
||||
** A structure containing the static pad templates of a plugin feature
|
||||
*/
|
||||
#define GST_BINARY_REGISTRY_PADTEMPLATE_NAME_LEN (256)
|
||||
#define GST_BINARY_REGISTRY_PADTEMPLATE_CAP_LEN (1024)
|
||||
|
||||
typedef struct _GstBinaryPadTemplate
|
||||
{
|
||||
char name[GST_BINARY_REGISTRY_PADTEMPLATE_NAME_LEN];
|
||||
char cap[GST_BINARY_REGISTRY_PADTEMPLATE_CAP_LEN];
|
||||
int direction; /* Either 0:"sink" or 1:"src" */
|
||||
GstPadPresence presence;
|
||||
} GstBinaryPadTemplate;
|
||||
|
||||
/*
|
||||
** A very simple structure defining the plugin feature interface string
|
||||
*/
|
||||
#define GST_BINARY_REGISTRY_INTERFACE_INTERFACE_LEN (512)
|
||||
typedef struct _GstBinaryInterface
|
||||
{
|
||||
char interface[GST_BINARY_REGISTRY_INTERFACE_INTERFACE_LEN];
|
||||
unsigned long size;
|
||||
} GstBinaryInterface;
|
||||
|
||||
/* Uri Type */
|
||||
typedef struct _GstBinaryUriType
|
||||
{
|
||||
GstURIType type;
|
||||
unsigned long nuriprotocols;
|
||||
} GstBinaryUriType;
|
||||
|
||||
/*
|
||||
** Function prototypes
|
||||
*/
|
||||
|
||||
/* Local prototypes */
|
||||
inline static gboolean gst_registry_binary_write(GstRegistry *registry, const void *mem, const ssize_t size);
|
||||
inline static gboolean gst_registry_binary_initialize_magic(GstBinaryRegistryMagic *m);
|
||||
static gboolean gst_registry_binary_fill_feature(GList **list, GstPluginFeature *, GstBinaryPluginFeature *, const char *);
|
||||
static gboolean gst_registry_binary_save_plugin(GList **list, GstRegistry *registry, GstPlugin *plugin);
|
||||
static gchar *gst_registry_binary_check_magic(gchar *in);
|
||||
static GstPluginFeature *gst_registry_binary_load_feature(GstBinaryPluginFeature *);
|
||||
static unsigned long gst_registry_binary_get_binary_plugin(GstRegistry *registry, gchar *in);
|
||||
|
||||
/* Exportable */
|
||||
gboolean gst_registry_binary_write_cache(GstRegistry *registry, const char *location);
|
||||
gboolean gst_registry_binary_read_cache(GstRegistry *registry, const char *location);
|
||||
|
||||
#endif /* !__GST_REGISTRYBINARY_H__ */
|
||||
|
||||
|
||||
50
recipes-gstreamer/gstreamer-0.10/gstreamer_0.10.36.bb
Normal file
50
recipes-gstreamer/gstreamer-0.10/gstreamer_0.10.36.bb
Normal file
@@ -0,0 +1,50 @@
|
||||
SUMMARY = "GStreamer 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+"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605 \
|
||||
file://gst/gst.h;beginline=1;endline=21;md5=8e5fe5e87d33a04479fde862e238eaa4"
|
||||
DEPENDS = "glib-2.0 libxml2 bison-native flex-native glib-2.0-native"
|
||||
|
||||
PR = "r2"
|
||||
|
||||
SRC_URI = "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.bz2 \
|
||||
file://check_fix.patch \
|
||||
file://gst-inspect-check-error.patch \
|
||||
file://0001-baseparse-Fix-self-comparison-always-evaluates-to-tr.patch \
|
||||
file://0001-parse-make-grammar.y-work-with-Bison-3.patch \
|
||||
file://0002-gst-glib2.m4-don-t-do-crazy-things-to-GLIB_CFLAGS.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "a0cf7d6877f694a1a2ad2b4d1ecb890b"
|
||||
SRC_URI[sha256sum] = "e556a529e0a8cf1cd0afd0cab2af5488c9524e7c3f409de29b5d82bb41ae7a30"
|
||||
|
||||
inherit autotools pkgconfig gettext
|
||||
|
||||
GSTREAMER_DEBUG ?= "--disable-debug"
|
||||
EXTRA_OECONF = "--disable-docbook --disable-gtk-doc \
|
||||
--disable-dependency-tracking --disable-check \
|
||||
--disable-examples --disable-tests \
|
||||
--disable-valgrind ${GSTREAMER_DEBUG} \
|
||||
--disable-introspection \
|
||||
"
|
||||
|
||||
CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no"
|
||||
|
||||
# apply gstreamer hack after Makefile.in.in in source is replaced by our version from
|
||||
# ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in, but before configure is executed
|
||||
# http://lists.linuxtogo.org/pipermail/openembedded-core/2012-November/032233.html
|
||||
oe_runconf_prepend() {
|
||||
sed -i -e "1a\\" -e 'GETTEXT_PACKAGE = @GETTEXT_PACKAGE@' ${S}/po/Makefile.in.in
|
||||
}
|
||||
|
||||
#do_compile_prepend () {
|
||||
# mv ${WORKDIR}/gstregistrybinary.[ch] ${S}/gst/
|
||||
#}
|
||||
|
||||
FILES_${PN} += " ${libdir}/gstreamer-0.10/*.so"
|
||||
FILES_${PN}-dev += " ${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"
|
||||
FILES_${PN}-dbg += " ${libdir}/gstreamer-0.10/.debug/ ${libexecdir}/gstreamer-0.10/.debug/"
|
||||
Reference in New Issue
Block a user