Max Kellermann
|
3079aa1f9d
|
{android,win32}/build.py: upgrade FFmpeg to 2.8.2
|
2015-11-17 17:16:56 +01:00 |
Max Kellermann
|
28f9a0a900
|
command/other: re-allow "lsinfo /"
This compatibility hack was accidently broken by commit f072cbbb
|
2015-11-13 21:04:02 +01:00 |
Max Kellermann
|
a6bb3cf60a
|
command/queue: use StringIsEqual() instead of memcmp()
memcmp() can overflow the buffer.
|
2015-11-13 21:02:33 +01:00 |
Max Kellermann
|
004da5d385
|
queue/Save: fix "Malformed playlist line in state file"
Regression by commit 738583e3
|
2015-11-13 20:45:50 +01:00 |
Max Kellermann
|
0368282486
|
player/Control: add code comments
|
2015-11-13 16:02:07 +01:00 |
Max Kellermann
|
4404f20cf4
|
player/Control: Seek*() returns Error information
|
2015-11-11 19:56:09 +01:00 |
Max Kellermann
|
faca8bc02a
|
decoder/Control: Seek() returns Error information
|
2015-11-11 19:56:08 +01:00 |
Max Kellermann
|
5e93c05095
|
queue/Playlist: seek methods return bool/Error instead of PlaylistResult
|
2015-11-11 19:56:01 +01:00 |
Max Kellermann
|
0f4f04eaa4
|
command/CommandError: send verbose error message to client
|
2015-11-11 19:51:09 +01:00 |
Max Kellermann
|
2e55d561d3
|
PlaylistError: remove unused code "ERRNO"
|
2015-11-11 19:50:57 +01:00 |
Max Kellermann
|
76a9049739
|
decoder/Control: State::ERROR is illegal
The state ERROR can only be entered during decoder initialization, and
Seek() may only be called after initialization has been finished.
|
2015-11-11 17:46:06 +01:00 |
Max Kellermann
|
27bfcda20d
|
decoder/Control: use switch/case in Seek()
|
2015-11-11 17:46:03 +01:00 |
Max Kellermann
|
c6d1d360a3
|
player/Control: use class ScopeLock
|
2015-11-11 17:43:56 +01:00 |
Max Kellermann
|
afc1236b06
|
player/Control: move code to ClearError()
|
2015-11-11 17:41:02 +01:00 |
Max Kellermann
|
bedd5f00f8
|
player/Control: move code to SeekLocked()
|
2015-11-11 16:56:24 +01:00 |
Max Kellermann
|
36239895bd
|
player/Control: add Lock prefix to locking method names
|
2015-11-11 16:50:57 +01:00 |
Max Kellermann
|
738583e3d4
|
StateFile: use StringAfterPrefix() instead of StringStartsWith()
|
2015-11-11 15:34:36 +01:00 |
Max Kellermann
|
c513478c31
|
db/simple: use StringAfterPrefix() instead of StringStartsWith()
|
2015-11-11 15:27:56 +01:00 |
Max Kellermann
|
a944927b56
|
util/StringPointer: add method empty()
|
2015-11-11 15:13:46 +01:00 |
Max Kellermann
|
b9a8b0d146
|
util/StringView: add method Literal()
|
2015-11-06 10:03:45 +01:00 |
Max Kellermann
|
4d15db0134
|
util/StringCompare: use StringView to simplify inline implementations
|
2015-11-06 10:03:14 +01:00 |
Max Kellermann
|
0d1a54262c
|
playlist/soundcloud: make key_str "static const"
|
2015-11-06 09:52:35 +01:00 |
Max Kellermann
|
e7ef7f5159
|
db/update/InotifyQueue: use StringAfterPrefix()
|
2015-11-06 09:49:39 +01:00 |
Max Kellermann
|
3dc989bccb
|
input/alsa: use StringAfterPrefix()
|
2015-11-06 09:49:22 +01:00 |
Max Kellermann
|
75d46efd23
|
util/UriUtil: use StringAfterPrefix() instead of memcmp()
|
2015-11-06 09:49:22 +01:00 |
Max Kellermann
|
b83392cb04
|
util/UriUtil: move code to SkipUriScheme()
|
2015-11-06 09:49:22 +01:00 |
Max Kellermann
|
7640d333f4
|
util/UriUtil: make variables more local
|
2015-11-06 09:49:22 +01:00 |
Max Kellermann
|
c880099deb
|
util/StringCompare: add StringIsEmpty()
|
2015-11-06 09:37:07 +01:00 |
Max Kellermann
|
42f5ecd4a1
|
util/StringCompare: use strncmp() instead of memcmp() in StringStartsWith()
Some optimized implementations of memcmp() may not start from the
beginning of the string, and may thus segfault.
|
2015-11-06 09:24:18 +01:00 |
Max Kellermann
|
733989a284
|
util/StringUtil: move comparison functions to StringCompare.cxx
|
2015-11-06 09:20:18 +01:00 |
Max Kellermann
|
493f74d94d
|
tag/id3: convert path from "wchar_t*" to "char*" for error message
|
2015-11-06 09:20:18 +01:00 |
Max Kellermann
|
3b71e2abef
|
player/Thread: call DecoderCommand::SEEK only on existing decoder
If the decoder was just started, it already seeks to the desired
position.
|
2015-11-05 00:41:54 +01:00 |
Max Kellermann
|
30cad0c5f1
|
player/Thread: move code to WaitDecoderStartup()
|
2015-11-05 00:39:30 +01:00 |
Max Kellermann
|
3a387643b3
|
player/Thread: move player_command_finished() to PlayerControl
|
2015-11-05 00:38:09 +01:00 |
Max Kellermann
|
e6b37703da
|
player/Thread: copy pc.seek_time in ActivateDecoder()
If this gets called while seeking, do the right thing. This moves the
elapsed_time setter from method Run(), which is now redundant.
|
2015-11-05 00:30:04 +01:00 |
Max Kellermann
|
990f473bb3
|
player/Control: initialize seek_time in EnqueueSongLocked()
Allows removing a few special cases in the player thread.
|
2015-11-05 00:29:03 +01:00 |
Max Kellermann
|
cf1de78205
|
player/Thread: remove decoder error check from ActivateDecoder()
It is futile to check for decoder errors before the decoder has
finished startup. At this time, it's unlikely that the decoder has
already failed.
|
2015-10-28 18:24:42 +01:00 |
Max Kellermann
|
ccea6dd74b
|
player/Thread: rename WaitForDecoder() to ActivateDecoder()
.. and fix its API documentation.
|
2015-10-28 18:20:48 +01:00 |
Max Kellermann
|
166b490eed
|
player/Thread: move code to ForwardDecoderError()
|
2015-10-27 23:28:13 +01:00 |
Max Kellermann
|
efd871ad2f
|
player/Thread: clear pc.next_song earlier in WaitForDecoder()
|
2015-10-27 23:25:50 +01:00 |
Max Kellermann
|
b78896d64e
|
player/Control: use CANCEL to clear next_song in Seek()
Assigning nullptr to next_song may disrupt the player thread and
render undefined behavior.
|
2015-10-27 23:09:03 +01:00 |
Max Kellermann
|
e753c924ef
|
player/Thread: merge the cross_fading flag into enum CrossFadeState
|
2015-10-27 22:43:46 +01:00 |
Max Kellermann
|
9dc7b5a6d9
|
player/Thread: move ResetCrossFade() calls to where pipes are set
Move ResetCrossFade() to where cross-fading would actually break, to
make the cross-fading state more reliable.
|
2015-10-27 22:11:56 +01:00 |
Max Kellermann
|
f5d21c9cdb
|
player/Thread: add method ResetCrossFade()
|
2015-10-27 22:05:41 +01:00 |
Max Kellermann
|
6ce13646da
|
player/Thread: more CrossFadeState documentation
|
2015-10-27 21:12:20 +01:00 |
Max Kellermann
|
151653dd98
|
player/Thread: automatic CrossFadeState enum values
|
2015-10-27 21:05:10 +01:00 |
Max Kellermann
|
619cfe6a1c
|
player/Thread: move enum CrossFadeState into the Player class
|
2015-10-27 20:48:14 +01:00 |
Max Kellermann
|
8acf996d90
|
command/queue: add range parameter to plchanges and plchangesposid
|
2015-10-27 20:35:40 +01:00 |
Max Kellermann
|
15e432204e
|
pcm/Order: new library to convert from FLAC to ALSA channel order
This new library is integrated in the PcmExport class and (if enabled)
converts MPD's channel order (= FLAC channel order) to ALSA channel
order.
This fixes:
http://bugs.musicpd.org/view.php?id=3147
and
http://bugs.musicpd.org/view.php?id=3255
|
2015-10-27 11:44:23 +01:00 |
Max Kellermann
|
4b1630e1ec
|
AudioFormat: define that channel order follows the FLAC convention
Basic definition to solve http://bugs.musicpd.org/view.php?id=3147 and
http://bugs.musicpd.org/view.php?id=3255
|
2015-10-27 11:44:23 +01:00 |