Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | decoder/mad: fix negative replay gain values | Max Kellermann | 2014-10-28 | 1 | -1/+1 | |
| | | | | | | | | Negating an unsigned integer does not work. | |||||
* | | TextInputStream: don't ignore unterminated last line | Max Kellermann | 2014-10-28 | 1 | -4/+16 | |
| | | ||||||
* | | playlist/m3u: recognize the file suffix ".m3u8" | Max Kellermann | 2014-10-26 | 2 | -0/+2 | |
| | | ||||||
* | | OutputThread: fall back to PCM if given DSD sample rate is not supported | Max Kellermann | 2014-10-25 | 1 | -0/+30 | |
| | | | | | | | | | | Works around the "PCM conversion from f to dsd is not implemented" error message that prevents DSD playback. | |||||
* | | decoder/faad: remove workaround for ancient libfaad2 ABI bug | Max Kellermann | 2014-10-25 | 2 | -20/+4 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many years ago, FAAD had a serious ABI bug: the NeAACDecInit() prototype in its header declared the "samplerate" parameter to be "unsigned long *", but internally, the function assumed it was "uint32_t *" instead. On 32 bit machines, that was no difference, but on 64 bit, this left one portion of the return value uninitialized; and worse, on big-endian, the wrong word was filled. This bug had to be worked around in MPD (commit 9c4e97a6). A few months later, the bug was fixed in the FAAD CVS in commit 1.117 on file libfaad/decoder.c; the commit message was: "Use public headers internally to prevent duplicate declarations" The commit message was too brief at best; the problem was not duplicate declarations, but a prototype mismatch. No mention of the bug fix in the ChangeLog. The MPD project never learned about this bug fix, and so MPD would always pass a "uin32_t *" dressed up as a "unsigned long *". Nearly 6 years later, it's about time to fix this second ABI problem. Let's kill the workaround! | |||||
* | | decoder/ffmpeg: recognize MIME type audio/aacp | Steven OBrien | 2014-10-25 | 1 | -0/+1 | |
| | | ||||||
* | | fs/Charset: work around clang's -Wunused-const-variable | Max Kellermann | 2014-10-25 | 1 | -1/+2 | |
| | | | | | | | | MPD_PATH_MAX_UTF8 is only used by GLib-specific code currently. | |||||
* | | OutputThread: close the output plugin after filter failure | Max Kellermann | 2014-10-24 | 1 | -0/+1 | |
| | | | | | | | | Fixes memory leak because ao_plugin_close() never gets called. | |||||
* | | OutputThread: unlock mutex for CloseFilter() | Max Kellermann | 2014-10-24 | 2 | -0/+14 | |
| | | | | | | | | Be consistent. | |||||
* | | output/roar: remove unnecessary "volatile" keyword | Max Kellermann | 2014-10-23 | 1 | -1/+1 | |
| | | | | | | | | | | A mutex acts as a memory barrier, and thus "volatile" is not necessary. | |||||
* | | pcm/ChannelsConverter: fix variable used to generate error message | Max Kellermann | 2014-10-23 | 1 | -1/+1 | |
| | | | | | | | | | | Use the "_format" parameter instead of the (uninitialized) "format" attribute. | |||||
* | | pcm/FormatConverter: move check to Open() | Max Kellermann | 2014-10-23 | 1 | -10/+24 | |
| | | | | | | | | | | Report unsupported format while opening the filter, not later when the first conversion takes place. | |||||
* | | pcm/PcmConvert: assign {src,dest}_format at the end | Max Kellermann | 2014-10-23 | 1 | -12/+13 | |
| | | | | | | | | | | Fixes assertion failure in destructor by not assigning {src,dest}_format when an error occurs. | |||||
* | | pcm/PcmConvert: make AudioFormat parameters "const" | Max Kellermann | 2014-10-23 | 1 | -1/+1 | |
| | | ||||||
* | | TextInputStream: manually shift the buffer before reading | Max Kellermann | 2014-10-19 | 1 | -0/+2 | |
| | | | | | | | | | | Fixes truncated lines in m3u and cue files (regression by commit 67958f7). | |||||
* | | util/StaticFifoBuffer: make Shift() public | Max Kellermann | 2014-10-19 | 1 | -2/+0 | |
| | | ||||||
* | | playlist/extm3u: strip first line for #EXTM3U detection | Max Kellermann | 2014-10-17 | 1 | -2/+6 | |
| | | ||||||
* | | ThreadInputStream: call ThreadRead() inside the thread instead of Read() | Max Kellermann | 2014-10-11 | 1 | -1/+1 | |
| | | | | | | | | Fixes deadlock bug in the "mms" plugin. | |||||
* | | ThreadInputStream: add assertions | Max Kellermann | 2014-10-11 | 1 | -0/+8 | |
| | | ||||||
* | | util/DynamicFifoBuffer: make the "Range" type public | Max Kellermann | 2014-10-11 | 1 | -0/+1 | |
| | | | | | | | | | | Export it from the protected base class. This fixes a build failure on Mac OS X. | |||||
* | | db/upnp/Util: move caturl() to util/UriUtil.cxx | Max Kellermann | 2014-10-10 | 6 | -32/+39 | |
| | | ||||||
* | | event/IdleMonitor: remove redundant comment | Max Kellermann | 2014-10-10 | 1 | -2/+1 | |
| | | ||||||
* | | ZeroconfBonjour: use htons() instead of g_htons() | Max Kellermann | 2014-10-10 | 1 | -3/+3 | |
| | | ||||||
* | | TagString: implement fix_utf8() without GLib | Max Kellermann | 2014-10-10 | 1 | -22/+34 | |
| | | ||||||
* | | util/UTF8: add SequenceLengthUTF8() | Max Kellermann | 2014-10-10 | 2 | -0/+96 | |
| | | ||||||
* | | util/UTF8: new library | Max Kellermann | 2014-10-10 | 2 | -0/+339 | |
| | | ||||||
* | | TagString: return WritableBuffer<char> | Max Kellermann | 2014-10-10 | 3 | -24/+26 | |
| | | ||||||
* | | TagString: use strndup() for unterminated string | Max Kellermann | 2014-10-10 | 1 | -1/+1 | |
| | | | | | | | | Fixes buffer overflow bug. | |||||
* | | TagString: remove ISO-Latin-1 fallback | Max Kellermann | 2014-10-10 | 1 | -14/+1 | |
| | | | | | | | | | | | | | | | | 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. | |||||
* | | fs/Traits: use value_type | Max Kellermann | 2014-10-10 | 1 | -4/+4 | |
| | | ||||||
* | | Main: run the OS X native event loop | nanotech | 2014-10-10 | 3 | -0/+50 | |
| | | ||||||
* | | storage/nfs: use the libnfs async API | Max Kellermann | 2014-10-09 | 3 | -49/+397 | |
| | | | | | | | | Share the NFS connection with the NFS input plugin. | |||||
* | | lib/nfs/Connection: reduce Error instance allocations | Max Kellermann | 2014-10-09 | 1 | -3/+2 | |
| | | ||||||
* | | lib/nfs/Glue: add assertion | Max Kellermann | 2014-10-09 | 1 | -0/+1 | |
| | | ||||||
* | | StoragePlugin: pass EventLoop to constructor | Max Kellermann | 2014-10-09 | 9 | -14/+23 | |
| | | ||||||
* | | storage/nfs: move code to class MemoryStorageDirectoryReader | Max Kellermann | 2014-10-07 | 3 | -73/+150 | |
| | | | | | | | | | | | | Read all directory entries into memory and close the struct nfsdir before returning the StorageDirectoryReader instance. This is what libnfs does, anyway. | |||||
* | | storage/nfs: move code to Copy() | Max Kellermann | 2014-10-07 | 1 | -18/+30 | |
| | | ||||||
* | | lib/nfs/Connection: add methods {Open,Read,Close}Directory() | Max Kellermann | 2014-10-07 | 2 | -0/+53 | |
| | | ||||||
* | | lib/nfs/Connection: add method Stat(path) | Max Kellermann | 2014-10-07 | 2 | -0/+33 | |
| | | ||||||
* | | lib/nfs/Connection: make GetEventLoop() public | Max Kellermann | 2014-10-06 | 1 | -4/+4 | |
| | | ||||||
* | | lib/nfs/Base: kludge to reduce number of NFS mounts | Max Kellermann | 2014-10-05 | 4 | -7/+127 | |
| | | | | | | | | | | | | | | 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. | |||||
* | | PlaylistStream: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 1 | -5/+3 | |
| | | ||||||
* | | PlaylistStream: pass Path instance to playlist_open_path() | Max Kellermann | 2014-10-02 | 3 | -11/+19 | |
| | | | | | | | | | | Convert filesystem charset to UTF-8 for playlist_list_open_uri(). This fixes one of many remaining charset bugs. | |||||
* | | archive/bzip2: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 1 | -2/+2 | |
| | | ||||||
* | | input/Open: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 5 | -33/+34 | |
| | | | | | | | | | | | | | | 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. | |||||
* | | DecoderThread: use OpenLocalInputStream() for local files | Max Kellermann | 2014-10-02 | 1 | -1/+20 | |
| | | ||||||
* | | TagFile: use OpenLocalInputStream() | Max Kellermann | 2014-10-02 | 1 | -3/+4 | |
| | | ||||||
* | | input/LocalOpen: new library for opening local files | Max Kellermann | 2014-10-02 | 2 | -0/+86 | |
| | | | | | | | | Combines the "file" and the "archive" input plugins. | |||||
* | | input/archive: export function OpenArchiveInputStream() | Max Kellermann | 2014-10-02 | 2 | -16/+33 | |
| | | ||||||
* | | input/file: export function OpenFileInputStream() | Max Kellermann | 2014-10-02 | 2 | -13/+37 | |
| | |