| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
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().
|
|
|
|
|
|
|
|
| |
When there's no queued song, and the current one has finished playing,
first make sure that the hardware outputs have really finished playing
the last chunk: call the drain() method in all audio outputs. Without
this patch, MPD stopped playback shortly before the ALSA sound card
had finished playing.
|
|
|
|
|
| |
This command manually drains the hardware buffer. This is useful when
the player thread want to make sure that everything has been played.
|
|
|
|
|
| |
Our use of the "volatile" keyword was wrong from the start, and now
that we have proper locking, we can safely remove all of them.
|
| |
|
|
|
|
|
| |
We'll copy this code to libmpdclient, and that's easier if its license
is BSD.
|
|
|
|
| |
It's not used anymore, its features have been moved to fd_util.c.
|
|
|
|
|
| |
Changed the wrappers for pipe(), socket(), accept(). On WIN32, this
does not work for pipe().
|
| |
|
|
|
|
| |
That's an optional method.
|
| |
|
| |
|
|
|
|
| |
This function is used only internally.
|
|
|
|
| |
Added wrapper for inotify_init1() to fd_util.c.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
An input_stream_close() call was missing after today's code
reorganization.
|
|
|
|
|
| |
Don't hold a file descriptor on root's tty when syslog is used for
logging.
|
| |
|
|
|
|
|
|
|
| |
When an output's enable() method has failed, and playback starts,
retry to enable it. Without this, the user may be confused, because
he sees the device is "enabled" but cannot use it, and currently there
is no error message in the log.
|
| |
|
|
|
|
| |
GLib's version of fnmatch() is more portable.
|
| |
|
|
|
|
| |
Check ferror() instead of the fprintf() return value.
|
| |
|
|
|
|
|
| |
This command prints a list of decoder plugins and their suffixes /
MIME types.
|
|
|
|
|
|
| |
Export the decoder_plugins array. The function
decoder_plugin_print_all_decoders() it is UI specific and should not
live in this backend library.
|
|
|
|
|
| |
Before calling the plugin's decode method, we should ensure that we
didn't receive a STOP command during initialization.
|
|
|
|
|
|
| |
This function opens the stream and waits for it to become ready;
meanwhile it checks for STOP commands. It is code moved from
decoder_run_stream().
|
|
|
|
| |
Simplify the expressions.
|
|
|
|
| |
Make valgrind happy.
|
|
|
|
| |
Remove the static integer hack, that's not thread safe and sucks.
|
| |
|
|
|
|
| |
A NULL terminated list is easier to iterate.
|
|
|
|
|
|
| |
Moved the global input stream opener to decoder_run_stream().
decoder_run_file() now opens the input stream each time a plugin
provides a stream decoder method.
|
|
|
|
| |
Tame the large decoder_run_song() function.
|
|
|
|
| |
Let gcc optimize a little bit more.
|
|
|
|
|
| |
No CamelCase. Use bool instead of int. Make both arguments
mandatory.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
This patch allows the client to load a playlist file from the playlist
directory with a plugin. This can be used with the "load" command,
but the client has to pass the file name including the suffix. We
will probably use the music directory in the future, to support
playlist files inside the music directory.
|
| |
|
|
|
|
| |
Added an interface for loading playlists from a local file.
|
|
|
|
|
| |
This new plugin parses extm3u files. Files without the "#EXTM3U"
header are still parsed by the plain old "m3u" plugin.
|
|
|
|
| |
The caller is responsible for verifying the song URI.
|
|
|
|
|
|
| |
If one plugin has failed to open the playlist, it may have consumed a
part of the stream already. This may lead to a failure in all
following plugins. Fix: rewind the stream before each open() call.
|
|
|
|
|
|
| |
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.
|