| Commit message (Collapse) | Author | Files | Lines |
|
Due to a race condition, httpd_client_out_event() could be called even
when its GLib event source was already removed. Check that case.
|
|
When the httpd output is cancelled, it freed all pages, but didn't
remove them from the queue. Call g_queue_clear() and remove the
write source id.
|
|
Copy all tags know to MPD to the vorbis_comment.
|
|
Allocate the vorbis_comment object when it's used. It is not used
anymore in vorbis_encoder_tag().
|
|
Don't reinitialize the encoder with every tag.
|
|
Prepare the removal of vorbis_encoder.vc.
|
|
Use GLib the logging functions g_debug(), g_error() instead.
|
|
The function is unused.
|
|
|
|
Let's get rid of the "shout" plugin, and the awfully complicated
icecast daemon setup! MPD can do better if it's doing the HTTP server
stuff on its own. This new plugin has several advantages:
- easier to set up - only one daemon, no password settings, no mount
settings
- MPD controls the encoder and thus already knows the packet
boundaries - icecast has to parse them
- MPD doesn't bother to encode data while nobody is listening
This implementation is very experimental (no header parsing, ignores
request URI, no icy-metadata, ...). It should be able to suport
several encoders in parallel in the future (with different bit rates,
different codec, ...), to make MPD the perfect streaming server. Once
MPD gets multi-player support, we can even mount several different
radio stations on one server.
|
|
|
|
Converted the ogg_page attribute from the vorbis_encoder struct to a
local function of vorbis_encoder_read(). This simplifies some code,
because we don't need to check the page anymore before using it.
|
|
Add the "flush" flag, and defer the ogg_stream_flush() call. Call
ogg_stream_pageout() or ogg_stream_flush() (depending on the "flush"
flag) in vorbis_encoder_read(). This prevents the ogg_page from
getting overwritten by consecutive ogg_stream_pageout() calls.
|
|
Moved code from listen_add_address() (listen.c) to socket_util.c.
|
|
|
|
It is a library which I have written years ago for other projects.
This library is licensed under BSD 2-clause, because it is very
generic.
|
|
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.
|
|
Added diversion functions to pcm_resample.c. These check which
resampler is enabled at compile time (libsamplerate or fallback).
This prepares the following patch.
|
|
In NDEBUG, clear_tail_chunk() does not use its "chunk" parameter.
|
|
The source output_all.c accesses music_chunk struct members, but did
not include chunk.h directly.
|
|
|
|
The variable is private.
|
|
Changed "0" to "NULL".
|
|
Changed "0" to "NULL".
|
|
At the last line of handle_addid(), the playlist_result value has
already been evaluated. Don't return this variable, it's the wrong
type.
|
|
addToPlaylist() has a "enum playlist_result" return value. Convert
that to "enum command_return" properly.
|
|
On failure, the function should return NULL, not a boolean.
|
|
Turn the "return false" error handlers into "return NULL".
|
|
Moved the hash table initialization from sticker_list_values() to the
new function sticker_new(). This fixes a memory leak in
sticker_list_values().
|
|
sticker_list_values() is only used internally in sticker.c. Remove
sticker_song_list_values() completely, it is superseded by
sticker_song_get().
|
|
|
|
The sticker struct can be used for enumerating values. This will
replace the sticker_list_values() function.
|
|
Don't dump the volume of all mixers.
|
|
In some rare cases, there was a race condition between the output
thread and the main thread: when you disable/enable an output device
in the main thread, this caused a crash in the output thread. Protect
the whole mixer struct with a GMutex to prevent that.
|
|
|
|
This patch allows the output plugins to import only mixer_list.h,
instead of the full mixer_api.h (which would expose internal
structures).
|
|
mixer_control.h should provide the functions needed to manipulate a
mixer, without exposing the internal mixer API (which is provided by
mixer_api.h).
|
|
|
|
|
|
|
|
Return true/false on success/failure, instead of 0/-1. Pass
true/false instead of 1/0 for the "rel" boolean parameter.
|
|
Check for NULL not necessary here
|
|
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
|
|
|
|
When the destination chunk was empty in cross_fade_apply(), it had no
audio_format attached (an attribute which is only used for assertion
in the debug build). cross_fade_apply() should assign it the
audio_format of the second chunk (if available), otherwise MPD will
crash.
|
|
When there are chunks which are not yet finished,
audio_output_all_check() returned the size of its music pipe minus
one. I can't remember exactly why I subtracted 1 from the return
value, it must have had something to do with a former meaning of this
function. Now it induces assertion failures.
|
|
When an audio output device is disabled, also disable its mixer.
|
|
No caller must ever pass an invalid device number to
mixer_control_setvol() or mixer_control_getvol().
|
|
|
|
|