| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This new LAME encoder plugin is based on the existing shout_mp3.c
plugin.
|
|
|
|
|
| |
This new vorbis encoder plugin is based on the existing shout_ogg.c
plugin.
|
|
|
|
| |
The new generic encoder API will replace shout's custom encoder 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.
|
| |
|
| |
|
|
|
|
| |
The function path_set_fs_charset() is only used in path.c.
|
| |
|
|
|
|
|
| |
The parameter name "wait" overlaps with the POSIX wait() function.
Rename it.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Don't use libfaad's internal type names.
|
|
|
|
|
| |
Define the GLib logging domain in the following libraries: conf,
daemon, event_pipe, log.
|
|
|
|
|
| |
For better debugging aid when something goes wrong, log the name of
the effective configuration file.
|
| |
|
|
|
|
| |
I forgot to add these, and this broke "make distcheck".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Hi,
upon trying to play an MMS stream added to the play list, I got this:
mpd: /tmp/mpd/./src/input_stream.c:85: input_stream_open: Assertion `is->plugin->open == ((void *)0) || is->plugin == plugin' failed.
With the following patch applied, it works perfectly.
Thanks for having implemented MMS support :-).
Best regards,
Peter
|
|
|
|
|
|
| |
The configure.ac script does not care about the host architecture, it
only cares about the OS. Use ${host_os} instead of ${host} to
simplify the matching expressions.
|
|
|
|
| |
Without AC_CANONICAL_HOST, ${host_os} etc. are not defined.
|
|
|
|
|
|
|
|
|
|
|
| |
Added an inline assembly function for the 64 bit multiplication.
Benchmark results on a Pentium II 266 MHz, 512 MB of 24 bit PCM data:
dd if=/dev/zero bs=64k count=8k |
time ./test/software_volume 48000:24:2 >/dev/null
Before this patch 22.94s, after this patch 7.24s.
|
|
|
|
|
| |
This program is a simple utility for debugging and benchmarking the
software volume code.
|
|
|
|
| |
The switch syntax is "--enable-test". There are no test programs yet.
|
|
|
|
|
| |
When mp4ff_read_sample() returns a value bigger than zero, it
guarantees that the buffer is set. Remove the check.
|
|
|
|
| |
Don't waste any precious memory when the seek_table cannot be used.
|
|
|
|
| |
Don't include limits.h, use GLib constants instead.
|
|
|
|
|
|
|
|
|
| |
Use faacDecInit2() instead of AudioSpecificConfig() to detect the AAC
track in the MP4 file. This has a great advantage: it initializes the
libfaad decoder, which the caller would normally do anyway - but now
we can go without the AudioSpecificConfig() call. When decoder==NULL
(called from mp4_tag_dup()), fall back to a mp4ff_get_track_type()==1
check, like other audio players do.
|
|
|
|
|
|
| |
Moved the libfaad decoder initialization to mp4_faad_new(), and also
fill the audio_format struct there. This eliminates a little bit of
complexity in mp4_decode().
|
|
|
|
|
| |
Don't wait for the first frame to be decoded. We already have the
sample rate and the channel count from faacDecInit2().
|
|
|
|
|
| |
The function mp4_load_tag() is used only once, and mp4_tag_dup() is a
one-liner. Merge them.
|
|
|
|
|
|
|
| |
When a file is not seekable, MPD dropped the audio buffers before even
attempting to seek. This caused noticable sound corruption. Fix:
first attempt to seek, and only if that succeeds, call
audio_output_all_cancel().
|
|
|
|
| |
Make some variables more local, and eliminate superfluous ones.
|
| |
|
|
|
|
|
| |
Instead of returning the sample rate and channel count as separate
values, fill an audio_format struct.
|
|
|
|
|
| |
Don't wait for the first frame to be decoded. We already have the
sample rate and the channel count from faacDecInit().
|
|
|
|
|
| |
The MPD core will never send a SEEK command to a decoder which has
declared to be not seekable.
|
|
|
|
| |
Define G_LOG_DOMAIN.
|
|
|
|
|
| |
Replace this plugin's own buffer library with the new decoder_buffer
library.
|
|
|
|
|
| |
Instead of checking if the buffer is empty after adts_find_frame(),
check adts_find_frame()'s return value. This is more robust.
|
|
|
|
|
| |
Moved libfaad API quirks to the wrapper functions faad_decoder_init()
and faad_decoder_decode().
|
|
|
|
|
| |
Instead of writing the song duration into a float pointer, return it
from the function.
|
|
|
|
| |
There are no callers which pass NULL here.
|
|
|
|
|
|
| |
All callers of adts_find_frame() use faad_buffer_fill() before that.
Move that faad_buffer_fill() call into adts_find_frame() instead.
adts_find_frame() will get its own logic for on-demand filling.
|
|
|
|
|
| |
The decoder buffer library may be used by decoder libraries such as
"faad".
|
|
|
|
|
|
| |
adts_check_frame() must not be called with a buffer length smaller
than 8. We can eliminate that duplicate check, and convert it into an
assertion.
|
|
|
|
|
| |
It's not valid to use the buffer's data without ensuring that the
buffer contains enough data.
|
|
|
|
| |
"aac" -> "faad"
|