diff --git a/.gitignore b/.gitignore
index 2ff4d5a7d5..91867b2857 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,3 +43,5 @@ gst/deinterlace/tvtime.h
tmp-orc.c
*orc.h
+
+/tests/examples/jack/jack_client
diff --git a/configure.ac b/configure.ac
index f510f70673..246e1f2b58 100644
--- a/configure.ac
+++ b/configure.ac
@@ -748,6 +748,14 @@ AG_GST_CHECK_FEATURE(HAL, [HAL libraries], halelements, [
AG_GST_PKG_CHECK_MODULES(HAL, [hal >= 0.5.6, dbus-1 >= 0.32])
])
+dnl *** Jack ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_JACK, true)
+AG_GST_CHECK_FEATURE(JACK, Jack, jack, [
+ PKG_CHECK_MODULES(JACK, jack >= 0.99.10, HAVE_JACK="yes", HAVE_JACK="no")
+ AC_SUBST(JACK_CFLAGS)
+ AC_SUBST(JACK_LIBS)
+])
+
dnl *** jpeg ***
dnl FIXME: we could use header checks here as well IMO
translit(dnm, m, l) AM_CONDITIONAL(USE_JPEG, true)
@@ -1020,6 +1028,7 @@ AM_CONDITIONAL(USE_GCONFTOOL, false)
AM_CONDITIONAL(USE_GDK_PIXBUF, false)
AM_CONDITIONAL(USE_GST_V4L2, false)
AM_CONDITIONAL(USE_HAL, false)
+AM_CONDITIONAL(USE_JACK, false)
AM_CONDITIONAL(USE_JPEG, false)
AM_CONDITIONAL(USE_LIBCACA, false)
AM_CONDITIONAL(USE_LIBDV, false)
@@ -1144,7 +1153,6 @@ gst/wavenc/Makefile
gst/wavparse/Makefile
gst/flx/Makefile
gst/y4m/Makefile
-ext/jpeg/Makefile
ext/Makefile
ext/aalib/Makefile
ext/annodex/Makefile
@@ -1155,6 +1163,8 @@ ext/flac/Makefile
ext/gconf/Makefile
ext/gdk_pixbuf/Makefile
ext/hal/Makefile
+ext/jack/Makefile
+ext/jpeg/Makefile
ext/libcaca/Makefile
ext/libpng/Makefile
ext/pulse/Makefile
@@ -1180,6 +1190,7 @@ tests/check/Makefile
tests/examples/Makefile
tests/examples/audiofx/Makefile
tests/examples/equalizer/Makefile
+tests/examples/jack/Makefile
tests/examples/level/Makefile
tests/examples/pulse/Makefile
tests/examples/rtp/Makefile
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index 6598f4db50..975e465ab9 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -94,6 +94,8 @@ EXTRA_HFILES = \
$(top_srcdir)/ext/gdk_pixbuf/gstgdkpixbufsink.h \
$(top_srcdir)/ext/hal/gsthalaudiosink.h \
$(top_srcdir)/ext/hal/gsthalaudiosrc.h \
+ $(top_srcdir)/ext/jack/gstjackaudiosrc.h \
+ $(top_srcdir)/ext/jack/gstjackaudiosink.h \
$(top_srcdir)/ext/jpeg/gstjpegdec.h \
$(top_srcdir)/ext/jpeg/gstjpegenc.h \
$(top_srcdir)/ext/jpeg/gstsmokedec.h \
diff --git a/docs/plugins/gst-plugins-good-plugins-docs.sgml b/docs/plugins/gst-plugins-good-plugins-docs.sgml
index 1b7136b796..ade8dfde20 100644
--- a/docs/plugins/gst-plugins-good-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-good-plugins-docs.sgml
@@ -94,6 +94,8 @@
+
+
@@ -206,6 +208,7 @@
+
diff --git a/docs/plugins/gst-plugins-good-plugins-sections.txt b/docs/plugins/gst-plugins-good-plugins-sections.txt
index c643d47713..60d2c45a2d 100644
--- a/docs/plugins/gst-plugins-good-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-good-plugins-sections.txt
@@ -1113,6 +1113,36 @@ GstInterleaveFunc
gst_interleave_get_type
+
+element-jackaudiosrc
+jackaudiosrc
+GstJackAudioSrc
+
+GstJackAudioSrcClass
+GST_JACK_AUDIO_SRC
+GST_JACK_AUDIO_SRC_CLASS
+GST_JACK_AUDIO_SRC_GET_CLASS
+GST_IS_JACK_AUDIO_SRC
+GST_IS_JACK_AUDIO_SRC_CLASS
+GST_TYPE_JACK_AUDIO_SRC
+gst_jack_audio_src_get_type
+
+
+
+element-jackaudiosink
+jackaudiosink
+GstJackAudioSink
+
+GstJackAudioSinkClass
+GST_JACK_AUDIO_SINK
+GST_JACK_AUDIO_SINK_CLASS
+GST_JACK_AUDIO_SINK_GET_CLASS
+GST_IS_JACK_AUDIO_SINK
+GST_IS_JACK_AUDIO_SINK_CLASS
+GST_TYPE_JACK_AUDIO_SINK
+gst_jack_audio_sink_get_type
+
+
element-jpegdec
jpegdec
diff --git a/docs/plugins/inspect/plugin-jack.xml b/docs/plugins/inspect/plugin-jack.xml
new file mode 100644
index 0000000000..dcead7b27c
--- /dev/null
+++ b/docs/plugins/inspect/plugin-jack.xml
@@ -0,0 +1,43 @@
+
+ jack
+ Jack elements
+ ../../ext/jack/.libs/libgstjack.so
+ libgstjack.so
+ 0.10.26.1
+ LGPL
+
+ GStreamer Good Plug-ins git
+ Unknown package origin
+
+
+ jackaudiosink
+ Audio Sink (Jack)
+ Sink/Audio
+ Output to Jack
+ Wim Taymans <wim@fluendo.com>
+
+
+ sink
+ sink
+ always
+ audio/x-raw-float, endianness=(int){ 1234 }, width=(int)32, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
+
+
+
+
+ jackaudiosrc
+ Audio Source (Jack)
+ Source/Audio
+ Input from Jack
+ Tristan Matthews <tristan@sat.qc.ca>
+
+
+ src
+ source
+ always
+ audio/x-raw-float, endianness=(int){ 1234 }, width=(int)32, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
+
+
+
+
+
\ No newline at end of file
diff --git a/ext/Makefile.am b/ext/Makefile.am
index 1dc2e2abca..409408ea8f 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -46,6 +46,12 @@ else
HAL_DIR =
endif
+if USE_JACK
+JACK_DIR=jack
+else
+JACK_DIR=
+endif
+
if USE_JPEG
JPEG_DIR = jpeg
else
@@ -135,6 +141,7 @@ SUBDIRS = \
$(GCONF_DIR) \
$(GDK_PIXBUF_DIR) \
$(HAL_DIR) \
+ $(JACK_DIR) \
$(JPEG_DIR) \
$(LIBCACA_DIR) \
$(LIBDV_DIR) \
@@ -158,6 +165,7 @@ DIST_SUBDIRS = \
gconf \
gdk_pixbuf \
hal \
+ jack \
jpeg \
libcaca \
libpng \
diff --git a/gst-plugins-good.spec.in b/gst-plugins-good.spec.in
index 6cdd96c4c9..88dc858ace 100644
--- a/gst-plugins-good.spec.in
+++ b/gst-plugins-good.spec.in
@@ -147,6 +147,7 @@ rm -rf $RPM_BUILD_ROOT
@USE_LIBCACA_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstcacasink.so
@USE_ESD_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstesd.so
@USE_FLAC_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstflac.so
+@USE_JACK_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstjack.so
@USE_JPEG_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstjpeg.so
@USE_LIBPNG_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstpng.so
@USE_OSS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstossaudio.so
diff --git a/tests/examples/Makefile.am b/tests/examples/Makefile.am
index d3d93d4af3..54e53bafb7 100644
--- a/tests/examples/Makefile.am
+++ b/tests/examples/Makefile.am
@@ -1,5 +1,11 @@
-SUBDIRS = audiofx equalizer level pulse rtp shapewipe spectrum v4l2
+if USE_JACK
+JACK_DIR=jack
+else
+JACK_DIR=
+endif
-DIST_SUBDIRS = audiofx equalizer level pulse rtp shapewipe spectrum v4l2
+SUBDIRS = audiofx equalizer $(JACK_DIR) level pulse rtp shapewipe spectrum v4l2
+
+DIST_SUBDIRS = audiofx equalizer jack level pulse rtp shapewipe spectrum v4l2
include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/tests/examples/jack/Makefile.am b/tests/examples/jack/Makefile.am
index 4adfd13142..ad61cbd876 100644
--- a/tests/examples/jack/Makefile.am
+++ b/tests/examples/jack/Makefile.am
@@ -1,4 +1,10 @@
-noinst_PROGRAMS = jack_client
+if HAVE_GTK
+GTK_EXAMPLES=jack_client
+else
+GTK_EXAMPLES=
+endif
+
+noinst_PROGRAMS = $(GTK_EXAMPLES)
jack_client_SOURCES = jack_client.c
jack_client_CFLAGS = $(GST_CFLAGS) $(GTK_CFLAGS) $(JACK_CFLAGS)