| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Like tag_merge(), but can deal with NULL parameters, and frees both
tag objects.
|
|
|
|
|
|
| |
"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"
|
|
|
|
|
|
|
| |
With single+repeat enabled, it is expected that MPD repeats the
current song over andd over. With random mode also enabled, this
didn't work, because the song order was shuffled internally. This
patch adds a special check for this case.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Check consume mode in queue_next_order(), because the current song
would be deleted as soon as it's finished; it cannot be played again.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The patch "input/file: don't fall back to parent directory" introduced
a regression: when trying to play a CUE track, decoder_run_song()
tries to open the file as a stream first, but this fails, because the
path is virtual.
This patch fixes decoder_run_song() (instead of reverting the previous
patch) to accept input_stream_open() failures if the song is a local
file. It passes the responsibility to handle non-existing files to
the decoder's file_decode() method.
|
|
|
|
|
|
|
|
| |
This fixes a regression in the patch "return multiple tag values per
song": even when the song has values for the specified tag type, the
empty string gets added to the set, because the "return" was removed.
This patch adds a flag which remembers whether at least one value was
found.
|
|
|
|
| |
This has been reimplemented in the "rewind" input plugin.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This replaces the rewinding buffer code from the CURL input plugin.
It is more generic, and allows rewinding even when the server sends
Icy-Metadata (which would have been too difficult to implement within
the CURL plugin).
This is a rather complex patch for the stable branch (v0.15.x), but it
fixes a serious problem: the "vorbis" decoder plugin was unable to
play streams with Icy-Metadata, because it couldn't rewind the stream
after detecting the codec (Vorbis vs. FLAC).
|
|
|
|
|
| |
Support deprecated MIME types such as "audio/x-ogg". Support new
types such as "audio/flac".
|
|
|
|
|
|
| |
When collecting tag values for the result set, add all of a song's tag
values of the searched type. This affects the "list" command.
Previously, "list" only considered the first tag value of a song.
|
|
|
|
|
|
| |
Don't clear the music pipe when seeking has failed - check the
"seeking" flag instead of "command==SEEK". Clear the "seeking" flag
in decoder_seek_error().
|
|
|
|
|
| |
First multiply the floating point return value of
decoder_seek_where(), then cast to integer.
|
|
|
|
| |
Free the "context" pointer in the method archive_plugin.close().
|
|
|
|
|
|
|
|
| |
Fixes a memory leak: the "archive" input plugin opens the archive, but
never closes it. This patch moves the responsibility for doing that
to archive_plugin.open_stream(). This is an slight internal API
change, but it is the simplest and least intrusive fix for the memory
leak.
|
|
|
|
| |
g_free(NULL) is allowed.
|
|
|
|
| |
Fixed memory leak in error handler.
|
|
|
|
|
| |
This code has never made any sense, and has broken some of the archive
plugin.
|
|
|
|
| |
Use the signed C99 type int8_t instead.
|
|
|
|
|
|
| |
Mixers with the "global" flag set aren't closed automatically when the
output device is closed. Thus, they might still be open when MPD
shuts down.
|
|
|
|
|
|
|
|
| |
This fixes an inconsistency in the stored playlist subsystem: when
obtaining the list of playlists (listplaylist, listplaylistinfo), the
file names in the playlist directory are converted to UTF-8 (according
to filesystem_charset), but when saving or loading playlists, the
filesystem_charset setting was ignored.
|
|
|
|
| |
Call spl_valid_name() in spl_delete().
|
|
|
|
| |
Don't allocate the file name before the playlist_dir==NULL check.
|
|
|
|
|
| |
If we define id3v1_encoding, then the tags are not added to the
database.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Allow RIFF/AIFF ID3 tags up to 4 MB (old limit was 256 kB). This
might still be too small for some users, and when somebody complains,
we might do something more clever (like streaming the data into
libid3tag?).
|
|
|
|
|
|
| |
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?
|
|
|
|
| |
This function was not present in SQLite < 3.4.
|
|
|
|
| |
Should be "lastfm_user", not "lastfm_username".
|
|
|
|
|
|
|
| |
The line buffer had a fixed size of 5 kB, and was allocated on the
stack. This was too small for some users. As a hotfix, we're
increasing the buffer size to 32 kB now, allocated on the heap. In
MPD 0.16, we'll switch to dynamic allocation.
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
When you disable the "follow_outside_symlinks" or the
"follow_inside_symlinks" setting, the next update should remove the
now-ignored files from the database.
|
|
|
|
|
| |
Basically the same as the 0.15.5 patch "check again if output is open
on CANCEL". Same race condition, same fix.
|
|
|
|
|
|
| |
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 return value of map_directory_child_fs() must be freed.
|
|
|
|
|
| |
Removed the NULL check. If that NULL check was correct, that would
have been a memory leak (vtrack).
|
|
|
|
|
|
|
|
| |
When the player thread unpauses, it sends CANCEL to the output thread,
after having checked that the output is still open. Problem is when
the output thread closes the device before it can process the CANCEL
command - race condition. This patch adds another "open" check inside
the output thread.
|
|
|
|
|
|
|
| |
When the connection is lost while buffering, the CURL input plugin may
enter an endless loop, because it does not check the EOF condition.
This patch makes fill_buffer() return success only if there's at least
one buffer, which is enough of a check.x
|
|
|
|
|
|
| |
On 32 bit systems with large file support enabled (i.e. "sizeof(off_t)
> sizeof(size_t)") gcc emits a warning because a size_t cast to off_t
can never become negative.
|
|
|
|
|
|
| |
When there is no Content-Type response header, try the "mad" decoder
plugin. It uesd to be named "mp3", and we forgot to change the
fallback name in decoder_thread.c.
|
|
|
|
|
|
|
|
|
| |
When a received chunk of data has only icy-metadata, there was no
usable data left for input_curl_read() to return, and thus it returned
0 bytes. "0" however is a special value for "end of file" or
"error". This patch makes input_curl_read() read more data from the
socket, until the read request can be fulfilled (or until there's
really EOF).
|
| |
|
|
|
|
|
|
|
| |
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".
|