aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
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.
2011-09-19configure.ac: add option --enable-solaris-outputMax Kellermann1-1/+19
Allow enabling the plugin explicitly without running Solaris, to test the build.
2011-09-18output/roar: check return valuesMax Kellermann1-2/+10
Fixes gcc warnings.
2011-09-18output/roar: unknown volume is -1, not 0Max Kellermann1-1/+1
2011-09-18output/roar: move code to roar_cancel_locked() and othersMax Kellermann1-39/+55
Wrap the locking code.
2011-09-17output/roar: use GLib memory allocation functionsMax Kellermann1-11/+3
GLib has a built-in OOM handler.
2011-09-17output/roar: use config_get_block_string() for temporaryMax Kellermann1-8/+5
2011-09-17output/roar: reorder methodsMax Kellermann1-14/+14
2011-09-17output: rename plugin variablesMax Kellermann8-11/+11
Consistent naming.
2011-09-17output: per-plugin headerMax Kellermann38-28/+432
Move the "extern" declarations from output_list.c, for more type safety.
2011-09-17output/pulse: don't expose internal struct in public headerMax Kellermann3-36/+56
Provide _lock() and _unlock() to wrap all accesses from the mixer plugin.
2011-09-17output/raop: don't expose internal structs in public headerMax Kellermann2-96/+95
2011-09-17output/roar: export volume methodsMax Kellermann3-46/+60
Use these instead of exposing the internal roar_t struct.
2011-09-17output: rename plugin source filesMax Kellermann9-0/+0
2011-09-17output/pulse: move code to _setup_stream()Max Kellermann1-15/+36
2011-09-17decoder/audiofile: include stdio header for SEEK_* definesTim Harder1-0/+1
The stdio header is no longer pulled in by af_vfs.h in audiofile-0.3.0.
2011-09-17output/pulse: improve lockingMax Kellermann1-11/+11
Always lock the main loop when operating on PULSE objects. Document this.
2011-09-16input/soup: wait some more before resuming the streamMax Kellermann1-1/+6
2011-09-16input/soup: improve error messagesMax Kellermann1-12/+43
Copy the reason_phrase from the SoupMessage, and check for transport errors in the session callback.
2011-09-16input_stream: non-blocking I/OMax Kellermann52-346/+607
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins.
2011-09-16input_plugin: add method check()Max Kellermann6-0/+72
To check for errors without reading. The decoder thread wants to do that, before it passes the input stream to the plugin.
2011-09-16input/{soup,curl}: free unused postponed_errorMax Kellermann2-0/+8
Fix memory leak.
2011-09-16input/soup: move libsoup calls to the I/O threadMax Kellermann1-4/+25
libsoup's asynchronous API is not thread safe. By moving the calls into the I/O thread, several crash bugs will be fixed.
2011-09-16input/soup: wait for _cancel_message() to completeMax Kellermann1-5/+21
Add the "complete" attribute, and set it in _session_callback(). _close() waits for it to become true.
2011-09-16input/soup: return real GErrors to the callerMax Kellermann1-3/+31
Add attribute postponed_error, pass this GError to the caller.
2011-09-16input/soup: set the "ready" flag on failureMax Kellermann1-0/+2
Fix deadlock.