| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Use a single GString buffer object in all functions loading the
database. Enlarge it automatically for long lines. This eliminates
the maximum line length for tag values. There is still an upper limit
of 512 kB to prevent denial of service, but that's reasonable I guess.
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
src/decoder/ffmpeg_plugin.c
src/update.c
|
| |
| |
| |
| |
| |
| | |
Convert the metadata with the libavformat function av_metadata_conv().
This ensures that canonical tag names are provided by libavformat, and
we can remove the "artist" vs "author" workaround.
|
| |
| |
| |
| |
| |
| | |
When you disable the "follow_outside_symlinks" or the
"follow_inside_symlinks" setting, the next update should remove the
now-ignored files from the database.
|
| |
| |
| |
| |
| | |
Basically the same as the 0.15.5 patch "check again if output is open
on CANCEL". Same race condition, same fix.
|
| | |
|
| |
| |
| |
| |
| | |
When the songs of two albums are in the same directory, all songs of
an album should be right next to each others.
|
| |
| |
| |
| |
| | |
Always keep the audio_output object locked within the output thread,
unless a plugin method is called. This fixes several race conditions.
|
| |
| |
| |
| |
| |
| | |
The recovery is for nothing if we get CLOSE afterwards. Let's not
recover in the cancel() method, and let the next play() call sort it
out.
|
| |
| |
| |
| | |
Based on the XSPF playlist plugin.
|
| |
| |
| |
| |
| |
| | |
An asterisk means that this attribute should not be enforced, and
stays whatever it used to be. This way, some configuration values
work like masks.
|
| |
| |
| |
| |
| | |
.. and keep up the JACK connection while MPD runs. Allocate the ring
buffers on the first open, and free them at MPD exit.
|
| |
| |
| |
| | |
Don't disconnect from JACK during pause.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This is a complete rewrite of the PulseAudio output plugin. It uses
the asynchronous API, which gives us more control over everything.
Additionally, it connects to the PulseAudio server on startup, and
keeps this connection up while MPD runs. During pause, instead of
closing the stream, it enables "cork".
|
| |
| |
| |
| | |
This looks nicer in the PulseAudio manager than just "mpd".
|
| |
| |
| |
| | |
This allows PulseAudio to do some advanced tweaks.
|
|\|
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
src/decoder/flac_plugin.c
src/update.c
|
| | |
|
| |
| |
| |
| |
| |
| | |
Don't initialize "vc" and "cs" with FLAC__metadata_object_new(); that
value is overwritten by FLAC__metadata_get_tags() and
FLAC__metadata_get_cuesheet().
|
| |
| |
| |
| | |
The return value of map_directory_child_fs() must be freed.
|
| |
| |
| |
| |
| |
| |
| |
| | |
When the player thread unpauses, it sends CANCEL to the output thread,
after having checked that the output is still open. Problem is when
the output thread closes the device before it can process the CANCEL
command - race condition. This patch adds another "open" check inside
the output thread.
|
| |
| |
| |
| |
| | |
When the range end is missing, then the maximum possible value is
assumed.
|
| |
| |
| |
| |
| | |
The new command "replay_gain_mode" allows the user to switch the
replay gain mode on-the-fly. No more mpd.conf editing.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This has been replaced by the last.fm playlist plugin. The input
plugin has never worked well, and was just a playground to experiment
with the last.fm radio protocol.
|
| |
| |
| |
| |
| |
| | |
This patch integrates the playlist plugin API to the MPD core. We'll
be able to do much more in the future with that API, that's just the
beginning.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| | |
When the connection is lost while buffering, the CURL input plugin may
enter an endless loop, because it does not check the EOF condition.
This patch makes fill_buffer() return success only if there's at least
one buffer, which is enough of a check.x
|
| |
| |
| |
| |
| |
| |
| | |
Accidently, MPD has been using several GLib 2.16 functions for a
while, and nobody noticed yet. To simplify the code base, let's bump
the minimum GLib version for MPD to 2.16. That version is old enough,
and it's reasonable to expect users to have it.
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| |
| | |
On 32 bit systems with large file support enabled (i.e. "sizeof(off_t)
> sizeof(size_t)") gcc emits a warning because a size_t cast to off_t
can never become negative.
|
| |
| |
| |
| |
| |
| | |
When there is no Content-Type response header, try the "mad" decoder
plugin. It uesd to be named "mp3", and we forgot to change the
fallback name in decoder_thread.c.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a received chunk of data has only icy-metadata, there was no
usable data left for input_curl_read() to return, and thus it returned
0 bytes. "0" however is a special value for "end of file" or
"error". This patch makes input_curl_read() read more data from the
socket, until the read request can be fulfilled (or until there's
really EOF).
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
No more CD player emulation. The current behaviour of "previous" is
difficult for a client to predict, because it does not definitely know
the current position within the song. If a client wants to restart
the current song, it can always send "playid".
|
| |
| |
| |
| | |
This fixes mpg123 support.
|
| |
| |
| |
| |
| |
| | |
If nothing has changed since the last save, don't save the state
file. Saving will spin up the hard drive, which is undesirable on
hosts where MPD is idling in background.
|
|\|
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Usually, we read our "artist" tag from ffmpeg's "author" tag. In some
cases however (e.g. APE), this tag is named "artist". This patch
implements a fallback: if no "author" is found, MPD tries to use
"artist".
|
| |
| |
| |
| |
| |
| | |
When the ID3 tag in an AAC file is larger than the current buffer, the
function decoder_buffer_consume() aborts. By using the new function
decoder_buffer_skip() instead, we can safely skip the ID3 tag.
|
| |
| |
| |
| | |
Include CoreServices/CoreServices.h.
|
| | |
|
| |
| |
| |
| |
| |
| | |
This patch implements a light-weight inotify library, and watches all
directories below the music directory. It updates all directories
where files changed after a delay of 5 seconds.
|
| |
| |
| |
| |
| | |
Both options are deprecated, and should not be used anymore. Many
users get confused by their presence.
|
| |
| |
| |
| | |
Include CoreServices/CoreServices.h.
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
doc/mpdconf.example
|
| |
| |
| |
| |
| | |
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
|