| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Send silence to all connected clients while paused, to avoid
connection interruption.
|
|
|
|
|
| |
Avoid buffer underruns on the streaming client, if the encoder is "too
efficient" (e.g. when encoding silence while paused).
|
|
|
|
|
|
| |
MPD doesn't have child processes anymore, and thus we're not expecting
to receive SIGCHLD very often. Since hard disk access isn't
interrupted by signals anyway, we don't need those excessive checks.
|
|
|
|
|
|
| |
libwrap support is in MPD but only for the control port. This patch
adds support for the http port. The code is copied from
src/client_new.c
|
| |
|
|
|
|
| |
Windows compatibility.
|
|
|
|
| |
Added #ifdefs on the macros AFMT_S24_NE and other OSS4 extensions.
|
|
|
|
|
| |
Removed the "supported" / "unsupported" arrays, and auto-detect on
every open() call, just like the ALSA output plugin.
|
|
|
|
| |
Removed the macro AFMT_S16_MPD.
|
| |
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Always use the same number of samples from each channel's ring
buffer. This ensures that all channels are kept in sync.
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
More code simplification. Probe all formats, no matter which input
format.
|
|
|
|
|
| |
Remove the debug log messages, because they are duplicate (see
ao_open() in output_thread.c).
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This patch prepares support for floating point samples (and probably
other formats). It changes the meaning of the "bits" attribute from a
bit count to a symbolic value.
|
| |
|
|
|
|
|
|
| |
After we've been hit by Large File Support problems several times in
the past week (which only occur on 32 bit platforms, which I don't
have), this is yet another attempt to fix the issue.
|
|
|
|
|
|
| |
Drop the required GLib version from 2.16 to 2.12, because many current
systems still don't have GLib 2.16. This requires several new
compatibility functions in glib_compat.h.
|
|
|
|
| |
Add a "mode" argument to open_cloexec() instead.
|
|
|
|
|
|
|
|
|
| |
ALSA passes full period buffers to the hardware. If an application
doesn't finish writing a period, libasound will nonetheless send the
partial buffer (with undefined trailing data). This causes noise at
the end of playback. This patch attempts to track the current
position within the period buffer, and generates silence at the end,
before calling snd_pcm_drain().
|
|
|
|
|
| |
Changed the wrappers for pipe(), socket(), accept(). On WIN32, this
does not work for pipe().
|
|
|
|
|
|
|
|
|
|
|
| |
Added the "fd_util" library, which attempts to use the new thread-safe
Linux system calls pipe2(), accept4() and the options O_CLOEXEC,
SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is
not thread safe.
This is particularly important for the "pipe" output plugin (and
others, such as JACK/PulseAudio), because we were heavily leaking file
descriptors to child processes.
|
| |
|
| |
|
|
|
|
| |
Make valgrind happy.
|
|
|
|
|
|
| |
Same as the previous patch: create up to 16 configured source ports.
The plugin tries to do its best at guessing the right combination for
the given input file, the number of source and destination ports.
|
|
|
|
|
| |
Support up to 16 configured destination ports, that should really be
enough for everybody.
|
|
|
|
| |
Be more clear which kind of port should be configured here.
|
|
|
|
| |
Use the same name as in the libjack API documentation.
|
|
|
|
|
|
| |
Implement the methods enable() and disable(). Bind the HTTP port in
the enable() method, but reject all incoming connections until the
output is opened.
|
|
|
|
|
| |
When MPD plays a mono song (audio_format.channel==1), connect only one
source port to both destination ports.
|
|
|
|
|
|
| |
After playback has stopped, the ring buffers may still contain
samples. These will be played when playback is started the next
time. We should clear the buffers each time.
|
|
|
|
|
|
|
|
| |
jack_client_new() is deprecated. This requires libjack 0.100
(released nearly 5 years ago). We havn't been testing older libjack
versions anyway.
As a side effect, there is the new option "autostart".
|
|
|
|
|
|
| |
Instead of using MPD's audio output name (setting "name"), use a
separate configuration option. Change the default to "Music Player
Daemon".
|
|
|
|
|
|
|
| |
Reintroduce a fix from commit 52a0653 (Warren Dukes): "don't call
snd_pcm_drain unless we're already in the RUNNING state". This prevents
ALSA with dmix from sometimes hanging when snd_pcm_drain is called, e.g.
when moving from one song to the next (as in mantis issue 2634).
|
| |
|
|
|
|
|
|
|
| |
drain() is the opposite of cancel(): it waits until all data in the
buffer has finished playing. Instead of implicitly draining in the
close() method like the ALSA plugin has been doing it forever, let the
output thread decide whether to drain or to cancel.
|
|
|
|
|
|
| |
The recovery is for nothing if we get CLOSE afterwards. Let's not
recover in the cancel() method, and let the next play() call sort it
out.
|
|
|
|
| |
This variable was uninitialized and led to crashes.
|
| |
|
|
|
|
| |
Don't connect to JACK before MPD has daemonized.
|
|
|
|
| |
Don't connect to PulseAudio before MPD has daemonized.
|
|
|
|
|
|
|
| |
With these methods, an output plugin can allocate some global
resources only if it is actually enabled. The method enable() is
called after daemonization, which allows for more sophisticated
resource allocation during that method.
|