aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/ffmpeg_decoder_plugin.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2010-07-19decoder/ffmpeg: fix libavformat 0.6 by using av_open_input_stream()Max Kellermann1-89/+65
libavformat 0.6 does not pass the original URI pointer to the "open" method, which leads to a crash because MPD was using a dirty hack to pass a pointer to that method. This patch switches to av_open_input_stream() with a custom ByteIOContext class, instead of doing the URI string hack with av_open_input_file(). Loosely based on a patch from Jasper St. Pierre.
2010-07-19decoder/ffmpeg: manual format probingMax Kellermann1-2/+47
Use the libavformat function av_probe_input_format() to probe the AVInputFormat, instead of letting av_open_input_file() do it implicitly. We will switch to av_open_input_stream() very soon, which does not have the probing code. Loosely based on a patch from Jasper St. Pierre.
2010-07-12ffmpeg: read the audio stream metadata in addition to globalAnton Khirnov1-1/+5
in some formats, e.g. vorbis, the metadata is stored per-stream.
2010-07-12ffmpeg: factor tag_type <-> ffmpeg tag name maps into a table.Anton Khirnov1-21/+32
2010-05-18input/ffmpeg: new input plugin using libavformat's "avio" libraryMax Kellermann1-0/+6
2010-04-11decoder/ffmpeg: fix crash on startup in mpd_ffmpeg_log_callback()Charles Kerr1-4/+9
What's happening is the `ptr' argument to that function is NULL for me every time. `ptr' is unconditionally dereferenced to generate a log message, and this is where mpd crashes. Attached is a simple patch that tests for NULL and omits the log. With this patch the crash disappeared and mpd went back to working well.
2010-03-28decoder/ffmpeg: print item name in log callbackMax Kellermann1-1/+5
2010-03-07decoder/ffmpeg: fix indentationMax Kellermann1-6/+6
2010-02-27decoder/ffmpeg: implement the libavutil log callbackMax Kellermann1-0/+31
Pass everything to the GLib logging library. No direct stderr access.
2010-02-27decoder/ffmpeg: don't close the AVFormatContext after open failureMax Kellermann1-1/+0
The pointer is invalid if av_open_input_file() fails.
2010-02-02ffmpeg: read more metadata.Anton Khirnov1-1/+12
2010-01-18decoder/ffmpeg: call decoder_timestamp() once per packetMax Kellermann1-5/+5
2010-01-18decoder/ffmpeg: merged ffmpeg_helper() into ffmpeg_decode()Max Kellermann1-116/+67
2010-01-18decoder/ffmpeg: optimized the stream_tag() methodMax Kellermann1-25/+27
Don't use the function ffmpeg_helper(), don't initialize the codec.
2010-01-18decoder/ffmpeg: free AVFormatContext on errorMax Kellermann1-0/+4
Fix a memory leak in some code paths.
2010-01-18decoder_api: removed function decoder_get_uri()Max Kellermann1-6/+5
Use input_stream.uri.
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-11/+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-29decoder/{ffmpeg,flac,vorbis}: added more flac/vorbis MIME typesMax Kellermann1-0/+5
Support deprecated MIME types such as "audio/x-ogg". Support new types such as "audio/flac".
2009-12-26decoder_api: added function decoder_timestamp()Max Kellermann1-6/+4
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-8/+22
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-30ffmpeg: don't try to force stereoMax Kellermann1-4/+0
The plugin code tried to force libavcodec to supply stereo samples. That however has never actually worked. By removing this code, we are able to play surround files for the first time.
2009-11-15decoder/ffmpeg: align the output bufferMax Kellermann1-5/+24
On some platforms, libavcodec wants the output buffer aligned to 16 bytes (because it uses SSE/Altivec internally). It will segfault when you don't obey this rule.
2009-11-14decoder: use audio_format_init_checked()Max Kellermann1-7/+7
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-28decoder/ffmpeg: removed the "author" vs "artist" workaroundMax Kellermann1-2/+1
libavformat gives us the song artist in the "author" field. Since we use av_metadata_conv(), we don't need to check for "artist".
2009-10-28decoder/ffmpeg: convert metadataMax Kellermann1-4/+4
Convert the metadata with the libavformat function av_metadata_conv(). This ensures that canonical tag names are provided by libavformat, and we can remove the "artist" vs "author" workaround.
2009-10-13tag: removed the "_ITEM_" suffix from the enum namesMax Kellermann1-16/+15
2009-09-30decoder/ffmpeg: use the "artist" tag if "author" is not presentMax Kellermann1-2/+5
Usually, we read our "artist" tag from ffmpeg's "author" tag. In some cases however (e.g. APE), this tag is named "artist". This patch implements a fallback: if no "author" is found, MPD tries to use "artist".
2009-08-03ffmpeg_plugin: convert metadata to generic formatAnton Khirnov1-1/+3
2009-07-19Add audio_format_init() functionDavid Woodhouse1-4/+5
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-06-25ffmpeg: support multiple tagsMax Kellermann1-2/+3
Call av_metadata_get() in a loop.
2009-06-08ffmpeg: moved code to ffmpeg_copy_metadata()Max Kellermann1-33/+18
2009-06-08ffmpeg: removed "new metadata api" warningMax Kellermann1-2/+0
This warning is useless. I assume the author added it for debugging purposes.
2009-04-02decoder: Rename all main decoder plugins functions to *decoder_plugin.Avuton Olrich1-1/+1
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-03-03ffmpeg: fix version comparision for av_get_bits_per_sample_format() ↵Viliam Mateicka1-1/+1
implemetation function was implemented in the version we are comparing to so there must be higher or equal
2009-03-03ffmpeg: support for new metadata apiViliam Mateicka1-0/+39
2009-03-02ffmpeg: use ffmpeg's sampleformat for output formatViliam Mateicka1-1/+6
2009-02-23ffmpeg: add all known ffmpeg extensions and mime-types.Avuton Olrich1-18/+77
After much research[1][2][3] this should be the majority of currently supported file extensions and mime-types for the currently supported ffmpeg formats. This list maybe incomplete, but it's more complete than anything else out there that I've been able to find. This list needs to be updated every now and again as the ffmpeg sources support more formats. 1. Sources 2. wiki.multimedia.cx 3. filext.com
2009-02-15decoder_plugin: pass struct config_param to init() methodMax Kellermann1-1/+2
Preparing for per-plugin configuration sections in mpd.conf.
2009-02-11ffmpeg: added TTA supportMax Kellermann1-0/+2
The ffmpeg library supports the "True Audio Codec". The entry in ffmpeg_suffixes was missing.
2009-02-03ffmpeg: fixed seek integer overflowMax Kellermann1-3/+4
The "current" variable is used for calculating the seek destination, and was declared as "int". With very long song files, the 32 bit integer can overflow. ffmpeg expects an int64_t, which is very unlikely to overflow. Switch to int64_t.
2009-02-03ffmpeg: check if the time stamp is validMax Kellermann1-4/+5
When ffmpeg cannot estimate the elapsed time, it sets AVPacket.pts=AV_NOPTS_VALUE. Our ffmpeg decoder plugin did not check for that special value.
2009-02-03ffmpeg: don't warn of empty packet outputMax Kellermann1-3/+2
If avcodec_decode_audio2() returns no output for an AVPacket, libavcodec may buffer some data, and return a larger chunk of output later. This patch disables a lot of bogus warnings.
2009-02-03ffmpeg: print codec nameMax Kellermann1-0/+3
Output the name of the codec as a debug message. During my tests, ffmpeg never filled this struct member, but it may do so in the past, and this debug message might become helpful.
2009-01-30ffmeg: added support for the tags comment, genre, yearDavid Horn1-0/+10
ffmpeg_tag_internal() does not look for a few tags that mpd supports. Most noteably: comment -> TAG_ITEM_COMMENT -> Description genre -> TAG_ITEM_GENRE -> WM/Genre (not WM/GenreID) year -> TAG_ITEM_DATE -> WM/Year I *think* that this is the last of the tags that AVFormatContext() in ffmpeg supports that mpd also uses.