aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/mp4ff_decoder_plugin.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2011-09-16input_stream: non-blocking I/OMax Kellermann1-1/+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-09-23decoder/mp4ff: support more variations of "album artist"Max Kellermann1-0/+4
According to the mantis bug report 2847, there are several possible variations of the "album artist" tag: - "album artist" - "album_artist" - "albumartist" This patch adds support for the latter two.
2010-06-25decoder/mp4ff: support tag "album artist"Max Kellermann1-0/+1
We already supported "albumartist", but it seems some folks also use "album artist" (with a space).
2010-05-31decoder/mp4ff: rename and move local variableMax Kellermann1-6/+5
Allocate the "tag" object after the file has been checked. That removes one tag_free() call in an error handler.
2010-05-31decoder/mp4ff: merge code into mp4ff_input_stream_open()Max Kellermann1-17/+17
2010-05-31decoder/mp4ff: move mp4ff_callback_t into mp4ff_input_streamMax Kellermann1-12/+15
Allocate only one item on the stack.
2010-05-31decoder/mp4ff: rename mp4_context to mp4ff_input_streamMax Kellermann1-9/+9
2010-05-31decoder/mp4ff: remove duplicate entries in the tag name tableMax Kellermann1-9/+5
Reuse the function tag_name_parse_i().
2010-05-31decoder/mp4ff: moved code to mp4ff_tag_name_parse()Max Kellermann1-1/+7
2010-05-30decoder/mp4ff: support tags "albumartist", "band"Max Kellermann1-0/+2
I'm not sure if mapping "band" to TAG_PERFORMER is correct, but it might be better than nothing.
2010-05-30decoder/mp4ff: use tag_table.h to parse tag namesMax Kellermann1-18/+15
Convert if/else/else/... to a loop.
2010-05-30decoder/mp4ff: rename plugin "mp4" to "mp4ff"Max Kellermann1-1/+1
The underlying library is named "libmp4ff". To reduce confusion, rename the plugin to a more specific name.
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-15/+4
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-2/+2
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-16updated mp4ff decoder about input_stream_seekAlam Arias1-2/+2
2009-12-02audio_format: changed "bits" to "enum sample_format"Max Kellermann1-1/+2
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-8/+8
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-1/+1
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-10-13tag: removed the "_ITEM_" suffix from the enum namesMax Kellermann1-8/+8
2009-07-19Add audio_format_init() functionDavid Woodhouse1-5/+1
It makes no difference right now, but we're about to add an endianness flag and will want to make sure it's correctly initialised every time.
2009-04-28mp4ff_decoder: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann1-8/+9
strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
2009-03-13all: Update copyright header.Avuton Olrich1-6/+7
This updates the copyright header to all be the same, which is pretty much an update of where to mail request for a copy of the GPL and the years of the MPD project. This also puts all committers under 'The Music Player Project' umbrella. These entries should go individually in the AUTHORS file, for consistancy.
2009-02-18mp4ff: always free the mp4ff_read_sample() bufferMax Kellermann1-2/+2
When mp4ff_read_sample() returns a value bigger than zero, it guarantees that the buffer is set. Remove the check.
2009-02-18mp4ff: don't allocate seek_table when input is not seekableMax Kellermann1-2/+10
Don't waste any precious memory when the seek_table cannot be used.
2009-02-18mp4ff: include cleanupMax Kellermann1-4/+4
Don't include limits.h, use GLib constants instead.
2009-02-18mp4ff: use faacDecInit2() to find the AAC trackMax Kellermann1-49/+36
Use faacDecInit2() instead of AudioSpecificConfig() to detect the AAC track in the MP4 file. This has a great advantage: it initializes the libfaad decoder, which the caller would normally do anyway - but now we can go without the AudioSpecificConfig() call. When decoder==NULL (called from mp4_tag_dup()), fall back to a mp4ff_get_track_type()==1 check, like other audio players do.
2009-02-18mp4ff: moved code to mp4_faad_new()Max Kellermann1-53/+65
Moved the libfaad decoder initialization to mp4_faad_new(), and also fill the audio_format struct there. This eliminates a little bit of complexity in mp4_decode().
2009-02-18mp4ff: call decoder_initialized() after libfaad initializationMax Kellermann1-23/+32
Don't wait for the first frame to be decoded. We already have the sample rate and the channel count from faacDecInit2().
2009-02-18mp4ff: merged mp4_load_tag() into mp4_tag_dup()Max Kellermann1-7/+1
The function mp4_load_tag() is used only once, and mp4_tag_dup() is a one-liner. Merge them.
2009-02-17decoders: added and fixed GLib log domainsMax Kellermann1-1/+4
Fixed the log domains of the renamed decoders. Added G_LOG_DOMAIN macros in decoders which don't have one already.
2009-02-17renamed decoder plugin "mp4" to "mp4ff"Max Kellermann1-1/+1
This plugin is based on "libmp4ff".
2009-01-25use g_free() instead of free()Max Kellermann1-2/+2
On some platforms, g_free() must be used for memory allocated by GLib. This patch intends to correct a lot of occurrences, but is probably not complete.
2009-01-17moved fallback APE/ID3 tag loader to song.cMax Kellermann1-15/+1
Some plugins used the APE or ID3 tag loader as a fallback when their own methods of loading tags did not work. Move this code out of all decoder plugins, into song_file_update().
2009-01-08added missing explicit config.h includesMax Kellermann1-1/+2
2008-12-29mp4: support the writer/composer tagFrank Mulder1-0/+2
I tried to search for a certain composer in my collection, but only non-mp4 files showed up. The source code reveals that this tag is not read. This can be fixed by reading the 'Writer' tag field, in mp4_plugin.c, in function mp4_load_tag. I actually tried this, and after compiling with those lines added, also mp4 (.m4a) files showed up when searching for a composer.
2008-11-21decoder: check audio_format_valid() in all decodersMax Kellermann1-0/+9
Refuse to play audio formats which are not supported by MPD.
2008-11-16aac: detect whether to pass "uint32_t*" to NeAACDecInit2()Max Kellermann1-1/+9
neaacdec.h declares all arguments as "unsigned long", but internally expects uint32_t pointers. This triggers gcc warnings on 64 bit architectures. To avoid that, make configure.ac detect whether we're using Debian's corrected headers or the original libfaad headers. In any case, pass a pointer to an uint32_t, conditionally casted to "unsigned long*".
2008-11-11decoder: return void from decode() methodsMax Kellermann1-14/+6
The stream_decode() and file_decode() methods returned a boolean, indicating whether they were able to decode the song. This is redundant, since we already know that: if decoder_initialized() has been called (and dc.state==DECODE), the plugin succeeded. Change both methods to return void.
2008-11-04decoder: removed stream_typesMax Kellermann1-1/+0
Instead of checking the stream_types bit set, we can simply check whether the methods stream_decode() and file_decode() are implemented.
2008-11-04mp4: get decoder command from decoder_data()Max Kellermann1-7/+8
Eliminate a superfluous decoder_get_command() call. decoder_data() already returns the command.
2008-11-04mp4: initialize audio_format before decoder_initialized()Max Kellermann1-6/+5
Removed the duplicate audio_format initialization.
2008-11-04mp4: use decoder_read() instead of input_stream_read()Max Kellermann1-1/+4
decoder_read() handles decoder commands, and should be used in decoder plugins.
2008-11-04mp4: pass struct mp4_context to the mp4ff_callback_t methodsMax Kellermann1-10/+18
We need the decoder object, so we have to begin passing a new struct to these callbacks, instead of only the pointer to the input_stream object.
2008-11-04mp4: use GLib instead of utils.h / log.hMax Kellermann1-13/+14
Replace deprecated code with GLib.
2008-11-04mp4: use tag_is_empty() instead of passing the tag_is_found flagMax Kellermann1-13/+3
The API of mp4_load_tag() was strange: it always returned a tag object, no matter if a tag was found in the file; the existence of a tag was indicated with the tag_found integer reference. This flag is superfluous, since we can simply check whether the tag is empty or not.
2008-11-04mp4: static mp4ff_callback_t variablesMax Kellermann1-22/+15
Allocate the mp4ff_callback_t object on the stack. This is easier to handle, since we don't have to free it. Incidentally, this fixes a memory leak in mp4_load_tag().