| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
This mixer plugin may be used instead of the traditional global
software mixer. It integrates with the "volume" filter plugin, and
can control the software volume of an audio output which has no
hardware mixer.
|
|
|
|
|
|
| |
Converted the range checks in volume_level_change() to assertions.
Changed all volume types to "unsigned", expect for those which must be
able to indicate error (-1).
|
|
|
|
|
| |
Since the "volume" command has been removed, nobody uses relative
volumes anymore.
|
|
|
|
|
| |
This command has been deprecated more than 5 years ago (0.10.0). Its
implementation is a kludge, let's remove it now.
|
|
|
|
|
|
| |
The "convert" filter must be the last filter in the chain. Ensure
that by doing its initialization at the very end of
audio_output_init().
|
| |
|
| |
|
|
|
|
|
|
| |
When song->mtime was not initialized properly, it was revealed that
strftime() might crash when gmtime_r() returns NULL due to an invalid
time_t input value.
|
| |
|
|
|
|
|
|
|
|
| |
This patch adds initial filter support for audio outputs. Each audio
output gets a "filter" attribute, which is used by ao_play_chunk().
The PCM conversion is now performed by convert_filter_plugin.
audio_output.convert_state has been removed.
|
| |
|
| |
|
|
|
|
|
| |
REOPEN is called when the input audio format changes. The output
thread may be reconfigure the PCM converter.
|
| |
|
| |
|
|
|
|
|
|
| |
A recent change to the boolean parser introduced a bug: instead of
using the block_param's value with get_bool(), we passed param->value
(which is always NULL in this case).
|
| |
|
|
|
|
| |
Added public methods to get and set the current volume.
|
|
|
|
|
|
|
|
|
| |
Some clients have visual feedback for "database update is running".
Using the "database" idle event is unreliable, because it is only
emitted when the database was actually modified. This patch adds the
"update" event, which is emitted when the update is started, and again
when the update is finished, disregarding whether it has been
modified.
|
|
|
|
|
| |
Added the response line "Last-Modified", which sends the modification
time in ISO 8601. The same was already implemented for playlists.
|
| |
|
|
|
|
| |
Renamed functions.
|
| |
|
|
|
|
| |
Add this option to the user's manual.
|
|
|
|
| |
Removed VOLUME_MIXER_OSS and VOLUME_MIXER_ALSA.
|
|
|
|
|
|
|
|
|
|
| |
The "volume" filter plugin will replace the current software volume
code. One "volume" filter may be attached to each output device.
This will allow the user to use hardware mixers for some devices, and
software mixers for other devices at the same time.
Currently, neither the filter API nor the "volume" plugin is
integrated into MPD.
|
|
|
|
|
| |
The filter API allows us to implement software volume as a pluggable
filter, and we will be able to integrate libraries like SoX.
|
|
|
|
|
| |
This GQuark will be used for GErrors related to malformed
configuration.
|
|
|
|
|
|
|
|
|
| |
This patch fixes an assertion failure:
Assertion `order < queue->length' failed.
This happens when the state file is saved, when there is no "current"
song: current==-1, and queue_order_to_position(-1) is called.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment mpd doesn't store or restore the current track to/from
its state file when the daemon is stopped/started while in 'stopped'
state. I believe the preferred behaviour would be to store and
restore the current track even when the daemon is in stopped state
when shutting down.
I made a small patch to adapt this behaviour. If you believe this is
not the preferred behaviour, maybe this should be realized as a
configuration option. I'm not sure how to do this, but made a small
comment, where one would have to put the option.
|
|
|
|
| |
Call av_metadata_get() in a loop.
|
| |
|
| |
|
|
|
|
|
| |
Moved the check from config_get_block_param(). Detect the duplicate
parameter when it's added, not when it's queried.
|
|
|
|
|
|
|
| |
Instead of returning an artificial three-state integer, return a
"success" value and put the boolean value into a "bool" pointer.
That's a little bit more overhead, but an API which looks more
natural.
|
| |
|
|
|
|
|
| |
Initialize the config_entries array at compile time. This is not only
faster, but also smaller.
|
|
|
|
| |
This function is unused.
|
|
|
|
| |
Due to padding, this takes the same amount of memory.
|
|
|
|
|
| |
The top-level "mixer_device" and "mixer_control" options have been
deprecated by MPD 0.15, and it's safe to remove them in MPD 0.16.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
When decoding a local file, the decoder thread tries to run all
matching decoders, until one succeeds. Both file_decode() and
stream_decode() can decode a stream, but MPD closes the stream before
calling file_decode(). Problem is: when this decoder fails, and the
next's stream_decode() method is invoked, the input_stream is still
closed. This patch reopens it.
|
|
|
|
|
|
|
|
|
| |
Several users had problems with binding MPD to "localhost". The cause
was duplicate /etc/hosts entries: the resolver library returns
127.0.0.1 twice, and of course, MPD attempts to bind to "both" of
them. This patch makes failures non-fatal, given that at least one
address was bound successfully. This is a workaround; users should
rather fix their /etc/hosts file.
|
| |
|
|
|
|
| |
Dump each socket address before binding to it.
|
| |
|
|
|
|
|
| |
This warning is useless. I assume the author added it for debugging
purposes.
|
|
|
|
|
|
|
| |
When client_defer_output() aborts the connection to the client,
client_write_output() called client_write_deferred() anyway. This
caused an assertion failure. Fix it by checking for the "expired"
flag again after client_defer_output() returns.
|
|
|
|
|
|
| |
I'm hunting down a bug where client->channel==NULL during I/O
operations. These new assertions help avoid this kind of bug in the
future.
|