aboutsummaryrefslogtreecommitdiffstats
path: root/src/output/plugins/PulseOutputPlugin.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2014-10-25Set pulseaudio channel map to WAVE-EXSteven Newbury1-1/+5
Pulseaudio expects clients to specify their channel-map if the default (ALSA) map does not route the audio to the expected speakers. Many Google results suggest dealing with this by re-routing the audio channels with the appropriate ALSA plugin, but this will then simply break any clients which expect the default ALSA mapping. Virtually all media files and codecs, certainly flac, dca, a52, and of course anything based on Microsoft's WAVEFORMAT_EXTENSIBLE specification, assume the layout in the table here: http://en.wikipedia.org/wiki/Surround_sound#Standard_speaker_channels Fortunately, pulseaudio directly addresses this with a built-in channel map for WAVE-EX which can be set automatically in the stream sample-spec.
2014-09-05output/pulse: simplify _wait_for_operation()Max Kellermann1-6/+3
Eliminate the duplicate pa_operation_get_state() call.
2014-03-04PulseOutputPlugin: set icon namePete Beardmore1-0/+1
2014-02-24output/pulse: use setenv() instead of g_setenv()Max Kellermann1-3/+2
There is no advantage in using g_setenv().
2014-02-24output/pulse: remove bogus g_free() callMax Kellermann1-2/+0
2014-02-06mixer/Plugin: pass AudioOutput reference to init()Max Kellermann1-34/+30
Passing a void pointer is unsafe.
2014-01-29output: move functions into the AudioOutput structMax Kellermann1-1/+1
2014-01-29AudioOutput: pass plugin to constructorMax Kellermann1-1/+4
Make it "const".
2014-01-28AudioOutput: add constructor and destructorMax Kellermann1-1/+0
2014-01-28output: rename struct audio_output to AudioOutputMax Kellermann1-11/+11
2014-01-28OutputPlugin: rename struct audio_output_plugin to AudioOutputPluginMax Kellermann1-1/+1
2014-01-24Mixer*: move to mixer/Max Kellermann1-2/+2
2014-01-23output/*: move to output/plugins/Max Kellermann1-1/+1
2014-01-13copyright year 2014Max Kellermann1-1/+1
2013-10-02Log: new logging library APIMax Kellermann1-6/+9
Prepare to migrate away from GLib. Currently, we're still using GLib as a backend.
2013-09-04util/Error: new error passing libraryMax Kellermann1-87/+65
Replaces GLib's GError.
2013-09-04output/pulse: require libpulse 0.9.16Max Kellermann1-51/+3
Remove all #ifdefs. Old versions of libpulse are not being tested, and thus I'm removing support.
2013-08-04*: use gcc.h macros instead of GLibMax Kellermann1-4/+4
2013-08-04OutputPlugin: pass config_param referenceMax Kellermann1-6/+6
2013-08-03audio_format: convert to C++Max Kellermann1-4/+4
2013-07-30output_api: convert to C++Max Kellermann1-1/+1
2013-04-16mixer/Pulse: convert to a classMax Kellermann1-4/+3
2013-04-16output/Pulse: convert to C++Max Kellermann1-147/+149
2013-02-22mixer_plugin: convert to C++Max Kellermann1-1/+1
2013-01-09mixer/{alsa,pulse}: convert to C++Max Kellermann1-1/+1
2012-08-14output/pulse: implement method delay()Max Kellermann1-7/+21
Reduce command latency while paused.
2012-08-14output/pulse: simplify _wait_stream()Max Kellermann1-55/+16
One large loop and only one pa_stream_get_state() call.
2011-09-19output_plugin: the plugin allocates the audio_output objectMax Kellermann1-23/+30
Pass audio_output objects around instead of void pointers. This will give some more control to the plugin, and prepares for non-blocking audio outputs.
2011-09-17output/pulse: don't expose internal struct in public headerMax Kellermann1-0/+43
Provide _lock() and _unlock() to wrap all accesses from the mixer plugin.
2011-09-17output/pulse: move code to _setup_stream()Max Kellermann1-15/+36
2011-09-17output/pulse: improve lockingMax Kellermann1-11/+11
Always lock the main loop when operating on PULSE objects. Document this.
2011-09-16input/curl, output/pulse: fix "unused local variable" warningsMax Kellermann1-1/+2
2011-08-31output/pulse: reset callbacks before closing stream/contextMax Kellermann1-0/+10
Fixes assertion failure when a stream callback is invoked too late after a format change.
2011-08-31output/pulse: add function _delete_stream()Max Kellermann1-5/+16
Merge common code.
2011-08-31output/pulse: use _delete_context()Max Kellermann1-16/+15
Eliminate duplicate code.
2011-08-23output/pulse: fix deadlock when the stream was suspendedMax Kellermann1-0/+31
Check if the stream is suspended; wake up the main loop when it becomes suspended.
2011-08-23output/pulse: add assertionsMax Kellermann1-0/+30
2011-08-23output/pulse: return 0 on errorMax Kellermann1-1/+1
Not a bool.
2011-08-23pulse/output: fix deadlock when resuming the streamMax Kellermann1-1/+3
Unlock the mainloop in all code paths.
2011-01-29copyright year 2011Max Kellermann1-1/+1
2010-01-17output/pulse: clear the "mainloop" attribute on errorMax Kellermann1-2/+3
When enabling the pulse device fails, clear po->mainloop after pa_threaded_mainloop_free() has finished. This is important for the assertions. Two wrong g_free() calls were also removed.
2009-12-31Update copyright notices.Avuton Olrich1-1/+1
2009-12-02audio_format: changed "bits" to "enum sample_format"Max Kellermann1-1/+1
This patch prepares support for floating point samples (and probably other formats). It changes the meaning of the "bits" attribute from a bit count to a symbolic value.
2009-11-12include config.h in all sourcesMax Kellermann1-0/+1
After we've been hit by Large File Support problems several times in the past week (which only occur on 32 bit platforms, which I don't have), this is yet another attempt to fix the issue.
2009-10-29output/pulse: initialize pulse_output.mixerMax Kellermann1-0/+1
This variable was uninitialized and led to crashes.
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 Kellermann1-1/+104
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-21pulse: code rewrite using the asynchronous libpulse APIMax Kellermann1-73/+581
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-20output/pulse: renamed context to "Music Player Daemon"Max Kellermann1-1/+1
This looks nicer in the PulseAudio manager than just "mpd".