aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-06-20decoder/ffmpeg: skip unwanted samples after seekingMax Kellermann1-5/+48
When seeking to the beginning of a packet, skip the samples that come before the desired time stamp.
2015-06-20decoder/ffmpeg: use AVSEEK_FLAG_BACKWARD for seekingMax Kellermann1-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.
2015-06-19decoder/ffmpeg: move code to StreamRelativePts()Max Kellermann1-6/+20
2015-01-29decoder/DsdLib: use new[] to allocate the ID3 bufferMax Kellermann1-3/+5
Don't abort the process if there's not enough memory. This buffer is not important and can be large.
2015-01-29decoder/DsdLib: free ID3 buffer right after id3_tag_parse()Max Kellermann1-5/+2
Merge two free() calls.
2015-01-29decoder/DsdLib: raise ID3 tag limit to 1 MBMax Kellermann1-1/+1
A bug report was submitted with a 600 kB ID3 tag that could not be read by MPD.
2014-12-23decoder/ffmpeg: support interleaved floating pointMax Kellermann1-0/+1
2014-12-23decoder/DsdLib: add missing stdlib.h includeMax Kellermann1-0/+1
2014-12-23DSF ID3 tags hitting 4k size limitJan Brittenson1-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.
2014-12-15decoder/ffmpeg: detect and fix negative time stampsMax Kellermann1-4/+7
Works around assertion failure due to something that appears to be a (minor) FFmpeg bug.
2014-12-08decoder/ffmpeg: support FFmpeg 2.5Max Kellermann1-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.
2014-11-25decoder/mp4v2: remove because of incompatible licenseMax Kellermann3-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
2014-11-24decoder/{dsdiff,dsf,opus}: fix deadlock while seekingMax Kellermann2-3/+3
2014-11-12decoder/opus: add MIME types audio/ogg and application/oggMax Kellermann1-0/+7
2014-11-11decoder/opus: support chained streamsMax Kellermann1-1/+36
2014-11-11decoder/opus: move code to HandleEOS()Max Kellermann1-1/+8
2014-11-11decoder/opus: improved error loggingMax Kellermann1-4/+11
2014-11-11decoder/opus: fix mistyped LoadEOSPacket() return valueMax Kellermann1-1/+1
2014-11-11decoder/opus: eliminate flag "found_opus"Max Kellermann1-5/+3
Check opus_decoder!=nullptr instead.
2014-11-11decoder/opus: add constexpr output_buffer_framesMax Kellermann1-8/+10
2014-11-10decoder/ffmpeg: support opusMax Kellermann1-1/+2
2014-11-10decoder/audiofile: fix bit rate calculationMax Kellermann1-1/+1
2014-11-07decoder/ffmpeg: support opusMax Kellermann1-1/+2
2014-11-02decoder/faad: remove workaround for ancient libfaad2 ABI bugMax Kellermann1-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!
2014-11-02decoder/ffmpeg: recognize MIME type audio/aacpSteven OBrien1-0/+1
2014-11-01Decoder, Playlist: ignore URI query string for plugin detectionMax Kellermann1-1/+2
Use the new uri_get_suffix() overload that removes the query string.
2014-10-28decoder/mad: fix negative replay gain valuesMax Kellermann1-1/+1
Negating an unsigned integer does not work.
2014-10-25decoder/faad: remove workaround for ancient libfaad2 ABI bugMax Kellermann2-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!
2014-10-25decoder/ffmpeg: recognize MIME type audio/aacpSteven OBrien1-0/+1
2014-10-02input/Open: use OpenLocalInputStream()Max Kellermann1-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.
2014-10-02DecoderThread: use OpenLocalInputStream() for local filesMax Kellermann1-1/+20
2014-09-24decoder/mp4v2: add tag tableMax Kellermann1-10/+19
2014-09-24decoder/mpg123: support ID3v2, ReplayGain and MixRampMax Kellermann1-1/+90
2014-09-24decoder/mpg123: make variables more localMax Kellermann1-20/+11
2014-09-24decoder/flac: pass VorbisComment to flac_parse_mixramp()Max Kellermann3-6/+4
2014-09-24decoder/flac: move code to tag/MixRamp.cxxMax Kellermann1-35/+10
2014-09-24decoder/mad: move code to tag/MixRamp.cxxMax Kellermann1-5/+2
2014-09-24decoder/flac: pass VorbisComment to flac_parse_replay_gain()Max Kellermann3-6/+3
2014-09-24tag/ReplayGain: add VorbisComment parserMax Kellermann2-41/+12
Move code from the Vorbis and FLAC decoder plugins.
2014-09-24decoder/{vorbis,flac}: move duplicate code to tag/VorbisComment.cxxMax Kellermann2-24/+3
2014-09-24tag/ApeReplayGain, decoder/mad: move duplicate code to tag/ReplayGain.cxxMax Kellermann1-12/+2
2014-09-22DecoderBuffer: struct to classMax Kellermann1-1/+2
2014-09-22DecoderBuffer: convert functions to methodsMax Kellermann3-121/+85
2014-09-22decoder/faad: use DecoderBuffer referencesMax Kellermann1-27/+27
2014-09-22decoder/faad: allocate DecoderBuffer on stackMax Kellermann1-13/+8
2014-09-22DecoderBuffer: export the structMax Kellermann3-58/+28
Eliminates the functions _new() and _free().
2014-09-21DecoderBuffer: make "decoder" constMax Kellermann1-1/+1
2014-09-21DecoderBuffer: convert pointer to referenceMax Kellermann1-5/+5
2014-09-21DecoderBuffer: use class DynamicFifoBufferMax Kellermann1-69/+23
2014-09-21decoder/adplug: log version numberMax Kellermann1-0/+6