aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2011-10-08decoder/wavpack: don't call WavpackGetMode() twiceMax Kellermann1-1/+1
Use local variable "is_float".
2011-10-08pcm_convert: fix typo in error messageMax Kellermann1-1/+1
2011-10-08audio_format: move code to sample_format_size()Max Kellermann1-6/+13
Cast to enum sample_format. Without the cast, it's just a plain integer, and gcc cannot know that a "case" statement is missing.
2011-10-08pcm_resample_lsr: move common code to lsr_process()Max Kellermann1-32/+17
2011-10-08output/roar: move code to _use_audio_format()Max Kellermann1-27/+38
2011-10-08db_print: print absolute URI of playlist entriesMax Kellermann3-5/+21
The protocol mandates that playlist URIs are absolute (i.e. full URI relative to the music directory, not relative to the parent directory). This adds the parameter "directory" to the "playlist" visitor method.
2011-10-08output/openal: auto-fallback to mono if channel count is unsupportedMax Kellermann1-9/+9
.. instead of failing playback completely.
2011-10-08output/alsa: remove "default" case from switchMax Kellermann1-3/+6
Allow gcc to warn when a new format isn't supported.
2011-10-08pcm_resample: add internal function _lsr_init()Max Kellermann4-8/+26
Let the libsamplerate code initialize itself.
2011-10-08pcm_resample: one-time global initializationMax Kellermann5-42/+84
Load the samplerate_converter on MPD startup. Fail if the converter name is invalid.
2011-10-07decoder/dsdiff: add option "lsbitfirst"Max Kellermann1-1/+11
Defaults to "no", which fixes the noise problems.
2011-10-07decoder/dsdiff: add documentationMax Kellermann1-0/+7
2011-10-06playlist_song: allow references to songs outside the musicdirMax Kellermann1-0/+6
When we have an absolute path that's not inside the music directory, allow loading it anyway, if we're in "secure" mode (i.e. the client is connected via UNIX socket).
2011-10-06playlist_song: fix absolute path support in playlistsJesús Bravo Álvarez1-3/+2
Right now, a playlist with absolute pathnames can only add songs that are in the same the directory of the playlist or under it. If uri is an absolute pathname and base_uri is set, playlist_check_translate_song() will check that base_uri is a prefix of uri, excluding every other song in the music directory outside base_uri. I think in this case base_uri should be completely ignored (and made NULL) and uri should just be checked against music root directory.
2011-10-06player_thread: add flag "output_open", fixes assertion failureMax Kellermann1-5/+17
Previously, the condition "defined(play_audio_format)" was used to see if an output device has been opened, but if the device had failed on startup, an assertion failure could occur. This patch adds a separate flag.
2011-10-06player_thread: move code to player_open_output()Max Kellermann1-22/+37
Common function that manages "player" attributes after audio_output_all_open() has returned.
2011-10-06output_control: remove unused prototype _close_locked()Max Kellermann1-3/+0
2011-10-06player_control: auto-start playback when seeking is requestedMax Kellermann1-3/+0
Now that the player thread can handle SEEK commands while not (yet) playing, we can remove the "pc.state" check from pc_seek().
2011-10-06player_thread: handle SEEK while not playingMax Kellermann1-2/+10
2011-10-06decoder_api: call _prepare_initial_seek() in decoder_tag()Max Kellermann1-1/+1
This checks both conditions: pending and running. Fixes yet another assertion failure!
2011-10-06decoder_api: move code to _prepare_initial_seek()Max Kellermann1-7/+31
.. and add a few code comments.
2011-10-05decoder_control: add attributes start_ms, end_msMax Kellermann5-6/+31
Don't read song.start_ms and song.end_ms, let the player thread manage this logic instead.
2011-10-05decoder_api: don't copy tag to pipe during initial seekMax Kellermann1-3/+8
Fixes one more assertion failure.
2011-10-04decoder_api: clear initial_seek_running on errorMax Kellermann1-1/+3
Fixes possible assertion failure.
2011-10-04decoder/dsdiff: new decoder pluginMax Kellermann3-0/+512
Doesn't seem to work yet, getting just noise from a test file. Seeking isn't implemented yet.
2011-10-04dsd2pcm/noiseshape: fix typo in C++ checkMax Kellermann1-2/+2
2011-10-04dsd2pcm: fix prototypesMax Kellermann2-3/+3
Fixes gcc warnings.
2011-10-04import dsd2pcm_src.zipSebastian Gesemann8-0/+637
[this is the code from dsd2pcm_src.zip, published on a forum by Sebastian Gesemann. Upon request, he has given permission to redistribute and modify his code, without referring to a specific license. - mk]
2011-10-04audio_format: add constant MAX_CHANNELSMax Kellermann1-1/+3
To be used in fixed-size arrays.
2011-09-30Add support for streaming to a DLNA clientSteven Blackburn1-5/+35
The Naim Uniti does not appear to support icecast-style streaming of FLAC music but does support the codec from a DLNA server. This change looks for "transferMode.dlna.org: Streaming" in the HTTP request header and responds with something the Uniti (and hopefully other DLNA clients) accepts. The only difference in the DLNA streaming mode is the reponse header and that icecast metadata is disabled. If a client request indicates both modes are supported, the DLNA mode is preferred (as the Uniti says it supports both but then rejects a FLAC ICY stream). Note: This change may be specific to Naim equipment (the only device it was tested on). E.g. the hardcoding of Content-Length which works but is not a logically correct value. The change should be backwards-compatible, so only those clients requesting a DLNA stream will see any difference.
2011-09-22decoder_api: emulate SEEK command for initial seek to CUE trackMax Kellermann4-16/+73
When playing a CUE track, the player thread waited for the decoder to become ready, and then sent a SEEK command to the beginning of the CUE track. If that is near the start of the song file, and the track is short enough, the decoder could have finished decoding already at that point, and seeking fails. This commit makes this initial seek more robust: instead of letting the player thread deal with the difficult timings, let the decoder API emulate a SEEK command, and return it to the decoder plugin, as soon as the plugin finishes its initialization.
2011-09-22decoder_internal.h: more API documentationMax Kellermann1-0/+5
2011-09-21protocol: drop G_GNUC_PURE from client_message_dupJonathan Neuschäfer1-1/+1
2011-09-21utils: mark sockaddr_to_string() as G_GNUC_MALLOCJonathan Neuschäfer1-0/+1
2011-09-21Simplify setsockopt() casting workaroundDan McGee2-20/+6
On Win32, the third setsockopt parameter has type (char *) while on POSIX systems it is (void *). However, given that it is a no-op cast to go from a char pointer to a void pointer, we can cast to a char pointer (with a possible const modifier) on all platforms and satisfy the compiler. Signed-off-by: Dan McGee <dan@archlinux.org>
2011-09-21utils: uri.h: fix a typo: "schema"Jonathan Neuschäfer1-1/+1
2011-09-20tcp_connect: generic library for establishing TCP connectionsMax Kellermann2-0/+348
2011-09-20io_thread: add function _timeout_add()Max Kellermann2-0/+13
Same as _timeout_add_seconds(), but this one has millisecond resolution.
2011-09-20io_thread: _timeout_add_seconds() returns GSource*Max Kellermann2-5/+5
The numeric ID isn't so useful.
2011-09-20server_socket: use resolve_host_port() instead of getaddrinfo()Max Kellermann1-17/+4
Allow port specification in "bind_to_address" settings.
2011-09-20resolver: add function resolve_host_port()Max Kellermann2-2/+84
2011-09-20socket_util: move sockaddr_to_string() to resolver.cMax Kellermann7-65/+126
2011-09-20rtsp_client, output/raop: use close_socket() instead of close()Max Kellermann2-5/+7
2011-09-20tcp_socket, udp_server: use g_io_channel_new_socket()Max Kellermann2-10/+4
2011-09-20fd_util: add function close_socket()Max Kellermann6-8/+25
Wrap close(), use closesocket() on WIN32/WinSock.
2011-09-20fd_util: check HAVE_INOTIFY_INIT in headerMax Kellermann1-0/+4
Don't provide the prototype if inotify_init() was not detected.
2011-09-20fd_util: include check.h, verify config.h was includedMax Kellermann1-0/+2
2011-09-20glib_socket.h: wrap g_io_channel_*_new() calls portablyMax Kellermann5-16/+48
The server_socket library (used by the httpd output plugin) didn't check for WIN32, that's fixed now.
2011-09-19Set socket TCP keepalive option on incoming connectionsDan McGee3-2/+24
If a connected host disappears without our knowledge, as can happen over wireless or a hibernating machine, we continue to hold the port open waiting for messages. Because we never try to send anything down this now-broken pipe, the connection will sit idle taking up a slot in our allowed incoming connections list. If enough of these happen, an unintended Denial of Service takes place, where all connection slots are filled with now-broken, never ending connections. Setting the TCP keepalive option at least allows these to time out after the default two hours, which is sufficient in the non-malicious case. Signed-off-by: Dan McGee <dan@archlinux.org>
2011-09-19output_plugin: the plugin allocates the audio_output objectMax Kellermann30-537/+814
Pass audio_output objects around instead of void pointers. This will give some more control to the plugin, and prepares for non-blocking audio outputs.