aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/FaadDecoderPlugin.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
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-07-12decoder/faad: estimate song duration for remote filesMax Kellermann1-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.
2014-07-12decoder/faad: bail out early if sample rate is invalidMax Kellermann1-0/+2
2014-07-12decoder/faad: use adts_check_frame() in faad_song_duration()Max Kellermann1-2/+1
Eliminate more duplicate code.
2014-07-12decoder/faad: test "seekable" after ADTS frame checkMax Kellermann1-1/+5
Don't bother to check for ADIF just because the stream is not seekable.
2014-07-12decoder/faad: move code to faad_decoder_new()Max Kellermann1-14/+17
Merge some duplicate code.
2014-07-12decoder/faad: remove unnecessary readMax Kellermann1-2/+0
Eliminate some overhead when the caller doesn't need the buffer.
2014-07-12DecoderBuffer: add method _clear()Max Kellermann1-8/+3
2014-07-11decoder/faad: check sample_rate, not frames_per_secondMax Kellermann1-2/+4
Checking the integer is faster, easier and more reliable.
2014-07-11decoder/faad: make variables more localMax Kellermann1-71/+49
2014-07-11decoder/faad: use MAX_CHANNELSMax Kellermann1-4/+2
.. instead of declaring a new constant.
2014-01-24decoder/*: move to decoder/plugins/Max Kellermann1-464/+0
2014-01-13copyright year 2014Max Kellermann1-1/+1
2014-01-08decoder/faad: fix memory leakMax Kellermann1-0/+2
2014-01-06DecoderBuffer: _read() returns ConstBuffer objectMax Kellermann1-46/+37
2014-01-06DecoderBuffer: add method _clear()Max Kellermann1-8/+3
2014-01-06decoder/faad: make variables more localMax Kellermann1-47/+31
2014-01-06decoder/faad: eliminate local variable "ret"Max Kellermann1-5/+2
2013-11-04Log: add level "DEFAULT"Max Kellermann1-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".
2013-10-23input_stream: rename struct to InputStreamMax Kellermann1-9/+9
2013-10-21decoder: rename the struct to "Decoder"Max Kellermann1-2/+2
2013-10-21decoder_plugin: rename struct to DecoderPluginMax Kellermann1-1/+1
2013-10-17InputStream: use int64_t instead of goffsetMax Kellermann1-1/+1
Decouple some more from GLib.
2013-10-02Log: new logging library APIMax Kellermann1-13/+12
Prepare to migrate away from GLib. Currently, we're still using GLib as a backend.
2013-09-27DecoderCommand: convert to strictly-typed enumMax Kellermann1-3/+3
2013-09-05Tag, ...: move to libtag.aMax Kellermann1-1/+1
2013-09-05InputLegacy: move functions to the input_stream classMax Kellermann1-5/+5
2013-09-04util/Error: new error passing libraryMax Kellermann1-20/+13
Replaces GLib's GError.
2013-08-03audio_format: convert to C++Max Kellermann1-7/+7
2013-07-30tag: convert to C++Max Kellermann1-0/+1
2013-07-29audio_check: convert to C++Max Kellermann1-1/+1
2013-07-29tag_handler: convert to C++Max Kellermann1-1/+1
2013-07-28decoder_api: convert to C++Max Kellermann1-1/+1
2013-04-17decoder_buffer: convert to C++Max Kellermann1-10/+8
2013-04-17decoder/faad: convert to C++Max Kellermann1-49/+52
2013-01-29decoder/faad: use the newer NeAAC* APIMax Kellermann1-41/+26
Drop support for the old faacDec* API.
2013-01-26input_stream: forward-declare the structMax Kellermann1-2/+3
Hide the definition from C code, to prepare the transition to C++.
2012-02-11decoder_plugin: scan tags with callback tableMax Kellermann1-8/+8
Pass a callback table to scan_file() and scan_stream(), instead of returning a tag object.
2011-09-16input_stream: non-blocking I/OMax Kellermann1-2/+2
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins.
2011-01-29copyright year 2011Max Kellermann1-1/+1
2010-01-04renamed decoder plugin sourcesMax Kellermann1-0/+0
Make it X_decoder_plugin.c.
2010-01-04decoder_api: added function decoder_replay_gain()Max Kellermann1-1/+1
This function replaces the replay_gain_info parameter for decoder_data(). This allows the decoder to announce replay gain changes, instead of having to pass the same object over and over.
2009-12-31Update copyright notices.Avuton Olrich1-1/+1
2009-12-31decoder: switch a bunch of plugins to stream_tag()Max Kellermann1-16/+9
This patch changes the following decoder plugins to implement stream_tag() instead of tag_dup(): faad, ffmpeg, mad, modplug, mp4ff, mpcdec, oggflac This simplifies their code, because they do not need to take care of opening/closing the stream.
2009-12-26decoder_api: added function decoder_timestamp()Max Kellermann1-7/+1
Remove the data_time parameter from decoder_data(). This patch eliminates the timestamp counting in most decoder plugins, because the MPD core will do it automatically by default.
2009-12-15input_stream: return errors with GErrorMax Kellermann1-2/+2
2009-12-02audio_format: changed "bits" to "enum sample_format"Max Kellermann1-1/+1
This patch prepares support for floating point samples (and probably other formats). It changes the meaning of the "bits" attribute from a bit count to a symbolic value.
2009-11-14decoder: use audio_format_init_checked()Max Kellermann1-19/+30
Let the audio_check library verify the audio format in all (relevant, i.e. non-hardcoded) plugins.
2009-11-12include config.h in all sourcesMax Kellermann1-2/+2
After we've been hit by Large File Support problems several times in the past week (which only occur on 32 bit platforms, which I don't have), this is yet another attempt to fix the issue.
2009-09-30decoder/faad: skip assertion failure on large ID3 tagsMax Kellermann1-2/+6
When the ID3 tag in an AAC file is larger than the current buffer, the function decoder_buffer_consume() aborts. By using the new function decoder_buffer_skip() instead, we can safely skip the ID3 tag.