aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder (follow)
Commit message (Collapse)AuthorAgeFilesLines
* decoder/gme: call decoder_seek_error() on seek errorMax Kellermann2015-10-261-2/+4
|
* decoder/ffmpeg: fix crash due to wrong avio_alloc_context() callMax Kellermann2015-10-261-4/+13
| | | | | | | | Allocate the buffer dynamically using av_malloc(), and free AVIOContext.buffer in the destructor, as mandated by the libavformat documentation. Fixes http://bugs.musicpd.org/view.php?id=4446
* decoder/mpcdec: use SampleTraits<SampleFormat::S24_P32>Max Kellermann2015-10-161-11/+13
| | | | | | Eliminates some duplicate code, and as a side effect, this works around clang 3.8 compiler warning because a negative value was shifted.
* decoder/mpcdec: use Clamp()Max Kellermann2015-10-161-6/+2
|
* DecoderAPI: discard unused song tag earlyMax Kellermann2015-06-211-2/+5
| | | | | If there's a stream tag, don't let the song tag override it in the next update_stream_tag() call.
* DecoderThread: set Decoder::song_tag only for local filesMax Kellermann2015-06-211-1/+5
| | | | | | | If the song tag comes from a stream, and MPD playback restarts, MPD would believe the tag should override the newly received tag. This makes the previous tag appear stuck. This change passes the song tag only if it's authoritative - i.e. if it's a song file.
* DecoderAPI: "move" the Tag objectMax Kellermann2015-06-201-1/+1
| | | | Reduce runtime overhead.
* decoder/ffmpeg: skip unwanted samples after seekingMax Kellermann2015-06-201-5/+48
| | | | | When seeking to the beginning of a packet, skip the samples that come before the desired time stamp.
* decoder/ffmpeg: use AVSEEK_FLAG_BACKWARD for seekingMax Kellermann2015-06-201-1/+5
| | | | | | Ask FFmpeg to seek to the next packet boundary *before* the seek position, so we don't miss audio data. Now we get too much, but we'll solve that in the next commit.
* decoder/ffmpeg: move code to StreamRelativePts()Max Kellermann2015-06-191-6/+20
|
* decoder/DsdLib: use new[] to allocate the ID3 bufferMax Kellermann2015-01-291-3/+5
| | | | | Don't abort the process if there's not enough memory. This buffer is not important and can be large.
* decoder/DsdLib: free ID3 buffer right after id3_tag_parse()Max Kellermann2015-01-291-5/+2
| | | | Merge two free() calls.
* decoder/DsdLib: raise ID3 tag limit to 1 MBMax Kellermann2015-01-291-1/+1
| | | | | A bug report was submitted with a 600 kB ID3 tag that could not be read by MPD.
* Merge branch 'v0.18.x' into v0.19.xMax Kellermann2014-12-261-0/+6
|\
* | decoder/ffmpeg: support interleaved floating pointMax Kellermann2014-12-231-0/+1
| |
* | decoder/DsdLib: add missing stdlib.h includeMax Kellermann2014-12-231-0/+1
| |
* | DSF ID3 tags hitting 4k size limitJan Brittenson2014-12-231-6/+12
| | | | | | | | | | | | | | | | | | Here's a change to dynamically allocate the DSD ID3 tag buffer. Pretty much anything with cover art is going to exceed the existing, static 4k limit... Here's a change to dynamically allocate the buffer and sanity check it at some upper limit. I rather arbitrarily pulled 256k out of thin air just to keep a corrupt file from causing it to trying to allocate a buffer larger than available memory.
* | Merge tag 'v0.18.21' into v0.19.xMax Kellermann2014-12-171-4/+7
|\|
| * decoder/ffmpeg: detect and fix negative time stampsMax Kellermann2014-12-151-4/+7
| | | | | | | | | | Works around assertion failure due to something that appears to be a (minor) FFmpeg bug.
* | Merge tag 'v0.18.20' into v0.19.xMax Kellermann2014-12-081-0/+5
|\|
| * decoder/ffmpeg: support FFmpeg 2.5Max Kellermann2014-12-081-0/+5
| | | | | | | | | | | | Version 2.5 fixed an API oddity, however it broke API compatibility, at least with C++. Disable the workaround when a libavformat version is detected that is recent enough.
| * decoder/ffmpeg: support opusMax Kellermann2014-11-101-1/+2
| |
| * decoder/faad: remove workaround for ancient libfaad2 ABI bugMax Kellermann2014-11-021-10/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/aacpSteven OBrien2014-11-021-0/+1
| |
* | decoder/mp4v2: remove because of incompatible licenseMax Kellermann2014-11-253-359/+0
| | | | | | | | | | | | | | | | | | libmp4v2 is licensed under MPL 1.1, which is incompatible with GPLv2. Unfortunately, this means that we must remove the plugin. More information can be found in the Debian bug report: http://bugs.debian.org/767504
* | decoder/{dsdiff,dsf,opus}: fix deadlock while seekingMax Kellermann2014-11-242-3/+3
| |
* | decoder/opus: add MIME types audio/ogg and application/oggMax Kellermann2014-11-121-0/+7
| |
* | decoder/opus: support chained streamsMax Kellermann2014-11-111-1/+36
| |
* | decoder/opus: move code to HandleEOS()Max Kellermann2014-11-111-1/+8
| |
* | decoder/opus: improved error loggingMax Kellermann2014-11-111-4/+11
| |
* | decoder/opus: fix mistyped LoadEOSPacket() return valueMax Kellermann2014-11-111-1/+1
| |
* | decoder/opus: eliminate flag "found_opus"Max Kellermann2014-11-111-5/+3
| | | | | | | | Check opus_decoder!=nullptr instead.
* | decoder/opus: add constexpr output_buffer_framesMax Kellermann2014-11-111-8/+10
| |
* | decoder/audiofile: fix bit rate calculationMax Kellermann2014-11-101-1/+1
| |
* | decoder/ffmpeg: support opusMax Kellermann2014-11-071-1/+2
| |
* | Decoder, Playlist: ignore URI query string for plugin detectionMax Kellermann2014-11-011-1/+2
| | | | | | | | Use the new uri_get_suffix() overload that removes the query string.
* | decoder/mad: fix negative replay gain valuesMax Kellermann2014-10-281-1/+1
| | | | | | | | Negating an unsigned integer does not work.
* | decoder/faad: remove workaround for ancient libfaad2 ABI bugMax Kellermann2014-10-252-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/aacpSteven OBrien2014-10-251-0/+1
| |
* | input/Open: use OpenLocalInputStream()Max Kellermann2014-10-021-3/+1
| | | | | | | | | | | | | | 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 filesMax Kellermann2014-10-021-1/+20
| |
* | Merge tag 'v0.18.16'Max Kellermann2014-09-261-0/+2
|\|
* | decoder/mp4v2: add tag tableMax Kellermann2014-09-241-10/+19
| |
* | decoder/mpg123: support ID3v2, ReplayGain and MixRampMax Kellermann2014-09-241-1/+90
| |
* | decoder/mpg123: make variables more localMax Kellermann2014-09-241-20/+11
| |
* | decoder/flac: pass VorbisComment to flac_parse_mixramp()Max Kellermann2014-09-243-6/+4
| |
* | decoder/flac: move code to tag/MixRamp.cxxMax Kellermann2014-09-241-35/+10
| |
* | decoder/mad: move code to tag/MixRamp.cxxMax Kellermann2014-09-241-5/+2
| |
* | decoder/flac: pass VorbisComment to flac_parse_replay_gain()Max Kellermann2014-09-243-6/+3
| |
* | tag/ReplayGain: add VorbisComment parserMax Kellermann2014-09-242-41/+12
| | | | | | | | Move code from the Vorbis and FLAC decoder plugins.