| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| | |
Allow code sharing.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I took this tag name from a MusePack sample file I got from a user.
It is not documented in the APE specification:
http://wiki.hydrogenaudio.org/index.php?title=APE_key
People seem to be using undocumented extensions to the specification
anyway, and the best we can do is attempt to support them.
|
| |
| |
| |
| |
| | |
Make "enum tag_type" the array index, and convert apeItems to a sparse
array.
|
| |
| |
| |
| | |
Improve code readability.
|
| |
| |
| |
| | |
Don't initialize those arrays each time tag_ape_load() is called.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
libavformat 0.6 does not pass the original URI pointer to the "open"
method, which leads to a crash because MPD was using a dirty hack to
pass a pointer to that method.
This patch switches to av_open_input_stream() with a custom
ByteIOContext class, instead of doing the URI string hack with
av_open_input_file().
Loosely based on a patch from Jasper St. Pierre.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use the libavformat function av_probe_input_format() to probe the
AVInputFormat, instead of letting av_open_input_file() do it
implicitly. We will switch to av_open_input_stream() very soon, which
does not have the probing code.
Loosely based on a patch from Jasper St. Pierre.
|
| |
| |
| |
| | |
in some formats, e.g. vorbis, the metadata is stored per-stream.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
We already supported "albumartist", but it seems some folks also use
"album artist" (with a space).
|
| |
| |
| |
| |
| | |
Allow printing remote playlists with the commands "listplaylist" and
"listplaylistinfo".
|
| | |
|
| |
| |
| |
| |
| |
| | |
The new function playlist_open_any() combines playlist_mapper_open(),
playlist_list_open_uri() and playlist_list_open_stream(), providing an
easy API for all of them.
|
| |
| |
| |
| |
| | |
If the MIME type of a stream contains a semicolon, remove it and the
text after it to probe for a playlist plugin.
|
| |
| |
| |
| | |
Return early on error, save one level of indent.
|
| |
| |
| |
| |
| |
| | |
Merged both loops into playlist_list_open_stream(). This is needed
because playlist_list_open_stream() needs to know the MIME type, which
is only known after the stream has become "ready".
|
| |
| |
| |
| |
| |
| | |
This buggy implementation failed to allow "..." sequences, because the
dot count was always zero. The usefulness of allowing "..." (or more
dots) is debatable, but since it's a valid file name, we allow it.
|
| |
| |
| |
| |
| |
| |
| |
| | |
libcue's track_get_length() returns 0 for the last track, because that
information is not available in the CUE sheet. This makes MPD quit
playing the last track immediately. If we set "song.end_ms=0", MPD
will play the track until the end of the song file, which is what we
want.
|
| | |
|
| |
| |
| |
| | |
Fixes an assertion failure in the input_stream_seek() call.
|
| |
| |
| |
| |
| |
| | |
I've attached a patch that will make file URIs work on operating systems
that provide the getpeereid() function call to check the user ID of the
peer connected to a UNIX domain socket.
|
| |
| |
| |
| |
| |
| | |
this greatly improves performance of commands that return a lot
of data, e.g. search results or recursive content of a directory,
while being connected to local mpd via tcp/ip socket.
|
| |
| |
| |
| | |
Workaround for an assertion failure.
|
| | |
|
| |
| |
| |
| |
| | |
Rename the function to playlist_song_started(), which gets only called
if the song has actually started.
|
| |
| |
| |
| | |
Race condition fix.
|
| |
| |
| |
| | |
Fixes a clang warning.
|
| |
| |
| |
| |
| |
| | |
libwrap support is in MPD but only for the control port. This patch
adds support for the http port. The code is copied from
src/client_new.c
|
| |
| |
| |
| | |
Print those files which can be handled by a playlist plugin.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Memory leak fix. The input_stream object passed to
playlist_list_open_stream_suffix() must be closed by the caller - this
however never happens in playlist_list_open_path(), because it does
not return it to the caller.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
There is no useful return value here.
|
| | |
|
| |
| |
| |
| |
| | |
The return value of Player_LoadTitle() is allocated with malloc(), and
must be freed by the caller.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Added macros with better names: GME_BUFFER_FRAMES, GME_BUFFER_SAMPLES
(the former only used to calculate the latter).
|
| |
| |
| |
| | |
Move into enums.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Pass sizeof(buf) to decoder_data(), not the number of samples (which
is half the size). At the same time, pass GME_BUF_SIZE to gme_play()
- libgme really wants to get the number of samples, not the number of
stereo frames. Previously, this plugin had been using only the first
half of the buffer.
|
| |
| |
| |
| | |
Allocate the "tag" object after the file has been opened successfully.
|
| |
| |
| |
| |
| | |
Allocate the "tag" object after the file has been checked. That
removes one tag_free() call in an error handler.
|
| | |
|
| |
| |
| |
| | |
Allocate only one item on the stack.
|
| | |
|
| |
| |
| |
| | |
Reuse the function tag_name_parse_i().
|