| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| | |
When libid3tag is disabled, the libmad decoder plugin is unable to
identify ID3 frames. If the file starts with an (unidentified) ID3
frame, it assumes that the file is not a valid MP3 song. This patch
solves this by adding minimal stubs for the ID3 functions.
|
| |
| |
| |
| |
| |
| | |
The function tag_ape_load() retrieves a 32 bit unsigned integer from
the input file, and passes it to g_malloc(). This is dangerous, and
may be used for a denial of service attack on MPD.
|
| |
| |
| |
| |
| | |
Extend the tagLen check after reading it. Removed the second
(redundant) check after the subtraction.
|
| |
| |
| |
| |
| |
| |
| | |
The expression "tagLen - size > 0" may result in an integer underflow
and a buffer overflow, when "size" is larger than "tagLen". "size" is
read from the input file, and must not be trusted. This patch changes
the expression to "tagLen > size", which is a lot safer.
|
| |
| |
| |
| |
| |
| | |
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().
|
| |
| |
| |
| |
| |
| | |
Splitted tag_id3_import_frame() into two specialized functions:
tag_id3_import_text() and tag_id3_import_comment(). Use
id3_frame_field() instead of directly accessing id3_frame.fields.
|
| |
| |
| |
| |
| | |
Changed "int type" to "enum tag_type". Converted "int is_id3v1" to
"bool".
|
| |
| |
| |
| | |
Prefer C over CPP.
|
| |
| |
| |
| | |
Renamed functions.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Renamed all playlist functions to non-CamelCase.
|
| |
| |
| |
| |
| | |
Previously, if two identical entities appeared in one string, only the
first would get decoded. This fixes that bug.
|
| |
| |
| |
| |
| | |
The soure file client.c has nearly 1000 lines, time for splitting it
into smaller pieces to improve readability.
|
| |
| |
| |
| | |
Prepare splitting client.c into several sources.
|
| |
| |
| |
| |
| |
| | |
Added a patch to flush out the last.fm input plugin slightly. It
basically turns it into a wrapper for the appropriate plugin. Most
notably metadata is now extracted.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of hard-coding the path "/etc/mpd.conf", use the configured
$(sysconfdir) path. This can be set with:
./configure --sysconfdir=/etc
Note that this changes the default path to "/usr/local/etc/mpd.conf",
given the default prefix "/usr/local". This is actually more correct
than the old default.
|
| |
| |
| |
| | |
Make the client list management a separate sub-library.
|
| |
| |
| |
| |
| | |
The client code uses portable GLib I/O functions and doesn't need the
OS specific socket headers.
|
| |
| |
| |
| |
| |
| |
| | |
Calculate the total play time with the audio_format object each time,
using audio_format_time_to_size(). The function
audioFormatSizeToTime() is not needed anymore, and will be removed
with this patch.
|
| | |
|
| |
| |
| |
| |
| | |
Don't abort the whole MPD process when the conversion fails. This has
been a denial-of-service attack vector for years.
|
| |
| |
| |
| | |
This library does not use GLib directly.
|
| | |
|
| |
| |
| |
| |
| | |
You cannot have a negative number of channels, let's pass it as
uint8_t instead of int8_t.
|
| |
| |
| |
| |
| | |
It is illegal to pass a NULL buffer to pcm_byteswap_X(). The result
of this is that pcm_byteswap_X() never returns NULL.
|
| |
| |
| |
| |
| |
| | |
Currently, byteswapping is performed on the format_buffer. This can
go wrong when this buffer is used twice during one run. Add a
separate buffer for swapping the byte order.
|