Many years ago, FAAD had a serious ABI bug: the NeAACDecInit()
prototype in its header declared the "samplerate" parameter to be
"unsigned long *", but internally, the function assumed it was
"uint32_t *" instead. On 32 bit machines, that was no difference, but
on 64 bit, this left one portion of the return value uninitialized;
and worse, on big-endian, the wrong word was filled. This bug had to
be worked around in MPD (commit 9c4e97a6).
A few months later, the bug was fixed in the FAAD CVS in commit 1.117
on file libfaad/decoder.c; the commit message was:
"Use public headers internally to prevent duplicate declarations"
The commit message was too brief at best; the problem was not
duplicate declarations, but a prototype mismatch. No mention of the
bug fix in the ChangeLog.
The MPD project never learned about this bug fix, and so MPD would
always pass a "uin32_t *" dressed up as a "unsigned long *". Nearly 6
years later, it's about time to fix this second ABI problem. Let's
kill the workaround!
Remove the runtime check for eventfd(), hard-code the feature once
it's been selected at compile time. The class WakeFD is splitted into
EventFD and EventPipe, using WakeFD as a macro diversion.
The M4 function AM_PATH_LAME (m4/lame.m4) defined a configure flag
named "--disable-lametest". This is redundant with configure.ac's
--disable-lame-encoder, and specifying both options may break the
build. Since AM_PATH_LAME is only called when the encoder plugin is
enabled, we can safely remove that --disable-lametest option.
When MPD_AUTO_DISABLED prints a fatal error message, include the
feature name. This might be an important piece of information for the
user, just in case the preceding line doesn't tell him.
This patch adds a small autoconf M4 library which deals with
auto-detected features. The default for those features is "auto",
which is like the old default: if the library is present on the
system, enable the feature, disable otherwise. If the user explicitly
enables that feature (--enable-alsa), and the library is not present,
configure must fail, because it cannot fulfill the request.
By default, glibc 2.8 hides struct ucred behind the _GNU_SOURCE
macro. I don't want to enable that globally, because it may encourage
the use of non-portable functions. Test if "struct ucred" is
available, and enable _GNU_SOURCE if required.
For details about that issue, see glib's bug database:
http://sources.redhat.com/bugzilla/show_bug.cgi?id=6545
[mk: moved this patch after "Refactor and cleanup of shout Ogg and MP3
audio outputs". The original commit message follows, although it is
outdated:]
Creation of shout_mp3 audio output plugin. Basically I just copied the
existing shout plugin and replaced ogg with lame. Uses lame for mp3
encoding. Next step is to pull common functionality out of each shout
plugin and share it between them.
Configuration options for "shout_mp3" are the same as for "shout".
needed for compatibility with older gcc. Also, threw in
some warnings for things I find offensive
(declaration-after-statement, shadow)
git-svn-id: https://svn.musicpd.org/mpd/trunk@7299 09075e82-0dd4-0310-85a5-a0d7c8717e4f