aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* replay_gain: optionally use hardware mixer to apply replay gainMax Kellermann2010-02-178-6/+116
| | | | | | | | | | Add an option for each audio output which enables the use of the hardware mixer, instead of the software volume code. This is hardware specific, and assumes linear volume control. This is not the case for hardware mixers which were tested, making this patch somewhat useless, but we will use it to experiment with the settings, to find a good solution.
* replay_gain: fall back to track gain if album gain is unavailableMax Kellermann2010-02-174-2/+19
|
* replay_gain: reimplement as a filter pluginMax Kellermann2010-02-1718-161/+310
| | | | | | | Apply the replay gain in the output thread. This means a new setting will be active instantly, without going through the whole music pipe. And we might have different replay gain settings for each audio output device.
* replay_gain_info: allocate the struct staticallyMax Kellermann2010-02-1710-133/+71
| | | | | | Don't allocate each replay_gain_info object on the heap. Those objects who held a pointer now store a full replay_gain_info object. This reduces the number of allocations and heap fragmentation.
* replay_gain_info: use INFINITY to mark undefined valuesMax Kellermann2010-02-172-3/+3
| | | | | | | | | The previous patch not only moved code, it also changed the check. Negative gain values seem to be valid after all, there just was the "magic" value 0.0 which means "not available". This patch changes the "magic" value to "INFINITY", and uses the C99 function isinf() to check. It might have been a better idea to use "NAN", but the "NAN" macro is a GNU extension.
* replay_gain_state: moved code to replay_gain_tuple_scale()Max Kellermann2010-02-153-19/+21
| | | | | Moved (and renamed) the function calc_replay_gain_scale() to replay_gain_info.c.
* replay_gain: added function defined()Max Kellermann2010-02-152-12/+18
| | | | This function determines whether replay gain data is available.
* filter/volume: assign dest_size_r early, eliminate oneMax Kellermann2010-02-151-4/+3
|
* Makefile.am: remove sticker.xmlMax Kellermann2010-02-081-1/+1
|
* doc: deleted sticker specification proposalMax Kellermann2010-02-082-94/+0
| | | | | This document has been unmaintained for more than a year now (since the day it was submitted).
* command: "listplaylist" dumps playlist filesMax Kellermann2010-02-084-5/+74
| | | | Same for "listplaylistinfo".
* playlist_queue: moved code to playlist_mapper.cMax Kellermann2010-02-084-70/+139
|
* playlist_queue: moved check_translate_song() to playlist_song.cMax Kellermann2010-02-084-118/+174
|
* song_print: song_print() returns voidMax Kellermann2010-02-083-10/+12
| | | | The only "return" statement always returns 0.
* ffmpeg: read more metadata.Anton Khirnov2010-02-021-1/+12
|
* decoder/flac: fix replay gain (short-circuiting "or")Tim Phipps2010-01-281-8/+13
|
* configure.ac: new libwrap autoconf testMax Kellermann2010-01-202-33/+23
| | | | Use MPD_AUTO_RESULT(). Don't force libwrap by default.
* client: optionally use libwrapDavide Camurri2010-01-205-0/+72
|
* decoder/wavpack: fixed WVC URIMax Kellermann2010-01-201-4/+5
| | | | Pass the current URI to wavpack_open_wvc().
* decoder/ffmpeg: call decoder_timestamp() once per packetMax Kellermann2010-01-181-5/+5
|
* decoder/ffmpeg: merged ffmpeg_helper() into ffmpeg_decode()Max Kellermann2010-01-181-116/+67
|
* decoder/ffmpeg: optimized the stream_tag() methodMax Kellermann2010-01-181-25/+27
| | | | Don't use the function ffmpeg_helper(), don't initialize the codec.
* decoder/ffmpeg: free AVFormatContext on errorMax Kellermann2010-01-181-0/+4
| | | | Fix a memory leak in some code paths.
* decoder_api: removed function decoder_get_uri()Max Kellermann2010-01-187-54/+11
| | | | Use input_stream.uri.
* input_stream: added attribute "uri"Max Kellermann2010-01-188-10/+18
|
* input_stream: added function input_stream_deinit()Max Kellermann2010-01-189-2/+16
| | | | All close() implementations must call this method.
* Merge release 0.15.8 from branch 'v0.15.xMax Kellermann2010-01-184-8/+45
|\ | | | | | | | | | | | | | | | | Conflicts: Makefile.am NEWS configure.ac src/decoder/ffmpeg_decoder_plugin.c src/decoder_thread.c
| * mpd version 0.15.8release-0.15.8Avuton Olrich2010-01-182-2/+2
| |
| * decoder/ffmpeg: added more MIME typesMax Kellermann2010-01-171-0/+6
| | | | | | | | Taken from the ffmpeg sources.
| * Makefile.am: link test/run_decoder and test/read_tags with timer.cMax Kellermann2010-01-171-0/+2
| | | | | | | | Needed for the fluidsynth decoder plugin.
| * decoder/ffmpeg: append file name suffix to virtual stream URLMax Kellermann2010-01-172-4/+29
| | | | | | | | | | | | | | To allow libavformat to detect the format of the input file, append the suffix of the input file to the URL of the virtual stream. This specifically enables the "shorten" codec, which is supported by libavformat/raw.c, detected only by the suffix.
| * configure.ac: disable -Wdeclaration-after-statementMax Kellermann2010-01-171-1/+0
| | | | | | | | Allow declaration after statement.
| * queue: don't repeat current song in consume modeMax Kellermann2010-01-162-2/+3
| | | | | | | | | | Check consume mode in queue_next_order(), because the current song would be deleted as soon as it's finished; it cannot be played again.
| * decoder_thread: fix CUE track playbackMax Kellermann2010-01-162-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | The patch "input/file: don't fall back to parent directory" introduced a regression: when trying to play a CUE track, decoder_run_song() tries to open the file as a stream first, but this fails, because the path is virtual. This patch fixes decoder_run_song() (instead of reverting the previous patch) to accept input_stream_open() failures if the song is a local file. It passes the responsibility to handle non-existing files to the decoder's file_decode() method.
| * NEWS: added missing entryMax Kellermann2010-01-161-0/+1
| |
| * dbUtils: return empty tag value only if no value was foundMax Kellermann2010-01-021-1/+4
| | | | | | | | | | | | | | | | This fixes a regression in the patch "return multiple tag values per song": even when the song has values for the specified tag type, the empty string gets added to the set, because the "return" was removed. This patch adds a flag which remembers whether at least one value was found.
* | decoder_thread: don't fall back to "mad" unless no plugin matchesMax Kellermann2010-01-172-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | When all plugins have failed, MPD used to fall back to the "mad" decoder plugin, to handle those radio streams without a Content-Type response header. This however leads to unexpected results (garbage being played) when the stream isn't really mp3. Since we care little about "bad" streams, we shouldn't have hacks which have bad side effects. Let's get rid of this hack now! Only try to "mad" plugin if there was no match at all (Content-Type, path suffix) and no other plugin has been tried.
* | decoder_thread: don't try a plugin twice (MIME type & suffix)Max Kellermann2010-01-172-10/+57
| | | | | | | | Manage a linked list of plugins which were already tried.
* | fd_util: include ws2tcpip.h for socklen_tMax Kellermann2010-01-171-0/+1
| |
* | fd_util: fixed WIN32 versions of pipe()Max Kellermann2010-01-171-2/+2
| | | | | | | | Use the correct parameter name.
* | text_file: don't strip trailing whitespaceMax Kellermann2010-01-171-1/+6
| | | | | | | | | | Only delete the newline characters (\n and optionally \r). This allows the database file to store file names with trailing whitespace.
* | output/pulse: clear the "mainloop" attribute on errorMax Kellermann2010-01-171-2/+3
| | | | | | | | | | | | | | | | When enabling the pulse device fails, clear po->mainloop after pa_threaded_mainloop_free() has finished. This is important for the assertions. Two wrong g_free() calls were also removed.
* | output/alsa: support packed 24 bit samplesMax Kellermann2010-01-171-0/+13
| |
* | audio_format: support packed 24 bit samplesMax Kellermann2010-01-1612-1/+278
| |
* | output/alsa: probe all sample formats in a loopMax Kellermann2010-01-161-36/+34
| | | | | | | | | | More code simplification. Probe all formats, no matter which input format.
* | output/alsa: merged code into alsa_output_try_format()Max Kellermann2010-01-161-51/+71
| | | | | | | | | | Remove the debug log messages, because they are duplicate (see ao_open() in output_thread.c).
* | output/alsa: pass sample_format to get_bitformat()Max Kellermann2010-01-161-3/+3
| |
* | output/alsa: moved code to alsa_output_setup_format()Max Kellermann2010-01-161-72/+80
| |
* | test/run_convert: implement a GLib log callbackMax Kellermann2010-01-161-0/+12
| | | | | | | | | | Log to stderr instead of the default stdout. We need a pristine stdout for the conversion result.
* | test/run_convert: use fifo_buffer to adapt to odd sample sizesMax Kellermann2010-01-162-3/+27
| | | | | | | | | | Ensure that the pcm_convert() length argument is aligned to the sample size.