aboutsummaryrefslogtreecommitdiffstats
path: root/src/output (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-10-23output/jack: implement methods enable()/disable()Max Kellermann1-16/+24
Don't connect to JACK before MPD has daemonized.
2009-10-23output/pulse: implement methods enable()/disable()Max Kellermann1-9/+35
Don't connect to PulseAudio before MPD has daemonized.
2009-10-23output_plugin: added methods enable() and disable()Max Kellermann1-0/+2
With these methods, an output plugin can allocate some global resources only if it is actually enabled. The method enable() is called after daemonization, which allows for more sophisticated resource allocation during that method.
2009-10-23output/pulse: call mixer on state changesMax Kellermann2-2/+117
Don't let the mixer plugin "override" the libpulse callbacks. Instead, add a "mixer" attribute to the pulse_output struct, and call the mixer on all interesting events.
2009-10-22output/fifo: renamed source to fifo_output_plugin.cMax Kellermann1-3/+3
2009-10-21audio_format: wildcards allowed in audio_format configurationMax Kellermann1-2/+7
An asterisk means that this attribute should not be enforced, and stays whatever it used to be. This way, some configuration values work like masks.
2009-10-21output/jack: make ringbuffer_size a size_tMax Kellermann1-1/+1
2009-10-21output/jack: connect to server on MPD startupMax Kellermann1-69/+119
.. and keep up the JACK connection while MPD runs. Allocate the ring buffers on the first open, and free them at MPD exit.
2009-10-21output/jack: removed the empty "cancel" methodMax Kellermann1-6/+0
JACK doesn't need cancel() because it won't do much anyway. Buffers are small.
2009-10-21output/jack: renamed parameter "error" to "error_r"Max Kellermann1-12/+12
It's a double pointer.
2009-10-21output/jack: implement the "pause" methodMax Kellermann1-0/+41
Don't disconnect from JACK during pause.
2009-10-21output/jack: renamed source to jack_output_plugin.cMax Kellermann1-2/+2
2009-10-21pulse: code rewrite using the asynchronous libpulse APIMax Kellermann2-73/+639
This is a complete rewrite of the PulseAudio output plugin. It uses the asynchronous API, which gives us more control over everything. Additionally, it connects to the PulseAudio server on startup, and keeps this connection up while MPD runs. During pause, instead of closing the stream, it enables "cork".
2009-10-20mixer/{oss,alsa}: renamed the mixer source filesMax Kellermann2-2/+4
2009-10-20output/pulse: renamed context to "Music Player Daemon"Max Kellermann1-1/+1
This looks nicer in the PulseAudio manager than just "mpd".
2009-10-20pulse: renamed source filesMax Kellermann1-3/+5
2009-10-20pulse: announce "media.role=music"Max Kellermann1-0/+2
This allows PulseAudio to do some advanced tweaks.
2009-10-13tag: removed the "_ITEM_" suffix from the enum namesMax Kellermann2-5/+4
2009-10-13configure.ac: require GLib 2.16Max Kellermann1-5/+0
Accidently, MPD has been using several GLib 2.16 functions for a while, and nobody noticed yet. To simplify the code base, let's bump the minimum GLib version for MPD to 2.16. That version is old enough, and it's reasonable to expect users to have it.
2009-09-20output/osx: fix the OS X 10.6 buildPatrik Weiskircher1-0/+1
Include CoreServices/CoreServices.h.
2009-09-20output/osx: fix the OS X 10.6 buildPatrik Weiskircher1-0/+1
Include CoreServices/CoreServices.h.
2009-09-07output/openal: support OpenAL plugin on Mac OS XSerge Ziryukin1-0/+6
2009-09-06output/openal: fix default device nameSerge Ziryukin1-3/+3
2009-09-06openal output pluginSerge Ziryukin1-0/+267
2009-08-24output/recorder: new output plugin for recording radio streamsMax Kellermann1-0/+214
The recorder plugin writes audio played by MPD to a file. This may be useful for recording radio streams. This implementation is incomplete, because support for tags is missing, and MPD should be able to record each track to a different file.
2009-08-14output/shout: minimize the unpause latencyMax Kellermann1-0/+7
During the pause loop, manually sleep for 500ms if shout_delay() returns a value greater than that. Don't exhaust libshout's buffer.
2009-07-19Support wrong-endian ALSA outputDavid Woodhouse1-2/+50
2009-07-14output/httpd: removed duplicate sys/types.h includeMax Kellermann1-4/+0
The first patch by Patrick didn't work, because his "#ifdef HAVE_OSX" line would have required config.h.
2009-07-06output/httpd: include sys/types.hMax Kellermann1-0/+1
On Mac OS X, the httpd plugin cannot be compiled, because OS X's system headers do nto include sys/types.h, although they use u_int32_t.
2009-06-03conf: eliminated CamelCaseMax Kellermann1-1/+1
Renamed all remaining CamelCase functions.
2009-05-10latest git, httpd_output_plugin compile fix, mac os xPatrik Weiskircher1-0/+4
Hello, While compiling latest git I've received a compile error in the httpd_output_plugin. Small patch attached. Patrik
2009-05-05httpd_output: save the page generated by encoder_tag()Max Kellermann1-0/+21
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).
2009-05-05httpd_output: moved code to httpd_output_encoder_to_clients()Max Kellermann1-14/+32
Moved some code from httpd_output_encode_and_play() into separate functions httpd_output_broadcast_page() and httpd_output_encoder_to_clients().
2009-05-05httpd_output: disable Icy-Metadata when encoder supports tagsMax Kellermann3-18/+35
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.
2009-05-05httpd_output: assert that tag!=NULLMax Kellermann1-8/+7
In the tag() method, MPD guarantees that it does not pass tag==NULL. Converted the runtime check to an assertion.
2009-04-21alsa_output: don't use atexit() to clean up the ALSA libraryMax Kellermann1-7/+3
Call snd_config_update_free_global() manually in our finish() method, don't use atexit().
2009-04-13httpd: use C99 "bool" instead of GLib's gbooleanMax Kellermann1-7/+7
Plain "bool" consumes only one byte instead of four.
2009-04-13httpd: use g_ascii_strncasecmp() to compare headersMax Kellermann1-1/+1
In HTTP, header names are case insensitive.
2009-04-13Implemented basic icy support for the httpd outputHagen Schink4-12/+223
[mk: folded with patch "Put icy related functions in extra source files"; moved icy_server.c from HAVE_CURL to ENABLE_HTTPD_OUTPUT; removed an unused variable]
2009-04-01httpd: don't pass uninitialized page to httpd_client_check_queue()Max Kellermann1-1/+1
The httpd_client_check_queue() callback function does not use its "user_data" argument. Don't pass any, and fix the gcc warning.
2009-03-26pulse: make configuration strings constMax Kellermann1-6/+4
Nobody needs to modify these strings. We can make them const, and convert config_dup_block_string() to config_get_block_string(). This also fixes memory leaks in the pulse mixer.
2009-03-26pulse: don't check config_param!=NULLMax Kellermann1-4/+2
The conf.h functions deal well with config_param==NULL and will return the specified default value then.
2009-03-26output_plugin: replaced output_plugin.get_mixer() with mixer_pluginMax Kellermann3-55/+3
The mixer core library is now responsible for creating and managing the mixer object. This removes duplicated code from the output plugins.
2009-03-17httpd: fixed encoder plugin checkJeffrey Middleton1-1/+1
Check if encoder_plugin!=NULL, not encoder_plugin_get (which is a function).
2009-03-16solaris: new audio output plugin for Solaris /dev/audioMax Kellermann1-0/+175
2009-03-15httpd_output: check client->write_source_id in handlerMax Kellermann1-0/+7
Due to a race condition, httpd_client_out_event() could be called even when its GLib event source was already removed. Check that case.
2009-03-15httpd_output: clear the client's page queue on cancelMax Kellermann2-2/+13
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.
2009-03-15httpd: new output plugin to replace "shout"Max Kellermann4-0/+1093
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.
2009-03-14mixer_api: moved mixer_plugin imports to mixer_list.hMax Kellermann3-3/+3
This patch allows the output plugins to import only mixer_list.h, instead of the full mixer_api.h (which would expose internal structures).
2009-03-14mixer_api: moved functions to mixer_control.cMax Kellermann3-0/+3
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).