aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* output/recorder: new output plugin for recording radio streamsMax Kellermann2009-08-247-2/+338
| | | | | | | | | 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.
* conf: removed the deprecated "error_file" optionMax Kellermann2009-08-243-2/+1
| | | | | This option was deprecated by the 0.15 release. This patch makes this option invalid.
* Merged release 0.15.2 from branch 'v0.15.x'Max Kellermann2009-08-1511-73/+159
|\ | | | | | | | | | | | | Conflicts: NEWS configure.ac
| * mpd version 0.15.2release-0.15.2Avuton Olrich2009-08-152-2/+2
| |
| * output/shout: minimize the unpause latencyMax Kellermann2009-08-142-0/+8
| | | | | | | | | | During the pause loop, manually sleep for 500ms if shout_delay() returns a value greater than that. Don't exhaust libshout's buffer.
| * output: fixed shout stuck pause bugMax Kellermann2009-08-144-0/+22
| | | | | | | | | | | | 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.
| * directory: free empty directories after removing them (memleak)Max Kellermann2009-08-142-3/+9
| | | | | | | | | | dirvec_delete() does not free the object, we have to call directory_free() afterwards.
| * update: free temporary string in container scan (memleak)Max Kellermann2009-08-142-2/+7
| | | | | | | | The return value of map_directory_child_fs() must be freed.
| * decoder/flac: don't allocate cuesheet twice (memleak)Max Kellermann2009-08-142-4/+7
| | | | | | | | | | | | | | 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.
| * update: free empty path string (memleak)Max Kellermann2009-08-142-1/+3
| | | | | | | | | | When you pass an empty string to directory_update_init(), it was not freed by update_task().
| * decoder/flac: fixed indentation of flac_comment_value()Max Kellermann2009-07-221-19/+21
| |
| * decoder/flac: parse all replaygain tagsMax Kellermann2009-07-222-14/+19
| | | | | | | | | | The FLAC replaygain parser used the "||" operator. This made the code stop after the first value which was found.
| * decoder/flac: return early from flac_find_float_comment()Max Kellermann2009-07-221-21/+22
| | | | | | | | | | When one metadata check fails, return quickly. This removes 2 levels of indent.
| * decoder/flac: removed misplaced authorship commentMax Kellermann2009-07-221-1/+0
| | | | | | | | This belongs into "git annotate" or AUTHORS.
| * mad: skip ID3 frames when libid3tag is disabledMax Kellermann2009-07-222-6/+30
| | | | | | | | | | | | | | 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.
| * ape: added protection against large memory allocationsMax Kellermann2009-07-192-0/+4
| | | | | | | | | | | | 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.
| * tag_ape: removed redundant length checkMax Kellermann2009-07-191-3/+4
| | | | | | | | | | Extend the tagLen check after reading it. Removed the second (redundant) check after the subtraction.
| * ape: check the tag size (fixes integer underflow)Max Kellermann2009-07-182-1/+3
| | | | | | | | | | | | | | 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.
| * configure.ac: fix the --enable-alsa help stringMax Kellermann2009-07-171-2/+1
| | | | | | | | --enable means "enable", not "disable".
| * Modify version string to post-release version 0.15.2~gitAvuton Olrich2009-07-152-1/+4
| |
* | decoder_control: protect command, state with a mutexMax Kellermann2009-08-136-31/+241
| | | | | | | | | | | | 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.
* | use daemon() when the C library provides itMike Frysinger2009-08-132-7/+19
| | | | | | | | | | | | | | 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>
* | test: initialize locale in read_tags.cMax Kellermann2009-08-041-0/+10
| |
* | tag_id3: moved id3_genre_name() call to tag_id3_import_text()Max Kellermann2009-08-041-6/+6
| | | | | | | | | | The ID3_FRAME_GENRE field is queried only in tag_id3_import_text(). Don't pass the tag type to import_id3_string().
* | tag_id3: splitted function tag_id3_import_frame()Max Kellermann2009-08-041-119/+91
| | | | | | | | | | | | 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.
* | tag_id3: corrected parameter typesMax Kellermann2009-08-041-2/+3
| | | | | | | | | | Changed "int type" to "enum tag_type". Converted "int is_id3v1" to "bool".
* | tag_id3: converted tag_is_id3v1() to an inline functionMax Kellermann2009-08-041-1/+6
| | | | | | | | Prefer C over CPP.
* | tag_id3: no CamelCaseMax Kellermann2009-08-041-57/+64
| | | | | | | | Renamed functions.
* | ffmpeg_plugin: convert metadata to generic formatAnton Khirnov2009-08-032-1/+4
| |
* | command: moved command_process_list() to client.cMax Kellermann2009-07-293-35/+30
| |
* | playlist: CamelCaseIsBadCourtney Cavin2009-07-2811-107/+128
| | | | | | | | Renamed all playlist functions to non-CamelCase.
* | input/lastfm: Ensure multiple identical xml entities are decoded.Courtney Cavin2009-07-281-6/+5
| | | | | | | | | | Previously, if two identical entities appeared in one string, only the first would get decoded. This fixes that bug.
* | doc: removed deprecated mixer options from manpageMax Kellermann2009-07-281-19/+0
| | | | | | | | | | Removed documentation about the global options mixer_type, mixer_device and mixer_control.
* | client: splitted client.c into several piecesMax Kellermann2009-07-2812-875/+1138
| | | | | | | | | | The soure file client.c has nearly 1000 lines, time for splitting it into smaller pieces to improve readability.
* | client: moved struct client to client_internal.hMax Kellermann2009-07-283-44/+70
| | | | | | | | Prepare splitting client.c into several sources.
* | input/lastfm: use metadataCourtney Cavin2009-07-282-43/+299
| | | | | | | | | | | | 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.
* | cmdline: obey $(sysconfdir) for default mpd.conf locationMax Kellermann2009-07-283-1/+3
| | | | | | | | | | | | | | | | | | | | | | 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.
* | client: moved some code to client_list_X()Max Kellermann2009-07-231-13/+51
| | | | | | | | Make the client list management a separate sub-library.
* | client: don't include socket headersMax Kellermann2009-07-231-10/+0
| | | | | | | | | | The client code uses portable GLib I/O functions and doesn't need the OS specific socket headers.
* | player_thread: don't use precalculated size_to_timeMax Kellermann2009-07-232-22/+4
| | | | | | | | | | | | | | 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.
* | player_thread: moved code to update_song_tag()Max Kellermann2009-07-231-19/+27
| |
* | pcm_convert: use GError for error handlingMax Kellermann2009-07-2311-116/+181
| | | | | | | | | | Don't abort the whole MPD process when the conversion fails. This has been a denial-of-service attack vector for years.
* | pcm_resample_fallback: don't include glib.hMax Kellermann2009-07-221-1/+0
| | | | | | | | This library does not use GLib directly.
* | pcm_resample_fallback: removed G_GNUC_UNUSED attributeMax Kellermann2009-07-222-6/+3
| |
* | pcm_channels: num_channels is unsignedMax Kellermann2009-07-222-12/+12
| | | | | | | | | | You cannot have a negative number of channels, let's pass it as uint8_t instead of int8_t.
* | pcm_byteswap: converted NULL checks to assertionsMax Kellermann2009-07-222-10/+5
| | | | | | | | | | It is illegal to pass a NULL buffer to pcm_byteswap_X(). The result of this is that pcm_byteswap_X() never returns NULL.
* | pcm_convert: added pcm_convert_state.byteswap_bufferMax Kellermann2009-07-222-3/+8
| | | | | | | | | | | | 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.
* | filter/volume: check the flag audio_format.reverse_endianMax Kellermann2009-07-221-0/+7
| | | | | | | | The volume plugin does not work for reverse_endian samples.
* | audio_format: added API documentationMax Kellermann2009-07-221-0/+48
| |
* | audio_format: initialize reverse_endian in audio_format_init()Max Kellermann2009-07-221-0/+1
| | | | | | | | | | This line was missing in the reverse_endian patch, and led to undefined values and crashes in that attribute.