- 29 Oct, 2008 21 commits
-
-
Max Kellermann authored
Instead of implementing another loop which calls audio_output_close() on all configured devices, simply call closeAudioDevice().
-
Max Kellermann authored
This variable is never read, and can be removed.
-
Max Kellermann authored
The pointer becomes invalid due to pa_simple_free(), which may lead to segmentation faults when the output is reopened later.
-
Max Kellermann authored
Use GLib allocation and logging functions.
-
Max Kellermann authored
-
Max Kellermann authored
When the decoder exited before the buffer has grown big enough ("buffer_before_play"), the player thread waited forever. Add an additional check which disables buffering as soon as the decoder exits.
-
Max Kellermann authored
Don't accept 24 bit audio. Force MPD to use 16 bit if anything other than 8 or 16 bit is selected.
-
Max Kellermann authored
The local variable "play_audio_format" is updated every time the player starts playing a new song. This way, we always know exactly which audio format is current. The old code broke when a new song had a different format: ob.audio_format is the format of the next song, not of the current one - using this caused breakage for the software volume control.
-
Max Kellermann authored
A decoder_flush() invocation was missing in the FLAC plugin, resulting in casual assertion failures due to a wrong assumption about the last chunk's audio format. It's much easier to remove that decoder_flush() function and make the decoder thread call ob_flush().
-
Max Kellermann authored
There are no callers which pass audio_format==NULL, and it shouldn't be allowed.
-
Max Kellermann authored
Request the next song from the playlist (by clearing pc.next_song) only if the player command is empty. If it is not, the player may be clearing the song that has already been queued, leading to an assertion failure.
-
Max Kellermann authored
Call ob_clear() in decoder_command_finished() instead of implementing that call in every decoder plugin.
-
Max Kellermann authored
Remember the seek_where argument and call decoder_command_finished() immediately. This way, the player thread can continue working, and we can receive more commands. This also fixes several issues which resulted in broken frames, leading to erroneos "elapsed" values: frames weren't parsed properly, since the code was checking for command!=NONE.
-
Max Kellermann authored
Previously, the function would only return when a STOP was issued. It makes more sense to consider all possible commands.
-
Max Kellermann authored
Break the large function mp3_read() into smaller pieces.
-
Max Kellermann authored
Break the large function mp3_read() into smaller pieces.
-
Max Kellermann authored
Break the large function mp3_read() into smaller pieces.
-
Max Kellermann authored
Break the large function mp3_read() into smaller pieces.
-
Max Kellermann authored
Break the large function mp3_read() into smaller pieces.
-
Max Kellermann authored
dc_seek() won't send a SEEK command to the decoder thread unless the stream is seekable. No need to do another check; convert that to an assertion.
-
Max Kellermann authored
need_chunks() returns a decoder_command enum. Store its return value as this type.
-
- 28 Oct, 2008 9 commits
-
-
Max Kellermann authored
The function mp3_decode_first_frame() is too large. Move some code to separate smaller functions.
-
Max Kellermann authored
http://xkcd.com/292/
-
Max Kellermann authored
This removes the need for util.h.
-
Max Kellermann authored
Use the C99 bool data type for boolean values.
-
Max Kellermann authored
Renamed all functions and variables. Also removed the mp3DecodeData typedef.
-
Max Kellermann authored
-
Max Kellermann authored
Yet another superfluous buffering layer. input_file was using FILE*, but we're better off with unbuffered I/O using open(), read(), ...
-
Max Kellermann authored
size_t and long aren't 64 bit safe (i.e. files larger than 2 GB on a 32 bit OS). Use off_t instead, which is a 64 bit integer if compiled with large file support.
-
Max Kellermann authored
Remove duplicated code from MPD.
-
- 27 Oct, 2008 2 commits
-
-
Max Kellermann authored
When the decoder failed to start, the function do_play() returned, still having pc.command==PLAY. This is because pc.command was reset only when the decoder started up successfully. Add another player_command_finished() call in the error handler.
-
Max Kellermann authored
Don't attempt to open a HTTP URL as a local file, and don't send a local path to libcurl.
-
- 26 Oct, 2008 8 commits
-
-
Max Kellermann authored
Due to a missing "test", the "xyes" token was interpreted as a command.
-
Max Kellermann authored
Don't compile the sources of disabled output plugins at all.
-
Max Kellermann authored
On some systems, string.h declares basename(). This emits a shadow warning. Change the variable name.
-
Max Kellermann authored
If the server sends the headers "icy-name", "ice-name", "x-audiocast-name", set the stream title.
-
Max Kellermann authored
-
Max Kellermann authored
Replaced the local variable "colon" (which had only temporary meaning) with the variable "value". It is a pointer to the first byte of the header value.
-
Max Kellermann authored
g_free() allows passing the NULL pointer.
-
Max Kellermann authored
For boolean values and success flags, use bool instead of integer (1/0 for true/false, 0/-1 for success/failure).
-