Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | decoder/faad: remove workaround for ancient libfaad2 ABI bug | Max Kellermann | 2014-11-02 | 1 | -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/faad: estimate song duration for remote files | Max Kellermann | 2014-07-12 | 1 | -0/+22 |
| | | | | | | | | Previously, MPD tried to slurp the whole song file, count the number of frames and calculate the song duration from that. That however is extremely expensive for remote files, and will delay playback for a long time. Workaround: check only the first 128 frames and try to extrapolate from here. Fixes Mantis ticket 0004035. | ||||
* | decoder/faad: bail out early if sample rate is invalid | Max Kellermann | 2014-07-12 | 1 | -0/+2 |
| | |||||
* | decoder/faad: use adts_check_frame() in faad_song_duration() | Max Kellermann | 2014-07-12 | 1 | -2/+1 |
| | | | | Eliminate more duplicate code. | ||||
* | decoder/faad: test "seekable" after ADTS frame check | Max Kellermann | 2014-07-12 | 1 | -1/+5 |
| | | | | | Don't bother to check for ADIF just because the stream is not seekable. | ||||
* | decoder/faad: move code to faad_decoder_new() | Max Kellermann | 2014-07-12 | 1 | -14/+17 |
| | | | | Merge some duplicate code. | ||||
* | decoder/faad: remove unnecessary read | Max Kellermann | 2014-07-12 | 1 | -2/+0 |
| | | | | Eliminate some overhead when the caller doesn't need the buffer. | ||||
* | DecoderBuffer: add method _clear() | Max Kellermann | 2014-07-12 | 1 | -8/+3 |
| | |||||
* | decoder/faad: check sample_rate, not frames_per_second | Max Kellermann | 2014-07-11 | 1 | -2/+4 |
| | | | | Checking the integer is faster, easier and more reliable. | ||||
* | decoder/faad: make variables more local | Max Kellermann | 2014-07-11 | 1 | -71/+49 |
| | |||||
* | decoder/faad: use MAX_CHANNELS | Max Kellermann | 2014-07-11 | 1 | -4/+2 |
| | | | | .. instead of declaring a new constant. | ||||
* | decoder/faad: fix memory leak | Max Kellermann | 2014-01-08 | 1 | -0/+2 |
| | |||||
* | Log: add level "DEFAULT" | Max Kellermann | 2013-11-04 | 1 | -7/+7 |
| | | | | | | Map LogLevel::INFO to G_LOG_LEVEL_INFO, and LogLevel::DEFAULT to G_LOG_LEVEL_MESSAGE. Now client connect/disconnect message are only logged on log_level "secure". | ||||
* | input_stream: rename struct to InputStream | Max Kellermann | 2013-10-23 | 1 | -9/+9 |
| | |||||
* | decoder: rename the struct to "Decoder" | Max Kellermann | 2013-10-21 | 1 | -2/+2 |
| | |||||
* | decoder_plugin: rename struct to DecoderPlugin | Max Kellermann | 2013-10-21 | 1 | -1/+1 |
| | |||||
* | InputStream: use int64_t instead of goffset | Max Kellermann | 2013-10-17 | 1 | -1/+1 |
| | | | | Decouple some more from GLib. | ||||
* | Log: new logging library API | Max Kellermann | 2013-10-02 | 1 | -13/+12 |
| | | | | | Prepare to migrate away from GLib. Currently, we're still using GLib as a backend. | ||||
* | DecoderCommand: convert to strictly-typed enum | Max Kellermann | 2013-09-27 | 1 | -3/+3 |
| | |||||
* | Tag, ...: move to libtag.a | Max Kellermann | 2013-09-05 | 1 | -1/+1 |
| | |||||
* | InputLegacy: move functions to the input_stream class | Max Kellermann | 2013-09-05 | 1 | -5/+5 |
| | |||||
* | util/Error: new error passing library | Max Kellermann | 2013-09-04 | 1 | -20/+13 |
| | | | | Replaces GLib's GError. | ||||
* | audio_format: convert to C++ | Max Kellermann | 2013-08-03 | 1 | -7/+7 |
| | |||||
* | tag: convert to C++ | Max Kellermann | 2013-07-30 | 1 | -0/+1 |
| | |||||
* | audio_check: convert to C++ | Max Kellermann | 2013-07-29 | 1 | -1/+1 |
| | |||||
* | tag_handler: convert to C++ | Max Kellermann | 2013-07-29 | 1 | -1/+1 |
| | |||||
* | decoder_api: convert to C++ | Max Kellermann | 2013-07-28 | 1 | -1/+1 |
| | |||||
* | decoder_buffer: convert to C++ | Max Kellermann | 2013-04-17 | 1 | -10/+8 |
| | |||||
* | decoder/faad: convert to C++ | Max Kellermann | 2013-04-17 | 1 | -0/+504 |