| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
The GLIB_CHECK_VERSION() macro was used improperly, which broke build
on GLib < 2.14. Add a "!" for negation.
|
|
|
|
|
| |
On some systems, the macro IN6_IS_ADDR_V4MAPPED() is not available.
Don't try to convert IPv6 to their IPV4 equivalents in this case.
|
|
|
|
|
|
|
|
| |
Turn the music_pipe into a simple music_chunk queue. The music_chunk
allocation code is moved to music_buffer, and is now managed with a
linked list instead of a ring buffer. Two separate music_pipe objects
are used by the decoder for the "current" and the "next" song, which
greatly simplifies the cross-fading code.
|
|
|
|
|
|
|
| |
Added music_pipe_allocate(), music_pipe_push() and
music_pipe_cancel(). Those functions allow the caller (decoder thread
in this case) to do its own chunk management. The functions
music_pipe_flush() and music_pipe_tag() can now be removed.
|
|
|
|
|
|
| |
The queue update after a seek was wrong: the queued song is cleared by
a successful seek. This caused queue/cross-fading problems after a
seek.
|
|
|
|
|
|
| |
After the decoder command was obtained, don't wait until libflac
detects EOF (as a side effect), quit the decoder immediately. This
check was missing completely.
|
|
|
|
|
|
| |
When the MPD core sends the decoder a command while
flac_process_single() is executed, this function fails. Abort the
decoder only if not seeking. This fixes a seeking bug.
|
|
|
|
|
| |
Moved some code from music_pipe_write() and music_pipe_expand(). Only
music_chunk.c should access the music_chunk internals.
|
| |
|
|
|
|
|
|
| |
Log the real period and buffer size. This might be useful when
debugging xruns. Note that the same information is available in
/proc/asound/card*/pcm*p/sub*/hw_params
|
|
|
|
|
| |
Since there are no other callers than stdout, this wouldn't be a
problem, but since there maybe in the future go ahead and fix it.
|
|
|
|
|
|
| |
implemetation
function was implemented in the version we are comparing to so there must be higher or equal
|
| |
|
| |
|
|
|
|
|
|
| |
There are a few high-end devices (e.g. ICE1724) which cannot even play
16 bit audio. Try the 32 bit fallback, which we already implemented
for 24 bit.
|
|
|
|
|
| |
[mk: merged memory leak patch; fixed indentation (tabs); fixed
documentation typo]
|
|
|
|
|
|
|
| |
The lastfm input plugin enables MPD to play lastfm:// URLs. This
plugin is not complete yet: it plays only the first song in the
last.fm playlist, and the playlist parser isn't even implemented
properly.
|
|
|
|
|
| |
Allow input plugins to configure with an "input" block in mpd.conf.
Also allow the user to disable a plugin completely.
|
|
|
|
|
|
| |
Instead of hard-coding the plugin global initialization in
input_stream_global_init(), make it walk the plugin list and
initialize all plugins.
|
|
|
|
| |
Create a sub directory for input plugins.
|
|
|
|
| |
Start to separate private from public input_stream API.
|
| |
|
| |
|
|
|
|
| |
[mk: cast off_t to uint32_t; same fix for aiff.c]
|
| |
|
|
|
|
|
|
| |
Added a small AIFF parser library, code copied from the RIFF parser
(big-endian integers). Look for an "ID3" chunk, and let libid3tag
parse it.
|
|
|
|
|
| |
Added a small RIFF parser library. Look for an "id3" chunk, and let
libid3tag parse it.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
All PCM sub libraries have 32 bit support now. Add support to the
glue function pcm_convert().
|
|
|
|
|
| |
Support converting 32 bit samples to any other supported sample
format.
|
|
|
|
| |
Added code to convert all other sample formats to 32 bit.
|
|
|
|
|
| |
For 32 bit dithering, reuse the 24 bit dithering code, but apply a 8
bit right shift first.
|
|
|
|
|
|
| |
There is nothing 24 bit specific in the pcm_dither_24 struct. Since
we want to reuse the struct for 32 bit dithering, let's drop the "_24"
suffix from the struct name.
|
|
|
|
|
| |
Resampling 32 bit samples is the same as resampling 24 bit samples -
both are stored in the int32_t type.
|
|
|
|
|
|
| |
Some 24 bit code can be reused. The 32 bit variant has to use 64 bit
integers, because 32 bit integers could overflow. This may be a
performance hit on 32 bit CPUs.
|
|
|
|
|
|
| |
This is the first patch in a series to enable 32 bit audio samples in
MPD. 32 bit samples are more tricky than 24 bit samples, because the
integer may overflow when you operate on a sample.
|
|
|
|
|
|
|
| |
audio_valid_sample_format() verifies the number of channels. Let's
just say up to 8 channels is allowed (which is possible with some
consumer sound chips). I don't know if there are bigger cards, and
since I cannot test it, I'll limit it to 8 for now.
|
|
|
|
| |
Do error reporting with GLib's GError library in this library, too.
|
|
|
|
| |
Do error reporting with GLib's GError library.
|
|
|
|
| |
Renamed a bunch of variables.
|
|
|
|
| |
Don't abort MPD when a sample format is not supported by pcm_volume().
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Parse the vorbis comments in libflac's metadata_callback and pass them
as tag struct to the decoder API.
|
|
|
|
|
| |
When the unix domain socket path is too long, don't abort with
g_error().
|
| |
|
|
|
|
| |
Use config_get_block_string() and manual GError handling instead.
|
|
|
|
| |
Do error handling with GError instead of aborting with g_error().
|
| |
|