Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | encoder/wave: use fifo_buffer instead of pcm_buffer | Max Kellermann | 2011-11-28 | 1 | -19/+27 |
| | | | | | | This fixes a buffer corruption bug; pcm_buffer is not designed to be a persistent buffers, and will discard anything between two consecutive calls. | ||||
* | encoder/flac: use fifo_buffer instead of pcm_buffer | Max Kellermann | 2011-11-28 | 1 | -16/+20 |
| | | | | | | This fixes a buffer corruption bug; pcm_buffer is not designed to be a persistent buffers, and will discard anything between two consecutive calls. | ||||
* | growing_fifo: new utility library for growing fifo_buffer | Max Kellermann | 2011-11-28 | 2 | -0/+163 |
| | |||||
* | fifo_buffer: add function fifo_buffer_realloc() | Max Kellermann | 2011-11-28 | 2 | -2/+47 |
| | | | | For growing FIFO buffers. | ||||
* | fifo_buffer: add functions _capacity() and _available() | Max Kellermann | 2011-11-27 | 2 | -0/+29 |
| | |||||
* | pcm_buffer: add assertions | Max Kellermann | 2011-11-27 | 2 | -0/+10 |
| | |||||
* | pcm_buffer: move formula to new function align_8k() | Max Kellermann | 2011-11-27 | 1 | -2/+11 |
| | |||||
* | pcm_buffer: un-inline pcm_buffer_get() | Max Kellermann | 2011-11-27 | 2 | -14/+38 |
| | | | | This method is too complex for inlining. | ||||
* | directory: rename attribute "stat" to "have_stat" | Max Kellermann | 2011-11-27 | 2 | -3/+3 |
| | | | | | "stat" is a macro on mingw32, which is a pretty stupid thing, and this commit works around this build failure. | ||||
* | directory: convert "stat" to a bool | Max Kellermann | 2011-11-27 | 2 | -2/+2 |
| | |||||
* | stats: explicitly cast "time_t" to "long" | Max Kellermann | 2011-11-27 | 1 | -1/+1 |
| | | | | Fixes warning on mingw32. | ||||
* | decoder_api: cancel initial seek when song is not seekable | Max Kellermann | 2011-11-27 | 1 | -0/+6 |
| | | | | Fixes assertion failure. | ||||
* | path: autodetect filesystem encoding on Win32 | Denis Krjuchkov | 2011-10-23 | 1 | -0/+16 |
| | | | | | | | WinAPI explicitly declares filesystem encoding. It can be determined by GetACP(). Use that instead of Glib routine that always "detects" UTF-8 on Win32, which is incorrect for MPD case. | ||||
* | configure.ac: define WINVER | Max Kellermann | 2011-10-13 | 3 | -3/+0 |
| | | | | | | Ensure that WINVER is defined early enough, so other system headers won't fall back to their default value. Specifically, this solves a build failure (-Werror) with mingw-w64 ("WINVER redefined"). | ||||
* | decoder_thread: add missing stdio.h include | Max Kellermann | 2011-10-13 | 1 | -0/+1 |
| | |||||
* | event_pipe: fix WIN32 regression | Max Kellermann | 2011-10-13 | 1 | -2/+5 |
| | | | | | The event pipe is not a socket, and the patch that introduced g_io_channel_new_socket() to the event pipe library was wrong. | ||||
* | decoder/wavpack: don't call WavpackGetMode() twice | Max Kellermann | 2011-10-08 | 1 | -1/+1 |
| | | | | Use local variable "is_float". | ||||
* | pcm_convert: fix typo in error message | Max Kellermann | 2011-10-08 | 1 | -1/+1 |
| | |||||
* | output/openal: auto-fallback to mono if channel count is unsupported | Max Kellermann | 2011-10-08 | 1 | -9/+9 |
| | | | | .. instead of failing playback completely. | ||||
* | output/alsa: remove "default" case from switch | Max Kellermann | 2011-10-08 | 1 | -3/+6 |
| | | | | Allow gcc to warn when a new format isn't supported. | ||||
* | playlist_song: fix absolute path support in playlists | Jesús Bravo Álvarez | 2011-10-06 | 1 | -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. | ||||
* | player_thread: add flag "output_open", fixes assertion failure | Max Kellermann | 2011-10-06 | 1 | -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 Kellermann | 2011-10-06 | 1 | -22/+37 |
| | | | | | Common function that manages "player" attributes after audio_output_all_open() has returned. | ||||
* | output_control: remove unused prototype _close_locked() | Max Kellermann | 2011-10-06 | 1 | -3/+0 |
| | |||||
* | player_control: auto-start playback when seeking is requested | Max Kellermann | 2011-10-06 | 1 | -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 playing | Max Kellermann | 2011-10-06 | 1 | -2/+10 |
| | |||||
* | decoder_api: call _prepare_initial_seek() in decoder_tag() | Max Kellermann | 2011-10-06 | 1 | -1/+1 |
| | | | | | This checks both conditions: pending and running. Fixes yet another assertion failure! | ||||
* | decoder_api: move code to _prepare_initial_seek() | Max Kellermann | 2011-10-06 | 1 | -7/+31 |
| | | | | .. and add a few code comments. | ||||
* | decoder_control: add attributes start_ms, end_ms | Max Kellermann | 2011-10-05 | 5 | -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 seek | Max Kellermann | 2011-10-05 | 1 | -3/+8 |
| | | | | Fixes one more assertion failure. | ||||
* | decoder_api: clear initial_seek_running on error | Max Kellermann | 2011-10-04 | 1 | -1/+3 |
| | | | | Fixes possible assertion failure. | ||||
* | decoder_api: emulate SEEK command for initial seek to CUE track | Max Kellermann | 2011-09-22 | 4 | -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 documentation | Max Kellermann | 2011-09-22 | 1 | -0/+5 |
| | |||||
* | utils: uri.h: fix a typo: "schema" | Jonathan Neuschäfer | 2011-09-21 | 1 | -1/+1 |
| | |||||
* | fd_util: add function close_socket() | Max Kellermann | 2011-09-20 | 6 | -8/+25 |
| | | | | Wrap close(), use closesocket() on WIN32/WinSock. | ||||
* | fd_util: check HAVE_INOTIFY_INIT in header | Max Kellermann | 2011-09-20 | 1 | -0/+4 |
| | | | | Don't provide the prototype if inotify_init() was not detected. | ||||
* | fd_util: include check.h, verify config.h was included | Max Kellermann | 2011-09-20 | 1 | -0/+2 |
| | |||||
* | glib_socket.h: wrap g_io_channel_*_new() calls portably | Max Kellermann | 2011-09-20 | 5 | -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-output | Max Kellermann | 2011-09-19 | 1 | -1/+19 |
| | | | | | Allow enabling the plugin explicitly without running Solaris, to test the build. | ||||
* | decoder/audiofile: include stdio header for SEEK_* defines | Tim Harder | 2011-09-17 | 1 | -0/+1 |
| | | | | The stdio header is no longer pulled in by af_vfs.h in audiofile-0.3.0. | ||||
* | output/pulse: improve locking | Max Kellermann | 2011-09-17 | 1 | -11/+11 |
| | | | | | Always lock the main loop when operating on PULSE objects. Document this. | ||||
* | input/curl, output/pulse: fix "unused local variable" warnings | Max Kellermann | 2011-09-16 | 2 | -2/+3 |
| | |||||
* | decoder/ffmpeg: flush the codec after seeking | Max Kellermann | 2011-09-15 | 1 | -1/+3 |
| | | | | | Let the codec start with fresh buffers. This should fix the remaining seeking issues. | ||||
* | decoder/ffmpeg: explicitly specify the current stream for seeking | Max Kellermann | 2011-09-15 | 1 | -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 seeking | Max Kellermann | 2011-09-15 | 1 | -1/+2 |
| | | | | Use flag AV_TIME_BASE. | ||||
* | decoder/ffmpeg: higher precision timestamps | Max Kellermann | 2011-09-15 | 1 | -1/+2 |
| | |||||
* | decoder/ffmpeg: move formula to time_from_ffmpeg() | Max Kellermann | 2011-09-15 | 1 | -2/+10 |
| | |||||
* | decoder/ffmpeg: add local variable "av_stream" | Max Kellermann | 2011-09-15 | 1 | -3/+4 |
| | | | | Code simplification. | ||||
* | input/rewind: copy the MIME type only once | Max Kellermann | 2011-09-15 | 1 | -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 Kellermann | 2011-09-08 | 1 | -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). |