- 14 Mar, 2009 1 commit
-
-
Max Kellermann authored
Even if libsamplerate support is enabled, compile the fallback resampler. When the user specifies the option "samplerate_converter=internal", it is chosen in favor of libsamplerate. This may help users with a weak FPU who don't want to compile a custom MPD from source, because the fallback resampler does not use floating point operations.
-
- 10 Mar, 2009 1 commit
-
-
Max Kellermann authored
After a seek, wait until enough new chunks are decoded before starting playback. If this takes too long, send silence chunks to the audio outputs meanwhile.
-
- 09 Mar, 2009 1 commit
-
-
Max Kellermann authored
This is similar to the MPD 0.14 patch "wait 10 seconds before reopening a failed device", which only covered open() failures. This patch adds the same feature for play().
-
- 08 Mar, 2009 1 commit
-
-
Max Kellermann authored
The default values for buffer_time and period_time were both capped by the hardware limits on practically all chips. The result was a period_time which was half as big as the buffer_time. On some chips, this led to lots of underruns when using a high sample rate (192 kHz), because MPD had very little time to send new samples to ALSA. A period time which is one fourth of the buffer time turned out to be much better. If no period_time is configured, see how much buffer_time the hardware accepts, and try to configure one fourth of it as period_time, instead of hard-coding the default period_time value. This is yet another attempt to provide a solution which is valid for all sound chips. Using the SND_PCM_NONBLOCK flag also seemed to solve the underruns, but put a lot more CPU load to MPD.
-
- 03 Mar, 2009 1 commit
-
-
Avuton Olrich authored
-
- 02 Mar, 2009 3 commits
-
-
Max Kellermann authored
The lastfm input plugin enables MPD to play lastfm:// URLs. This plugin is not complete yet: it plays only the first song in the last.fm playlist, and the playlist parser isn't even implemented properly.
-
Max Kellermann authored
Added a small RIFF parser library. Look for an "id3" chunk, and let libid3tag parse it.
-
Max Kellermann authored
This is the first patch in a series to enable 32 bit audio samples in MPD. 32 bit samples are more tricky than 24 bit samples, because the integer may overflow when you operate on a sample.
-
- 01 Mar, 2009 2 commits
-
-
Max Kellermann authored
Parse the vorbis comments in libflac's metadata_callback and pass them as tag struct to the decoder API.
-
Max Kellermann authored
Don't hard code the "bits" parameter to 16. Try to use the input's sample format, if possible.
-
- 28 Feb, 2009 3 commits
-
-
Max Kellermann authored
The option "enabled" is on by default. If you specify "enabled no" in an audio_output section, then this device is disabled by default.
-
Michal Nazarewicz authored
[mk: adapted to new output plugin API]
-
Max Kellermann authored
The generic sockaddr struct is too small for some addresses. For accept(), we have to allocate a sockaddr_storage struct on the stack, which is large enough for all addresses.
-
- 27 Feb, 2009 1 commit
-
-
Max Kellermann authored
Added the uri_remove_auth() library function which strips username and password from a HTTP URI, and use it in song_print_url(). This allows you to add HTTP URIs to the playlist including secret username and password, without disclosing it to all MPD clients.
-
- 26 Feb, 2009 1 commit
-
-
Max Kellermann authored
The check "open()!=0" is wrong, you have to write "open()>=0", because -1 means error, and 0 is a valid file handle.
-
- 25 Feb, 2009 3 commits
-
-
Max Kellermann authored
When the MVP device has been closed in the cancel() method, and the play() method attempts to reopen it, check for errors.
-
Max Kellermann authored
Looks like the MVP audio output only supports 16 and 24 bit audio samples. If MPD generates any other sample formats, force it to use 16 bit.
-
Max Kellermann authored
When the channel count is greater than 2, fall back to stereo sound.
-
- 15 Feb, 2009 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
If mpd.conf specifies a user, and MPD is invoked by exactly this user, ignore the "user" setting. Don't bother to look up its groups and don't attempt to change uid, it won't work anyway.
-
- 14 Feb, 2009 1 commit
-
-
Avuton Olrich authored
-
- 12 Feb, 2009 5 commits
-
-
Max Kellermann authored
Use delete_directory() for removing sub directories instead of dirvec_clear(). This ensures that all memory occupied by subdirectories of deleted directories is freed.
-
Max Kellermann authored
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().
-
Max Kellermann authored
Pass the input_stream object to decoder_data(). Without it, the MPD core does not see stream tags.
-
Max Kellermann authored
-
Max Kellermann authored
There are a few problems left in this plugin: - fluidsynth decodes in real time, while MPD prefers to buffer as quickly as possible; as a workaround, this plugin uses a timer object to synchronize with real-time playback - I don't know yet how fluidsynth tells me when the song has ended - the "soundfont" configuration setting is not yet documented, and it will likely change soon (in favor of a per-decoder configuration block)
-
- 11 Feb, 2009 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
The ffmpeg library supports the "True Audio Codec". The entry in ffmpeg_suffixes was missing.
-
- 09 Feb, 2009 5 commits
-
-
Max Kellermann authored
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.
-
Max Kellermann authored
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.
-
Max Kellermann authored
Don't duplicate the tag received by the send_metadata() method - send it to the shout server directly.
-
Max Kellermann authored
Removed the manual timer synchronization from the shout plugin. libshout's shout_sync() function does it for us.
-
Max Kellermann authored
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.
-
- 03 Feb, 2009 3 commits
-
-
Max Kellermann authored
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.
-
Max Kellermann authored
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.
-
Max Kellermann authored
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.
-
- 02 Feb, 2009 2 commits
-
-
Max Kellermann authored
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.
-
Max Kellermann authored
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.
-
- 30 Jan, 2009 2 commits
-
-
Matthias Drochner authored
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]
-
Max Kellermann authored
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.
-