aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder (follow)
Commit message (Collapse)AuthorAgeFilesLines
* decoder/mp4ff: support tags "albumartist", "band"Max Kellermann2010-06-301-0/+2
| | | | | I'm not sure if mapping "band" to TAG_PERFORMER is correct, but it might be better than nothing.
* decoder/mp4ff: use tag_table.h to parse tag namesMax Kellermann2010-06-301-18/+15
| | | | Convert if/else/else/... to a loop.
* decoder/mad: fix buffer variable name on !HAVE_ID3TAGMax Kellermann2010-05-301-3/+3
|
* decoder/mad: properly calculate ID3 size without libid3tagMax Kellermann2010-04-131-5/+25
| | | | | | | | | | Without libid3tag, we were trying to skip the ID3 frame (since 0.15.2). Its length however was not calculated at all, we were just dropping everything from the current input buffer. This lead to the first few seconds of the file being skipped. This patch attempts to calculate the ID3v2 frame size with the formula from: http://www.id3.org/id3v2.4.0-structure 3.1 and 6.2
* decoder/mpcdec: fix replay gain formula with v8Aleksei Kaveshnikov2010-03-191-0/+8
| | | | | | | | | | "When playing musepack files with mpd v0.15.8, rg seems to have no effect. Using sample file below, mpd says 'computing ReplayGain album scale with gain 122.879997, peak 0.549150'. One thing though, if I build mpd against old libmpcdec-1.2.6, rg works as expected: 'computing ReplayGain album scale with gain 16.820000, peak 0.099765'"
* decoder/mpcdec: fix negative shift on fixed-point samplesPiotr Gozdur2010-03-171-1/+1
| | | | | | "There is a bug in fixed-point musepack (musepack_src_r435) playback. In floating-point audio is OK but in fixed audio is distorted. I have made a patch for this"
* decoder/mad: fix crash when seeking at end of songMax Kellermann2010-02-271-4/+0
| | | | | | Removed the decoder_command_finished() call at the end of mp3_decode(). This is invalid, because decoder_command_finished() has already been called in mp3_read().
* decoder/ffmpeg: added more MIME typesMax Kellermann2010-01-171-0/+6
| | | | Taken from the ffmpeg sources.
* decoder/ffmpeg: append file name suffix to virtual stream URLMax Kellermann2010-01-171-4/+28
| | | | | | | To allow libavformat to detect the format of the input file, append the suffix of the input file to the URL of the virtual stream. This specifically enables the "shorten" codec, which is supported by libavformat/raw.c, detected only by the suffix.
* decoder/{ffmpeg,flac,vorbis}: added more flac/vorbis MIME typesMax Kellermann2009-12-294-4/+22
| | | | | Support deprecated MIME types such as "audio/x-ogg". Support new types such as "audio/flac".
* decoder/wavpack: allow fine-grained seekingMax Kellermann2009-12-261-3/+2
| | | | | First multiply the floating point return value of decoder_seek_where(), then cast to integer.
* decoder/wavpack: don't use the nonstandard "uchar" typeMax Kellermann2009-12-111-1/+1
| | | | Use the signed C99 type int8_t instead.
* ffmpeg: don't try to force stereoMax Kellermann2009-11-301-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.
* decoder/flac: fixed compiler warningMax Kellermann2009-11-191-3/+1
| | | | | | Removed the "vtrack" local variable (which triggered a gcc warning because it was after the newly introduced NULL check), and run strtol() on the original parameter.
* decoder/flac: fixed NULL pointer dereference in CUE codeMax Kellermann2009-11-181-0/+2
| | | | The function flac_vtrack_tnum() was missing a strrchr()==NULL check.
* decoder/ffmpeg: align the output bufferMax Kellermann2009-11-151-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.
* decoder/flac: fixed CUE seeking range checkMax Kellermann2009-11-111-14/+8
| | | | | | If flac_container_decode() gets a seek destination which is out of range, it ignores the SEEK command (never finishes it). This leads to MPD lockup, because the player thread waits for completion.
* oggflac: rewind stream after FLAC detectionMax Kellermann2009-11-111-0/+8
| | | | | The oggflac plugin has been completely broken for quite a while and nobody has noticed - maybe we should remove it?
* decoder/ffmpeg: convert metadataMax Kellermann2009-10-281-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.
* decoder/flac: fixed two memory leaks in the CUE tag loaderMax Kellermann2009-10-161-2/+3
| | | | | | Don't initialize "vc" and "cs" with FLAC__metadata_object_new(); that value is overwritten by FLAC__metadata_get_tags() and FLAC__metadata_get_cuesheet().
* decoder/ffmpeg: use the "artist" tag if "author" is not presentMax Kellermann2009-09-301-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".
* decoder/faad: skip assertion failure on large ID3 tagsMax Kellermann2009-09-301-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.
* decoder/vorbis: revert "faster tag scanning with ov_test_callback()"Max Kellermann2009-09-101-1/+1
| | | | | This patch made ov_time_total() unusable, and MPD did not know the duration of songs.
* decoder/vorbis: faster tag scanning with ov_test_callback()Rasmus Steinke2009-08-241-1/+1
| | | | | | | | | using ov_test_callback with function CALLBACKS_STREAMONLY will cause scanning to stop after the comment field. ov_open (and ov_test) default to CALLBACKS_DEFAULT which scans the file structure causing a huge slowdown. The speed improvement is huge: It scanned my files around 10x faster This procedure has been recommended by monthy (main vorbis developer) and was said to be safe for scanning files.
* decoder/flac: don't allocate cuesheet twice (memleak)Max Kellermann2009-08-141-4/+6
| | | | | | | The function flac_cue_track() first calls FLAC__metadata_object_new(), then overwrites this pointer with FLAC__metadata_get_cuesheet(). This allocate two FLAC__StreamMetadata objects, but the first pointer is lost, and never freed.
* decoder/flac: fixed indentation of flac_comment_value()Max Kellermann2009-07-221-19/+21
|
* decoder/flac: parse all replaygain tagsMax Kellermann2009-07-221-14/+18
| | | | | The FLAC replaygain parser used the "||" operator. This made the code stop after the first value which was found.
* decoder/flac: return early from flac_find_float_comment()Max Kellermann2009-07-221-21/+22
| | | | | When one metadata check fails, return quickly. This removes 2 levels of indent.
* decoder/flac: removed misplaced authorship commentMax Kellermann2009-07-221-1/+0
| | | | This belongs into "git annotate" or AUTHORS.
* mad: skip ID3 frames when libid3tag is disabledMax Kellermann2009-07-221-6/+28
| | | | | | | When libid3tag is disabled, the libmad decoder plugin is unable to identify ID3 frames. If the file starts with an (unidentified) ID3 frame, it assumes that the file is not a valid MP3 song. This patch solves this by adding minimal stubs for the ID3 functions.
* decoder/flac: fix assertion failure in tag_free() callMax Kellermann2009-07-061-2/+1
| | | | | | Initialize flac_data.tag right after flac_data_init(). This way, the "goto fail" won't jump to the point where tag_free(NULL) can be called.
* ffmpeg: moved code to ffmpeg_copy_metadata()Max Kellermann2009-06-081-33/+18
|
* ffmpeg: removed "new metadata api" warningMax Kellermann2009-06-081-2/+0
| | | | | This warning is useless. I assume the author added it for debugging purposes.
* mad_decoder: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann2009-04-281-4/+4
| | | | | strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
* mp4ff_decoder: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann2009-04-281-8/+9
| | | | | strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
* fluidsynth: added "experimental" comments in the source fileMax Kellermann2009-04-251-0/+9
|
* vorbis: move #define out of function to top of sourcesAvuton Olrich2009-04-021-1/+1
|
* decoder: Rename all main decoder plugins functions to *decoder_plugin.Avuton Olrich2009-04-024-4/+4
|
* flac: fixed "unused variable" warning without libcueMax Kellermann2009-04-011-2/+2
| | | | Move the declaration of "i" into the "for" loop.
* Tag subtracks according to "cuesheet" vorbis comment valueJochen Keil2009-03-311-4/+32
| | | | | | | Cuesheets are often saved as vorbis comment flac files (CUESHEET=.. case doesn't matter). We can parse this now and use the information to tag the subtracks (from the embedded cuesheets).
* track length is computed correctly nowJochen Keil2009-03-311-2/+1
|
* free previously allocated flac metadata objectJochen Keil2009-03-311-0/+1
|
* remove old commented codeJochen Keil2009-03-311-8/+0
|
* Bugfix for time/offset in flac pluginJochen Keil2009-03-281-3/+3
| | | | | | Previous cast to float didn't have any effect because one value is uint and the other is a floating type but the number itself is even.. This caused some tracks to end before they were really at an end.
* mpcdec: changed plugin name to "mpcdec"Max Kellermann2009-03-271-3/+3
| | | | The "mpcdec" plugin is based on the libmpcdec library.
* mpcdec: support the new libmpcdec SV8 APIMax Kellermann2009-03-271-14/+90
|
* mpcdec: no CamelCaseMax Kellermann2009-03-271-57/+65
| | | | Renamed variables and functions.
* flac/cue: added support for TITLE[n] commentsMario Lenz2009-03-171-2/+9
| | | | | | | | | | | | On 2009/03/17 Max Kellermann<max@duempel.org> wrote: > There doesn't seem to be an "official" standard. I'd say: search for > TITLE[1] first (the most explicit form), then TITLE1, and finally fall > back to TITLE. This makes sure MPD supports every possible standard, > without breaking. I've also added some additional checks to make sure entry is long enough.
* flac: get CUE track titles from additional FLAC commentsMario Lenz2009-03-164-23/+32
| | | | | | | | The cue sheet embedded in a flac file doen't contain any information about track titles and similar. There are three possibilities: Use an external cue sheet that includes these information, use a tag CUESHEET with a cue sheet including these information or use tags. I think the latter is the best option and is already used by other projects.
* faad: faad_decoder_decode() returns NULL, not falseMax Kellermann2009-03-141-1/+1
| | | | On failure, the function should return NULL, not a boolean.