aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2008-10-29output: moved audioDeviceStates to audio_output.enabledMax Kellermann3-20/+12
2008-10-29output: close device on play errorMax Kellermann7-12/+7
When an output plugin fails to play a chunk, close it. This replaces various manual close() calls in nearly all plugins.
2008-10-29output: use bool for return values and flagsMax Kellermann21-153/+162
Don't return 0/-1 on success/error, but true/false. Instead of int, use bool for storing flags.
2008-10-29audio: call closeAudioDevice() on errorMax Kellermann1-5/+2
Instead of implementing another loop which calls audio_output_close() on all configured devices, simply call closeAudioDevice().
2008-10-29audio: removed variable "audioOpened"Max Kellermann1-9/+1
This variable is never read, and can be removed.
2008-10-29pulse: clear pa_simple pointer in pulse_close()Max Kellermann1-0/+1
The pointer becomes invalid due to pa_simple_free(), which may lead to segmentation faults when the output is reopened later.
2008-10-29pulse: use GLib instead of util.h/log.hMax Kellermann1-28/+25
Use GLib allocation and logging functions.
2008-10-29pulse: no CamelCaseMax Kellermann2-50/+51
2008-10-29player: handle songs shorter than the initial bufferMax Kellermann1-1/+2
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.
2008-10-29oss: check and override audio_format properlyMax Kellermann1-0/+7
Don't accept 24 bit audio. Force MPD to use 16 bit if anything other than 8 or 16 bit is selected.
2008-10-29player: added variable "play_audio_format"Max Kellermann1-2/+4
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.
2008-10-29decoder: automatically flush the output buffer after decoder exitsMax Kellermann12-30/+3
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().
2008-10-29decoder_api: make the audio_format parameter mandatoryMax Kellermann1-5/+3
There are no callers which pass audio_format==NULL, and it shouldn't be allowed.
2008-10-29player: request new song only if there is no pending commandMax Kellermann1-1/+2
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.
2008-10-29decoder_api: removed decoder_clear()Max Kellermann10-23/+7
Call ob_clear() in decoder_command_finished() instead of implementing that call in every decoder plugin.
2008-10-29mp3: seek in backgroundMax Kellermann1-5/+7
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.
2008-10-29mp3: return from mp3_synth_and_send() on any commandMax Kellermann1-2/+2
Previously, the function would only return when a STOP was issued. It makes more sense to consider all possible commands.
2008-10-29mp3: moved code to mp3_synth_and_send()Max Kellermann1-60/+74
Break the large function mp3_read() into smaller pieces.
2008-10-29mp3: moved code to mp3_send_pcm()Max Kellermann1-29/+48
Break the large function mp3_read() into smaller pieces.
2008-10-29mp3: moved code to mp3_update_timer_next_frame()Max Kellermann1-16/+28
Break the large function mp3_read() into smaller pieces.
2008-10-29mp3: moved code to mp3_this_frame_offset()Max Kellermann1-10/+10
Break the large function mp3_read() into smaller pieces.
2008-10-29mp3: moved code to mp3_time_to_frame()Max Kellermann1-11/+21
Break the large function mp3_read() into smaller pieces.
2008-10-29mp3: assert that the stream is seekableMax Kellermann1-5/+5
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.
2008-10-29decoder_api: don't cast need_chunks() to intMax Kellermann1-4/+4
need_chunks() returns a decoder_command enum. Store its return value as this type.
2008-10-28mp3: moved code to mp3_filesize_to_song_length()Max Kellermann1-23/+42
The function mp3_decode_first_frame() is too large. Move some code to separate smaller functions.
2008-10-28mp3: no "goto"Max Kellermann1-19/+36
http://xkcd.com/292/
2008-10-28mp3: use GLib allocation functionsMax Kellermann1-11/+9
This removes the need for util.h.
2008-10-28mp3: use boolMax Kellermann1-50/+51
Use the C99 bool data type for boolean values.
2008-10-28mp3: no CamelCaseMax Kellermann1-255/+254
Renamed all functions and variables. Also removed the mp3DecodeData typedef.
2008-10-28mp3: remove obsolete commentsMax Kellermann1-4/+0
2008-10-28input_file: don't use buffered I/OMax Kellermann1-28/+31
Yet another superfluous buffering layer. input_file was using FILE*, but we're better off with unbuffered I/O using open(), read(), ...
2008-10-28input_stream: convert offset and size to the off_t data typeMax Kellermann5-13/+12
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.
2008-10-28utils: use g_str_has_prefix() instead of prefixcmp()Max Kellermann10-35/+28
Remove duplicated code from MPD.
2008-10-27player: reset pc.command when decoder startup failsMax Kellermann1-0/+1
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.
2008-10-27input_file, input_curl: check URL type before attempting to openMax Kellermann2-0/+6
Don't attempt to open a HTTP URL as a local file, and don't send a local path to libcurl.
2008-10-26output: don't compile plugins which are disabledMax Kellermann14-104/+72
Don't compile the sources of disabled output plugins at all.
2008-10-26dirvec: fixed GCC shadow warningMax Kellermann1-4/+4
On some systems, string.h declares basename(). This emits a shadow warning. Change the variable name.
2008-10-26curl: read stream name from HTTP response headersMax Kellermann1-0/+5
If the server sends the headers "icy-name", "ice-name", "x-audiocast-name", set the stream title.
2008-10-26input_curl: set input_stream.mime from Content-Type response headerMax Kellermann1-0/+3
2008-10-26input_curl: added local variable "value"Max Kellermann1-14/+22
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.
2008-10-26input_stream: use g_free() in input_stream_close()Max Kellermann1-8/+5
g_free() allows passing the NULL pointer.
2008-10-26input_stream: use "bool" instead of "int"Max Kellermann14-49/+55
For boolean values and success flags, use bool instead of integer (1/0 for true/false, 0/-1 for success/failure).
2008-10-26input_stream: input_stream_close() returns voidMax Kellermann4-13/+7
close() shouldn't fail with read-only streams.
2008-10-26input_stream: added struct input_pluginMax Kellermann6-56/+63
Instead of managing a set of method pointers in each input_stream struct, move these into the new input_plugin struct. Each input_stream has only a pointer to the plugin struct. Pointers to all implementations are kept in the array "input_plugins".
2008-10-26input_stream: no CamelCaseMax Kellermann17-160/+158
Renamed all functions and variables.
2008-10-26input_file: removed global constructorMax Kellermann3-7/+0
The global constructor is empty, and can be removed.
2008-10-26input_file: don't export internal methodsMax Kellermann2-19/+25
The methods are only used in inputStream_fileOpen(), and should not be exported.
2008-10-26input_stream: removed the InputStream typedefMax Kellermann13-50/+65
Everybody should use struct input_stream.
2008-10-26input_stream: renamed sources, no CamelCaseMax Kellermann8-11/+11
Renamed inputStream.c and inputStream_file.c.
2008-10-26http: use libcurlMax Kellermann7-1171/+525
MPD's HTTP client code has always been broken, no matter how effort was put into fixing it. Replace it with libcurl, which is known to be quite stable. This adds a fat library dependency, but only for people who need streaming.