aboutsummaryrefslogtreecommitdiffstats
path: root/src/output (follow)
Commit message (Collapse)AuthorAgeFilesLines
* shout: clear buffer before calling the encoderMax Kellermann2009-02-093-18/+14
| | | | | | | Always assume the buffer is empty before calling the encoder. Always flush the buffer immediately after there has been added something. This reduces the risk of buffer overruns, because there will never be a "rest" in the current buffer.
* shout: don't postpone metadataMax Kellermann2009-02-093-34/+14
| | | | | Don't duplicate the tag received by the send_metadata() method - send it to the shout server directly.
* shout: use libshout's synchronizationMax Kellermann2009-02-092-24/+4
| | | | | Removed the manual timer synchronization from the shout plugin. libshout's shout_sync() function does it for us.
* shout: switch to blocking modeMax Kellermann2009-02-092-78/+8
| | | | | | The non-blocking mode of libshout is sparsely documented, and MPD's implementation had several bugs. Also removed connect throttling code, that is done by the MPD core since 0.14.
* shout: removed shout_data.tag_to_sendMax Kellermann2009-02-092-9/+6
| | | | | When shout_data.tag!=NULL, there is a "tag to send". The tag_to_send flag is redundant.
* shout: removed shout_data.shout_errorMax Kellermann2009-02-092-4/+0
| | | | That variable is set in handle_shout_error(), but is never read.
* shout_mp3: call lame_close() in clear_encoder() methodMax Kellermann2009-02-021-2/+6
| | | | | | | | | | The shout_mp3 encoder had two bugs: when no song was ever played, MPD segfaulted during cleanup. Second bug: memory leak, each time the shout device was opened, lame_init() was called again, and lame_close() is only called once during shutdown. Fix this by shutting down LAME each time the clear_encoder() method is called.
* shout_mp3: free the lame_data struct on exitMax Kellermann2009-02-021-0/+2
| | | | | Make valgrind a little bit happier: free the global lame_data struct in the finish() method.
* jack: reduced sleep time to 1msMax Kellermann2009-01-291-1/+1
| | | | | | | | | | When waiting for free space in the ring buffer, the JACK plugin sleeped 10ms until there is enough space. This delay was too large for low-latency setups (<10ms), and created a lot of xruns. Work around that by reducing the sleep time to 1ms. A proper solution for this would be to use an event based approach, and we will do it, just not now.
* jack: clear "shutdown" flag on reconnectMax Kellermann2009-01-291-0/+2
| | | | | | | When the connection failed once, you had to restart MPD, because it never cleared the jack_data.shutdown flag. Instead, it refused to play anything "because there is no client thread" (which is wrong at that point).
* jack: allocate ring buffers before connectingMax Kellermann2009-01-291-5/+3
| | | | | If the ring buffers are allocated after jack_activate(), mpd_jack_process() might segfault because it attempts to access them.
* jack: register ports before activating clientsMax Kellermann2009-01-291-5/+5
| | | | Call jack_port_register() before jack_activate().
* jack: duplicate jack_get_ports() return valuesMax Kellermann2009-01-021-3/+4
| | | | | | | | | JACK documentation states: "The caller is responsible for calling free(3) any non-NULL returned value." This does not seem to include the array elements. Duplicate them after jack_get_ports(), and free only the array. Convert JackData.output_ports to non-const.
* shout: fixed bad error message printoutViliam Mateicka2008-12-231-2/+2
|
* Remove useless statement.Emanuele Giaquinta2008-12-171-1/+0
|
* Remove useless computation. After the pthread_cond_wait loop there are at ↵Emanuele Giaquinta2008-12-171-2/+0
| | | | least MIN(od->bufferSize, size) free bytes in the buffer. Thus MIN(od->bufferSize - od->len, size) is always equal to MIN(od->bufferSize, size).
* Remove useless statement, curpos is initialized at the beginning of the loop.Emanuele Giaquinta2008-12-171-1/+0
|
* Factor computation.Emanuele Giaquinta2008-12-171-4/+6
|
* Use MIN.Emanuele Giaquinta2008-12-171-2/+2
|
* Call CloseComponent after AudioUnitUninitialize.Emanuele Giaquinta2008-12-171-1/+1
|
* ao: use 16 bit sample formatMax Kellermann2008-12-091-0/+6
| | | | | | | | There have been bug reports on MPD regarding 24 bit output via libao/esd. The "ao" plugin does not attempt fall back to 16 bit currently, and thus fails to play 24 bit audio (i.e. all mp3 files). Make it always use 16 bit samples for now, until more bits are well-tested.
* osx: use 16 bit sample formatMax Kellermann2008-12-081-0/+3
| | | | | | The OS X output does not seem to support 24 bit audio in the way MPD implements it currently. Fall back to 16 bit for now, and schedule 24 bit support on OS X for MPD 0.15.
* osx: use GLib instead of utils.h/log.hMax Kellermann2008-12-081-9/+13
| | | | | One my_usleep() invocation remains, until we find out if we can delete it.
* osx: don't use void pointer in arithmeticMax Kellermann2008-12-081-2/+2
| | | | | Cast AudioBuffer.mData to a "unsigned char*" before adding "curpos". This fixes a gcc warning.
* alsa: reverted the default buffer_time to 500 msMax Kellermann2008-12-011-1/+5
| | | | | | | Commit dd7711d8 removed MPD's default ALSA buffer_time. The result was a buffer size which was way too small for playing streams on some sound hardware, and caused skips and distorted sound. Revert the default to 500 ms.
* shout: fixed the lame input buffer allocationMax Kellermann2008-11-301-9/+15
| | | | | | | | | | "float (*lamebuf)[2] = g_malloc()" does NOT allocate two float* buffers. The formula is even wrong: it should be applied to LAME's output buffer, not its input buffer. Converted "lamebuf" to the two variables "left" and "right", and allocate them independently with the exact buffer size. Set right=left if mono output is configured.
* shout_mp3: cast input buffer to int16_t*Max Kellermann2008-11-301-2/+2
| | | | It's easier to work with an int16_t* pointer here.
* oss: use GLib instead of utils.h/log.hMax Kellermann2008-11-251-55/+56
|
* mvp: use GLib instead of utils.h/log.hMax Kellermann2008-11-251-16/+27
|
* shout: use GLib instead of utils.h/log.hMax Kellermann2008-11-254-82/+82
|
* shout: don't check HAVE_SHOUTMax Kellermann2008-11-251-7/+0
| | | | | If the shout plugin is disabled, shout_plugin.c isn't compiled at all, no need to check the macro definition.
* ao: print error message when ao_open_live() failsMax Kellermann2008-11-251-1/+3
| | | | | When ao_open_live() failed, MPD would ignore the error code in "errno". Make it print a meaningful error message.
* ao: support all libao error codesMax Kellermann2008-11-251-9/+29
| | | | | | The function audioOutputAo_error() did not implement all possible libao error codes. Support the rest of them, and fall back to strerror().
* ao: use GLib instead of utils.h/log.hMax Kellermann2008-11-251-19/+21
|
* pulse: removed reconnect intervalMax Kellermann2008-11-051-19/+2
| | | | | The output thread automatically waits some time before retrying to open the device. Don't duplicate this check in the pulse plugin.
* pulse: check if connection is open in pulse_cancel()Max Kellermann2008-11-051-0/+3
| | | | | The pulse plugin crashed with a segmentation fault when the pulse server was killed.
* osx: fix gcc warningsMax Kellermann2008-11-041-7/+8
| | | | Fix prototypes and unused variables.
* osx: adapt to new output plugin APIMax Kellermann2008-11-041-19/+15
| | | | | The OS X output plugin wasn't adapted to the new output plugin yet, because I had no Mac to test...
* alsa: initialize "device" with NULLMax Kellermann2008-11-031-2/+1
| | | | | When using autodetection, AlsaData.device wasn't properly initialized with NULL. This broke autodetection randomly.
* alsa, jack: no const pointers for allocated stringsMax Kellermann2008-11-012-26/+42
| | | | | Make the pointers "device" and "name" non-const, so we don't need the xfree() hack. The default value is expressed as NULL.
* removed unneed check for protocol in shout plugin, will assume icecast2 ↵Alam Arias2008-10-311-2/+0
| | | | protocol if not exist in config
* added prefix to header macrosMax Kellermann2008-10-311-2/+2
| | | | | | | "LOG_H" is a macro which is also used by ffmpeg/log.h. This is ffmpeg's fault, because short macros should be reserved for applications, but since it's always a good idea to choose prefixed macro names, even for applications, we are going to do that in MPD.
* pulse: fix segfault without sink nameMax Kellermann2008-10-301-2/+2
| | | | | Commit d692e9 broke configurations without explicit server or sink configuration. Check for getBlockParam()==NULL.
* output: close device on play errorMax Kellermann2008-10-296-12/+2
| | | | | When an output plugin fails to play a chunk, close it. This replaces various manual close() calls in nearly all plugins.
* output: use bool for return values and flagsMax Kellermann2008-10-2911-110/+116
| | | | | Don't return 0/-1 on success/error, but true/false. Instead of int, use bool for storing flags.
* pulse: clear pa_simple pointer in pulse_close()Max Kellermann2008-10-291-0/+1
| | | | | The pointer becomes invalid due to pa_simple_free(), which may lead to segmentation faults when the output is reopened later.
* pulse: use GLib instead of util.h/log.hMax Kellermann2008-10-291-28/+25
| | | | Use GLib allocation and logging functions.
* pulse: no CamelCaseMax Kellermann2008-10-291-48/+49
|
* oss: check and override audio_format properlyMax Kellermann2008-10-291-0/+7
| | | | | Don't accept 24 bit audio. Force MPD to use 16 bit if anything other than 8 or 16 bit is selected.
* output: don't compile plugins which are disabledMax Kellermann2008-10-2611-86/+7
| | | | Don't compile the sources of disabled output plugins at all.