aboutsummaryrefslogtreecommitdiffstats
path: root/src/output (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-02-09shout: clear buffer before calling the encoderMax Kellermann3-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.
2009-02-09shout: don't postpone metadataMax Kellermann3-34/+14
Don't duplicate the tag received by the send_metadata() method - send it to the shout server directly.
2009-02-09shout: use libshout's synchronizationMax Kellermann2-24/+4
Removed the manual timer synchronization from the shout plugin. libshout's shout_sync() function does it for us.
2009-02-09shout: switch to blocking modeMax Kellermann2-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.
2009-02-09shout: removed shout_data.tag_to_sendMax Kellermann2-9/+6
When shout_data.tag!=NULL, there is a "tag to send". The tag_to_send flag is redundant.
2009-02-09shout: removed shout_data.shout_errorMax Kellermann2-4/+0
That variable is set in handle_shout_error(), but is never read.
2009-02-02shout_mp3: call lame_close() in clear_encoder() methodMax Kellermann1-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.
2009-02-02shout_mp3: free the lame_data struct on exitMax Kellermann1-0/+2
Make valgrind a little bit happier: free the global lame_data struct in the finish() method.
2009-01-29jack: reduced sleep time to 1msMax Kellermann1-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.
2009-01-29jack: clear "shutdown" flag on reconnectMax Kellermann1-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).
2009-01-29jack: allocate ring buffers before connectingMax Kellermann1-5/+3
If the ring buffers are allocated after jack_activate(), mpd_jack_process() might segfault because it attempts to access them.
2009-01-29jack: register ports before activating clientsMax Kellermann1-5/+5
Call jack_port_register() before jack_activate().
2009-01-02jack: duplicate jack_get_ports() return valuesMax Kellermann1-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.
2008-12-23shout: fixed bad error message printoutViliam Mateicka1-2/+2
2008-12-17Remove useless statement.Emanuele Giaquinta1-1/+0
2008-12-17Remove useless computation. After the pthread_cond_wait loop there are at ↵Emanuele Giaquinta1-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).
2008-12-17Remove useless statement, curpos is initialized at the beginning of the loop.Emanuele Giaquinta1-1/+0
2008-12-17Factor computation.Emanuele Giaquinta1-4/+6
2008-12-17Use MIN.Emanuele Giaquinta1-2/+2
2008-12-17Call CloseComponent after AudioUnitUninitialize.Emanuele Giaquinta1-1/+1
2008-12-09ao: use 16 bit sample formatMax Kellermann1-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.
2008-12-08osx: use 16 bit sample formatMax Kellermann1-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.
2008-12-08osx: use GLib instead of utils.h/log.hMax Kellermann1-9/+13
One my_usleep() invocation remains, until we find out if we can delete it.
2008-12-08osx: don't use void pointer in arithmeticMax Kellermann1-2/+2
Cast AudioBuffer.mData to a "unsigned char*" before adding "curpos". This fixes a gcc warning.
2008-12-01alsa: reverted the default buffer_time to 500 msMax Kellermann1-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.
2008-11-30shout: fixed the lame input buffer allocationMax Kellermann1-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.
2008-11-30shout_mp3: cast input buffer to int16_t*Max Kellermann1-2/+2
It's easier to work with an int16_t* pointer here.
2008-11-25oss: use GLib instead of utils.h/log.hMax Kellermann1-55/+56
2008-11-25mvp: use GLib instead of utils.h/log.hMax Kellermann1-16/+27
2008-11-25shout: use GLib instead of utils.h/log.hMax Kellermann4-82/+82
2008-11-25shout: don't check HAVE_SHOUTMax Kellermann1-7/+0
If the shout plugin is disabled, shout_plugin.c isn't compiled at all, no need to check the macro definition.
2008-11-25ao: print error message when ao_open_live() failsMax Kellermann1-1/+3
When ao_open_live() failed, MPD would ignore the error code in "errno". Make it print a meaningful error message.
2008-11-25ao: support all libao error codesMax Kellermann1-9/+29
The function audioOutputAo_error() did not implement all possible libao error codes. Support the rest of them, and fall back to strerror().
2008-11-25ao: use GLib instead of utils.h/log.hMax Kellermann1-19/+21
2008-11-05pulse: removed reconnect intervalMax Kellermann1-19/+2
The output thread automatically waits some time before retrying to open the device. Don't duplicate this check in the pulse plugin.
2008-11-05pulse: check if connection is open in pulse_cancel()Max Kellermann1-0/+3
The pulse plugin crashed with a segmentation fault when the pulse server was killed.
2008-11-04osx: fix gcc warningsMax Kellermann1-7/+8
Fix prototypes and unused variables.
2008-11-04osx: adapt to new output plugin APIMax Kellermann1-19/+15
The OS X output plugin wasn't adapted to the new output plugin yet, because I had no Mac to test...
2008-11-03alsa: initialize "device" with NULLMax Kellermann1-2/+1
When using autodetection, AlsaData.device wasn't properly initialized with NULL. This broke autodetection randomly.
2008-11-01alsa, jack: no const pointers for allocated stringsMax Kellermann2-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.
2008-10-31removed unneed check for protocol in shout plugin, will assume icecast2 ↵Alam Arias1-2/+0
protocol if not exist in config
2008-10-31added prefix to header macrosMax Kellermann1-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.
2008-10-30pulse: fix segfault without sink nameMax Kellermann1-2/+2
Commit d692e9 broke configurations without explicit server or sink configuration. Check for getBlockParam()==NULL.
2008-10-29output: close device on play errorMax Kellermann6-12/+2
When an output plugin fails to play a chunk, close it. This replaces various manual close() calls in nearly all plugins.
2008-10-29output: use bool for return values and flagsMax Kellermann11-110/+116
Don't return 0/-1 on success/error, but true/false. Instead of int, use bool for storing flags.
2008-10-29pulse: clear pa_simple pointer in pulse_close()Max Kellermann1-0/+1
The pointer becomes invalid due to pa_simple_free(), which may lead to segmentation faults when the output is reopened later.
2008-10-29pulse: use GLib instead of util.h/log.hMax Kellermann1-28/+25
Use GLib allocation and logging functions.
2008-10-29pulse: no CamelCaseMax Kellermann1-48/+49
2008-10-29oss: check and override audio_format properlyMax Kellermann1-0/+7
Don't accept 24 bit audio. Force MPD to use 16 bit if anything other than 8 or 16 bit is selected.
2008-10-26output: don't compile plugins which are disabledMax Kellermann11-86/+7
Don't compile the sources of disabled output plugins at all.