| Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
After the decoder loop, "flac_dec" is always set.
|
|
The oggflac plugin has been completely broken for quite a while and
nobody has noticed - maybe we should remove it?
|
|
|
|
|
|
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".
|
|
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.
|
|
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.
|
|
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().
|
|
|
|
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.
|
|
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().
|
|
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
|
|
|
|
[mk: added autoconf test; fixed songlen_data_size type]
|
|
|
|
Still missing:
- seeking
- tags
- streaming
- encodings other than MPG123_ENC_SIGNED_16
|
|
fopen change for win32 in tag dup of vorbis
win32 adaption for head changes
|
|
using ov_test_callback with function CALLBACKS_STREAMONLY will cause
scanning to stop after the comment field. ov_open (and ov_test)
default to CALLBACKS_DEFAULT which scans the file structure causing a
huge slowdown. The speed improvement is huge: It scanned my files
around 10x faster This procedure has been recommended by monthy (main
vorbis developer) and was said to be safe for scanning files.
|
|
The function flac_cue_track() first calls FLAC__metadata_object_new(),
then overwrites this pointer with FLAC__metadata_get_cuesheet(). This
allocate two FLAC__StreamMetadata objects, but the first pointer is
lost, and never freed.
|
|
|
|
|
|
The FLAC replaygain parser used the "||" operator. This made the code
stop after the first value which was found.
|
|
When one metadata check fails, return quickly. This removes 2 levels
of indent.
|
|
This belongs into "git annotate" or AUTHORS.
|
|
When libid3tag is disabled, the libmad decoder plugin is unable to
identify ID3 frames. If the file starts with an (unidentified) ID3
frame, it assumes that the file is not a valid MP3 song. This patch
solves this by adding minimal stubs for the ID3 functions.
|
|
It makes no difference right now, but we're about to add an endianness
flag and will want to make sure it's correctly initialised every time.
|
|
|
|
External cue sheet file for "file.flac" should be named as "file.flac.cue".
|
|
|
|
Initialize flac_data.tag right after flac_data_init(). This way, the
"goto fail" won't jump to the point where tag_free(NULL) can be
called.
|
|
Call av_metadata_get() in a loop.
|
|
|