aboutsummaryrefslogtreecommitdiffstats
path: root/src/audioOutputs (unfollow)
Commit message (Collapse)AuthorFilesLines
2008-09-08alsa: use blocking instead of non-blocking writeEric Wong1-1/+6
The way we used non-blocking mode was HORRIBLE. It was non-blocking to ALSA, but we end up blocking in a busy loop that does absolutely NOTHING but retry. We don't check for playback cancellation (like we do in decoders) or anything. This is seriously broken and I can imagine it affects people on fast CPUs more because we do asynchronous output buffering and our ALSA device will always have data ready.
2008-09-08alsa: show more debugging informationEric Wong1-10/+14
Print out {buffer,period}_{size,time}. Not sure if this is going to help. I've been searching everywhere looking for a possible clue as to what's causing the high CPU usage problems... Also, add device information to some messages I missed earlier.
2008-09-08alsa: cleanup the mmap logic a bitEric Wong1-8/+6
2008-09-08alsa: snd_pcm_sw_params_set_xfer_align is deprecatedEric Wong1-3/+0
Lets not use deprecated functions. It's apparently possible to not care about the sw_params stuff at all!
2008-09-07alsa: only run snd_config_update_free_global once atexitEric Wong1-3/+7
This is safer than the patch in http://www.musicpd.org/mantis/view.php?id=1542 with multiple audio outputs enabled. Sadly, I only noticed that patch/problem when I googled for "snd_config_update_free_global"
2008-09-07alsa: move bitformat reading code out of the wayEric Wong1-16/+12
2008-09-07alsa: always print the period_time we setEric Wong1-2/+1
2008-09-07alsa: avoid unnecessary heap usage if we don't set a device nameEric Wong1-11/+12
2008-09-07alsa: get rid of the needless canPause flagEric Wong1-3/+0
We never use it for anything anyways as we release the device entirely on pause.
2008-09-07alsa: avoid reassigning ad->writeiEric Wong1-7/+4
This saves me precious terminal space
2008-09-07alsa: add reasoning for the non-portable macroEric Wong1-0/+2
2008-09-07alsa: capitalize "ALSA" consistently in messagesEric Wong1-16/+9
That's the name of this project.
2008-09-07alsa: optimistically try resuming from suspendEric Wong1-11/+12
Apparently snd_pcm_hw_params_can_resume() can return false even though my hardware does in fact support resuming. So stop carrying that value in the canResume flag and just try to resume when we're in the suspended state; falling back to snd_pcm_prepare only if resuming fails. libao does something similar on resume, too. While we're at it, use the E() macro which will enable us to have better error reporting.
2008-09-07alsa: extra debugging outputs to fix suspend/hibernateEric Wong1-3/+9
Hibernating my laptop while MPD is playing results in ugliness about "alsa device foo was suspend" constantly printed to the logs.
2008-09-07alsa: cleanup debug assignment of the "cmd" variableEric Wong1-66/+50
Given the length of the ALSA command names, I only want to see them once per-section of code, if at all...
2008-09-02tag: fix the shout and oggflac pluginsMax Kellermann1-5/+5
During the tag library refactoring, the shout plugin was disabled, and I forgot about adapting it to the new API. Apply the same fixes to the oggflac decoder plugin.
2008-09-02tag: renamed functions, no CamelCaseMax Kellermann1-4/+4
2008-09-02tag: renamed MpdTag and MpdTagItem to struct mpd_tag, struct tag_itemMax Kellermann1-2/+2
Getting rid of CamelCase; not having typedefs also allows us to forward-declare the structures.
2008-09-01use deconst_ptr instead of duplicating deconst logicEric Wong2-24/+9
2008-08-31jack: made "sample_size" static constMax Kellermann1-1/+1
sample_size is a variable which is computed at compile time. Declare it "static const", so the compiler can optimize it away.
2008-08-31moved jack configuration to the JackData structMax Kellermann1-49/+64
Storing local configuration in global (static) variables is obviously a bad idea. Move all those variables into the JackData struct, including the locks.
2008-08-31jack: removed unused macrosMax Kellermann1-10/+0
2008-08-31jack: don't set audioOutput->data=NULLMax Kellermann1-5/+5
There is only one caller of freeJackData() left: jack_finishDriver(). This function is called by the mpd core, and is called exactly once for every successful jack_initDriver(). We do not need to clear audioOutput->data, since this variable is invalidated anyway.
2008-08-31jack: initialize JackData in jack_initDriver()Max Kellermann1-6/+2
Over the lifetime of the jack AudioOutput object, we want a single valid JackData object, so we can persistently store data there (configuration etc.). Allocate JackData in jack_initDriver(). After that, we can safely remove all audioOutput->data==NULL checks (and replace them with assertions).
2008-08-31jack: added freeJackClient()Max Kellermann1-13/+25
No need to destroy the JackData object when an error occurs, since jack_finishDriver() already frees it. Only deinitialize the jack library, introduce freeJackClient() for that, and move code from freeJackData().
2008-08-31jack: initialize jd->client after !jd checkMax Kellermann1-5/+5
Prepare the next patch: make the "!jd" check independent of the jd->client initialization. This way we can change the "jd" initialization semantics later.
2008-08-31jack: eliminate superfluous freeJackData() callsMax Kellermann1-6/+0
connect_jack() invokes freeJackData() in every error handler, although its caller also invokes this function after a failure. We can save a lot of lines in connect_jack() by removing these redundant freeJackData() invocations.
2008-08-30converted MpdTagItem.type to an enumMax Kellermann1-0/+2
Don't use CPP macros when you can use C enum... this also allows better type checking.
2008-08-30enable -Wpointer-arith, -Wstrict-prototypesMax Kellermann4-6/+8
Also enable -Wunused-parameter - this forces us to add the gcc "unused" attribute to a lot of parameters (mostly library callback functions), but it's worth it during code refactorizations.
2008-06-13jack: initialize audioOutput->dataMax Kellermann1-1/+3
Initialize audioOutput->data with NULL in jack_initDriver(). Previously, this was never initialized, although the other functions relied on it being NULL prior to jack_openDevice(). This patch addresses bug 0001641[1]. In contrast to the patch provided by the bug reporter, it moves the initialization before the "!param" check. [1] - http://musicpd.org/mantis/view.php?id=1641 git-svn-id: https://svn.musicpd.org/mpd/trunk@7375 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-04-12fixed another shadow warningMax Kellermann1-11/+11
git-svn-id: https://svn.musicpd.org/mpd/trunk@7307 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-04-12use size_t and constant pointer in ao pluginsMax Kellermann10-31/+59
The audio output plugins should get a constant pointer, because they must not modify the buffer. Since the size is a non-negative buffer size in bytes, we should change its type to size_t. git-svn-id: https://svn.musicpd.org/mpd/trunk@7293 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-04-12yet more unsigned integersMax Kellermann1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@7287 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-04-12whitespace cleanupMax Kellermann1-7/+7
Clean up some space indentations, replace with tabs. git-svn-id: https://svn.musicpd.org/mpd/trunk@7239 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-03-26eliminated duplicate initializationMax Kellermann2-4/+4
Local variables which are never read before the first assignment don't need initialization. Saves a few bytes of text. Also don't reset variables which are never read until function return. git-svn-id: https://svn.musicpd.org/mpd/trunk@7199 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-03-26parse/initialize with the correct data typeMax Kellermann1-1/+1
When we expect an integer as result, why would we use the double precision floating point parser? strtol() is a better match, although we should probably check for overflows... git-svn-id: https://svn.musicpd.org/mpd/trunk@7198 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-03-26explicitly downcastMax Kellermann2-3/+3
Tools like "sparse" check for missing downcasts, since implicit cast may be dangerous. Although that does not change the compiler result, it may make the code more readable (IMHO), because you always see when there may be data cut off. git-svn-id: https://svn.musicpd.org/mpd/trunk@7196 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-02-05fix -Wconst warningsMax Kellermann1-6/+11
[ew: cleaned up the dirty union hack a bit] Signed-off-by: Eric Wong <normalperson@yhbt.net> git-svn-id: https://svn.musicpd.org/mpd/trunk@7180 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-26fixed "comparison between signed and unsigned"Max Kellermann1-1/+1
Signed-off-by: Eric Wong <normalperson@yhbt.net> git-svn-id: https://svn.musicpd.org/mpd/trunk@7146 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-26fixed -Wshadow warningsMax Kellermann1-44/+44
Signed-off-by: Eric Wong <normalperson@yhbt.net> git-svn-id: https://svn.musicpd.org/mpd/trunk@7143 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-26fixed invalid C prototypesMax Kellermann1-1/+1
Signed-off-by: Eric Wong <normalperson@yhbt.net> git-svn-id: https://svn.musicpd.org/mpd/trunk@7142 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-03Cleanup #includes of standard system headers and put them in one placeEric Wong9-60/+12
This will make refactoring features easier, especially now that pthreads support and larger refactorings are on the horizon. Hopefully, this will make porting to other platforms (even non-UNIX-like ones for masochists) easier, too. os_compat.h will house all the #includes for system headers considered to be the "core" of MPD. Headers for optional features will be left to individual source files. git-svn-id: https://svn.musicpd.org/mpd/trunk@7130 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-12-16Know about SND_PCM_STATE_RUNNING, might fix some bugsQball Cow1-0/+4
git-svn-id: https://svn.musicpd.org/mpd/trunk@7077 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-09-05conf: use getBoolBlockParam for block params, tooEric Wong2-13/+7
git-svn-id: https://svn.musicpd.org/mpd/trunk@6858 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-08-27adding \n to a bunch of error message stringsJ. Alexander Treuman2-4/+4
git-svn-id: https://svn.musicpd.org/mpd/trunk@6826 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-08-27export FATAL() with noreturn attributeEric Wong1-3/+1
This attribute was set in log.c, but not exported to other modules in log.h This allows us to remove some unneccessary variable initializations that were added in r6277. I did audioOutput_shout.c a bit differently, to avoid some jumps. before: $ size src/mpd text data bss dec hex filename 225546 4040 14600 244186 3b9da src/mpd after: $ size src/mpd text data bss dec hex filename 224698 4040 14600 243338 3b68a src/mpd git-svn-id: https://svn.musicpd.org/mpd/trunk@6821 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-08-11audioOutputs/audioOutput_shout: adding timers backJ. Alexander Treuman1-27/+80
The shout plugin will now feign playback until the connect timeout is hit, preventing connection attempts from blocking playback on local outputs. Note that this patch is very different from remiss' original one. git-svn-id: https://svn.musicpd.org/mpd/trunk@6738 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-06-13Use parsePath for the fifo output's path parameter.J. Alexander Treuman1-9/+9
git-svn-id: https://svn.musicpd.org/mpd/trunk@6623 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-06-13Adding FIFO audio output. This is pretty much identical to the old one,J. Alexander Treuman1-0/+299
except that it now uses a timer for throttling. git-svn-id: https://svn.musicpd.org/mpd/trunk@6621 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-06-12Use <= when comparing (current time - start time) to a timeout. This wayJ. Alexander Treuman1-2/+2
if the clock ticks right after we get the start time and the timeout is only one second, we'll still wait a full second instead of returning immediately. git-svn-id: https://svn.musicpd.org/mpd/trunk@6557 09075e82-0dd4-0310-85a5-a0d7c8717e4f