| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
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.
|
|
|
|
|
|
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.
|
|
|
|
Allow most printable characters in unquoted words. The tokenizer
patch introduced very strict requirements for command parameters -
those were undocumented, and we're reverting the strictness now.
|
|
"rescan" is the same as "update", but it discards existing songs in
the database.
|
|
|
|
Don't call g_error(), which will abort the process and dump core.
This patch does not affect all the config_get_X() functions. These
need some more refactoring.
|
|
|
|
Don't call g_error(), which will abort the process and dump core.
|
|
Don't call g_error(), which will abort the process and dump core.
|
|
|
|
Duplicate the path string within update.c, do not expect an allocated
string as parameter.
|
|
|
|
When parsing the songlength database fails, the code forgot to free
the memory allocated by the raw file data.
|
|
|
|
The caller is responsible fro freeing GError objects. That
g_error_free() call was missing in two places.
|
|
The error handler dereferences GError*, but did not retrieve that
object from g_file_get_contents().
|
|
Both options are deprecated, and should not be used anymore. Many
users get confused by their presence.
|
|
Include CoreServices/CoreServices.h.
|
|
|
|
Include CoreServices/CoreServices.h.
|
|
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
|
|
|
|
|
|
|
|
|
|
[mk: added autoconf test; fixed songlen_data_size type]
|
|
|
|
Still missing:
- seeking
- tags
- streaming
- encodings other than MPG123_ENC_SIGNED_16
|
|
|
|
fopen change for win32 in tag dup of vorbis
win32 adaption for head changes
|
|
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.
|
|
The recorder plugin writes audio played by MPD to a file. This may be
useful for recording radio streams.
This implementation is incomplete, because support for tags is
missing, and MPD should be able to record each track to a different
file.
|
|
This option was deprecated by the 0.15 release. This patch makes this
option invalid.
|
|
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().
|
|
Replace decoder_control.notify with decoder_control.mutex and
decoder_control.cond. Lock the mutex on all accesses to
decoder_control.command and decoder_control.state.
|
|
For systems that cannot support fork() (like no-mmu Linux), use daemon() if
it is available for the daemonizing code.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
The ID3_FRAME_GENRE field is queried only in tag_id3_import_text().
Don't pass the tag type to import_id3_string().
|