aboutsummaryrefslogtreecommitdiffstats
path: root/src/audio.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* audio: malloc reductionsEric Wong2006-08-011-28/+25
| | | | | | | | | | | | | Just malloc all of the audioOutput array in one shot to avoid fragmentation and to improve cache locality when iterating through the array. We also know name and type members of the AudioOutput struct won't change in the config, so there's no need to strdup them. newAudioOutput => initAudioOutput git-svn-id: https://svn.musicpd.org/mpd/trunk@4515 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* audio: get rid of the myAudioDevicesEnabled arrayEric Wong2006-08-011-63/+75
| | | | | | | It just made things more confusing. We'll just store the states in playerData_pd->audioDevicesStates and be done with it (it's a unsigned byte now). git-svn-id: https://svn.musicpd.org/mpd/trunk@4514 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* audio: remove AUDIO_MAX_DEVICES limitEric Wong2006-08-011-21/+24
| | | | | | | Some people have more than 8 devices (the old limit). It's pretty easy to support as many as our hardware and OS allows so we might as well. git-svn-id: https://svn.musicpd.org/mpd/trunk@4513 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Standardize state_file handling routines.Eric Wong2006-07-301-43/+5
| | | | | This way it's easier to manage and extend. git-svn-id: https://svn.musicpd.org/mpd/trunk@4494 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* remove deprecated myfprintf wrapperEric Wong2006-07-301-1/+1
| | | | | | | This shaves another 5-6k because we've removed the paranoid fflush() calls after every fprintf. Now we only fflush() when we need to git-svn-id: https://svn.musicpd.org/mpd/trunk@4493 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* interface/connection malloc reductions from mpd-keEric Wong2006-07-301-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch massively reduces the amount of heap allocations at the interface/command layer. Most commands with minimal output should not allocate memory from the heap at all. Things like repeatedly polling status, currentsong, and volume changes should be faster as a result, and more importantly, not a source of memory fragmentation. These changes should be safe in that there's no way for a remote-client to corrupt memory or otherwise do bad stuff to MPD, but an extra set of eyes to review would be good. Of course there's never any warranty :) No longer do we use FILE * structures in the interface, which means we don't have to allocate any new memory for most connections. Now, before you go on about losing the buffering that FILE * +implies+, remember that myfprintf() never took advantage of any of the stdio buffering features. To reduce the diff and make bugs easier to spot in the diff, I've kept myfprintf in places where we write to files (and not network interfaces). Expect myfprintf to go away entirely soon (we'll use fprintf for writing regular files). git-svn-id: https://svn.musicpd.org/mpd/trunk@4483 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Remove the fifo plugin. It's currently useless for the average user, and ↵J. Alexander Treuman2006-07-261-2/+0
| | | | | making it more presentable isn't something I'm willing to do before 0.12. It will likely be added back after 0.12, along with some very experimental stuff to make it more usable. git-svn-id: https://svn.musicpd.org/mpd/trunk@4472 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Adding fifo output pluginJ. Alexander Treuman2006-07-221-0/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4423 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Add mpd-indent.shAvuton Olrich2006-07-201-171/+195
| | | | | | Indent the entire tree, hopefully we can keep it indented. git-svn-id: https://svn.musicpd.org/mpd/trunk@4410 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* sparse: ANSI-fy function declarationsEric Wong2006-07-171-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are just warnings from sparse, but it makes the output easier to read. I ran this through a quick perl script, but of course verified the output by looking at the diff and making sure the thing still compiles. here's the quick perl script I wrote to generate this patch: ----------- 8< ----------- use Tie::File; defined(my $pid = open my $fh, '-|') or die $!; if (!$pid) { open STDERR, '>&STDOUT' or die $!; exec 'sparse', @ARGV or die $!; } my $na = 'warning: non-ANSI function declaration of function'; while (<$fh>) { print STDERR $_; if (/^(.+?\.[ch]):(\d+):(\d+): $na '(\w+)'/o) { my ($f, $l, $pos, $func) = ($1, $2, $3, $4); $l--; tie my @x, 'Tie::File', $f or die "$!: $f"; print '-', $x[$l], "\n"; $x[$l] =~ s/\b($func\s*)\(\s*\)/$1(void)/; print '+', $x[$l], "\n"; untie @x; } } git-svn-id: https://svn.musicpd.org/mpd/trunk@4378 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* audio: attempt to gracefully handle disconnected/reconnected devicesEric Wong2006-07-161-5/+8
| | | | | | | | | | | Currently only ALSA is supported/tested, and only if the mixer device is not on the audio device being disconnected (software mixer). This patch allows me to disconnect my Headroom Total Airhead USB sound card, and resume playback (skips to the next song, which should be fixed) when the device is plugged back in. git-svn-id: https://svn.musicpd.org/mpd/trunk@4364 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Committing qball's patch to list supported audio outputs in --versionJ. Alexander Treuman2006-07-161-4/+9
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4357 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* De-inline non-trivial, non-performance-critical functionsEric Wong2006-07-151-1/+1
| | | | | | Functions that should stay inlined should have an explanation attached to them. git-svn-id: https://svn.musicpd.org/mpd/trunk@4355 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Change shank's email addressJ. Alexander Treuman2006-07-141-1/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4333 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Huge header update, update the copyright and addAvuton Olrich2006-07-131-1/+1
| | | | | the GPL header where necessary git-svn-id: https://svn.musicpd.org/mpd/trunk@4317 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Add PulseAudio supportJ. Alexander Treuman2006-07-131-0/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4316 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Save audio output state in correct order.J. Alexander Treuman2006-05-201-1/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4207 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Commit Jat's patch for bug 1281Qball Cow2006-05-081-11/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4136 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Don't rely on memcmp() for structs, padding bits are randomEric Wong2006-04-051-2/+7
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4016 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* rewrite statefile code for audio devicesEric Wong2006-03-181-102/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the words of the original author, it was 'crappy'. I tend to agree :) The code has also been broken for at least the past few months, and nobody bothered fixing it The previous format it was overly complex: 5 lines to describe each device. The new format is one-line per-device: audio_device_state:%d:%s %d - 0 for disabled, any integer for enabled %s - name of the device as specified in the config file, whitespace and all Incompatibilities: * Output names are now _required_ to be unique. This is required because the new format relies solely on the name of the audio device. Relying on the device IDs internal to MPD was a bad idea anyways since the user usually has none or very little idea how they're generated, and adding a new device or removing one from a config would throw things off completely. This is also just a Good Idea(TM) because it makes things less confusing to users when they see it in their clients. * Output states are not preserved from the previous format. Not a big deal, since the previous code was never officially released. Also, it's been broken for months now, so I doubt anybody would notice :) git-svn-id: https://svn.musicpd.org/mpd/trunk@3928 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Saving state of output-device in state-file. (This is a temporary solution, ↵Qball Cow2005-08-231-0/+131
| | | | | rewrite of state-file is planned for 0.13) git-svn-id: https://svn.musicpd.org/mpd/trunk@3449 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* patch from Oliver Logghe for Hauppage Media MVP supportWarren Dukes2005-08-111-0/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@3432 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* add OS X configure stuff and added a skeleton audioOutput plugin for OS XWarren Dukes2005-03-131-0/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@3074 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* if no audioOutput specified, we no attempt to detect if there exists a ↵Warren Dukes2005-03-121-3/+5
| | | | | usable oss or alsa device git-svn-id: https://svn.musicpd.org/mpd/trunk@3057 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* implemented dropping of current buffered audio, works for oss, but there seemsWarren Dukes2005-03-051-1/+21
| | | | | to be a "blip" for alsa devices, needs more work git-svn-id: https://svn.musicpd.org/mpd/trunk@3011 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* implemented alsa audioOutput plugin, now it needs testingWarren Dukes2005-03-051-2/+4
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@3008 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* s/device/output/Warren Dukes2004-11-151-3/+3
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2678 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* don't set granulepos, that's pad, mmmkay?Warren Dukes2004-11-091-1/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2555 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* add a buffer to audio layer, so we only send data to audio devices 32 times ↵Warren Dukes2004-11-091-13/+53
| | | | | per second git-svn-id: https://svn.musicpd.org/mpd/trunk@2553 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* new command "devices", prints devices and their statesWarren Dukes2004-11-021-3/+12
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2486 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* enabling and disabling individual audioOutputs is mostly done, just needWarren Dukes2004-11-021-27/+38
| | | | | to add the command hooks git-svn-id: https://svn.musicpd.org/mpd/trunk@2484 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* begin work on avuton's disabling and enabling of individual audio outputsWarren Dukes2004-11-021-6/+67
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2483 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* abstract out audioFormat conversion from shout plugin to the audioOutput layer,Warren Dukes2004-11-021-4/+6
| | | | | now format can be specified for each different audioOutput device git-svn-id: https://svn.musicpd.org/mpd/trunk@2474 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* now np's OSS stuff actually worksWarren Dukes2004-11-021-0/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2459 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* fix a little bug with audio device being closed on song change, oopsWarren Dukes2004-10-281-6/+3
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2376 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* merge shank-rewrite-config changesWarren Dukes2004-10-281-24/+83
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2375 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* try to fix metadata on initially playing (metadata being sent before device ↵Warren Dukes2004-10-261-1/+1
| | | | | is open) git-svn-id: https://svn.musicpd.org/mpd/trunk@2344 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* fix a big time bug in metadataChunk (off by one in an array assignment)Warren Dukes2004-10-251-1/+5
| | | | | also, now we have metadata in our streams git-svn-id: https://svn.musicpd.org/mpd/trunk@2337 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* configure shout encoding quality and audio formatWarren Dukes2004-10-231-20/+28
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2307 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* on finishAudioDriver, be sure to set shoutOutput = NULLWarren Dukes2004-10-221-0/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2296 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* this really fixes pauseWarren Dukes2004-10-221-4/+5
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2294 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* fix segfault when resuming from pauseWarren Dukes2004-10-221-0/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2293 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* shout audioOutput will now connect and disconnect from icecast serverWarren Dukes2004-10-201-0/+6
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2285 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* stub audioOutput plugin for shoutWarren Dukes2004-10-201-0/+2
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2283 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* oops, accidently broke crossfading, fixed nowWarren Dukes2004-10-201-0/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2281 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* some small cleanupsWarren Dukes2004-10-201-14/+4
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2280 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* ok, now we're using some of the new audioOutput layer stuff, needs some ↵Warren Dukes2004-10-201-157/+23
| | | | | serious testing, and there maybe some serios BREAKAGE git-svn-id: https://svn.musicpd.org/mpd/trunk@2279 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* minor little changes to audio junkWarren Dukes2004-10-201-14/+13
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@2278 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* fix a few bugs in mp3_decode and minimize alsa underruns by playing silence ↵Warren Dukes2004-06-191-0/+5
| | | | | when switch songs git-svn-id: https://svn.musicpd.org/mpd/trunk@1572 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Add WARNING log method. it's the same as ERROR, except that when mpd starts,Warren Dukes2004-06-121-2/+1
| | | | | | warnings are buffered until the error log is opened, and then flushed to the error log. git-svn-id: https://svn.musicpd.org/mpd/trunk@1442 09075e82-0dd4-0310-85a5-a0d7c8717e4f