| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED if this input
stream does not support seeking.
|
|
|
|
|
|
| |
Remove the audio_format attribute, add "frame_size" instead. The
audio_format initialization and check is moved both to
flac_data_get_audio_format().
|
|
|
|
|
| |
Use the sample rate stored in the stream_info struct instead of the
audio_format struct.
|
|
|
|
|
|
| |
When calculating the properties of the frame, use sample_rate and
other information from the frame header instead of the stored
audio_format object.
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Wrapper for FLAC__stream_decoder_process_until_end_of_metadata(),
decoder_initialized().
|
|
|
|
|
| |
Convenience wrapper for FLAC__stream_decoder_new() and
FLAC__stream_decoder_set_metadata_respond().
|
|
|
|
|
| |
Free the pointer right after its last use, i.e. after the
FLAC__stream_decoder_init_file() call.
|
|
|
|
| |
Remove the wrapper flac_init().
|
|
|
|
|
| |
Use the type and function names of the libFLAC 1.1.3 API. Map the new
API to the old one with macros.
|
|
|
|
| |
Don't even try to call it with an old libFLAC API.
|
| |
|
|
|
|
| |
Allow those plugins to open large files on 32 bit platforms.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
We need this for more exact end-of-subsong detection for CUE files.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
The oggflac plugin has been completely broken for quite a while and
nobody has noticed - maybe we should remove it?
|
| |
| |
| |
| | |
This fixes an assertion failure.
|
| |
| |
| |
| |
| | |
All sources which might work with large files must include config.h,
to get Large File Support on 32 bit platforms.
|
| |
| |
| |
| | |
This broke sticker and archive support.
|
| |
| |
| |
| | |
After the decoder loop, "flac_dec" is always set.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Make the function more generic by not passing "struct flac_data" to
it.
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
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)
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Simple (up-rounding) integer division is good enough. We're casting
the result back to an integer anyway.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | | |
Clean up tag and replay_gain_info there.
|
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| | |/
| |/|
| | |
| | |
| | | |
Conflicts:
src/input/lastfm_input_plugin.c
src/song_save.c
|
| | |
| | |
| | |
| | | |
This function was not present in SQLite < 3.4.
|
| | |
| | |
| | |
| | | |
Should be "lastfm_user", not "lastfm_username".
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
That function diverts into various bit formats; it doesn't need a
typed pointer.
|
| | |
| | |
| | |
| | |
| | | |
Don't use audio_format_sample_size() for identifying the sample
format.
|
| | |
| | |
| | |
| | | |
Add a "mode" argument to open_cloexec() instead.
|
| | |
| | |
| | |
| | | |
Same as pipe_cloexec_nonblock(), but doesn't set non-blocking mode.
|
| | |
| | |
| | |
| | |
| | | |
Copy'n'paste error: call decoder_plugin_supports_mime_type() instead
of decoder_plugin_supports_suffix().
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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().
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | | |
This command manually drains the hardware buffer. This is useful when
the player thread want to make sure that everything has been played.
|