| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
| |
Renamed all remaining CamelCase functions.
|
|
|
|
|
|
| |
When the decoder is finished, break out of the player loop only after
another player.pipe check. We did check the pipe size a few lines
above, but that check was kind of racy.
|
|
|
|
|
|
|
| |
When a music_chunk only contains a tag but no PCM data, play_chunk()
returns true without freeing the chunk. The caller now assumes that
the chunk is moved into some music_pipe and does not bother to free it
either.
|
|
|
|
|
|
| |
To check for leaked music_chunk objects, free the music buffer on
CLOSE_AUDIO. This invokes an assertion check which ensures that all
chunks have been returned to the buffer.
|
|
|
|
|
|
| |
Instead of returning the local variable "ret" which is always true at
this point, hard-code the "true" return value, because that might be
more readable.
|
|
|
|
|
|
|
|
| |
If a file is removed the library, next time mpd will try to play it it
will result in an error 'ERROR: problems decoding some/file.ogg'.
Nothing is written in log files (verbose mode or not)
[mk: append strerror(errno)]
|
|
|
|
|
| |
Make gcc warn us if we add a new mixer type, and forget to add a new
"case" line.
|
|
|
|
| |
Don't use CPP macros when you can use C enums.
|
| |
|
|
|
|
|
|
| |
Commit f78cddb4 introduced a regression: when the playlist reached its
end, MPD did not reset the "current song" pointer anymore after stop.
Add a "current = -1" code line.
|
|
|
|
| |
Check the validity of the audio_format during write operations.
|
|
|
|
| |
Always assert that the audio format of the new chunk is valid.
|
|
|
|
|
|
|
|
|
|
| |
Hello,
While compiling latest git I've received a compile error in the
httpd_output_plugin.
Small patch attached.
Patrik
|
|
|
|
| |
The string comparison should be "!= 0", not "== 0". Ouch.
|
|
|
|
|
| |
The player thread must reset pc.next_song after seeking, even if that
operation has failed. This patch adds an assertion.
|
|
|
|
|
|
| |
The only pc_seek() caller clears the error, rendering the check
useless. Even if the previous PLAY command resulted in a player
error, this check is not very useful.
|
|
|
|
|
| |
Renamed playerSeek() to pc_seek() to get rid of CamelCase. Convert
the return value to bool.
|
|
|
|
|
| |
If the UFID frame's owner is "http://musicbrainz.org", assume its
value is the MusicBrainz track id.
|
|
|
|
|
|
|
|
| |
Flush the encoder before calling encoder_tag(). The first page
generated by the encoder after sending the tag will be the new
"header" page, which is sent to all HTTP clients when they connect.
This is a little bit specific to the vorbis encoder, but there are no
other encoders which support tags (yet).
|
|
|
|
|
|
| |
Moved some code from httpd_output_encode_and_play() into separate
functions httpd_output_broadcast_page() and
httpd_output_encoder_to_clients().
|
|
|
|
|
|
| |
There's no reason to send both encoder tags and Icy-Metadata to the
client. Let's disable Icy-Metadata when the encoder supports embedded
tags.
|
|
|
|
|
|
|
| |
When a new tag is set, end the current stream and begin a new one.
Use vorbis_analysis_headerout() to write a full ogg header. This
fixes a problem with icecast: after a song change in MPD, icecast
stops forwarding ogg packets to its clients.
|
| |
|