diff --git a/configure.ac b/configure.ac
index a2f09b6830..4fe2aa71db 100644
--- a/configure.ac
+++ b/configure.ac
@@ -342,6 +342,14 @@ AG_GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [
AG_GST_PKG_CHECK_MODULES(MPEG2DEC, libmpeg2 >= 0.4.0)
])
+dnl *** mpg123 ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_MPG123, true)
+AG_GST_CHECK_FEATURE(MPG123, [mpg123 audio decoder], mpg123, [
+ PKG_CHECK_MODULES(MPG123, libmpg123 >= 1.13, HAVE_MPG123="yes", HAVE_MPG123="no")
+ AC_SUBST(MPG123_CFLAGS)
+ AC_SUBST(MPG123_LIBS)
+])
+
dnl *** sidplay : works with libsidplay 1.36.x (not 2.x.x) ***
translit(dnm, m, l) AM_CONDITIONAL(USE_SIDPLAY, true)
AG_GST_CHECK_FEATURE(SIDPLAY, [libsidplay], sid, [
@@ -378,6 +386,7 @@ AM_CONDITIONAL(USE_DVDREAD, false)
AM_CONDITIONAL(USE_LAME, false)
AM_CONDITIONAL(USE_MAD, false)
AM_CONDITIONAL(USE_MPEG2DEC, false)
+AM_CONDITIONAL(USE_MPG123, false)
AM_CONDITIONAL(USE_SIDPLAY, false)
AM_CONDITIONAL(USE_TWOLAME, false)
AM_CONDITIONAL(USE_X264, false)
@@ -462,6 +471,7 @@ ext/dvdread/Makefile
ext/lame/Makefile
ext/mad/Makefile
ext/mpeg2dec/Makefile
+ext/mpg123/Makefile
ext/sidplay/Makefile
ext/twolame/Makefile
ext/x264/Makefile
diff --git a/docs/plugins/gst-plugins-ugly-plugins-docs.sgml b/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
index 80ca47341e..6217c5aaed 100644
--- a/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
@@ -24,6 +24,7 @@
+
@@ -48,6 +49,7 @@
+
diff --git a/docs/plugins/gst-plugins-ugly-plugins-sections.txt b/docs/plugins/gst-plugins-ugly-plugins-sections.txt
index 37c4c2c673..fcd8d20f0f 100644
--- a/docs/plugins/gst-plugins-ugly-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-ugly-plugins-sections.txt
@@ -106,6 +106,20 @@ GST_TYPE_MAD
gst_mad_get_type
+
+element-mpg123audiodec
+mpg123audiodec
+GstMpg123AudioDec
+
+GstMpg123AudioDecClass
+GST_MPG123_AUDIO_DEC
+GST_MPG123_AUDIO_DEC_CLASS
+GST_IS_MPG123_AUDIO_DEC
+GST_IS_MPG123_AUDIO_DEC_CLASS
+GST_TYPE_MPG123_AUDIO_DEC
+gst_mpg123_audio_dec_get_type
+
+
element-rademux
rademux
diff --git a/docs/plugins/xml/plugin-mpg123.xml b/docs/plugins/xml/plugin-mpg123.xml
new file mode 100644
index 0000000000..b9c96dcdeb
--- /dev/null
+++ b/docs/plugins/xml/plugin-mpg123.xml
@@ -0,0 +1,34 @@
+
+ mpg123
+ mp3 decoding based on the mpg123 library
+ ../../ext/mpg123/.libs/libgstmpg123.so
+ libgstmpg123.so
+ 1.7.1
+ LGPL
+ gst-plugins-ugly
+ GStreamer Ugly Plug-ins source release
+ Unknown package origin
+
+
+ mpg123audiodec
+ mpg123 mp3 decoder
+ Codec/Decoder/Audio
+ Decodes mp3 streams using the mpg123 library
+ Carlos Rafael Giani <dv@pseudoterminal.org>
+
+
+ sink
+ sink
+ always
+ audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], parsed=(boolean)true
+
+
+ src
+ source
+ always
+ audio/x-raw, format=(string){ S16LE, U16LE, S32LE, U32LE, S24LE, U24LE, F32LE }, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], layout=(string)interleaved
+
+
+
+
+
diff --git a/ext/Makefile.am b/ext/Makefile.am
index e34480d31e..c6005549e7 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -46,6 +46,12 @@ else
MPEG2DEC_DIR =
endif
+if USE_MPG123
+MPG123_DIR=mpg123
+else
+MPG123_DIR=
+endif
+
if USE_SIDPLAY
SIDPLAY_DIR = sidplay
else
@@ -73,6 +79,7 @@ SUBDIRS = \
$(LAME_DIR) \
$(MAD_DIR) \
$(MPEG2DEC_DIR) \
+ $(MPG123_DIR) \
$(SIDPLAY_DIR) \
$(TWOLAME_DIR) \
$(X264_DIR)
@@ -86,6 +93,7 @@ DIST_SUBDIRS = \
lame \
mad \
mpeg2dec \
+ mpg123 \
sidplay \
twolame \
x264
diff --git a/gst-plugins-ugly.spec.in b/gst-plugins-ugly.spec.in
index 8d4727ad8e..1d1a54a3a2 100644
--- a/gst-plugins-ugly.spec.in
+++ b/gst-plugins-ugly.spec.in
@@ -25,6 +25,7 @@ BuildRequires: gcc-c++
@USE_LAME_TRUE@BuildRequires: lame-devel >= 3.89
@USE_MAD_TRUE@BuildRequires: libmad-devel >= 0.15.0
@USE_MPEG2DEC_TRUE@BuildRequires: mpeg2dec-devel >= 0.4.0
+@USE_MPG123_TRUE@BuildRequires: mpg123-devel >= 1.13
@USE_SIDPLAY_TRUE@Provides: gstreamer-sid = %{version}-%{release}
@USE_LAME_TRUE@Provides: gstreamer-lame = %{version}-%{release}
@@ -105,6 +106,7 @@ rm -rf $RPM_BUILD_ROOT
@USE_A52DEC_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsta52dec.so
@USE_DVDREAD_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstdvdread.so
@USE_MPEG2DEC_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmpeg2dec.so
+@USE_MPG123_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmpg123.so
@USE_TWOLAME_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsttwolame.so
%doc %{_datadir}/gtk-doc/html/gst-plugins-ugly-plugins-%{majorminor}/*
@USE_X264_TRUE@%{_datadir}/gstreamer-%{majorminor}/presets/GstX264Enc.prs
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 98d12320bb..06be57aeb4 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -38,6 +38,12 @@ else
MPEG2DEC =
endif
+if USE_MPG123
+check_mpg123 = elements/mpg123audiodec
+else
+check_mpg123 =
+endif
+
if USE_X264
check_x264enc=elements/x264enc
else
@@ -56,6 +62,7 @@ check_PROGRAMS = \
$(AMRNB) \
$(LAME) \
$(MPEG2DEC) \
+ $(check_mpg123) \
$(check_x264enc) \
$(check_xingmux)
@@ -82,4 +89,9 @@ elements_amrnbenc_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION)
elements_cmmldec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
elements_cmmlenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
+elements_mpg123audiodec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+elements_mpg123audiodec_LDADD = \
+ $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
+ -lgstaudio-@GST_API_VERSION@ -lgstfft-@GST_API_VERSION@ -lgstapp-@GST_API_VERSION@
+
EXTRA_DIST = gst-plugins-ugly.supp