aboutsummaryrefslogtreecommitdiffstats
path: root/src/output (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
| | * db/proxy, output/shout: fix implicit nullptr/bool conversionMax Kellermann2014-12-261-1/+1
| | | | | | | | | | | | Return false on error, not nullptr.
| | * output/roar: remove unnecessary "volatile" keywordMax Kellermann2014-11-021-1/+1
| | | | | | | | | | | | | | | A mutex acts as a memory barrier, and thus "volatile" is not necessary.
* | | output/jack: move code to separate functionsMax Kellermann2014-12-251-40/+73
| | |
* | | output/jack: cache AudioFormat::channelsMax Kellermann2014-12-241-4/+6
| | |
* | | output/jack: fix typoMax Kellermann2014-12-241-1/+1
| | |
* | | output/jack: use jack_ringbuffer_get_write_vector()Max Kellermann2014-12-241-10/+20
| | | | | | | | | | | | Reduce number of libjack calls.
* | | output/jack: move jack_ringbuffer_write_space() call to WriteSamples()Max Kellermann2014-12-241-19/+21
| | |
* | | output/jack: cache AudioFormat::channelsMax Kellermann2014-12-241-4/+3
| | |
* | | output/jack: pass float* to WriteSamples()Max Kellermann2014-12-241-5/+3
| | |
* | | output/jack: WriteSamples() returns size_tMax Kellermann2014-12-241-4/+11
| | |
* | | output/jack: pass size_t to WriteSamples()Max Kellermann2014-12-241-3/+3
| | |
* | | output/jack: use SampleFormat::FLOATMax Kellermann2014-12-241-55/+9
| | | | | | | | | | | | | | | | | | What JACK expects is already implemented in MPD, just not used. The sample format conversion code in the JACK plugin was redundant and could reduce sound quality.
* | | output/Internal: move enum AudioOutputCommand into the structMax Kellermann2014-12-244-58/+58
| | |
* | | output/Internal: convert audio_output_command to strictly-typed enumMax Kellermann2014-12-244-47/+49
| | |
* | | output/jack: use std::fill()Max Kellermann2014-12-241-9/+6
| | |
* | | output/jack: move functions into the structMax Kellermann2014-12-241-208/+246
| | |
* | | output/jack: merge two mpd_jack_available() callsMax Kellermann2014-12-241-2/+2
| | |
* | | output/jack: make variables more localMax Kellermann2014-12-241-21/+15
| | |
* | | output/jack: convert const to constexprMax Kellermann2014-12-241-1/+1
| | |
* | | output/jack: convert enum to constexprMax Kellermann2014-12-241-3/+1
| | |
* | | output/winmm: show detailed error messagesMax Kellermann2014-12-171-7/+18
| | |
* | | output/oss: make the static arrays "constexpr"Max Kellermann2014-12-091-3/+3
| | |
* | | Merge tag 'v0.19.6'Max Kellermann2014-12-081-0/+1
|\| |
| * | Output: start with a null mixer.Nix2014-12-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are code paths (mostly error cases) in which it is possible to initialize an AudioOutput and then kill it without ever calling audio_output_new(). In such a case, its destructor will attempt to free a mixer that was never initialized, leading to an attempt to take out a lock on a mutex that was similarly never initialized, which hangs forever. Fix by always initializing the mixer appropriately.
* | | util/DivideString: add option "strip"Max Kellermann2014-12-041-1/+1
| | |
* | | util/SplitString: new utility classMax Kellermann2014-12-042-28/+14
| | | | | | | | | | | | Replaces GLib's g_strsplit().
* | | output/jack: use usleep() instead of g_usleep()Max Kellermann2014-12-041-1/+2
| | |
* | | util/SplitString: rename to DivideStringMax Kellermann2014-12-031-2/+2
| | |
* | | output/ao: use class SplitString instead of g_strsplit()Max Kellermann2014-12-021-6/+4
| | |
* | | mixer/null: new mixer pluginMax Kellermann2014-12-021-0/+4
| | |
* | | MixerType: convert to strictly-typed enumMax Kellermann2014-12-021-5/+5
| | |
* | | MixerType: rename to CamelCaseMax Kellermann2014-12-021-1/+1
| | |
* | | output/httpd/IcyMetaDataServer: use CopyString() instead of g_strlcpy()Max Kellermann2014-12-011-18/+7
| | |
* | | output/httpd/IcyMetaDataServer: don't use GLib typesMax Kellermann2014-12-011-13/+13
| | |
* | | output/httpd/IcyMetaDataServer: make variables more localMax Kellermann2014-12-011-19/+14
| | |
* | | Compiler.h: add macro CLANG_OR_GCC_VERSION()Max Kellermann2014-11-281-1/+1
| | |
* | | configure.ac: add macro MPD_ENABLE_AUTO_PKGMax Kellermann2014-11-211-5/+5
| | | | | | | | | | | | Simplify the definition of many build options.
* | | Merge tag 'v0.19.2'Max Kellermann2014-11-021-0/+30
|\| |
| * | OutputThread: fall back to PCM if given DSD sample rate is not supportedMax Kellermann2014-10-251-0/+30
| | | | | | | | | | | | | | | Works around the "PCM conversion from f to dsd is not implemented" error message that prevents DSD playback.
* | | Set pulseaudio channel map to WAVE-EXSteven Newbury2014-10-251-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.
* | OutputThread: close the output plugin after filter failureMax Kellermann2014-10-241-0/+1
| | | | | | | | Fixes memory leak because ao_plugin_close() never gets called.
* | OutputThread: unlock mutex for CloseFilter()Max Kellermann2014-10-242-0/+14
| | | | | | | | Be consistent.
* | output/roar: remove unnecessary "volatile" keywordMax Kellermann2014-10-231-1/+1
| | | | | | | | | | A mutex acts as a memory barrier, and thus "volatile" is not necessary.
* | Add MusicBrainz' Release Track Id tagWieland Hoffmann2014-09-271-0/+3
| | | | | | | | | | | | | | | | | | | | The Release Track Id uniquely identifies a recording on a release - that is, even if a recording appears twice on a release (meaning that the combination of recording and release id are not enough to figure out which one it is), the release track id will allow differentiating the two. The tag names are taken from https://musicbrainz.org/doc/MusicBrainz_Picard/Tags/Mapping
* | output/alsa: change a few "dsd" to "dop"Max Kellermann2014-09-261-4/+4
| |
* | Merge branch 'v0.18.x'Max Kellermann2014-09-241-1/+10
|\|
* | output/pulse: simplify _wait_for_operation()Max Kellermann2014-09-051-6/+3
| | | | | | | | Eliminate the duplicate pa_operation_get_state() call.
* | output/alsa, pcm: rename "DSD over USB" to "DoP"Max Kellermann2014-08-311-20/+21
| | | | | | | | | | The standard has been renamed since the early draft that was implemented in MPD.
* | Merge tag 'v0.18.13'Max Kellermann2014-08-312-0/+15
|\|
| * output/alsa: fix endless loop at end of file in dsd_usb modeMax Kellermann2014-08-311-0/+9
| |