Initial commit

Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
This commit is contained in:
Andreas Müller
2019-03-16 19:58:53 +01:00
commit ff9499a1c7
290 changed files with 14388 additions and 0 deletions

View 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 \
"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 \

View 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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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"

View 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
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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__ */

View 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/"