| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
[mk: don't run pkg-config when shout is disabled]
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
This "upload" target uploads generated documentation to
http://www.musicpd.org/doc/, and works only for my user account.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
sparse cannot deal with C++.
|
|
|
|
|
| |
sparse complains that a lot of limit.h macros are missing. Define
them to keep sparse quiet.
|
|
|
|
| |
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).
|
| |
|
| |
|