| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
If flac_container_decode() gets a seek destination which is out of
range, it ignores the SEEK command (never finishes it). This leads to
MPD lockup, because the player thread waits for completion.
|
|
|
|
|
| |
The oggflac plugin has been completely broken for quite a while and
nobody has noticed - maybe we should remove it?
|
|
|
|
| |
We need the function zzip_file_stat().
|
|
|
|
| |
We're using API functions which are not available in 0.3.
|
|
|
|
| |
This function was not present in SQLite < 3.4.
|
|
|
|
| |
Should be "lastfm_user", not "lastfm_username".
|
|
|
|
|
|
|
| |
The line buffer had a fixed size of 5 kB, and was allocated on the
stack. This was too small for some users. As a hotfix, we're
increasing the buffer size to 32 kB now, allocated on the heap. In
MPD 0.16, we'll switch to dynamic allocation.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Removed the NULL check. If that NULL check was correct, that would
have been a memory leak (vtrack).
|
|
|
|
|
|
|
|
| |
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 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
|
|
|
|
|
|
| |
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).
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
The update job id is positive. When used in a command list, MPD
prints one job id for each "update" command.
|
|
|
|
|
| |
Add a second column of comment signs on some parameters which users
shouldn't usually set, unless they know what they're doing.
|
|
|
|
|
| |
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
using ov_test_callback with function CALLBACKS_STREAMONLY will cause
scanning to stop after the comment field. ov_open (and ov_test)
default to CALLBACKS_DEFAULT which scans the file structure causing a
huge slowdown. The speed improvement is huge: It scanned my files
around 10x faster This procedure has been recommended by monthy (main
vorbis developer) and was said to be safe for scanning files.
|
|
|
|
|
|
|
| |
MPD checks if every flac (possibly other types as well) file contains
cuesheet on every update, which produces unneeded I/O. My music
collection is on NFS share, so it's quite noticeable. IMHO, it
shouldn't re-read unchanged files, so I wrote simple patch to fix it.
|
|
|
|
| |
Fix stuttering due to uninitialized variable.
|
| |
|
| |
|
|
|
|
|
| |
During the pause loop, manually sleep for 500ms if shout_delay()
returns a value greater than that. Don't exhaust libshout's buffer.
|
|
|
|
|
|
| |
Explicitly make the output thread leave the ao_pause() loop. This
patch is a workaround, and the "pause" flag is not managed in a
thread-safe way, but that's good enough for now.
|
|
|
|
|
| |
dirvec_delete() does not free the object, we have to call
directory_free() afterwards.
|
|
|
|
| |
The return value of map_directory_child_fs() must be freed.
|
|
|
|
|
|
|
| |
The function flac_cue_track() first calls FLAC__metadata_object_new(),
then overwrites this pointer with FLAC__metadata_get_cuesheet(). This
allocate two FLAC__StreamMetadata objects, but the first pointer is
lost, and never freed.
|
|
|
|
|
| |
When you pass an empty string to directory_update_init(), it was not
freed by update_task().
|
| |
|
|
|
|
|
| |
The FLAC replaygain parser used the "||" operator. This made the code
stop after the first value which was found.
|
|
|
|
|
| |
When one metadata check fails, return quickly. This removes 2 levels
of indent.
|
|
|
|
| |
This belongs into "git annotate" or AUTHORS.
|