Commit Graph

3534 Commits

Author SHA1 Message Date
Max Kellermann
b19a8505f4 player_control: fix shadow warning with older gcc
Older gcc versions complained about shadowed parameters in prototypes.
2009-01-16 17:11:18 +01:00
Max Kellermann
106bfaa726 oss: evaluate the oss_open() return value properly
It returns bool, not int.
2009-01-16 17:11:18 +01:00
Max Kellermann
b12b5130c9 mixer: check param==NULL in the alsa and oss mixer code
When MPD starts without audio output configuration, the "param"
variable is NULL.  This triggers a segmentation fault in both mixer
plugins.
2009-01-16 17:11:18 +01:00
Qball Cow
b533307d6f Enable wav file streaming for ffmpeg input plugin 2009-01-16 17:11:16 +01:00
Max Kellermann
c77c61bf3f oggvorbis: define HAVE_OGGVORBIS when tremor is enabled
When tremor (libvorbisidec) is used, HAVE_OGGVORBIS was not defined.
2009-01-15 22:54:31 +01:00
Rasmus Steinke
3e87e4f3ab flac: map "Album Artist" to "AlbumArtist"
This patch allows mpd to recognise the albumartist tag in the way
foobar2000 and others write it to files.
2009-01-15 22:45:29 +01:00
Max Kellermann
9cc373d62d flac: splitted flac_copy_vorbis_comment()
Splitted flac_copy_vorbis_comment() into flac_copy_comment() and
flac_copy_comment().
2009-01-15 22:45:28 +01:00
Max Kellermann
0dec3f787f flac: moved code to flac_comment_value()
Simplify flac_copy_vorbis_comment() by moving the comment
identification code out.
2009-01-15 22:44:21 +01:00
Max Kellermann
f30adc3526 flac: always allocate tag object
Free the tag object when it turns out to be empty.  This simplifies
several functions and APIs.
2009-01-15 22:43:39 +01:00
Max Kellermann
ccea365494 tag: added tag_is_defined()
tag_is_defined() checks whether there is any information in the tag
object.
2009-01-15 22:00:26 +01:00
Max Kellermann
15435b09af flac: use bool instead of int 2009-01-15 19:57:57 +01:00
Max Kellermann
8307dd3e87 flac: removed "vorbis_comment_found" flag
Use tag_is_empty() instead.
2009-01-15 19:53:07 +01:00
Max Kellermann
86dc79293f flac: no CamelCase
Renamed types, functions, variables.
2009-01-15 19:50:28 +01:00
Max Kellermann
a7461dc27d input_curl: don't call input_curl_select() when already at EOF
Calling input_curl_select() after EOF has been reached causes an
assertion failure.  This can happen if the HTTP response is empty.
Check c->eof before calling input_curl_select().
2009-01-15 16:16:57 +01:00
Max Kellermann
f1790fc8bf input_curl: set "ready" flag on EOF
Set the "ready" flag for empty resources.
2009-01-15 16:16:55 +01:00
Max Kellermann
fa3899f7b0 input_curl: call curl_multi_info_read() in constructor
To check for early connect failures, call curl_multi_info_read() in
the constructor input_curl_open().  This fixes an assertion failure.
2009-01-15 16:16:53 +01:00
Max Kellermann
09e06d9416 NEWS: merge from v0.14.x
Copy changelog items from the upcoming 0.14.1 release.
2009-01-15 16:16:37 +01:00
Max Kellermann
08e18f7070 input_curl: added fallback for g_queue_clear()
g_queue_clear() was introduced in GLib 2.14.  Add a macro hack for
older GLib versions to emulate it.
2009-01-15 09:20:01 +01:00
Max Kellermann
29baf0c190 log, pcm_convert: added return statements after g_error()
gcc doesn't know that g_error() never returns.  Work around the gcc
warning.
2009-01-15 09:17:06 +01:00
Max Kellermann
2151e2ea53 mapper: check if g_get_user_special_dir() is supported by GLib
g_get_user_special_dir() was introduced with GLib 2.14.  Don't use it
in older versions.
2009-01-15 09:16:20 +01:00
Max Kellermann
6139174d81 pcm_convert: removed unused variable "dest_size"
dest_size is only used in an assertion.  Remove its declaration and
move the formula into the assertion.
2009-01-15 08:35:58 +01:00
Max Kellermann
8fe867c71d decoder_api: added G_GNUC_UNUSED attribute to decoder_initialized()
In NDEBUG, the parameter "decoder" is not used.
2009-01-15 08:33:32 +01:00
Max Kellermann
5232f05470 listen: don't compile ipv6Supported() if !HAVE_IPV6
The function ipv6Supported() is not used at all when IPv6 support was
disabled at compile time.
2009-01-15 08:33:32 +01:00
Rasmus Steinke
9b0ce18144 oggvorbis: map "Album Artist" to "AlbumArtist"
This patch allows mpd to recognise the albumartist tag in the way foobar2000
and others write it to files.
2009-01-15 06:51:58 +01:00
Max Kellermann
9e55a08d79 songvec: sort songs by disc and track number
Sorting songs by file name does not make much sense.  Most of the
time, users want to add songs in track order to the playlist.
2009-01-15 00:22:30 +01:00
Max Kellermann
2fad578376 tag: added tag_get_value() 2009-01-15 00:21:08 +01:00
Max Kellermann
4847bbaad3 dirvec, songvec: sort using g_utf8_collate()
Path names in the directory and song structs are always encoded in
UTF-8.  Don't use strcmp(), it cannot handle UTF-8 characters
properly.  Use GLib's UTF-8 aware g_utf8_collate() function for that.
2009-01-15 00:09:18 +01:00
Antoine Beaupré
b7fe09fa52 shout: enlarge buffer size to 32 kB
I was having problems with shoutcast stream outputs before applying
the attached patch, which enlarges the shoutcast output
buffer. Ideally, this should be configurable, but this resolves the
issue for my needs.
2009-01-14 23:28:26 +01:00
Max Kellermann
283c2621f3 oggvorbis: use g_ascii_strncasecmp() instead of strncasecmp()
Don't depend on the daemon's locale settings.  Comment names are
ASCII.
2009-01-14 23:23:05 +01:00
Max Kellermann
f353bf77ba oggvorbis: moved tag look into vorbis_parse_comment()
vorbis_parse_comment() should be a function which converts one comment
to a tag item.  It should do everything required to do the conversion,
including looping over all possible tag types.
2009-01-14 23:21:45 +01:00
Max Kellermann
69b033757f oggvorbis: moved code to vorbis_copy_comment() 2009-01-14 23:15:14 +01:00
Max Kellermann
25cf333355 oggvorbis: use vorbis_comment_value() in vorbis_parse_comment()
Eliminate some duplicate code.
2009-01-14 23:09:36 +01:00
Max Kellermann
5a26c949bb oggvorbis: always allocate a tag object
Always allocate a new tag object before parsing the vorbis comments;
free it when it turns out to be empty.  This simplifies the code a
bit.
2009-01-14 23:09:31 +01:00
Max Kellermann
b5cadc9c04 oggvorbis: no CamelCase
Renamed functions and variables.
2009-01-14 23:09:02 +01:00
Max Kellermann
b8e06d414a oggvorbis: use bool
Make ogg_parseCommentAddToTag() return bool instead of unsigned int.
2009-01-14 22:51:11 +01:00
Daniele Sluijters
ca42f01427 tag_id3: added support for the "album artist" tag
Read the id3 tags "TPE2" and "TSO2" into the "album artist" tag.
2009-01-14 22:38:55 +01:00
Jérôme Quelin
ae5517b0b3 allow ~/.mpd/mpd.conf as alternate config file
mpd uses some additional files to work, such as pid_file, state_file,
db_file, etc. when running mpd as non-root user, it is often that those
files end in ~/.mpd

in that case, we end up with 2 entries in a user's home, .mpdconf and
.mpd - which clutters homedirs.

this patch allows ~/.mpd/mpd.conf as an alternative to ~/.mpdconf,
allowing for a cleaner homedir
2009-01-14 14:31:55 +01:00
Max Kellermann
642b861526 song_save: don't fail on empty tag values
If a tag value is an empty string, the space after the colon was
removed by g_strchomp().  Fix this by removing the space check and
using g_strchug() on the return value.
2009-01-14 13:44:14 +01:00
Max Kellermann
3c6a85d8f7 song_save: return value pointer from matchesAnMpdTagItemKey()
The matchesAnMpdTagItemKey() API becomes more powerful and flexible if
the return value is the value pointer instead of a boolean.  It also
removes (invalid and dangerous) assumptions about the string from its
caller.
2009-01-14 13:43:57 +01:00
Max Kellermann
7cc9ba45a9 song_save: itemType is "enum tag_type", not "int" 2009-01-14 13:38:47 +01:00
Max Kellermann
2c540ee8a4 playlist: safely search the playlist for deleted song
When a song file is deleted during database update, all pointers to it
must be removed from the playlist.  The "for" loop in
deleteASongFromPlaylist() did not deal with multiple copies of the
deleted song properly, and left instances of the (to-be-invalidated)
pointer in.  Fix this by reversing the loop.
2009-01-14 11:42:45 +01:00
Max Kellermann
2af1742fcf tag: added core support for the "album artist" tag
Added TAG_ITEM_ALBUM_ARTIST.

With this patch, MPD should be able to read the (inofficial)
"ALBUMARTIST" Vorbis comment.  Implementations in other decoder
plugins will follow soon.
2009-01-13 23:43:20 +01:00
Max Kellermann
1452717459 song_save: check for colon and space when loading a tag
matchesAnMpdTagItemKey() broke when two tag items had the same prefix,
because it did not check if the tag name ended after the prefix.  Add
a check for the colon and the space after the tag name.
2009-01-13 23:43:16 +01:00
Joe Milbourn
45598d50e3 input_curl: honour http_proxy_* config directives
If http_proxy_{host, port, user, password} are provided in mpd.conf
they are not passed on to libcurl. As a result mpd cannot stream from
behind an http proxy.

The attached patch `http_proxy.patch` makes the relevant calls to
curl_easy_setopt(...) for all proxy configuration parameters, but is
only tested for host and port.
2009-01-13 22:57:05 +01:00
Max Kellermann
18cb34700e daemon: don't check the setsid() return value
There is only one valid error condition for setsid(): when the current
process is already the process group leader.  This is non-critical.
2009-01-13 21:45:44 +01:00
Max Kellermann
2532129755 daemon: don't fork twice to daemonize
To detach from the parent process, fork once and make the old process
exit.  No need to do that twice.
2009-01-13 21:44:42 +01:00
Max Kellermann
d8fc8ca7ba playlist: implement Fisher-Yates shuffle properly
MPD's shuffling algorithm was not implemented well: it considers songs
which were already swapped, making it somewhat non-random.

Fix the Fisher-Yates shuffle algorithm by passing the proper bounds to
the PRNG.
2009-01-13 21:25:19 +01:00
Max Kellermann
e7c7e652a3 input_curl: use select() to eliminate busy loop during connect
When decoder_run_song() (decoder_thread.c) waits for the input stream
to become ready, it did that in a busy loop.  Add a select() call to
input_curl_buffer() during connect/handshake (i.e. before the first
chunk of body data was received), to let the CPU relax.
2009-01-13 19:30:34 +01:00
Max Kellermann
d82061b7ff decoder_api: don't ignore DECODE_COMMAND_STOP
When the decoder thread is waiting for free chunks in the music pipe,
don't ignore the STOP command.  Just return dc.command without further
checks.
2009-01-13 18:15:25 +01:00
Max Kellermann
9069a244a4 configure.ac: added the --enable-sqlite option
MPD will (optionall) use sqlite databases in the future.  Add a
configure option to enable that.  There is no code yet to really use
sqlite, so the practical use of this patch is limited.
2009-01-12 09:56:14 +01:00