| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
We already supported "albumartist", but it seems some folks also use
"album artist" (with a space).
|
|
|
|
|
| |
The return value of Player_LoadTitle() is allocated with malloc(), and
must be freed by the caller.
|
|
|
|
| |
Reuse the function tag_name_parse_i().
|
| |
|
|
|
|
| |
Initialize the ov_callbacks struct at compile time.
|
|
|
|
|
| |
I'm not sure if mapping "band" to TAG_PERFORMER is correct, but it
might be better than nothing.
|
|
|
|
| |
Convert if/else/else/... to a loop.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Without libid3tag, we were trying to skip the ID3 frame (since
0.15.2). Its length however was not calculated at all, we were just
dropping everything from the current input buffer. This lead to the
first few seconds of the file being skipped. This patch attempts to
calculate the ID3v2 frame size with the formula from:
http://www.id3.org/id3v2.4.0-structure 3.1 and 6.2
|
|
|
|
|
|
|
|
|
|
| |
"When playing musepack files with mpd v0.15.8, rg seems to have no effect.
Using sample file below, mpd says 'computing ReplayGain album scale with gain 122.879997, peak 0.549150'.
One thing though, if I build mpd against old libmpcdec-1.2.6, rg works
as expected: 'computing ReplayGain album scale with gain 16.820000,
peak 0.099765'"
|
|
|
|
|
|
| |
"There is a bug in fixed-point musepack (musepack_src_r435) playback.
In floating-point audio is OK but in fixed audio is distorted. I have
made a patch for this"
|
|
|
|
|
|
| |
Removed the decoder_command_finished() call at the end of
mp3_decode(). This is invalid, because decoder_command_finished() has
already been called in mp3_read().
|
|
|
|
| |
Taken from the ffmpeg sources.
|
|
|
|
|
|
|
| |
To allow libavformat to detect the format of the input file, append
the suffix of the input file to the URL of the virtual stream. This
specifically enables the "shorten" codec, which is supported by
libavformat/raw.c, detected only by the suffix.
|
|
|
|
|
| |
Support deprecated MIME types such as "audio/x-ogg". Support new
types such as "audio/flac".
|
|
|
|
|
| |
First multiply the floating point return value of
decoder_seek_where(), then cast to integer.
|
|
|
|
| |
Use the signed C99 type int8_t instead.
|
|
|
|
|
|
| |
The plugin code tried to force libavcodec to supply stereo samples.
That however has never actually worked. By removing this code, we are
able to play surround files for the first time.
|
|
|
|
|
|
| |
Removed the "vtrack" local variable (which triggered a gcc warning
because it was after the newly introduced NULL check), and run
strtol() on the original parameter.
|
|
|
|
| |
The function flac_vtrack_tnum() was missing a strrchr()==NULL check.
|
|
|
|
|
|
| |
On some platforms, libavcodec wants the output buffer aligned to 16
bytes (because it uses SSE/Altivec internally). It will segfault when
you don't obey this rule.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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().
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
This warning is useless. I assume the author added it for debugging
purposes.
|
|
|
|
|
| |
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
|
|
|
|
|
| |
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
|
| |
|
| |
|
| |
|
|
|
|
| |
Move the declaration of "i" into the "for" loop.
|
|
|
|
|
|
|
| |
Cuesheets are often saved as vorbis comment
flac files (CUESHEET=.. case doesn't matter).
We can parse this now and use the information to
tag the subtracks (from the embedded cuesheets).
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Previous cast to float didn't have any effect because one value is uint
and the other is a floating type but the number itself is even..
This caused some tracks to end before they were really at an end.
|
|
|
|
| |
The "mpcdec" plugin is based on the libmpcdec library.
|