| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Renamed variables and functions.
|
|
|
|
|
|
|
|
|
|
|
|
| |
On 2009/03/17 Max Kellermann<max@duempel.org> wrote:
> There doesn't seem to be an "official" standard. I'd say: search for
> TITLE[1] first (the most explicit form), then TITLE1, and finally fall
> back to TITLE. This makes sure MPD supports every possible standard,
> without breaking.
I've also added some additional checks to make sure entry is long
enough.
|
|
|
|
|
|
|
|
| |
The cue sheet embedded in a flac file doen't contain any information
about track titles and similar. There are three possibilities: Use an
external cue sheet that includes these information, use a tag CUESHEET
with a cue sheet including these information or use tags. I think the
latter is the best option and is already used by other projects.
|
|
|
|
| |
On failure, the function should return NULL, not a boolean.
|
|
|
|
|
|
|
|
| |
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
|
|
|
|
|
|
|
|
|
| |
So far only seekpoints are supported, so no proper tagging yet
except for track number and track length.
Tagging should be done by parsing the cue sheet which
is often embedded as vorbis comment in flac files.
Furthermore the pathname should be configurable like "%A - %t - %T",
where %A means Artist, %t track number and %T Title or so.
|
|
|
|
|
| |
[mk: fixed whitespace errors; use delete_song() instead of
songvec_delete()]
|
|
|
|
|
|
| |
After the decoder command was obtained, don't wait until libflac
detects EOF (as a side effect), quit the decoder immediately. This
check was missing completely.
|
|
|
|
|
|
| |
When the MPD core sends the decoder a command while
flac_process_single() is executed, this function fails. Abort the
decoder only if not seeking. This fixes a seeking bug.
|
|
|
|
|
|
| |
implemetation
function was implemented in the version we are comparing to so there must be higher or equal
|
| |
|
| |
|
|
|
|
|
| |
Parse the vorbis comments in libflac's metadata_callback and pass them
as tag struct to the decoder API.
|
|
|
|
|
| |
Don't hard code the "bits" parameter to 16. Try to use the input's
sample format, if possible.
|
|
|
|
|
| |
decoder_data() returns a decoder_command, no need to call
decoder_get_command() twice after decoder_command().
|
|
|
|
|
|
|
|
|
| |
If an input_stream is not seekable, libaudiofile fails to play at all:
Audio File Library: unrecognized audio file format [error 0]
Since we know in advance whether the input_stream is seekable, just
refuse to play on a non-seekable stream.
|
|
|
|
| |
Renamed several variables and a function.
|
|
|
|
| |
Renamed numOfItems to num_items.
|