aboutsummaryrefslogtreecommitdiffstats
path: root/src/output (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-06-20OutputControl: fix fail_timer check right after bootingRomain Rollet1-1/+2
Right after booting, the monotonic clock starts with a very small value, and AudioOutput::LockUpdate() may believe that the fail_timer has not recovered yet.
2014-12-26db/proxy, output/shout: fix implicit nullptr/bool conversionMax Kellermann1-1/+1
Return false on error, not nullptr.
2014-12-01Output: start with a null mixer.Nix1-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.
2014-11-02output/roar: remove unnecessary "volatile" keywordMax Kellermann1-1/+1
A mutex acts as a memory barrier, and thus "volatile" is not necessary.
2014-10-25OutputThread: fall back to PCM if given DSD sample rate is not supportedMax Kellermann1-0/+30
Works around the "PCM conversion from f to dsd is not implemented" error message that prevents DSD playback.
2014-10-24OutputThread: close the output plugin after filter failureMax Kellermann1-0/+1
Fixes memory leak because ao_plugin_close() never gets called.
2014-10-24OutputThread: unlock mutex for CloseFilter()Max Kellermann2-0/+14
Be consistent.
2014-10-23output/roar: remove unnecessary "volatile" keywordMax Kellermann1-1/+1
A mutex acts as a memory barrier, and thus "volatile" is not necessary.
2014-09-27Add MusicBrainz' Release Track Id tagWieland Hoffmann1-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
2014-09-26output/alsa: change a few "dsd" to "dop"Max Kellermann1-4/+4
2014-09-05output/pulse: simplify _wait_for_operation()Max Kellermann1-6/+3
Eliminate the duplicate pa_operation_get_state() call.
2014-08-31output/alsa, pcm: rename "DSD over USB" to "DoP"Max Kellermann1-20/+21
The standard has been renamed since the early draft that was implemented in MPD.
2014-08-31output/alsa: fix endless loop at end of file in dsd_usb modeMax Kellermann1-0/+9
2014-08-31output/{alsa,oss}: add assertionsMax Kellermann2-0/+6
2014-08-30*: add missing Compiler.h includesMax Kellermann1-0/+1
Necessary for "final" on gcc 4.6.
2014-08-30output/alsa: fix signed/unsigned comparison warningMax Kellermann1-1/+1
2014-08-29MusicChunk: use SignedSongTime for the time stampMax Kellermann1-2/+2
2014-08-29MultipleOutputs: use SignedSongTime for elapsed_timeMax Kellermann2-8/+9
2014-08-29Tag: use SignedSongTime for the song durationMax Kellermann1-6/+10
2014-08-26output/alsa: fix coding styleMax Kellermann1-5/+5
2014-08-26output/alsa: merge Init() into Configure()Max Kellermann1-6/+5
2014-08-26output/alsa: add API documentationMax Kellermann1-0/+17
2014-08-26output/alsa: support native DSD playbackMax Kellermann1-0/+12
Translate SampleFormat::DSD to SND_PCM_FORMAT_DSD_U8, which was added to alsa-lib 1.0.27.1.
2014-08-26output/alsa: move alsa_configure() into the classMax Kellermann1-13/+15
2014-08-26output/alsa: remove obsolete macrosMax Kellermann1-3/+0
2014-08-12PcmExport: use class ConstBufferMax Kellermann2-2/+8
2014-08-12Filter: FilterPCM() returns ConstBufferMax Kellermann1-58/+35
API simplification. We can now avoid abusing a "size_t*" as additional return value.
2014-08-12MusicChunk: rename struct to MusicChunkMax Kellermann4-24/+24
2014-08-07fs/output, fs/TextFile: move to fs/io/Max Kellermann1-1/+1
2014-07-30*Save, *State: use the OutputStream API instead of FILE*Max Kellermann2-6/+7
2014-07-14util/Cast: reimplement as template without macroMax Kellermann1-10/+4
2014-07-12Tag: add class const_iterator and methods begin(), end()Max Kellermann2-9/+11
Enables using range-based "for".
2014-07-09output/plugins/httpd/HttpdClient: fix build failure due to missing stdio.h ↵Gustavo Zacarias1-0/+1
include Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09output/HttpdClient: fix build failure due to missing stdio.h includeGustavo Zacarias1-0/+1
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-03-14MultipleOutputs: ensure input_audio_format is zero-initialisedPete Beardmore1-0/+1
-fixes SIGABRT when mpd is started from a previously paused state -regression introduced by commit: f5a923b9d16e4c63942a033d1bdb2ab150aae342: 'OutputAll: convert to class, move instance to class Partition' -input_audio_format was previously declared using the static modifier ensuring it was zero-initialised by default -the current default-initialised input_audio_format contains garbage at runtime which allows the AudioFormat.IsDefined() 'fail fast' test in MultipleOutputs::Update to pass and the SIGABRT follows in AudioOutput::Open when passed the invalid input_audio_format struct -switching AudioFormat.IsDefined() for AudioFormat.IsValid() is an alternative workaround
2014-03-04PulseOutputPlugin: set icon namePete Beardmore1-0/+1
2014-03-02output/alsa: remove the obsolete Raspberry Pi workaroundMax Kellermann1-36/+0
Has been superseded by the previous commit.
2014-03-02output/alsa: call snd_pcm_prepare() after snd_pcm_drop()Max Kellermann1-0/+25
Don't wait for an optimistic write to fail. This is an improved workaround for the infamous Raspberry Pi bug (see commit af991765). It works much better and comes without the negative side effects. The old workaround is now obsolete.
2014-03-01output/sles: support stereoMax Kellermann1-5/+7
2014-02-24output/pulse: remove bogus g_free() callMax Kellermann1-2/+0
2014-02-24output/httpd/client: eliminate GLibMax Kellermann1-13/+11
2014-02-24output/{shout,win32}: include cleanupMax Kellermann2-3/+0
2014-02-24output/openal: use usleep() instead of g_usleep()Max Kellermann1-2/+2
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-22output/sles: new output plugin for AndroidMax Kellermann7-0/+817
2014-02-20ConfigGlobal: eliminate function config_get_next_param()Max Kellermann1-3/+2
2014-02-19Mixer: add class MixerListenerMax Kellermann4-11/+31
Use a listener interface instead of GlobalEvents.
2014-02-19output/Init: pass AudioOutput referencesMax Kellermann1-29/+29
2014-02-19output/httpd: move to dedicated directoryMax Kellermann10-4/+349