diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2017-08-26 09:03:08 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2017-08-26 09:14:55 +0100 |
commit | 1473b662de2c46ece4ac7e5e42c86af7b159a649 (patch) | |
tree | fc5add30b7f75f68ee34444ea82c9f2d8d5108ef | |
parent | 53ec444963e273376c7a96865dd6b32e1e8fc65e (diff) |
lame: hook up to build system
https://bugzilla.gnome.org/show_bug.cgi?id=774252
-rw-r--r-- | REQUIREMENTS | 6 | ||||
-rw-r--r-- | configure.ac | 22 | ||||
-rw-r--r-- | docs/plugins/Makefile.am | 1 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins-docs.sgml | 2 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins-sections.txt | 15 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins.args | 60 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins.hierarchy | 1 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins.interfaces | 1 | ||||
-rw-r--r-- | docs/plugins/inspect/plugin-lame.xml | 34 | ||||
-rw-r--r-- | ext/Makefile.am | 8 | ||||
-rw-r--r-- | ext/lame/Makefile.am | 2 | ||||
-rw-r--r-- | ext/lame/meson.build | 2 | ||||
-rw-r--r-- | ext/meson.build | 1 | ||||
-rw-r--r-- | po/POTFILES.in | 1 | ||||
-rw-r--r-- | tests/check/Makefile.am | 7 | ||||
-rw-r--r-- | tests/check/gst-plugins-good.supp | 12 | ||||
-rw-r--r-- | tests/check/meson.build | 1 |
17 files changed, 174 insertions, 2 deletions
diff --git a/REQUIREMENTS b/REQUIREMENTS index d399ea05a..0c5accd53 100644 --- a/REQUIREMENTS +++ b/REQUIREMENTS @@ -125,6 +125,12 @@ DebianPackage: libdv4-dev Plugins: dv (dvdec) URL: http://libdv.sourceforge.net/ +Package: liblame +Version: >= 3.98 +DebianPackage: libmp3lame-dev +Plugins: lame (lamemp3enc) +URL: http://www.mp3dev.org/mp3/ + Package: libmpg123 Version: >= 1.3 DebianPackage: libpng12-dev diff --git a/configure.ac b/configure.ac index 9dc76c8eb..ea1c91c13 100644 --- a/configure.ac +++ b/configure.ac @@ -665,6 +665,26 @@ AG_GST_CHECK_FEATURE(JPEG, [jpeg library], jpeg, [ AC_SUBST(JPEG_LIBS) ]) +dnl *** lame *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LAME, true) +AG_GST_CHECK_FEATURE(LAME, [lame mp3 encoder library], lame, [ + AG_GST_CHECK_LIBHEADER(LAME, mp3lame, lame_init, $LIBM, lame/lame.h, + [ + HAVE_LAME="yes" + LAME_LIBS="-lmp3lame $LIBM" + dnl is lame presets available + LAME_CFLAGS="" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <lame/lame.h>]], [[ int preset = MEDIUM ]])],[LAME_CFLAGS="-DGSTLAME_PRESET"],[LAME_CFLAGS="" + ]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <lame/lame.h>]], [[ + void *ptr = &lame_set_VBR_quality + ]])],[LAME_CFLAGS="$LAME_CFLAGS -DHAVE_LAME_SET_VBR_QUALITY"],[LAME_CFLAGS="$LAME_CFLAGS" + ]) + AC_SUBST(LAME_CFLAGS) + AC_SUBST(LAME_LIBS) + ]) +]) + dnl *** libcaca *** translit(dnm, m, l) AM_CONDITIONAL(USE_LIBCACA, true) AG_GST_CHECK_FEATURE(LIBCACA, [libcaca coloured ASCII art], cacasink, [ @@ -878,6 +898,7 @@ AM_CONDITIONAL(USE_FLAC, false) AM_CONDITIONAL(USE_GDK_PIXBUF, false) AM_CONDITIONAL(USE_JACK, false) AM_CONDITIONAL(USE_JPEG, false) +AM_CONDITIONAL(USE_LAME, false) AM_CONDITIONAL(USE_LIBCACA, false) AM_CONDITIONAL(USE_LIBDV, false) AM_CONDITIONAL(USE_LIBIEC61883, false) @@ -1021,6 +1042,7 @@ ext/flac/Makefile ext/gdk_pixbuf/Makefile ext/jack/Makefile ext/jpeg/Makefile +ext/lame/Makefile ext/libcaca/Makefile ext/libpng/Makefile ext/mpg123/Makefile diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am index 54069c725..ae34a1ce1 100644 --- a/docs/plugins/Makefile.am +++ b/docs/plugins/Makefile.am @@ -64,6 +64,7 @@ EXTRA_HFILES = \ $(top_srcdir)/ext/jack/gstjackaudiosink.h \ $(top_srcdir)/ext/jpeg/gstjpegdec.h \ $(top_srcdir)/ext/jpeg/gstjpegenc.h \ + $(top_srcdir)/ext/lame/gstlamemp3enc.h \ $(top_srcdir)/ext/libcaca/gstcacasink.h \ $(top_srcdir)/ext/libpng/gstpngdec.h \ $(top_srcdir)/ext/libpng/gstpngenc.h \ diff --git a/docs/plugins/gst-plugins-good-plugins-docs.sgml b/docs/plugins/gst-plugins-good-plugins-docs.sgml index 48bca3502..2ba9612ea 100644 --- a/docs/plugins/gst-plugins-good-plugins-docs.sgml +++ b/docs/plugins/gst-plugins-good-plugins-docs.sgml @@ -99,6 +99,7 @@ <xi:include href="xml/element-jackaudiosrc.xml" /> <xi:include href="xml/element-jpegdec.xml" /> <xi:include href="xml/element-jpegenc.xml" /> + <xi:include href="xml/element-lamemp3enc.xml" /> <xi:include href="xml/element-level-example.xml" /> <xi:include href="xml/element-level.xml" /> <xi:include href="xml/element-matroskademux.xml" /> @@ -326,6 +327,7 @@ <xi:include href="xml/plugin-isomp4.xml" /> <xi:include href="xml/plugin-jack.xml" /> <xi:include href="xml/plugin-jpeg.xml" /> + <xi:include href="xml/plugin-lame.xml" /> <xi:include href="xml/plugin-level.xml" /> <xi:include href="xml/plugin-matroska.xml" /> <xi:include href="xml/plugin-monoscope.xml" /> diff --git a/docs/plugins/gst-plugins-good-plugins-sections.txt b/docs/plugins/gst-plugins-good-plugins-sections.txt index 851706146..506f63a0e 100644 --- a/docs/plugins/gst-plugins-good-plugins-sections.txt +++ b/docs/plugins/gst-plugins-good-plugins-sections.txt @@ -1284,6 +1284,21 @@ gst_jpeg_enc_get_type </SECTION> <SECTION> +<FILE>element-lamemp3enc</FILE> +<TITLE>lamemp3enc</TITLE> +GstLameMP3Enc +<SUBSECTION Standard> +GstLameMP3EncClass +GST_LAMEMP3ENC +GST_LAMEMP3ENC_CLASS +GST_IS_LAMEMP3ENC +GST_IS_LAMEMP3ENC_CLASS +GST_TYPE_LAMEMP3ENC +gst_lamemp3enc_get_type +gst_lamemp3enc_register +</SECTION> + +<SECTION> <FILE>element-level</FILE> <TITLE>level</TITLE> GstLevel diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args index ad60b1e58..4a6b3c6bd 100644 --- a/docs/plugins/gst-plugins-good-plugins.args +++ b/docs/plugins/gst-plugins-good-plugins.args @@ -24288,3 +24288,63 @@ <DEFAULT>NULL</DEFAULT> </ARG> +<ARG> +<NAME>GstLameMP3Enc::bitrate</NAME> +<TYPE>gint</TYPE> +<RANGE>[8,320]</RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Bitrate (kb/s)</NICK> +<BLURB>Bitrate in kbit/sec (Only valid if target is bitrate, for CBR one of 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</BLURB> +<DEFAULT>128</DEFAULT> +</ARG> + +<ARG> +<NAME>GstLameMP3Enc::cbr</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rwx</FLAGS> +<NICK>CBR</NICK> +<BLURB>Enforce constant bitrate encoding (Only valid if target is bitrate).</BLURB> +<DEFAULT>FALSE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstLameMP3Enc::encoding-engine-quality</NAME> +<TYPE>GstLameMP3EncEncodingEngineQuality</TYPE> +<RANGE></RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Encoding Engine Quality</NICK> +<BLURB>Quality/speed of the encoding engine, this does not affect the bitrate!.</BLURB> +<DEFAULT>Standard</DEFAULT> +</ARG> + +<ARG> +<NAME>GstLameMP3Enc::mono</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Mono</NICK> +<BLURB>Enforce mono encoding.</BLURB> +<DEFAULT>FALSE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstLameMP3Enc::quality</NAME> +<TYPE>gfloat</TYPE> +<RANGE>[0,9.999]</RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Quality</NICK> +<BLURB>VBR Quality from 0 to 10, 0 being the best (Only valid if target is quality).</BLURB> +<DEFAULT>4</DEFAULT> +</ARG> + +<ARG> +<NAME>GstLameMP3Enc::target</NAME> +<TYPE>GstLameMP3EncTarget</TYPE> +<RANGE></RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Target</NICK> +<BLURB>Optimize for quality or bitrate.</BLURB> +<DEFAULT>Quality</DEFAULT> +</ARG> + diff --git a/docs/plugins/gst-plugins-good-plugins.hierarchy b/docs/plugins/gst-plugins-good-plugins.hierarchy index a928dc5e1..6e101cbf2 100644 --- a/docs/plugins/gst-plugins-good-plugins.hierarchy +++ b/docs/plugins/gst-plugins-good-plugins.hierarchy @@ -33,6 +33,7 @@ GObject GstAudioEncoder GstALawEnc GstFlacEnc + GstLameMP3Enc GstMuLawEnc GstSpeexEnc GstWavpackEnc diff --git a/docs/plugins/gst-plugins-good-plugins.interfaces b/docs/plugins/gst-plugins-good-plugins.interfaces index 14fe6cd30..2025f2b4a 100644 --- a/docs/plugins/gst-plugins-good-plugins.interfaces +++ b/docs/plugins/gst-plugins-good-plugins.interfaces @@ -45,6 +45,7 @@ GstIirEqualizer3Bands GstChildProxy GstPreset GstIirEqualizerNBands GstChildProxy GstIirEqualizerNBands GstChildProxy GstPreset GstJpegEnc GstPreset +GstLameMP3Enc GstPreset GstMJ2Mux GstTagSetter GstTagXmpWriter GstMJ2Mux GstTagSetter GstTagXmpWriter GstPreset GstMP4Mux GstTagSetter GstTagXmpWriter diff --git a/docs/plugins/inspect/plugin-lame.xml b/docs/plugins/inspect/plugin-lame.xml new file mode 100644 index 000000000..67fc2e605 --- /dev/null +++ b/docs/plugins/inspect/plugin-lame.xml @@ -0,0 +1,34 @@ +<plugin> + <name>lame</name> + <description>Encode MP3s with LAME</description> + <filename>../../ext/lame/.libs/libgstlame.so</filename> + <basename>libgstlame.so</basename> + <version>1.13.0.1</version> + <license>LGPL</license> + <source>gst-plugins-good</source> + <package>GStreamer Good Plug-ins git</package> + <origin>Unknown package origin</origin> + <elements> + <element> + <name>lamemp3enc</name> + <longname>L.A.M.E. mp3 encoder</longname> + <class>Codec/Encoder/Audio</class> + <description>High-quality free MP3 encoder</description> + <author>Sebastian Dröge <sebastian.droege@collabora.co.uk></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)1; audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)2, channel-mask=(bitmask)0x0000000000000003</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details> + </caps> + </pads> + </element> + </elements> +</plugin>
\ No newline at end of file diff --git a/ext/Makefile.am b/ext/Makefile.am index 1bb540bb5..fee653f55 100644 --- a/ext/Makefile.am +++ b/ext/Makefile.am @@ -34,6 +34,12 @@ else JPEG_DIR = endif +if USE_LAME +LAME_DIR = lame +else +LAME_DIR = +endif + if USE_LIBCACA LIBCACA_DIR = libcaca else @@ -115,6 +121,7 @@ SUBDIRS = \ $(GDK_PIXBUF_DIR) \ $(JACK_DIR) \ $(JPEG_DIR) \ + $(LAME_DIR) \ $(LIBCACA_DIR) \ $(LIBDV_DIR) \ $(LIBMNG_DIR) \ @@ -136,6 +143,7 @@ DIST_SUBDIRS = \ gdk_pixbuf \ jack \ jpeg \ + lame \ libcaca \ libpng \ mpg123 \ diff --git a/ext/lame/Makefile.am b/ext/lame/Makefile.am index 5e5b3a02d..46198c8ec 100644 --- a/ext/lame/Makefile.am +++ b/ext/lame/Makefile.am @@ -3,7 +3,7 @@ plugin_LTLIBRARIES = libgstlame.la libgstlame_la_SOURCES = gstlamemp3enc.c plugin.c libgstlame_la_CFLAGS = \ $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(LAME_CFLAGS) -libgstlame_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \ +libgstlame_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \ $(GST_BASE_LIBS) $(GST_LIBS) $(LAME_LIBS) libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) diff --git a/ext/lame/meson.build b/ext/lame/meson.build index 2812cb930..e3e61b68f 100644 --- a/ext/lame/meson.build +++ b/ext/lame/meson.build @@ -10,7 +10,7 @@ if lame_dep.found() and cc.has_header_symbol('lame/lame.h', 'lame_init') endif lame = library('gstlame', ['gstlamemp3enc.c', 'plugin.c'], - c_args : ugly_args + lame_extra_c_args, + c_args : gst_plugins_good_args + lame_extra_c_args, include_directories : [configinc, libsinc], dependencies : [gstaudio_dep, lame_dep], install : true, diff --git a/ext/meson.build b/ext/meson.build index 92f75ef10..3bc8c8212 100644 --- a/ext/meson.build +++ b/ext/meson.build @@ -4,6 +4,7 @@ subdir('flac') subdir('gdk_pixbuf') subdir('jack') subdir('jpeg') +subdir('lame') subdir('libcaca') # FIXME: dv plugin fails to link with msvc, wants pthread.lib if cc.get_id() != 'msvc' diff --git a/po/POTFILES.in b/po/POTFILES.in index 747b208eb..895c7fe0b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -2,6 +2,7 @@ ext/flac/gstflacdec.c ext/jack/gstjackaudiosink.c ext/jack/gstjackaudiosrc.c ext/jpeg/gstjpegdec.c +ext/lame/gstlamemp3enc.c ext/libpng/gstpngdec.c ext/pulse/pulsesink.c ext/shout2/gstshout2.c diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index b18bc9be1..6dd397947 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -188,6 +188,12 @@ else check_jpeg = endif +if USE_LAME +check_lame = pipelines/lame +else +check_lame = +endif + if USE_PLUGIN_LEVEL check_level = elements/level else @@ -372,6 +378,7 @@ check_PROGRAMS = \ $(check_imagefreeze) \ $(check_interleave) \ $(check_jpeg) \ + $(check_lame) \ $(check_law) \ $(check_level) \ $(check_matroska) \ diff --git a/tests/check/gst-plugins-good.supp b/tests/check/gst-plugins-good.supp index e86794df4..33737bf5a 100644 --- a/tests/check/gst-plugins-good.supp +++ b/tests/check/gst-plugins-good.supp @@ -143,3 +143,15 @@ fun:gst_value_deserialize_double } +## lame + +{ + <lame Conditional jump or move depends on uninitialised values> + Memcheck:Cond + fun:L3psycho_anal_vbr + fun:lame_encode_mp3_frame + ... + fun:lame_encode_flush + fun:gst_lamemp3enc_sink_event +} + diff --git a/tests/check/meson.build b/tests/check/meson.build index a4335a14b..a00532656 100644 --- a/tests/check/meson.build +++ b/tests/check/meson.build @@ -94,6 +94,7 @@ good_tests = [ [ 'elements/vp8enc', not vpx_dep.found() or not have_vp8_encoder ], [ 'elements/vp8dec', not vpx_dep.found() or not have_vp8_decoder ], [ 'elements/vp9enc', not vpx_dep.found() or not have_vp9_encoder ], + [ 'pipelines/lame', not lame_dep.found() ], [ 'pipelines/wavenc' ], [ 'elements/wavpackdec', not wavpack_dep.found() ], [ 'elements/wavpackenc', not wavpack_dep.found() ], |