lame: hook up to build system

https://bugzilla.gnome.org/show_bug.cgi?id=774252
This commit is contained in:
Tim-Philipp Müller 2017-08-26 09:03:08 +01:00
parent 53ec444963
commit 1473b662de
17 changed files with 174 additions and 2 deletions

View file

@ -125,6 +125,12 @@ DebianPackage: libdv4-dev
Plugins: dv (dvdec) Plugins: dv (dvdec)
URL: http://libdv.sourceforge.net/ URL: http://libdv.sourceforge.net/
Package: liblame
Version: >= 3.98
DebianPackage: libmp3lame-dev
Plugins: lame (lamemp3enc)
URL: http://www.mp3dev.org/mp3/
Package: libmpg123 Package: libmpg123
Version: >= 1.3 Version: >= 1.3
DebianPackage: libpng12-dev DebianPackage: libpng12-dev

View file

@ -665,6 +665,26 @@ AG_GST_CHECK_FEATURE(JPEG, [jpeg library], jpeg, [
AC_SUBST(JPEG_LIBS) 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 *** dnl *** libcaca ***
translit(dnm, m, l) AM_CONDITIONAL(USE_LIBCACA, true) translit(dnm, m, l) AM_CONDITIONAL(USE_LIBCACA, true)
AG_GST_CHECK_FEATURE(LIBCACA, [libcaca coloured ASCII art], cacasink, [ 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_GDK_PIXBUF, false)
AM_CONDITIONAL(USE_JACK, false) AM_CONDITIONAL(USE_JACK, false)
AM_CONDITIONAL(USE_JPEG, false) AM_CONDITIONAL(USE_JPEG, false)
AM_CONDITIONAL(USE_LAME, false)
AM_CONDITIONAL(USE_LIBCACA, false) AM_CONDITIONAL(USE_LIBCACA, false)
AM_CONDITIONAL(USE_LIBDV, false) AM_CONDITIONAL(USE_LIBDV, false)
AM_CONDITIONAL(USE_LIBIEC61883, false) AM_CONDITIONAL(USE_LIBIEC61883, false)
@ -1021,6 +1042,7 @@ ext/flac/Makefile
ext/gdk_pixbuf/Makefile ext/gdk_pixbuf/Makefile
ext/jack/Makefile ext/jack/Makefile
ext/jpeg/Makefile ext/jpeg/Makefile
ext/lame/Makefile
ext/libcaca/Makefile ext/libcaca/Makefile
ext/libpng/Makefile ext/libpng/Makefile
ext/mpg123/Makefile ext/mpg123/Makefile

View file

@ -64,6 +64,7 @@ EXTRA_HFILES = \
$(top_srcdir)/ext/jack/gstjackaudiosink.h \ $(top_srcdir)/ext/jack/gstjackaudiosink.h \
$(top_srcdir)/ext/jpeg/gstjpegdec.h \ $(top_srcdir)/ext/jpeg/gstjpegdec.h \
$(top_srcdir)/ext/jpeg/gstjpegenc.h \ $(top_srcdir)/ext/jpeg/gstjpegenc.h \
$(top_srcdir)/ext/lame/gstlamemp3enc.h \
$(top_srcdir)/ext/libcaca/gstcacasink.h \ $(top_srcdir)/ext/libcaca/gstcacasink.h \
$(top_srcdir)/ext/libpng/gstpngdec.h \ $(top_srcdir)/ext/libpng/gstpngdec.h \
$(top_srcdir)/ext/libpng/gstpngenc.h \ $(top_srcdir)/ext/libpng/gstpngenc.h \

View file

@ -99,6 +99,7 @@
<xi:include href="xml/element-jackaudiosrc.xml" /> <xi:include href="xml/element-jackaudiosrc.xml" />
<xi:include href="xml/element-jpegdec.xml" /> <xi:include href="xml/element-jpegdec.xml" />
<xi:include href="xml/element-jpegenc.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-example.xml" />
<xi:include href="xml/element-level.xml" /> <xi:include href="xml/element-level.xml" />
<xi:include href="xml/element-matroskademux.xml" /> <xi:include href="xml/element-matroskademux.xml" />
@ -326,6 +327,7 @@
<xi:include href="xml/plugin-isomp4.xml" /> <xi:include href="xml/plugin-isomp4.xml" />
<xi:include href="xml/plugin-jack.xml" /> <xi:include href="xml/plugin-jack.xml" />
<xi:include href="xml/plugin-jpeg.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-level.xml" />
<xi:include href="xml/plugin-matroska.xml" /> <xi:include href="xml/plugin-matroska.xml" />
<xi:include href="xml/plugin-monoscope.xml" /> <xi:include href="xml/plugin-monoscope.xml" />

View file

@ -1283,6 +1283,21 @@ GST_TYPE_JPEG_ENC
gst_jpeg_enc_get_type gst_jpeg_enc_get_type
</SECTION> </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> <SECTION>
<FILE>element-level</FILE> <FILE>element-level</FILE>
<TITLE>level</TITLE> <TITLE>level</TITLE>

View file

@ -24288,3 +24288,63 @@
<DEFAULT>NULL</DEFAULT> <DEFAULT>NULL</DEFAULT>
</ARG> </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>

View file

@ -33,6 +33,7 @@ GObject
GstAudioEncoder GstAudioEncoder
GstALawEnc GstALawEnc
GstFlacEnc GstFlacEnc
GstLameMP3Enc
GstMuLawEnc GstMuLawEnc
GstSpeexEnc GstSpeexEnc
GstWavpackEnc GstWavpackEnc

View file

@ -45,6 +45,7 @@ GstIirEqualizer3Bands GstChildProxy GstPreset
GstIirEqualizerNBands GstChildProxy GstIirEqualizerNBands GstChildProxy
GstIirEqualizerNBands GstChildProxy GstPreset GstIirEqualizerNBands GstChildProxy GstPreset
GstJpegEnc GstPreset GstJpegEnc GstPreset
GstLameMP3Enc GstPreset
GstMJ2Mux GstTagSetter GstTagXmpWriter GstMJ2Mux GstTagSetter GstTagXmpWriter
GstMJ2Mux GstTagSetter GstTagXmpWriter GstPreset GstMJ2Mux GstTagSetter GstTagXmpWriter GstPreset
GstMP4Mux GstTagSetter GstTagXmpWriter GstMP4Mux GstTagSetter GstTagXmpWriter

View file

@ -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 &lt;sebastian.droege@collabora.co.uk&gt;</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>

View file

@ -34,6 +34,12 @@ else
JPEG_DIR = JPEG_DIR =
endif endif
if USE_LAME
LAME_DIR = lame
else
LAME_DIR =
endif
if USE_LIBCACA if USE_LIBCACA
LIBCACA_DIR = libcaca LIBCACA_DIR = libcaca
else else
@ -115,6 +121,7 @@ SUBDIRS = \
$(GDK_PIXBUF_DIR) \ $(GDK_PIXBUF_DIR) \
$(JACK_DIR) \ $(JACK_DIR) \
$(JPEG_DIR) \ $(JPEG_DIR) \
$(LAME_DIR) \
$(LIBCACA_DIR) \ $(LIBCACA_DIR) \
$(LIBDV_DIR) \ $(LIBDV_DIR) \
$(LIBMNG_DIR) \ $(LIBMNG_DIR) \
@ -136,6 +143,7 @@ DIST_SUBDIRS = \
gdk_pixbuf \ gdk_pixbuf \
jack \ jack \
jpeg \ jpeg \
lame \
libcaca \ libcaca \
libpng \ libpng \
mpg123 \ mpg123 \

View file

@ -3,7 +3,7 @@ plugin_LTLIBRARIES = libgstlame.la
libgstlame_la_SOURCES = gstlamemp3enc.c plugin.c libgstlame_la_SOURCES = gstlamemp3enc.c plugin.c
libgstlame_la_CFLAGS = \ libgstlame_la_CFLAGS = \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(LAME_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) $(GST_BASE_LIBS) $(GST_LIBS) $(LAME_LIBS)
libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -10,7 +10,7 @@ if lame_dep.found() and cc.has_header_symbol('lame/lame.h', 'lame_init')
endif endif
lame = library('gstlame', lame = library('gstlame',
['gstlamemp3enc.c', 'plugin.c'], ['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], include_directories : [configinc, libsinc],
dependencies : [gstaudio_dep, lame_dep], dependencies : [gstaudio_dep, lame_dep],
install : true, install : true,

View file

@ -4,6 +4,7 @@ subdir('flac')
subdir('gdk_pixbuf') subdir('gdk_pixbuf')
subdir('jack') subdir('jack')
subdir('jpeg') subdir('jpeg')
subdir('lame')
subdir('libcaca') subdir('libcaca')
# FIXME: dv plugin fails to link with msvc, wants pthread.lib # FIXME: dv plugin fails to link with msvc, wants pthread.lib
if cc.get_id() != 'msvc' if cc.get_id() != 'msvc'

View file

@ -2,6 +2,7 @@ ext/flac/gstflacdec.c
ext/jack/gstjackaudiosink.c ext/jack/gstjackaudiosink.c
ext/jack/gstjackaudiosrc.c ext/jack/gstjackaudiosrc.c
ext/jpeg/gstjpegdec.c ext/jpeg/gstjpegdec.c
ext/lame/gstlamemp3enc.c
ext/libpng/gstpngdec.c ext/libpng/gstpngdec.c
ext/pulse/pulsesink.c ext/pulse/pulsesink.c
ext/shout2/gstshout2.c ext/shout2/gstshout2.c

View file

@ -188,6 +188,12 @@ else
check_jpeg = check_jpeg =
endif endif
if USE_LAME
check_lame = pipelines/lame
else
check_lame =
endif
if USE_PLUGIN_LEVEL if USE_PLUGIN_LEVEL
check_level = elements/level check_level = elements/level
else else
@ -372,6 +378,7 @@ check_PROGRAMS = \
$(check_imagefreeze) \ $(check_imagefreeze) \
$(check_interleave) \ $(check_interleave) \
$(check_jpeg) \ $(check_jpeg) \
$(check_lame) \
$(check_law) \ $(check_law) \
$(check_level) \ $(check_level) \
$(check_matroska) \ $(check_matroska) \

View file

@ -143,3 +143,15 @@
fun:gst_value_deserialize_double 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
}

View file

@ -94,6 +94,7 @@ good_tests = [
[ 'elements/vp8enc', not vpx_dep.found() or not have_vp8_encoder ], [ 'elements/vp8enc', not vpx_dep.found() or not have_vp8_encoder ],
[ 'elements/vp8dec', not vpx_dep.found() or not have_vp8_decoder ], [ 'elements/vp8dec', not vpx_dep.found() or not have_vp8_decoder ],
[ 'elements/vp9enc', not vpx_dep.found() or not have_vp9_encoder ], [ 'elements/vp9enc', not vpx_dep.found() or not have_vp9_encoder ],
[ 'pipelines/lame', not lame_dep.found() ],
[ 'pipelines/wavenc' ], [ 'pipelines/wavenc' ],
[ 'elements/wavpackdec', not wavpack_dep.found() ], [ 'elements/wavpackdec', not wavpack_dep.found() ],
[ 'elements/wavpackenc', not wavpack_dep.found() ], [ 'elements/wavpackenc', not wavpack_dep.found() ],