aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* output_thread: call replay gain filter manuallyMax Kellermann2010-05-024-17/+85
| | | | | | Don't add it to the filter chain, because we need to apply replay gain before cross-fading with the next song. Add a second replay_gain filter which is used for the song being faded in (chunk->other).
* player_thread: move cross-fading to output threadMax Kellermann2010-05-028-65/+50
| | | | | Remove cross_fade_apply(), and call pcm_mix() in the output thread, mixing the chunk and chunk->other together.
* chunk: added attribute "other"Max Kellermann2010-05-023-0/+10
| | | | Preparation for cross-fading support in the output thread.
* output_thread: moved code to ao_filter_open(), ao_filter_close()Max Kellermann2010-05-021-7/+19
|
* output_thread: moved filter invocation to ao_filter_chunk()Max Kellermann2010-05-021-16/+52
|
* filter/replay_gain: removed duplicate *dest_size_r assignmentMax Kellermann2010-05-021-1/+0
|
* replay_gain: added mode "auto"Daniel Seuthe2010-04-253-4/+23
|
* Merge branch 'master' of git://github.com/mcfiredrill/mpdMax Kellermann2010-04-202-0/+133
|\
| * Decoder for game music emulation library.Tony Miller2010-04-102-0/+133
| | | | | | | | | | | | | | | | Supports a number of videogame music formats, more info here: http://www.fly.net/~ant/libs/audio.html I wrote this plugin for the latest svn, get it here: http://code.google.com/p/game-music-emu/source/checkout
* | inotify_update: start update when directory is createdMax Kellermann2010-04-131-2/+6
| | | | | | | | | | | | | | This is useful at the maximum depth level, to update newly created directories. It is however questionable if the hard-coded 5 seconds delay is enough to create new directory trees with all of their files, but we might make that delay configurable in the future.
* | inotify: added setting "auto_update_depth"Max Kellermann2010-04-135-8/+34
| | | | | | | | | | Limits the depth of the watched directories. This is useful to keep resource usage down and speed up MPD startup.
* | conf: added function config_get_unsigned()Max Kellermann2010-04-132-0/+21
| |
* | decoder/ffmpeg: fix crash on startup in mpd_ffmpeg_log_callback()Charles Kerr2010-04-111-4/+9
|/ | | | | | | | | What's happening is the `ptr' argument to that function is NULL for me every time. `ptr' is unconditionally dereferenced to generate a log message, and this is where mpd crashes. Attached is a simple patch that tests for NULL and omits the log. With this patch the crash disappeared and mpd went back to working well.
* output/httpd: added name/genre/website configurationJames Pike2010-04-053-5/+25
|
* cue: fix code styleOrivej Desh2010-04-012-10/+9
|
* decoder/ffmpeg: print item name in log callbackMax Kellermann2010-03-281-1/+5
|
* cue: prepend pregap to the beginning of the trackOrivej Desh2010-03-282-4/+22
| | | | | | | | | | | | | | | | | | | | | | | .. rather then append to the end of the previous one Cuebreakpoints from the cuetools package has three modes of operation, and the default is to append pregap (INDEX 00) to the end of the previous track. This is the behavior most compliant to the existing cue files. Here is the patch which fixes the issue. I borrowed bits of implementation from cuebreakpoints. I assumed that the whole audio file must be covered by head-to-head going tracks, which is how hardware CD players probably work. In cue_tag I changed rounding from rounding up to rounding down because the thing in mpd which calculates actual track duration (and current position) rounds it down, and I didn't want to see in my playlist values different from whose in a now-playing progress bar. I've compared the resultant mpd behaviour with "mplayer -ss MM:SS.MS" where the time was supplied by cuebreakpoints and noticed that mplayer started each track a bit earlier then mpd, though this was the same before the patch.
* Merge release 0.15.9 from branch 'v0.15.x'Max Kellermann2010-03-287-23/+65
|\ | | | | | | | | | | | | | | | | Conflicts: NEWS configure.ac src/cue/cue_tag.c src/decoder/mpcdec_decoder_plugin.c src/player_thread.c
| * decoder/mpcdec: fix replay gain formula with v8Aleksei Kaveshnikov2010-03-191-0/+8
| | | | | | | | | | | | | | | | | | | | "When playing musepack files with mpd v0.15.8, rg seems to have no effect. Using sample file below, mpd says 'computing ReplayGain album scale with gain 122.879997, peak 0.549150'. One thing though, if I build mpd against old libmpcdec-1.2.6, rg works as expected: 'computing ReplayGain album scale with gain 16.820000, peak 0.099765'"
| * player_thread: postpone song tags during cross-fadeMax Kellermann2010-03-171-0/+27
| | | | | | | | | | | | | | | | | | Previously, tags of the new song being cross-faded in were sent immediately. That can cause wrong information being displayed, because the "previous" song might send its tag at the end again, overriding the "next" song's tag. This patch saves & merges the tag of the next song, and sends it when cross-fading is finished, and the next song really starts.
| * tag: added function tag_merge_replace()Max Kellermann2010-03-173-21/+26
| | | | | | | | | | Like tag_merge(), but can deal with NULL parameters, and frees both tag objects.
| * decoder/mpcdec: fix negative shift on fixed-point samplesPiotr Gozdur2010-03-171-1/+1
| | | | | | | | | | | | "There is a bug in fixed-point musepack (musepack_src_r435) playback. In floating-point audio is OK but in fixed audio is distorted. I have made a patch for this"
| * playlist: fix single+repeat in random modeMax Kellermann2010-03-071-1/+2
| | | | | | | | | | | | | | With single+repeat enabled, it is expected that MPD repeats the current song over andd over. With random mode also enabled, this didn't work, because the song order was shuffled internally. This patch adds a special check for this case.
| * decoder/mad: fix crash when seeking at end of songMax Kellermann2010-02-271-4/+0
| | | | | | | | | | | | Removed the decoder_command_finished() call at the end of mp3_decode(). This is invalid, because decoder_command_finished() has already been called in mp3_read().
* | Add support for building httpd_output plugin for win32Avuton Olrich2010-03-222-0/+10
| |
* | Define winnt or greater on mingw32 to take advantage of get*info().Avuton Olrich2010-03-212-0/+2
| |
* | strtok() is recursive by default on win32.Avuton Olrich2010-03-211-0/+4
| |
* | Add support for MixRamp tagsTim Phipps2010-03-2118-19/+423
| | | | | | | | | | Adds mixrampdb and mixrampdelay commands. Reads MIXRAP_START and MIXRAMP_END tags from FLAC files and overlaps instead of crossfading.
* | AudioCompress: explicitly include stdint.hMax Kellermann2010-03-171-0/+1
| | | | | | | | For int16_t.
* | decoder_api: use the correct format to calculate elapsed timeMax Kellermann2010-03-171-1/+1
| | | | | | | | | | | | When decoder->timestamp is calculated, the PCM data is already converted to out_audio_format; using in_audio_format may cause funny speedups/slowdowns.
* | command: allow "update" with slash or empty pathMax Kellermann2010-03-121-1/+4
| | | | | | | | | | | | | | When handle_update() was modified to use uri_safe_local(), suddently "mpc update ''" and "mpc update '/'" stopped working, because both are not a "safe" local URI. This patch adds a special case for these, to retain backwards compatibility.
* | output: added option "always_on" for radio stationsMax Kellermann2010-03-107-2/+61
| | | | | | | | | | | | | | Did you ever accidently click "stop" while feeding a radio station? This option sets the output device to "pause" to disable the "close" method. It falls back to "pause" then, which is specific to the plugin. Some plugins implement it by feeding silence.
* | output/jack: drain the ring buffers during pauseMax Kellermann2010-03-101-0/+7
| | | | | | | | | | If we're not doing this, and a new song is played after pause ends, then you will hear the rest of the previous song.
* | output/jack: synchronize all channelsMax Kellermann2010-03-101-9/+26
| | | | | | | | | | Always use the same number of samples from each channel's ring buffer. This ensures that all channels are kept in sync.
* | decoder/ffmpeg: fix indentationMax Kellermann2010-03-071-6/+6
| |
* | decoder/ffmpeg: implement the libavutil log callbackMax Kellermann2010-02-271-0/+31
| | | | | | | | Pass everything to the GLib logging library. No direct stderr access.
* | decoder/ffmpeg: don't close the AVFormatContext after open failureMax Kellermann2010-02-271-1/+0
| | | | | | | | The pointer is invalid if av_open_input_file() fails.
* | command: "update" checks if the path is malformedMax Kellermann2010-02-271-2/+16
| | | | | | | | | | | | This is a very basic check, which only ensures that the path does not begin with a slash, doesn't have double slashes and the special names "." and ".." are forbidden.
* | uri: allow leading dots, but explicitly exclude "." and ".."Max Kellermann2010-02-271-1/+4
| | | | | | | | | | Dots at the beginning of an URI segment are ok, as long as the special names "." and ".." are not used.
* | update: log start/finish of the update threadMax Kellermann2010-02-271-1/+11
| |
* | replay_gain: optionally use hardware mixer to apply replay gainMax Kellermann2010-02-174-6/+88
| | | | | | | | | | | | | | | | | | | | 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-173-2/+18
| |
* | replay_gain: reimplement as a filter pluginMax Kellermann2010-02-1714-159/+289
| | | | | | | | | | | | | | 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
| |
* | command: "listplaylist" dumps playlist filesMax Kellermann2010-02-083-0/+54
| | | | | | | | Same for "listplaylistinfo".
* | playlist_queue: moved code to playlist_mapper.cMax Kellermann2010-02-083-70/+137
| |