aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-06-21DecoderAPI: discard unused song tag earlyMax Kellermann1-2/+5
If there's a stream tag, don't let the song tag override it in the next update_stream_tag() call.
2015-06-21DecoderThread: set Decoder::song_tag only for local filesMax Kellermann1-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.
2015-06-20DecoderAPI: "move" the Tag objectMax Kellermann1-1/+1
Reduce runtime overhead.
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