aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* decoder/flac: check "seekable" in libFLAC callbacksMax Kellermann2009-11-111-0/+6
| | | | | Return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED if this input stream does not support seeking.
* decoder/flac: moved code to flac_data_get_audio_format()Max Kellermann2009-11-114-32/+51
| | | | | | Remove the audio_format attribute, add "frame_size" instead. The audio_format initialization and check is moved both to flac_data_get_audio_format().
* decoder/flac: use stream_info instead of audio_formatMax Kellermann2009-11-112-4/+4
| | | | | Use the sample rate stored in the stream_info struct instead of the audio_format struct.
* decoder/flac: use frame header instead of audio_formatMax Kellermann2009-11-111-3/+3
| | | | | | When calculating the properties of the frame, use sample_rate and other information from the frame header instead of the stored audio_format object.
* decoder/oggflac: moved stream_info check to oggflac_decode()Max Kellermann2009-11-111-6/+5
|
* decoder/flac: calculate time stamp from current frameMax Kellermann2009-11-114-17/+17
| | | | | | | | | Don't update a float timestamp, this will make imprecisions add up after a while. We already have the number of the current frame, let's just calculate the float timestamp from that for every decoder_data() command. For this, we need to add the attribute "first_frame", for CUE sheet songs.
* decoder/flac: calculate bit rate in flac_common_write()Max Kellermann2009-11-114-17/+25
| | | | | | Removed the "bit_rate" attribute from the flac_data struct. Pass the number of bytes since the last call to flac_common_write(), and let it calculate the bit rate.
* decoder/flac: store the whole stream info object, not durationMax Kellermann2009-11-114-7/+36
| | | | | | | We don't want to work with floating point values if possible. Get the integer number of frames from the FLAC__StreamMetadata_StreamInfo object, and convert it into a float duration on demand. This patch adds a check if the STREAMINFO packet has been received yet.
* decoder/flac: merge code into flac_decoder_initialize()Max Kellermann2009-11-111-50/+39
| | | | | Wrapper for FLAC__stream_decoder_process_until_end_of_metadata(), decoder_initialized().
* decoder/flac: merged code into flac_decoder_new()Max Kellermann2009-11-111-28/+27
| | | | | Convenience wrapper for FLAC__stream_decoder_new() and FLAC__stream_decoder_set_metadata_respond().
* decoder/flac: free the "pathname" variable earlierMax Kellermann2009-11-111-31/+15
| | | | | Free the pointer right after its last use, i.e. after the FLAC__stream_decoder_init_file() call.
* decoder/flac: emulate FLAC__stream_decoder_init_stream()Max Kellermann2009-11-112-30/+44
| | | | Remove the wrapper flac_init().
* decoder/flac: use the new API functionsMax Kellermann2009-11-112-124/+89
| | | | | Use the type and function names of the libFLAC 1.1.3 API. Map the new API to the old one with macros.
* decoder/flac: removed the fake flac_ogg_init() fallbackMax Kellermann2009-11-112-2/+4
| | | | Don't even try to call it with an old libFLAC API.
* decoder/flac: moved code to flac_compat.hMax Kellermann2009-11-113-113/+134
|
* decoder/{flac,vorbis}: include config.h for LFSMax Kellermann2009-11-113-0/+3
| | | | Allow those plugins to open large files on 32 bit platforms.
* decoder/flac: merged code into flac_decoder_loop()Max Kellermann2009-11-111-101/+55
| | | | | | | The decoder loop of flac_decode_internal(), flac_container_decode() and flac_filedecode_internal() is merged into this one function. This unifies the code, and uses the frame number to identify the end of a CUE sub song.
* decoder/flac: keep track of current frame numberMax Kellermann2009-11-114-0/+12
| | | | We need this for more exact end-of-subsong detection for CUE files.
* Merge remote branch 'origin/v0.15.x'Max Kellermann2009-11-112-14/+16
|\
| * decoder/flac: fixed CUE seeking range checkMax Kellermann2009-11-111-14/+8
| | | | | | | | | | | | If flac_container_decode() gets a seek destination which is out of range, it ignores the SEEK command (never finishes it). This leads to MPD lockup, because the player thread waits for completion.
| * oggflac: rewind stream after FLAC detectionMax Kellermann2009-11-111-0/+8
| | | | | | | | | | The oggflac plugin has been completely broken for quite a while and nobody has noticed - maybe we should remove it?
* | fd_util: don't call fd_set_nonblock() if open() has failedMax Kellermann2009-11-111-1/+2
| | | | | | | | This fixes an assertion failure.
* | added missing config.h includes for extended LFS supportMax Kellermann2009-11-117-4/+8
| | | | | | | | | | All sources which might work with large files must include config.h, to get Large File Support on 32 bit platforms.
* | update: added missing config.h includesMax Kellermann2009-11-112-1/+7
| | | | | | | | This broke sticker and archive support.
* | decoder/flac: removed redundant NULL checksMax Kellermann2009-11-111-9/+3
| | | | | | | | After the decoder loop, "flac_dec" is always set.
* | decoder/flac: moved code to flac_pcm.cMax Kellermann2009-11-113-81/+133
| |
* | decoder/flac: moved code to flac_metadata.cMax Kellermann2009-11-116-175/+240
| |
* | decoder/flac: return replay_gain_info object from helper functionMax Kellermann2009-11-111-28/+24
| | | | | | | | | | Make the function more generic by not passing "struct flac_data" to it.
* | Merge branch 'master' of git://git.musicpd.org/metyl/mpdMax Kellermann2009-11-112-0/+245
|\ \
| * | wave_encoder: new encoder for streaming PCM wave files.Viliam Mateicka2009-11-102-0/+245
| | | | | | | | | | | | | | | | | | When using wave encoder with httpd audio output mpd can input this stream via http and audiofile decoder. This for example opens simple way to configure lossless audio streaming port(like jack or pulseaudio does but without overhead). Another possibility can be using it for gathering raw data for visualization plugins (If sync issue will be resolved)
* | | decoder/flac: merged some code into flac_tag_apply_metadata()Max Kellermann2009-11-114-25/+27
| | |
* | | decoder/oggflac: initialize the "tag" variableMax Kellermann2009-11-101-1/+2
| | |
* | | decoder/flac: don't use float to calculate song durationMax Kellermann2009-11-103-8/+10
| | | | | | | | | | | | | | | Simple (up-rounding) integer division is good enough. We're casting the result back to an integer anyway.
* | | decoder/flac: pass VorbisComment to comments_to_tag()Max Kellermann2009-11-104-11/+12
| | |
* | | decoder/flac: use pcm_buffer instead of fixed bufferMax Kellermann2009-11-102-39/+31
| | | | | | | | | | | | | | | | | | This is a great simplification for flac_common_write(), because we can convert and submit all of the buffer in one turn. No more partial buffers with complicated formulas.
* | | decoder/flac: added function flac_data_deinit()Max Kellermann2009-11-104-17/+26
| | | | | | | | | | | | Clean up tag and replay_gain_info there.
* | | configure.ac: require GLib 2.12Max Kellermann2009-11-109-1/+43
| | | | | | | | | | | | | | | | | | Drop the required GLib version from 2.16 to 2.12, because many current systems still don't have GLib 2.16. This requires several new compatibility functions in glib_compat.h.
* | | Merge branch 'v0.15.x'Max Kellermann2009-11-101-0/+4
|\ \ \ | | |/ | |/| | | | | | | | | | Conflicts: src/input/lastfm_input_plugin.c src/song_save.c
| * | sticker: added fallback for sqlite3_prepare_v2()Max Kellermann2009-11-101-0/+4
| | | | | | | | | | | | This function was not present in SQLite < 3.4.
| * | input/lastfm: fixed variable name in GLib<2.16 code pathMax Kellermann2009-11-101-1/+1
| | | | | | | | | | | | Should be "lastfm_user", not "lastfm_username".
| * | song_save: increased maximum line length to 32 kBMax Kellermann2009-11-011-3/+7
| | | | | | | | | | | | | | | | | | | | | The line buffer had a fixed size of 5 kB, and was allocated on the stack. This was too small for some users. As a hotfix, we're increasing the buffer size to 32 kB now, allocated on the heap. In MPD 0.16, we'll switch to dynamic allocation.
* | | moved GLib compatibility code to glib_compat.hMax Kellermann2009-11-102-10/+44
| | |
* | | decoder/flac: pass void pointer to flac_convert()Max Kellermann2009-11-101-5/+5
| | | | | | | | | | | | | | | That function diverts into various bit formats; it doesn't need a typed pointer.
* | | decoder/flac: pass audio_format.bits to flac_convert()Max Kellermann2009-11-101-11/+8
| | | | | | | | | | | | | | | Don't use audio_format_sample_size() for identifying the sample format.
* | | fd_util: removed creat_cloexec()Max Kellermann2009-11-109-39/+13
| | | | | | | | | | | | Add a "mode" argument to open_cloexec() instead.
* | | fd_util: added function pipe_cloexec()Max Kellermann2009-11-102-2/+31
| | | | | | | | | | | | Same as pipe_cloexec_nonblock(), but doesn't set non-blocking mode.
* | | decoder_list: fix decoder_plugin_from_mime_type()Max Kellermann2009-11-091-1/+1
| | | | | | | | | | | | | | | Copy'n'paste error: call decoder_plugin_supports_mime_type() instead of decoder_plugin_supports_suffix().
* | | output/alsa: fill period buffer with silence before drainingMax Kellermann2009-11-091-3/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | ALSA passes full period buffers to the hardware. If an application doesn't finish writing a period, libasound will nonetheless send the partial buffer (with undefined trailing data). This causes noise at the end of playback. This patch attempts to track the current position within the period buffer, and generates silence at the end, before calling snd_pcm_drain().
* | | player_thread: drain audio outputs at the end of the playlistMax Kellermann2009-11-091-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | When there's no queued song, and the current one has finished playing, first make sure that the hardware outputs have really finished playing the last chunk: call the drain() method in all audio outputs. Without this patch, MPD stopped playback shortly before the ALSA sound card had finished playing.
* | | output_thread: added command DRAINMax Kellermann2009-11-096-0/+47
| | | | | | | | | | | | | | | This command manually drains the hardware buffer. This is useful when the player thread want to make sure that everything has been played.