Commit 1bf15564 authored by Tim-Philipp Müller's avatar Tim-Philipp Müller 🐠

Check for zlib and if available pass it explicitly to the linker when linking...

Check for zlib and if available pass it explicitly to the linker when linking qtdemux. If not available (or --disable...

Original commit message from CVS:
* configure.ac:
* gst/qtdemux/Makefile.am:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_moov):
Check for zlib and if available pass it explicitly to the linker
when linking qtdemux. If not available (or --disable-external has
been specified!), disable the bits in qtdemux that use it. Fixes
build on MingW (#392856).
parent 5b4a3258
2007-01-05 Tim-Philipp Müller <tim at centricular dot net>
* configure.ac:
* gst/qtdemux/Makefile.am:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_moov):
Check for zlib and if available pass it explicitly to the linker
when linking qtdemux. If not available (or --disable-external has
been specified!), disable the bits in qtdemux that use it. Fixes
build on MingW (#392856).
2007-01-05 Edward Hervey <edward@fluendo.com> 2007-01-05 Edward Hervey <edward@fluendo.com>
* configure.ac: * configure.ac:
......
...@@ -821,6 +821,17 @@ GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [ ...@@ -821,6 +821,17 @@ GST_CHECK_FEATURE(DVB, [DVB Source], dvb, [
AC_CHECK_HEADER(linux/dvb/frontend.h, [HAVE_DVB="yes"], [HAVE_DVB="no"]) AC_CHECK_HEADER(linux/dvb/frontend.h, [HAVE_DVB="yes"], [HAVE_DVB="no"])
]) ])
dnl *** qtdemux prefers to have zlib ***
translit(dnm, m, l) AM_CONDITIONAL(USE_ZLIB, true)
GST_CHECK_FEATURE(ZLIB, [zlib support for qtdemux],, [
GST_CHECK_LIBHEADER(ZLIB,
z, uncompress,, zlib.h, [
HAVE_ZLIB="yes"
ZLIB_LIBS="-lz"
AC_SUBST(ZLIB_LIBS)
])
])
else else
dnl not building plugins with external dependencies, dnl not building plugins with external dependencies,
...@@ -851,6 +862,7 @@ AM_CONDITIONAL(USE_THEORADEC, false) ...@@ -851,6 +862,7 @@ AM_CONDITIONAL(USE_THEORADEC, false)
AM_CONDITIONAL(USE_XVID, false) AM_CONDITIONAL(USE_XVID, false)
AM_CONDITIONAL(USE_WAVPACK, false) AM_CONDITIONAL(USE_WAVPACK, false)
AM_CONDITIONAL(USE_DVB, false) AM_CONDITIONAL(USE_DVB, false)
AM_CONDITIONAL(USE_ZLIB, false)
fi dnl of EXT plugins fi dnl of EXT plugins
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
plugin_LTLIBRARIES = libgstqtdemux.la plugin_LTLIBRARIES = libgstqtdemux.la
libgstqtdemux_la_CFLAGS = ${GST_CFLAGS} libgstqtdemux_la_CFLAGS = ${GST_CFLAGS}
libgstqtdemux_la_LIBADD = $(GST_BASE_LIBS) libgstqtdemux_la_LIBADD = $(GST_BASE_LIBS) $(ZLIB_LIBS)
libgstqtdemux_la_LDFLAGS = ${GST_PLUGIN_LDFLAGS} libgstqtdemux_la_LDFLAGS = ${GST_PLUGIN_LDFLAGS}
libgstqtdemux_la_SOURCES = qtdemux.c libgstqtdemux_la_SOURCES = qtdemux.c
......
...@@ -29,7 +29,10 @@ ...@@ -29,7 +29,10 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <zlib.h>
#ifdef HAVE_ZLIB
# include <zlib.h>
#endif
GST_DEBUG_CATEGORY_STATIC (qtdemux_debug); GST_DEBUG_CATEGORY_STATIC (qtdemux_debug);
#define GST_CAT_DEFAULT qtdemux_debug #define GST_CAT_DEFAULT qtdemux_debug
...@@ -2086,6 +2089,7 @@ static const QtNodeType qt_node_types[] = { ...@@ -2086,6 +2089,7 @@ static const QtNodeType qt_node_types[] = {
}; };
static int n_qt_node_types = sizeof (qt_node_types) / sizeof (qt_node_types[0]); static int n_qt_node_types = sizeof (qt_node_types) / sizeof (qt_node_types[0]);
#ifdef HAVE_ZLIB
static void * static void *
qtdemux_zalloc (void *opaque, unsigned int items, unsigned int size) qtdemux_zalloc (void *opaque, unsigned int items, unsigned int size)
...@@ -2135,6 +2139,8 @@ qtdemux_inflate (void *z_buffer, int z_length, int length) ...@@ -2135,6 +2139,8 @@ qtdemux_inflate (void *z_buffer, int z_length, int length)
return buffer; return buffer;
} }
#endif /* HAVE_ZLIB */
static void static void
qtdemux_parse_moov (GstQTDemux * qtdemux, guint8 * buffer, int length) qtdemux_parse_moov (GstQTDemux * qtdemux, guint8 * buffer, int length)
{ {
...@@ -2147,32 +2153,41 @@ qtdemux_parse_moov (GstQTDemux * qtdemux, guint8 * buffer, int length) ...@@ -2147,32 +2153,41 @@ qtdemux_parse_moov (GstQTDemux * qtdemux, guint8 * buffer, int length)
cmov = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_cmov); cmov = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_cmov);
if (cmov) { if (cmov) {
guint32 method;
GNode *dcom; GNode *dcom;
GNode *cmvd; GNode *cmvd;
dcom = qtdemux_tree_get_child_by_type (cmov, FOURCC_dcom); dcom = qtdemux_tree_get_child_by_type (cmov, FOURCC_dcom);
cmvd = qtdemux_tree_get_child_by_type (cmov, FOURCC_cmvd); cmvd = qtdemux_tree_get_child_by_type (cmov, FOURCC_cmvd);
if (QTDEMUX_FOURCC_GET ((guint8 *) dcom->data + 8) == GST_MAKE_FOURCC ('z', method = QTDEMUX_FOURCC_GET ((guint8 *) dcom->data + 8);
'l', 'i', 'b')) { switch (method) {
int uncompressed_length; #ifdef HAVE_ZLIB
int compressed_length; case GST_MAKE_FOURCC ('z', 'l', 'i', 'b'):{
guint8 *buf; int uncompressed_length;
int compressed_length;
guint8 *buf;
uncompressed_length = QTDEMUX_GUINT32_GET ((guint8 *) cmvd->data + 8); uncompressed_length = QTDEMUX_GUINT32_GET ((guint8 *) cmvd->data + 8);
compressed_length = QTDEMUX_GUINT32_GET ((guint8 *) cmvd->data + 4) - 12; compressed_length =
GST_LOG ("length = %d", uncompressed_length); QTDEMUX_GUINT32_GET ((guint8 *) cmvd->data + 4) - 12;
GST_LOG ("length = %d", uncompressed_length);
buf = buf =
(guint8 *) qtdemux_inflate ((guint8 *) cmvd->data + 12, (guint8 *) qtdemux_inflate ((guint8 *) cmvd->data + 12,
compressed_length, uncompressed_length); compressed_length, uncompressed_length);
qtdemux->moov_node_compressed = qtdemux->moov_node; qtdemux->moov_node_compressed = qtdemux->moov_node;
qtdemux->moov_node = g_node_new (buf); qtdemux->moov_node = g_node_new (buf);
qtdemux_parse (qtdemux, qtdemux->moov_node, buf, uncompressed_length); qtdemux_parse (qtdemux, qtdemux->moov_node, buf, uncompressed_length);
} else { break;
GST_LOG ("unknown header compression type"); }
#endif /* HAVE_ZLIB */
default:
GST_WARNING_OBJECT (qtdemux, "unknown or unhandled header compression "
"type %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (method));
break;
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment