Max Kellermann
fa0aa91bf9
SongSticker, playlist/soundcloud: add missing stdlib.h include
...
For free().
2014-10-25 23:49:29 +02:00
Max Kellermann
3e641e2147
SongSticker: don't use GLib
2014-10-25 01:25:33 +02:00
Max Kellermann
de7e4f0db7
decoder/wavpack: don't use GLib
2014-10-25 01:24:45 +02:00
Max Kellermann
a1cb1d78bd
playlist/SoundCloud: don't use GLib for string allocation
2014-10-25 01:24:27 +02:00
Max Kellermann
1178f2c1ab
Util/Alloc: add xstrcatdup(), replacing g_strconcat()
2014-10-25 01:24:10 +02:00
Steven Newbury
76f277eeb4
Set pulseaudio channel map to WAVE-EX
...
Pulseaudio expects clients to specify their channel-map if the
default (ALSA) map does not route the audio to the expected speakers.
Many Google results suggest dealing with this by re-routing the audio
channels with the appropriate ALSA plugin, but this will then simply
break any clients which expect the default ALSA mapping.
Virtually all media files and codecs, certainly flac, dca, a52, and of
course anything based on Microsoft's WAVEFORMAT_EXTENSIBLE specification,
assume the layout in the table here:
http://en.wikipedia.org/wiki/Surround_sound#Standard_speaker_channels
Fortunately, pulseaudio directly addresses this with a built-in channel
map for WAVE-EX which can be set automatically in the stream sample-spec.
2014-10-25 01:08:09 +02:00
Steven OBrien
8cd17ce045
decoder/ffmpeg: recognize MIME type audio/aacp
2014-10-25 00:26:58 +02:00
Max Kellermann
c48733e34f
fs/Charset: work around clang's -Wunused-const-variable
...
MPD_PATH_MAX_UTF8 is only used by GLib-specific code currently.
2014-10-25 00:07:25 +02:00
Max Kellermann
a7b09d3d1c
OutputThread: close the output plugin after filter failure
...
Fixes memory leak because ao_plugin_close() never gets called.
2014-10-24 00:35:16 +02:00
Max Kellermann
8fc3768166
OutputThread: unlock mutex for CloseFilter()
...
Be consistent.
2014-10-24 00:29:03 +02:00
Max Kellermann
b07bddf742
output/roar: remove unnecessary "volatile" keyword
...
A mutex acts as a memory barrier, and thus "volatile" is not
necessary.
2014-10-23 23:29:56 +02:00
Max Kellermann
220f957cd8
pcm/ChannelsConverter: fix variable used to generate error message
...
Use the "_format" parameter instead of the (uninitialized) "format"
attribute.
2014-10-23 22:44:53 +02:00
Max Kellermann
8ce48d83eb
pcm/FormatConverter: move check to Open()
...
Report unsupported format while opening the filter, not later when the
first conversion takes place.
2014-10-23 22:42:08 +02:00
Max Kellermann
200cdb6b0a
pcm/PcmConvert: assign {src,dest}_format at the end
...
Fixes assertion failure in destructor by not assigning
{src,dest}_format when an error occurs.
2014-10-23 22:39:51 +02:00
Max Kellermann
d9fb40203a
pcm/PcmConvert: make AudioFormat parameters "const"
2014-10-23 22:39:51 +02:00
Max Kellermann
493cd866f1
TextInputStream: manually shift the buffer before reading
...
Fixes truncated lines in m3u and cue files (regression by commit
67958f7
).
2014-10-19 00:50:52 +02:00
Max Kellermann
063d369672
util/StaticFifoBuffer: make Shift() public
2014-10-19 00:49:08 +02:00
Max Kellermann
a0fae8dacc
playlist/extm3u: strip first line for #EXTM3U detection
2014-10-17 20:45:18 +02:00
Max Kellermann
85301853d6
ThreadInputStream: call ThreadRead() inside the thread instead of Read()
...
Fixes deadlock bug in the "mms" plugin.
2014-10-11 21:59:06 +02:00
Max Kellermann
7cd53fb452
ThreadInputStream: add assertions
2014-10-11 21:57:31 +02:00
Max Kellermann
8ed4124184
util/DynamicFifoBuffer: make the "Range" type public
...
Export it from the protected base class. This fixes a build failure
on Mac OS X.
2014-10-11 20:28:08 +02:00
Max Kellermann
464767c5fd
db/upnp/Util: move caturl() to util/UriUtil.cxx
2014-10-10 22:43:40 +02:00
Max Kellermann
a9c3ca8606
event/IdleMonitor: remove redundant comment
2014-10-10 22:39:11 +02:00
Max Kellermann
86dd677e0c
ZeroconfBonjour: use htons() instead of g_htons()
2014-10-10 22:30:38 +02:00
Max Kellermann
666f700a93
TagString: implement fix_utf8() without GLib
2014-10-10 22:11:38 +02:00
Max Kellermann
b70bf938c2
util/UTF8: add SequenceLengthUTF8()
2014-10-10 22:11:38 +02:00
Max Kellermann
d5cf41e043
util/UTF8: new library
2014-10-10 22:11:38 +02:00
Max Kellermann
b7a1954c33
TagString: return WritableBuffer<char>
2014-10-10 22:07:19 +02:00
Max Kellermann
6520589a37
TagString: use strndup() for unterminated string
...
Fixes buffer overflow bug.
2014-10-10 22:06:48 +02:00
Max Kellermann
f445b0178a
TagString: remove ISO-Latin-1 fallback
...
MPD handles all strings in UTF-8 internally. Those decoders which
read Latin-1 tags are supposed to implement the conversion, instead of
passing Latin-1 to TagBuilder::AddItem(). FixTagString() is simply
the wrong place to do that, and hard-coding Latin-1 is kind of
arbitrary.
2014-10-10 20:53:08 +02:00
Max Kellermann
f618065f7c
fs/Traits: use value_type
2014-10-10 19:51:44 +02:00
nanotech
f0be48ff90
Main: run the OS X native event loop
2014-10-10 19:51:44 +02:00
Max Kellermann
bb922d577d
storage/nfs: use the libnfs async API
...
Share the NFS connection with the NFS input plugin.
2014-10-09 08:09:08 +02:00
Max Kellermann
990809cc21
lib/nfs/Connection: reduce Error instance allocations
2014-10-09 08:08:17 +02:00
Max Kellermann
bfcc466647
lib/nfs/Glue: add assertion
2014-10-09 07:59:53 +02:00
Max Kellermann
3d2558bde6
StoragePlugin: pass EventLoop to constructor
2014-10-09 07:45:25 +02:00
Max Kellermann
e5ff85b63c
storage/nfs: move code to class MemoryStorageDirectoryReader
...
Read all directory entries into memory and close the struct nfsdir
before returning the StorageDirectoryReader instance. This is what
libnfs does, anyway.
2014-10-07 06:36:11 +02:00
Max Kellermann
f0bb5b84f9
storage/nfs: move code to Copy()
2014-10-07 06:35:53 +02:00
Max Kellermann
07b50f6c69
lib/nfs/Connection: add methods {Open,Read,Close}Directory()
2014-10-07 06:35:50 +02:00
Max Kellermann
61b3aaaa07
lib/nfs/Connection: add method Stat(path)
2014-10-07 06:35:46 +02:00
Max Kellermann
60512ffa09
lib/nfs/Connection: make GetEventLoop() public
2014-10-06 08:47:13 +02:00
Max Kellermann
b1a252a64d
lib/nfs/Base: kludge to reduce number of NFS mounts
...
Creating a NfsStorage sets its own export_name as the "base". Now
NfsFileReader can use this information to derive the export_name to be
mounted, instead of guessing. This solves the "too many connection"
problem on the NFS server while updating the database.
2014-10-05 07:41:50 +02:00
Max Kellermann
6e7a398263
PlaylistStream: use OpenLocalInputStream()
2014-10-02 22:03:02 +02:00
Max Kellermann
44d2d9b1e8
PlaylistStream: pass Path instance to playlist_open_path()
...
Convert filesystem charset to UTF-8 for playlist_list_open_uri().
This fixes one of many remaining charset bugs.
2014-10-02 22:02:11 +02:00
Max Kellermann
8302ed44aa
archive/bzip2: use OpenLocalInputStream()
2014-10-02 22:00:42 +02:00
Max Kellermann
7e12aea1d8
input/Open: use OpenLocalInputStream()
...
Make the "open" method of plugins "file" and "archive" dummy methods
that always fail. Instead, let InputStream::Open() hard-code access
to these two plugins by using OpenLocalInputStream(). This allows
simplifyin the algorithm for falling back to probing archive plugins.
2014-10-02 21:50:14 +02:00
Max Kellermann
20346b0da4
DecoderThread: use OpenLocalInputStream() for local files
2014-10-02 21:48:52 +02:00
Max Kellermann
e0e65cbdf9
TagFile: use OpenLocalInputStream()
2014-10-02 21:43:40 +02:00
Max Kellermann
9d2d58c4b6
input/LocalOpen: new library for opening local files
...
Combines the "file" and the "archive" input plugins.
2014-10-02 21:06:01 +02:00
Max Kellermann
0c461c3859
input/archive: export function OpenArchiveInputStream()
2014-10-02 21:00:38 +02:00