| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Some sound chips/drivers (e.g. Intel HDA) don't support 24 bit
samples, they want to get 32 bit instead. Now that MPD's PCM library
supports 32 bit, add a 32 bit fallback when 24 bit is not supported.
|
|
|
|
|
| |
The MPD core logs the audio format of all audio outputs. Remove the
duplicate message from the plugins.
|
|
|
|
| |
[mk: adapted to new output plugin API]
|
|
|
|
| |
Renamed numOfItems to num_items.
|
|
|
|
|
| |
The check "open()!=0" is wrong, you have to write "open()>=0", because
-1 means error, and 0 is a valid file handle.
|
|
|
|
|
|
|
| |
Use GLib's GError library for reporting output device failures.
Note that some init() methods don't clean up properly after a failure,
but that's ok for now, because the MPD core will abort anyway.
|
|
|
|
|
| |
The return type of most OS X functions is OSStatus, not int. We can
get a nice error message from GetMacOSStatusCommentString(), log it.
|
|
|
|
|
|
| |
Don't call AudioOutputUnitStart() in the play() method, do it after
the device has been opened. We can eliminate the "started" property
now, because the device is always started when it's open.
|
|
|
|
|
|
| |
We don't need to keep commented code forever. If we want that
test_default_device() implementation back one day, we'll pick it from
the git history.
|
|
|
|
| |
Renamed types, functions, variables.
|
|
|
|
| |
Eliminated manual integer parsing.
|
|
|
|
|
|
|
| |
The MPD core guarantees that the audio_output object is always
consistent, and our pa_simple!=NULL checks are superfluous. Also
don't manually close the device on error in pulse_play(), since the
MPD core does this automatically when the play() method returns 0.
|
|
|
|
| |
Eliminate one label and a bunch of gotos.
|
|
|
|
| |
Use C instead of CPP.
|
|
|
|
|
| |
Return type of oss_find_supported_param(), oss_can_convert() and
oss_find_unsupported_param() should be bool instead of int.
|
|
|
|
|
| |
Convert the num_supported and num_unsupported variables from signed to
unsigned.
|
|
|
|
| |
Renamed types, functions and variables.
|
|
|
|
| |
When the sample format is unknown, fall back to 16 bit samples.
|
|
|
|
|
|
| |
Simplify error handling a bit by moving some code into a separate
function. This eliminates a good bunch of gotos, but that's not
finished yet.
|
|
|
|
|
| |
When the MVP device has been closed in the cancel() method, and the
play() method attempts to reopen it, check for errors.
|
|
|
|
| |
Moved the table lookup code to a separate function.
|
|
|
|
| |
The array must never be modified, it's a constant lookup table.
|
|
|
|
|
|
| |
Looks like the MVP audio output only supports 16 and 24 bit audio
samples. If MPD generates any other sample formats, force it to use
16 bit.
|
|
|
|
| |
When the channel count is greater than 2, fall back to stereo sound.
|
|
|
|
|
| |
Return true/false instead of 0/-1. Also check its return value in
mvp_output_open().
|
|
|
|
|
| |
Pass a pointer to the audio_format struct instead of 3 separate
integers.
|
|
|
|
|
| |
Don't pass the big_endian flag to mvp_set_pcm_params(), do a simple
"G_BYTE_ORDER==G_LITTLE_ENDIAN" instead.
|
|
|
|
|
| |
Instead of manually calculating the number of elements in the
mvp_sample_rates array, use GLib's convenience macro G_N_ELEMENTS().
|
|
|
|
| |
Renamed types, functions and variables.
|
|
|
|
| |
Return true/false for success/failure instead of returning 0/-1.
|
|
|
|
| |
Renamed types, functions and variables.
|
|
|
|
|
| |
The MPD core guarantees that the audio_output object is always
consistent, and our timer!=NULL checks are superfluous.
|
|
|
|
| |
Renamed functions and variables.
|
|
|
|
|
|
|
| |
The MPD core guarantees that the audio_output object is always in a
consistent state: either open or closed. When open, it will not call
the open() method again, and when closed, it will not call play().
Removed several checks and the NULL initialization.
|
|
|
|
|
| |
The method is empty, and we can simply set the method pointer to NULL
instead.
|
|
|
|
|
|
| |
audio_output_get_name() has been removed, which was the only function
left in output_api.h. The output plugin doesn't need the audio_output
object at all, remove the parameter from the init() method.
|
|
|
|
| |
Use config_get_block_string("name") instead of audio_output_get_name().
|
|
|
|
|
| |
Fix a gcc warning, initialize the "space" variable at the beginning of
mpd_jack_play().
|
|
|
|
|
|
| |
The meaning of the chunk depends on the audio format; don't suggest a
specific format by declaring the pointer as "char*", pass "void*"
instead.
|
|
|
|
|
|
|
|
| |
The old API required an output plugin to not return until all data
passed to the play() method is consumed. Some output plugins have to
loop to fulfill that requirement, and may block during that. Simplify
these, by letting them consume only part of the buffer: make play()
return the length of the consumed data.
|
|
|
|
|
| |
There are no plugins left which require shout_plugin.h. Moved the
struct declaration to shout_plugin.c.
|
|
|
|
| |
This array is empty, and is not used anymore.
|
|
|
|
|
| |
Removed shout's encoder plugin API in favor of the new generic encoder
plugin API.
|
|
|
|
|
| |
The method implementation my_shout_open_device() consists of only one
line, the call to open_shout_conn(). Merge both functions into one.
|
|
|
|
| |
Return true/false instead of 0/-1.
|
|
|
|
|
|
|
| |
Now that I've found this nice function in the GLib docs, we can
finally remove our custom sleep function. Still all those callers of
g_usleep() have to be migrated one day to use events, instead of
regular polling.
|
|
|
|
| |
If an output plugin requires config.h, it should include it directly.
|
|
|
|
|
| |
The output plugin shouldn't know any specifics of the mixer API. Make
it return the mixer object, and let the caller deal with it.
|
|
|
|
|
| |
Use audio_format_frame_size() instead of
channels*audio_format_sample_size().
|
|
|
|
|
|
| |
Pass the music chunk as a "const void *" to the encoder, instead of a
"const char *". Actually, both encoders currently expect 16 bit
samples, passing a 8-bit character is rather pointless.
|