aboutsummaryrefslogtreecommitdiffstats
path: root/src/input (unfollow)
Commit message (Collapse)AuthorFilesLines
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 Kellermann9-166/+101
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 Kellermann3-0/+45
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.
2011-09-16input/soup: remove redundant flag "ready"Max Kellermann1-6/+2
We'll add proper locking now, and there's no need to carry this duplicate flag.
2011-09-16input/soup: report failure in _read()Max Kellermann1-0/+1
To report failures to callers who don't use _buffer().
2011-09-16input/soup: unlock before cancelling the soup messageMax Kellermann1-3/+5
Avoid recursive deadlock in _session_callback().
2011-09-16input/curl: wait some more before resuming the streamMax Kellermann1-1/+6
Pausing and resuming after every little chunk adds lots of overhead. Add a lower level for resuming the stream.
2011-09-16input/curl: clear the "paused" flag before resumingMax Kellermann1-1/+1
curl_easy_pause(CURLPAUSE_CONT) may have added enough data to go into pause again.
2011-09-16input/curl: remove _schedule_update()Max Kellermann1-48/+1
Call _update_fds() directly. This is possible because it's only called from within the I/O thread.
2011-09-16input/curl: unlock the mutex for io_thread_call()Max Kellermann1-1/+4
Fix deadlock.
2011-09-16input/soup: fix "unused local variable" warningsMax Kellermann1-1/+1
2011-09-16input/curl, output/pulse: fix "unused local variable" warningsMax Kellermann1-1/+1
2011-09-15input/rewind: copy the MIME type only onceMax Kellermann1-1/+3
Reduce heap usage by reducing the number of malloc() / free() calls.
2011-09-15input/curl: per-request mutex/condMax Kellermann1-33/+35
The global data structures are now lock-free, because they are accessed only from the I/O thread. By using per-request locks, we have finer grained locking, preparing for locks shared with the client.
2011-09-15input/curl: move all libCURL calls to the I/O threadMax Kellermann1-29/+69
This adds some overheads for indirect calls to the I/O thread, but reduces the amount of global locks. Next step will be switching to per-request locks.
2011-09-15input/file: return NULL instead of "false"Max Kellermann1-4/+4
2011-09-15input/curl: don't set "ready" on _easy_free()Max Kellermann1-3/+2
Move the assignment to _request_done(), right before the GCond is signalled. This might fix spurious wakeups.
2011-09-15input/curl: add assertions on io_thread_inside()Max Kellermann1-0/+9
2011-09-15input/curl: merge _request_abort() into _request_done()Max Kellermann1-31/+19
This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call.
2011-09-15input/curl: API documentation fixMax Kellermann1-1/+1
2011-09-14input_plugin: add method update()Max Kellermann1-0/+10
Update the struct attributes, important for facades like the "rewind" plugin. To replace buffer().
2011-09-14input_stream: move input_stream_init(), _deinit() to _internal.cMax Kellermann8-0/+8
2011-08-26input/curl: implement a hard-coded timeout of 10 secondsMax Kellermann1-0/+3
Be sure to stop the operation at some point when the server isn't responding.
2011-08-25input/curl: use the I/O threadMax Kellermann1-222/+653
Background buffering and better timeout handling. This patch sort of obsoletes the input_plugin method buffer().
2011-08-25input/curl: eliminate attribute "eof"Max Kellermann1-11/+4
Assume the flag is true when the "easy" CURL handle is NULL. That way, we don't need to keep track if CURL has sent us the "DONE" information yet.
2011-08-25input/curl: release "easy" CURL handle as early as possibleMax Kellermann1-9/+10
Release it immediately when end-of-file has been reached. We don't need that handle anymore, because the rest is delivered from the buffers.
2011-08-25input/curl: move code to input_curl_flush_buffers()Max Kellermann1-3/+9
Allow closing the handle while preserving the remaining buffers.
2011-08-25input/curl: pass input_curl to fill_buffer()Max Kellermann1-4/+3
Remove a cast.
2011-08-25input/curl: set GError when init() failsMax Kellermann1-2/+3
Let the caller know what happened, he's responsible for logging.
2011-08-24input/soup: free all resources in method close()Max Kellermann1-0/+10
2011-08-24input/soup: new input plugin based on libsoupMax Kellermann2-0/+395
To demonstrate the new I/O thread. libsoup is well-integrated into the GLib main loop, which made this plugin pretty easy to write. As a side effect, we have to initialize the I/O thread in all debug programs that use the input API.
2011-08-24input/curl: remove obsolete function input_curl_reinit()Max Kellermann3-21/+0
2011-08-23input/curl: limit the receive buffer sizeMax Kellermann1-0/+30
2011-07-03decoder/ffmpeg: use AVIO_FLAG_READ on newer ffmpeg versionsSkottish1-1/+3
FFmpeg/libav have dropped AVIO_RDONLY in favor of AVIO_FLAG_READ. This patch fixes that in MPD.
2011-05-09input/ffmpeg: use the new AVIOContext APIMax Kellermann1-1/+37
URLContext is deprecated.
2011-04-12decoder/ffmpeg: drop support for pre-0.5 ffmpegAnton Khirnov1-7/+0
All modern distros ship 0.5, so there's no need to support old and buggy ffmpeg versions.
2011-03-29input: Add despotify input pluginSimon Kagstrom2-0/+251
For Spotify tracks. Uses a spt URI, so with mpc you can play tracks with e.g., mpc add spt://spotify:track:5qENVY0YEdZ7fiuOax70x1 mpc play Uses the pcm_decoder_plugin for the output
2011-01-29copyright year 2011Max Kellermann14-14/+14
2011-01-29input/curl: enable CURLOPT_NETRCIan Zimmerman1-0/+1
I wanted mpd to play a mp3 stream from a music website. The stream is only available to subscribers, which restriction is enforced through normal http authentication. However, the URL I get from the website is not the final URL of the stream, but a generic URL which points to the real one through a redirect (code 301). Thus, I cannot predict the final URL, and so I cannot use the username:password hack to force the authentication, and mpd (libcurl on mpds behalf) fails to grab the stream. libcurl allows the option CURLOPT_NETRC to be set and then the credentials can be stored in the good old .netrc file (in this case it would be ~mpd/.netrc, of course). But mpd doesn't set this option. I think it should.
2011-01-08input/cdio_paranoia: add module nameMax Kellermann1-0/+1
Seems like we forgot to give this module a name... this can crash MPD on startup.
2010-12-22input/cdda: rename plugin to "cdio_paranoia"Max Kellermann2-42/+42
2010-12-22input/cdda: support reading the whole discMax Kellermann1-10/+8
2010-12-22input/cdda: remove unused function input_cdda_archive_extract_trackno()Max Kellermann1-24/+0
2010-12-22input/cdda: import missing pcm16_to_wave() from the wave encoderMax Kellermann1-0/+11