| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
This is done by audio_format_init().
|
|
|
|
|
| |
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?
|
| |
| |
| |
| |
| |
| | |
Convert the metadata with the libavformat function av_metadata_conv().
This ensures that canonical tag names are provided by libavformat, and
we can remove the "artist" vs "author" workaround.
|
| |
| |
| |
| | |
After the decoder loop, "flac_dec" is always set.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Make the function more generic by not passing "struct flac_data" to
it.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
libavformat gives us the song artist in the "author" field. Since we
use av_metadata_conv(), we don't need to check for "artist".
|
|\|
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
src/decoder/flac_plugin.c
src/update.c
|
| |
| |
| |
| |
| |
| | |
Don't initialize "vc" and "cs" with FLAC__metadata_object_new(); that
value is overwritten by FLAC__metadata_get_tags() and
FLAC__metadata_get_cuesheet().
|
| |
| |
| |
| |
| |
| |
| |
| | |
svn r13289 of libvorbis introduced static callbacks (like OV_CALLBACKS_DEFAULT)
defined in "vorbisfile.h" header. First released version with this change is libvorbis-1.2.2.
In libversion-1.2.3 OV_EXCLUDE_STATIC_CALLBACKS define was added to avoid
warnings about unused static callbacks. Information on the OV_EXCLUDE_STATIC_CALLBACKS
can be found in http://svn.xiph.org/trunk/vorbis/CHANGES.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The "off_t" type may change when you enable or disable large file
support on 32 bit platforms. This caused severe ABI problems within
MPD when we enabled LFS for the first time: two sources included
config.h and sys/types.h in different order, and had different off_t
sizes - leading to memory corruption because of ABI incompatibility.
This patch attempts to get rid of all public "off_t" uses: it removes
"off_t" from the input_stream ABI/API, and switches to GLib's 64 bit
"goffset" type. This may hurt 32 bit embedded platforms a tiny bit,
but that's not even measurable.
|
|\|
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| |
| |
| | |
Usually, we read our "artist" tag from ffmpeg's "author" tag. In some
cases however (e.g. APE), this tag is named "artist". This patch
implements a fallback: if no "author" is found, MPD tries to use
"artist".
|
| |
| |
| |
| |
| |
| | |
When the ID3 tag in an AAC file is larger than the current buffer, the
function decoder_buffer_consume() aborts. By using the new function
decoder_buffer_skip() instead, we can safely skip the ID3 tag.
|
| | |
|
| |
| |
| |
| |
| | |
When parsing the songlength database fails, the code forgot to free
the memory allocated by the raw file data.
|
| | |
|
| |
| |
| |
| |
| | |
The caller is responsible fro freeing GError objects. That
g_error_free() call was missing in two places.
|
| |
| |
| |
| |
| | |
The error handler dereferences GError*, but did not retrieve that
object from g_file_get_contents().
|