aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* player_thread: add flag "output_open", fixes assertion failureMax Kellermann2011-10-061-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.
* player_thread: move code to player_open_output()Max Kellermann2011-10-061-22/+37
| | | | | Common function that manages "player" attributes after audio_output_all_open() has returned.
* output_control: remove unused prototype _close_locked()Max Kellermann2011-10-061-3/+0
|
* player_control: auto-start playback when seeking is requestedMax Kellermann2011-10-061-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().
* player_thread: handle SEEK while not playingMax Kellermann2011-10-061-2/+10
|
* decoder_api: call _prepare_initial_seek() in decoder_tag()Max Kellermann2011-10-061-1/+1
| | | | | This checks both conditions: pending and running. Fixes yet another assertion failure!
* decoder_api: move code to _prepare_initial_seek()Max Kellermann2011-10-061-7/+31
| | | | .. and add a few code comments.
* decoder_control: add attributes start_ms, end_msMax Kellermann2011-10-055-6/+31
| | | | | Don't read song.start_ms and song.end_ms, let the player thread manage this logic instead.
* decoder_api: don't copy tag to pipe during initial seekMax Kellermann2011-10-051-3/+8
| | | | Fixes one more assertion failure.
* decoder_api: clear initial_seek_running on errorMax Kellermann2011-10-041-1/+3
| | | | Fixes possible assertion failure.
* decoder_api: emulate SEEK command for initial seek to CUE trackMax Kellermann2011-09-224-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.
* decoder_internal.h: more API documentationMax Kellermann2011-09-221-0/+5
|
* utils: uri.h: fix a typo: "schema"Jonathan Neuschäfer2011-09-211-1/+1
|
* fd_util: add function close_socket()Max Kellermann2011-09-206-8/+25
| | | | Wrap close(), use closesocket() on WIN32/WinSock.
* fd_util: check HAVE_INOTIFY_INIT in headerMax Kellermann2011-09-201-0/+4
| | | | Don't provide the prototype if inotify_init() was not detected.
* fd_util: include check.h, verify config.h was includedMax Kellermann2011-09-201-0/+2
|
* glib_socket.h: wrap g_io_channel_*_new() calls portablyMax Kellermann2011-09-205-16/+48
| | | | | The server_socket library (used by the httpd output plugin) didn't check for WIN32, that's fixed now.
* configure.ac: add option --enable-solaris-outputMax Kellermann2011-09-191-1/+19
| | | | | Allow enabling the plugin explicitly without running Solaris, to test the build.
* decoder/audiofile: include stdio header for SEEK_* definesTim Harder2011-09-171-0/+1
| | | | The stdio header is no longer pulled in by af_vfs.h in audiofile-0.3.0.
* output/pulse: improve lockingMax Kellermann2011-09-171-11/+11
| | | | | Always lock the main loop when operating on PULSE objects. Document this.
* input/curl, output/pulse: fix "unused local variable" warningsMax Kellermann2011-09-162-2/+3
|
* decoder/ffmpeg: flush the codec after seekingMax Kellermann2011-09-151-1/+3
| | | | | Let the codec start with fresh buffers. This should fix the remaining seeking issues.
* decoder/ffmpeg: explicitly specify the current stream for seekingMax Kellermann2011-09-151-2/+11
| | | | | Use AVStream.time_base to convert the decoder_seek_where() value, and pass the current stream number to av_seek_frame().
* decoder/ffmpeg: don't require key frame for seekingMax Kellermann2011-09-151-1/+2
| | | | Use flag AV_TIME_BASE.
* decoder/ffmpeg: higher precision timestampsMax Kellermann2011-09-151-1/+2
|
* decoder/ffmpeg: move formula to time_from_ffmpeg()Max Kellermann2011-09-151-2/+10
|
* decoder/ffmpeg: add local variable "av_stream"Max Kellermann2011-09-151-3/+4
| | | | Code simplification.
* input/rewind: copy the MIME type only onceMax Kellermann2011-09-151-1/+3
| | | | Reduce heap usage by reducing the number of malloc() / free() calls.
* pcm_format: fix 32-to-24 bit conversion (the "silence" bug)Max Kellermann2011-09-081-2/+2
| | | | | | D'oh, we were reading 16 bit integers instead of 32 bit integers! That caused silence when trying to play a 32 bit input file on a 24 bit sound card (e.g. USB sound chips with 24 bit packed samples).
* output/osx: don't drain the buffer when closingMax Kellermann2011-09-011-6/+0
| | | | Eliminate an unnecessary source of deadlocks.
* output/osx: signal the GCond while mutex is lockedMax Kellermann2011-09-011-1/+1
|
* output_all: move _lock_signal() to output_control.cMax Kellermann2011-09-013-21/+23
| | | | Better name, better documentation.
* output_thread: reimplement CANCEL synchronizationMax Kellermann2011-09-016-14/+34
| | | | | | | | | | | | | | The output thread could hang indefinitely after finishing CANCEL, because it could have missed the signal while the output was not unlocked in ao_command_finished(). This patch removes the wait() call after CANCEL, and adds the flag "allow_play" instead. While this flag is set, playback is skipped. With this flag, there will not be any excess wait() call after the pipe has been cleared. This patch fixes a bug that causes mpd to discontinue playback after seeking, due to the race condition described above.
* output/pulse: reset callbacks before closing stream/contextMax Kellermann2011-08-311-0/+10
| | | | | Fixes assertion failure when a stream callback is invoked too late after a format change.
* output/pulse: add function _delete_stream()Max Kellermann2011-08-311-5/+16
| | | | Merge common code.
* output/pulse: use _delete_context()Max Kellermann2011-08-311-16/+15
| | | | Eliminate duplicate code.
* input/curl: implement a hard-coded timeout of 10 secondsMax Kellermann2011-08-261-0/+3
| | | | | Be sure to stop the operation at some point when the server isn't responding.
* output/pulse: fix deadlock when the stream was suspendedMax Kellermann2011-08-231-0/+31
| | | | | Check if the stream is suspended; wake up the main loop when it becomes suspended.
* output/pulse: add assertionsMax Kellermann2011-08-231-0/+30
|
* output/pulse: return 0 on errorMax Kellermann2011-08-231-1/+1
| | | | Not a bool.
* pulse/output: fix deadlock when resuming the streamMax Kellermann2011-08-231-1/+3
| | | | Unlock the mainloop in all code paths.
* input/curl: limit the receive buffer sizeMax Kellermann2011-08-231-0/+30
|
* output/httpd: add assertionsMax Kellermann2011-08-231-1/+17
|
* output/httpd: don't warn on client disconnectMax Kellermann2011-08-231-1/+8
| | | | | | This warning should only be logged when we really received something. When the client disconnects, G_IO_IN is triggered, and the read returns G_IO_STATUS_EOF.
* decoder/mpcdec: fix gcc warningMax Kellermann2011-08-231-2/+2
| | | | Move the variable "vbr_update_acc" into the #ifdef block.
* encoder_plugin: add method pre_tag()Max Kellermann2011-07-204-2/+37
| | | | | | | In the "vorbis" plugin, this is a copy of the old flush() method, while flush() gets a lot of code remove, it just sets the "flush" flag and nothing else. It doesn't start a new stream now, which should fix a few problems in some players.
* output/httpd: explicitly convert size_t to bool in pause()Max Kellermann2011-07-201-1/+2
|
* pipe: lock the mutex in music_pipe_size()Max Kellermann2011-07-201-1/+4
|
* pipe: make read-only functions "pure"Max Kellermann2011-07-201-0/+5
| | | | Enable gcc optimizations.
* output_thread: unlock the mutex while calling cancel()Max Kellermann2011-07-201-1/+6
| | | | The method may take longer, and we shouldn't be holding the lock.