aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* playlist: emit IDLE_OPTIONS when resetting single modeMax Kellermann2010-06-011-0/+2
|
* single mode: at the end of the song, pause on the next song instead of stopRomain Bignon2010-05-313-19/+13
|
* directory_print: return voidMax Kellermann2010-05-312-7/+3
| | | | There is no useful return value here.
* fix crash when decoder is NULLRomain Bignon2010-05-311-2/+2
|
* decoder/mikmod: fix memory leakMax Kellermann2010-05-311-2/+4
| | | | | The return value of Player_LoadTitle() is allocated with malloc(), and must be freed by the caller.
* decoder/mikmod: duplicate the path only onceMax Kellermann2010-05-311-2/+2
|
* decoder/mikdmod: moved local variable declarations in tag_dup()Max Kellermann2010-05-311-12/+8
|
* decoder/wildmidi: moved local variable declarations in tag_dup()Max Kellermann2010-05-311-7/+3
|
* decoder/gme: replace macro GME_BUF_SIZEMax Kellermann2010-05-311-4/+5
| | | | | Added macros with better names: GME_BUFFER_FRAMES, GME_BUFFER_SAMPLES (the former only used to calculate the latter).
* decoder/gme: added constants for sample rate and channelsMax Kellermann2010-05-311-6/+12
| | | | Move into enums.
* decoder/gme: pass the whole buffer to decoder_data()Max Kellermann2010-05-311-2/+2
| | | | | | | | Pass sizeof(buf) to decoder_data(), not the number of samples (which is half the size). At the same time, pass GME_BUF_SIZE to gme_play() - libgme really wants to get the number of samples, not the number of stereo frames. Previously, this plugin had been using only the first half of the buffer.
* decoder/gme: allocate tag later, fixes memory leakMax Kellermann2010-05-311-1/+1
| | | | Allocate the "tag" object after the file has been opened successfully.
* decoder/mp4ff: rename and move local variableMax Kellermann2010-05-311-6/+5
| | | | | Allocate the "tag" object after the file has been checked. That removes one tag_free() call in an error handler.
* decoder/mp4ff: merge code into mp4ff_input_stream_open()Max Kellermann2010-05-311-17/+17
|
* decoder/mp4ff: move mp4ff_callback_t into mp4ff_input_streamMax Kellermann2010-05-311-12/+15
| | | | Allocate only one item on the stack.
* decoder/mp4ff: rename mp4_context to mp4ff_input_streamMax Kellermann2010-05-311-9/+9
|
* decoder/mp4ff: remove duplicate entries in the tag name tableMax Kellermann2010-05-311-9/+5
| | | | Reuse the function tag_name_parse_i().
* decoder/mp4ff: moved code to mp4ff_tag_name_parse()Max Kellermann2010-05-311-1/+7
|
* tag_ape: remove duplicate entries in the tag name tableMax Kellermann2010-05-311-13/+5
| | | | Reuse the function tag_name_parse_i().
* tag_ape: move code to tag_ape_name_parse()Max Kellermann2010-05-311-1/+7
|
* decoder/vorbis: rename local variable "ret"Max Kellermann2010-05-311-6/+5
|
* decoder/vorbis: implement method stream_tag()Max Kellermann2010-05-311-11/+4
| | | | This allows tags in archive files.
* decoder/vorbis: move code to vorbis_open_stream()Max Kellermann2010-05-311-19/+23
|
* decoder/vorbis: use single global ov_callbacks constantMax Kellermann2010-05-301-6/+9
| | | | Initialize the ov_callbacks struct at compile time.
* decoder/vorbis: rename struct vorbis_decoder_data to vorbis_isMax Kellermann2010-05-301-20/+19
|
* inotify_update: follow symlinksMax Kellermann2010-05-301-2/+1
| | | | | | This is probably unsafe, and doesn't protect against symlink loops, but we will eventually add this when we bring update*.c and inotify*.c closer together.
* inotify_update: fix assertion failure when music dir is deletedMax Kellermann2010-05-301-1/+7
| | | | | | | | This shouldn't really happen, but insane users might delete/rename the music directory while MPD runs. What was even more insane was that MPD crashed due to this. This is a workaround - there is currently nothing useful we can do in this case; except maybe poll for the music directory to reappear, but that's too much trouble for a user error.
* decoder/mp4ff: support tags "albumartist", "band"Max Kellermann2010-05-301-0/+2
| | | | | I'm not sure if mapping "band" to TAG_PERFORMER is correct, but it might be better than nothing.
* decoder/mp4ff: use tag_table.h to parse tag namesMax Kellermann2010-05-301-18/+15
| | | | Convert if/else/else/... to a loop.
* decoder/mp4ff: rename plugin "mp4" to "mp4ff"Max Kellermann2010-05-301-1/+1
| | | | | The underlying library is named "libmp4ff". To reduce confusion, rename the plugin to a more specific name.
* tag_ape: move table lookup to tag_table.hMax Kellermann2010-05-302-9/+52
| | | | Allow code sharing.
* tag_ape: support album artist, MusicBrainz tagsMax Kellermann2010-05-301-1/+8
| | | | | | | | | | I took these tag names from a MusePack sample file I got from a user. These are not documented in the APE specification: http://wiki.hydrogenaudio.org/index.php?title=APE_key People seem to be using undocumented extensions to the specification anyway, and the best we can do is attempt to support them.
* Merge release 0.15.10 from branch 'v0.15.x'Max Kellermann2010-05-302-5/+28
|\ | | | | | | | | | | | | Conflicts: NEWS configure.ac src/input/mms_input_plugin.c
| * decoder/mad: fix buffer variable name on !HAVE_ID3TAGMax Kellermann2010-05-301-3/+3
| |
| * input/mms: initialize the "eof" attributeMax Kellermann2010-05-181-0/+2
| |
| * input/mms: fix memory leak in error handlerMax Kellermann2010-05-181-0/+1
| |
| * decoder/mad: properly calculate ID3 size without libid3tagMax Kellermann2010-04-131-5/+25
| | | | | | | | | | | | | | | | | | | | Without libid3tag, we were trying to skip the ID3 frame (since 0.15.2). Its length however was not calculated at all, we were just dropping everything from the current input buffer. This lead to the first few seconds of the file being skipped. This patch attempts to calculate the ID3v2 frame size with the formula from: http://www.id3.org/id3v2.4.0-structure 3.1 and 6.2
* | filter/replay_gain: added option "replaygain_limit"Daniel Seuthe2010-05-308-14/+26
| |
* | cmdline: Add default config paths for win32.Avuton Olrich2010-05-201-1/+38
| |
* | output/win32: new output plugin for Windows WaveMax Kellermann2010-05-202-0/+300
| |
* | pcm_buffer: 8 kB alignment instead of 64 kBMax Kellermann2010-05-201-2/+2
| | | | | | | | | | | | | | | | Reduce the overhead. Most buffers used by MPD are around 2 to 4 kB. 8 kB seems large enough to keep heap fragmentation low. Additionally, this patch fixes an off-by-one error in the alignment formula.
* | tag_{id3,ape}: explicitly open files in binary modeMax Kellermann2010-05-202-2/+2
| | | | | | | | Add the flag "b" to fopen(). Windows compatibility.
* | input/file, output/{fifo,recorder}: add O_BINARY to open() flagsMax Kellermann2010-05-204-7/+49
| | | | | | | | Windows compatibility.
* | client: use sprintf() on WIN32Max Kellermann2010-05-191-0/+13
| | | | | | | | | | | | On mingw32, snprintf() expects a 64 bit integer instead of a "long int" for "%li" - this is not consistent with our expectation, so we're using plain sprintf().
* | event_pipe: use g_io_channel_read_chars() to drain the pipeMax Kellermann2010-05-191-6/+14
| | | | | | | | | | | | | | For some unknown reason, read() blocks on WIN32, even though it was invoked inside the G_IO_IN callback. By switching to GIOChannel functions, this problem is solved, and it works on both Linux and Windows.
* | event_pipe: call g_io_channel_win32_new_fd()Max Kellermann2010-05-191-0/+5
| | | | | | | | | | | | On WIN32, use g_io_channel_win32_new_fd() instead of g_io_channel_unix_new(). There doesn't seem to be a practical difference, but it seems more correct.
* | update_walk: don't check recursive symlinks on WIN32Max Kellermann2010-05-191-0/+8
| | | | | | | | | | inode numbers don't work on WIN32, and very few WIN32 users actually use symlinks - seems ok to disable that check.
* | crossfade: emulate strtok_r() on WIN32 with a functionMax Kellermann2010-05-181-1/+5
| | | | | | | | | | Not a CPP macro. This adds the "unused" attribute to "saveptr", which eliminates one gcc warning.
* | command: fallback strftime() formats on WIN32Max Kellermann2010-05-182-3/+11
| | | | | | | | On WIN32, "%F" and "%T" are not implemented.
* | socket_util: fix setsockopt() argument type on WIN32Max Kellermann2010-05-181-1/+7
| | | | | | | | | | In the winsock headers, the setsockopt() argument is declared as "const char *", not "const void *".