aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/plugins/FaadDecoderPlugin.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2014-10-25decoder/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-09-22DecoderBuffer: convert functions to methodsMax Kellermann1-19/+19
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 Kellermann1-6/+6
Eliminates the functions _new() and _free().
2014-08-29TagHandler: pass SongTime to duration()Max Kellermann1-5/+3
2014-08-29DecoderAPI: pass SignedSongTime to decoder_initialized()Max Kellermann1-47/+36
2014-08-29decoder/faad: bit_rate==0 is an errorMax Kellermann1-4/+4
2014-08-19decoder/faad: remove unnecessary cast to size_tMax Kellermann1-3/+2
2014-08-19decoder/faad: remove size!=0 checkMax Kellermann1-1/+1
Since we already checked InputStream::KnownSize(), we can assume that GetSize() returns a valid value, and this check is obsolete.
2014-08-19decoder/faad: check InputStream::KnownSize()Max Kellermann1-2/+6
Replace the bogus GetSize() check and call GetSize() only when necessary.
2014-08-19decoder/faad: call GetSize() only when neededMax Kellermann1-3/+2
2014-07-12DecoderBuffer: add method _need()Max Kellermann1-28/+13
Move code from the FAAD decoder plugin.
2014-07-12decoder/faad: eliminate the adts_find_frame() loopMax Kellermann1-5/+2
This loop is completely unnecessary. We just need to find the first ADTS frame and feed it into NeAACDecInit().
2014-07-12decoder/faad: split faad_stream_decode()Max Kellermann1-10/+16
Eliminate duplicate cleanup code.
2014-05-22InputStream: make Seek() always absoluteMax Kellermann1-1/+1
Remove the "whence" parameter that is not actually necessary, and only complicates the InputStream implementations.
2014-01-24Input*: move to input/Max Kellermann1-1/+1
2014-01-24decoder/*: move to decoder/plugins/Max Kellermann1-2/+2
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.