aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Modify version string to post-release version 0.14.3~gitv0.14.xAvuton Olrich2009-02-132-1/+4
|
* mpd version 0.14.2Avuton Olrich2009-02-132-4/+2
|
* update: free deleted subdirectoriesMax Kellermann2009-02-122-2/+7
| | | | | | Use delete_directory() for removing sub directories instead of dirvec_clear(). This ensures that all memory occupied by subdirectories of deleted directories is freed.
* update: recursively purge deleted directoriesMax Kellermann2009-02-122-1/+2
| | | | | | | When a directory is deleted, MPD deleted only the directory from the database; it did not bother to walk the full tree to free all memory and to remove deleted songs from the playlist. Replace a dirvec_delete() with delete_directory().
* aac: fix stream metadataMax Kellermann2009-02-122-1/+2
| | | | | Pass the input_stream object to decoder_data(). Without it, the MPD core does not see stream tags.
* ffmpeg: added TTA supportMax Kellermann2009-02-112-0/+3
| | | | | The ffmpeg library supports the "True Audio Codec". The entry in ffmpeg_suffixes was missing.
* configure.ac: define HAVE_FFMPEG after all checksMax Kellermann2009-02-092-2/+7
| | | | | | Don't define HAVE_FFMPEG if the ffmpeg libraries were found via pkg-config, but ffmpeg support was disabled because avcodec_decode_audio2() is not available.
* shout: clear buffer before calling the encoderMax Kellermann2009-02-094-18/+15
| | | | | | | Always assume the buffer is empty before calling the encoder. Always flush the buffer immediately after there has been added something. This reduces the risk of buffer overruns, because there will never be a "rest" in the current buffer.
* shout: don't postpone metadataMax Kellermann2009-02-094-34/+15
| | | | | Don't duplicate the tag received by the send_metadata() method - send it to the shout server directly.
* shout: use libshout's synchronizationMax Kellermann2009-02-093-24/+5
| | | | | Removed the manual timer synchronization from the shout plugin. libshout's shout_sync() function does it for us.
* shout: switch to blocking modeMax Kellermann2009-02-093-78/+9
| | | | | | The non-blocking mode of libshout is sparsely documented, and MPD's implementation had several bugs. Also removed connect throttling code, that is done by the MPD core since 0.14.
* shout: removed shout_data.tag_to_sendMax Kellermann2009-02-092-9/+6
| | | | | When shout_data.tag!=NULL, there is a "tag to send". The tag_to_send flag is redundant.
* shout: removed shout_data.shout_errorMax Kellermann2009-02-092-4/+0
| | | | That variable is set in handle_shout_error(), but is never read.
* ffmpeg: enable WAV streamingQball Cow2009-02-042-0/+2
|
* ffmpeg: fixed seek integer overflowMax Kellermann2009-02-032-3/+5
| | | | | | | The "current" variable is used for calculating the seek destination, and was declared as "int". With very long song files, the 32 bit integer can overflow. ffmpeg expects an int64_t, which is very unlikely to overflow. Switch to int64_t.
* ffmpeg: check if the time stamp is validMax Kellermann2009-02-032-4/+6
| | | | | | When ffmpeg cannot estimate the elapsed time, it sets AVPacket.pts=AV_NOPTS_VALUE. Our ffmpeg decoder plugin did not check for that special value.
* ffmpeg: don't warn of empty packet outputMax Kellermann2009-02-032-3/+3
| | | | | | If avcodec_decode_audio2() returns no output for an AVPacket, libavcodec may buffer some data, and return a larger chunk of output later. This patch disables a lot of bogus warnings.
* ffmpeg: print codec nameMax Kellermann2009-02-031-0/+3
| | | | | | Output the name of the codec as a debug message. During my tests, ffmpeg never filled this struct member, but it may do so in the past, and this debug message might become helpful.
* shout_mp3: call lame_close() in clear_encoder() methodMax Kellermann2009-02-022-2/+7
| | | | | | | | | | The shout_mp3 encoder had two bugs: when no song was ever played, MPD segfaulted during cleanup. Second bug: memory leak, each time the shout device was opened, lame_init() was called again, and lame_close() is only called once during shutdown. Fix this by shutting down LAME each time the clear_encoder() method is called.
* shout_mp3: free the lame_data struct on exitMax Kellermann2009-02-021-0/+2
| | | | | Make valgrind a little bit happier: free the global lame_data struct in the finish() method.
* player_thread: set player error when output device failsMax Kellermann2009-02-022-1/+5
| | | | | | When the output device fails to play a chunk, set pc.error to PLAYER_ERROR_AUDIO. This way, the playlist knows that it should not queue the next song.
* mikmod: call MikMod_Exit() only in the finish() methodMatthias Drochner2009-01-302-6/+1
| | | | | | | | | | | | | | | Hi - independently of libmikmod's other problems - there seems to be a problem in mpd's wrapper: MikMod_Exit() is called after the first file is decoded, which frees some ressources within the mikmod library. An attempt to play a second file leads to a crash. The appended patch fixes this for me. (I don't know what the "dup" entry is good for - someone who knows should review that too.) best regards Matthias [mk: removed 3 more MikMod_Exit() invocations]
* wavpack: pass NULL if the .wvc file fails to openMax Kellermann2009-01-302-1/+4
| | | | | | The wavpack library seems to use the .wvc stream even if the OPEN_WVC flag is not set. In this case, pass NULL to be sure libwavpack won't use it.
* mapper: ignore duplicate slashes in playlistsMax Kellermann2009-01-301-0/+3
| | | | | | | | | | | | | | When there are duplicate slashes in the song paths, eliminate them; example: /var/lib/mpd/music//foo.mp3 becomes: /var/lib/mpd/music/foo.mp3 The slash is only detected at the border between the music_directory and the local part.
* mapper: remove trailing slashes from music_directoryMax Kellermann2009-01-302-1/+16
| | | | | | When the user configures a music_directory with a trailing slash, it may break playlist loading, because MPD expects a double slash. Chop off the trailing slash.
* ffmeg: added support for the tags comment, genre, yearDavid Horn2009-01-302-0/+12
| | | | | | | | | | | | ffmpeg_tag_internal() does not look for a few tags that mpd supports. Most noteably: comment -> TAG_ITEM_COMMENT -> Description genre -> TAG_ITEM_GENRE -> WM/Genre (not WM/GenreID) year -> TAG_ITEM_DATE -> WM/Year I *think* that this is the last of the tags that AVFormatContext() in ffmpeg supports that mpd also uses.
* jack: reduced sleep time to 1msMax Kellermann2009-01-292-1/+2
| | | | | | | | | | When waiting for free space in the ring buffer, the JACK plugin sleeped 10ms until there is enough space. This delay was too large for low-latency setups (<10ms), and created a lot of xruns. Work around that by reducing the sleep time to 1ms. A proper solution for this would be to use an event based approach, and we will do it, just not now.
* jack: clear "shutdown" flag on reconnectMax Kellermann2009-01-292-0/+3
| | | | | | | When the connection failed once, you had to restart MPD, because it never cleared the jack_data.shutdown flag. Instead, it refused to play anything "because there is no client thread" (which is wrong at that point).
* jack: allocate ring buffers before connectingMax Kellermann2009-01-292-5/+5
| | | | | If the ring buffers are allocated after jack_activate(), mpd_jack_process() might segfault because it attempts to access them.
* jack: register ports before activating clientsMax Kellermann2009-01-291-5/+5
| | | | Call jack_port_register() before jack_activate().
* Modify version string to post-release version 0.14.2~gitAvuton Olrich2009-01-172-1/+4
|
* mpd version 0.14.1release-0.14.1Avuton Olrich2009-01-172-2/+2
|
* oggvorbis: disable seeking on remote songsMax Kellermann2009-01-172-6/+25
| | | | | | | | | | | | When libvorbis knows that a song is seekable, it seeks around like crazy in the file before starting to decode it. This is very expensive on remote HTTP resources, and delays MPD for 10 or 20 seconds. This patch disables seeking on remote songs, because the advantages of quickly playing a song seem to weigh more than the theoretical ability of seeking for most MPD users. If users feel this feature is needed, we will make a configuration option for that.
* decoder_api: added assertion on partial framesMax Kellermann2009-01-161-0/+1
| | | | Decoder plugins must not send partial frames.
* pcm_resample_fallback: corrected the sample calculationMax Kellermann2009-01-162-2/+5
| | | | | Due to rounding errors, it was possible that the fallback resampler returned partial frames.
* oggvorbis: define HAVE_OGGVORBIS when tremor is enabledMax Kellermann2009-01-152-1/+4
| | | | When tremor (libvorbisidec) is used, HAVE_OGGVORBIS was not defined.
* input_curl: don't call input_curl_select() when already at EOFMax Kellermann2009-01-151-1/+3
| | | | | | Calling input_curl_select() after EOF has been reached causes an assertion failure. This can happen if the HTTP response is empty. Check c->eof before calling input_curl_select().
* input_curl: set "ready" flag on EOFMax Kellermann2009-01-152-0/+6
| | | | Set the "ready" flag for empty resources.
* input_curl: call curl_multi_info_read() in constructorMax Kellermann2009-01-152-0/+7
| | | | | To check for early connect failures, call curl_multi_info_read() in the constructor input_curl_open(). This fixes an assertion failure.
* playlist: safely search the playlist for deleted songMax Kellermann2009-01-142-3/+5
| | | | | | | | When a song file is deleted during database update, all pointers to it must be removed from the playlist. The "for" loop in deleteASongFromPlaylist() did not deal with multiple copies of the deleted song properly, and left instances of the (to-be-invalidated) pointer in. Fix this by reversing the loop.
* song_save: check for colon and space when loading a tagMax Kellermann2009-01-141-2/+4
| | | | | | matchesAnMpdTagItemKey() broke when two tag items had the same prefix, because it did not check if the tag name ended after the prefix. Add a check for the colon and the space after the tag name.
* input_curl: honour http_proxy_* config directivesJoe Milbourn2009-01-132-0/+31
| | | | | | | | | | If http_proxy_{host, port, user, password} are provided in mpd.conf they are not passed on to libcurl. As a result mpd cannot stream from behind an http proxy. The attached patch `http_proxy.patch` makes the relevant calls to curl_easy_setopt(...) for all proxy configuration parameters, but is only tested for host and port.
* playlist: implement Fisher-Yates shuffle properlyMax Kellermann2009-01-132-2/+3
| | | | | | | | MPD's shuffling algorithm was not implemented well: it considers songs which were already swapped, making it somewhat non-random. Fix the Fisher-Yates shuffle algorithm by passing the proper bounds to the PRNG.
* playlist: use GLib's random number generatorMax Kellermann2009-01-131-6/+10
| | | | srandom() and random() are not portable. Use GLib's implementation.
* input_curl: use select() to eliminate busy loop during connectMax Kellermann2009-01-132-0/+8
| | | | | | | When decoder_run_song() (decoder_thread.c) waits for the input stream to become ready, it did that in a busy loop. Add a select() call to input_curl_buffer() during connect/handshake (i.e. before the first chunk of body data was received), to let the CPU relax.
* decoder_api: don't ignore DECODE_COMMAND_STOPMax Kellermann2009-01-131-2/+1
| | | | | | When the decoder thread is waiting for free chunks in the music pipe, don't ignore the STOP command. Just return dc.command without further checks.
* configure.ac: removed duplicate PKG_PROG_PKG_CONFIGMax Kellermann2009-01-131-2/+0
|
* updated .gitignoreMax Kellermann2009-01-131-0/+3
|
* update: save the database even if it is emptyMax Kellermann2009-01-133-1/+15
| | | | Save an empty database, even if the music directory is empty.
* pcm_utils: use the custom PRNG for volume ditheringMax Kellermann2009-01-135-6/+41
| | | | | Don't use libc's rand() function, because it is slow. Our own trivial linear congruential generator is good enough for dithering.