750 Commits

Author SHA1 Message Date
Max Kellermann
d5ed23438a decoder/flac: removed the fake flac_ogg_init() fallback
Don't even try to call it with an old libFLAC API.
2009-11-11 17:01:14 +01:00
Max Kellermann
5bbaf0c9f1 decoder/flac: moved code to flac_compat.h 2009-11-11 16:43:34 +01:00
Max Kellermann
f2f8290242 decoder/{flac,vorbis}: include config.h for LFS
Allow those plugins to open large files on 32 bit platforms.
2009-11-11 16:37:42 +01:00
Max Kellermann
c1186693b5 decoder/flac: merged code into flac_decoder_loop()
The decoder loop of flac_decode_internal(), flac_container_decode()
and flac_filedecode_internal() is merged into this one function.  This
unifies the code, and uses the frame number to identify the end of a
CUE sub song.
2009-11-11 16:28:44 +01:00
Max Kellermann
80b220a3a6 decoder/flac: keep track of current frame number
We need this for more exact end-of-subsong detection for CUE files.
2009-11-11 15:31:17 +01:00
Max Kellermann
5cc3c4f503 Merge remote branch 'origin/v0.15.x' 2009-11-11 15:14:20 +01:00
Max Kellermann
dca4d9cf83 decoder/flac: fixed CUE seeking range check
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.
2009-11-11 08:55:55 +01:00
Max Kellermann
707b9fea17 decoder/flac: removed redundant NULL checks
After the decoder loop, "flac_dec" is always set.
2009-11-11 08:37:21 +01:00
Max Kellermann
68f77e4163 oggflac: rewind stream after FLAC detection
The oggflac plugin has been completely broken for quite a while and
nobody has noticed - maybe we should remove it?
2009-11-11 08:14:37 +01:00
Max Kellermann
d605329f83 decoder/flac: moved code to flac_pcm.c 2009-11-11 07:59:22 +01:00
Max Kellermann
f6e7dffada decoder/flac: moved code to flac_metadata.c 2009-11-11 07:50:40 +01:00
Max Kellermann
43549db718 decoder/flac: return replay_gain_info object from helper function
Make the function more generic by not passing "struct flac_data" to
it.
2009-11-11 07:35:16 +01:00
Max Kellermann
884be8e2b3 decoder/flac: merged some code into flac_tag_apply_metadata() 2009-11-11 00:05:14 +01:00
Max Kellermann
305de100a7 decoder/oggflac: initialize the "tag" variable 2009-11-10 23:56:59 +01:00
Max Kellermann
c1a999c492 decoder/flac: don't use float to calculate song duration
Simple (up-rounding) integer division is good enough.  We're casting
the result back to an integer anyway.
2009-11-10 22:03:58 +01:00
Max Kellermann
e51d9fc6a9 decoder/flac: pass VorbisComment to comments_to_tag() 2009-11-10 21:58:19 +01:00
Max Kellermann
2f69831fb8 decoder/flac: use pcm_buffer instead of fixed buffer
This is a great simplification for flac_common_write(), because we can
convert and submit all of the buffer in one turn.  No more partial
buffers with complicated formulas.
2009-11-10 21:46:10 +01:00
Max Kellermann
b6a2ffd3d7 decoder/flac: added function flac_data_deinit()
Clean up tag and replay_gain_info there.
2009-11-10 21:42:15 +01:00
Max Kellermann
118495d372 decoder/flac: pass void pointer to flac_convert()
That function diverts into various bit formats; it doesn't need a
typed pointer.
2009-11-10 19:57:58 +01:00
Max Kellermann
a6bee71f1a decoder/flac: pass audio_format.bits to flac_convert()
Don't use audio_format_sample_size() for identifying the sample
format.
2009-11-10 19:57:28 +01:00
Max Kellermann
9fed97b1f1 decoder/ffmpeg: removed the "author" vs "artist" workaround
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-28 22:17:10 +01:00
Max Kellermann
04816a6369 decoder/ffmpeg: convert metadata
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-28 22:12:22 +01:00
Max Kellermann
447e4d3583 Merged release 0.15.5 from branch 'v0.15.x'
Conflicts:
	NEWS
	configure.ac
	src/decoder/flac_plugin.c
	src/update.c
2009-10-18 19:02:43 +02:00
Serge Ziryukin
33bf6c0978 decoder/vorbis: avoid unused symbol warnings from vorbisfile.h
svn r13289 of libvorbis introduced static callbacks (like OV_CALLBACKS_DEFAULT)
defined in "vorbisfile.h" header. First released version with this change is libvorbis-1.2.2.
In libversion-1.2.3 OV_EXCLUDE_STATIC_CALLBACKS define was added to avoid
warnings about unused static callbacks. Information on the OV_EXCLUDE_STATIC_CALLBACKS
can be found in http://svn.xiph.org/trunk/vorbis/CHANGES.
2009-10-18 18:35:02 +02:00
Max Kellermann
d09e19c3dc decoder/flac: fixed two memory leaks in the CUE tag loader
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().
2009-10-16 17:39:17 +02:00
Max Kellermann
ea616b3ed4 tag: removed the "_ITEM_" suffix from the enum names 2009-10-13 16:12:45 +02:00
Max Kellermann
727c301fbc input_stream: use "goffset" instead of "off_t"
The "off_t" type may change when you enable or disable large file
support on 32 bit platforms.  This caused severe ABI problems within
MPD when we enabled LFS for the first time: two sources included
config.h and sys/types.h in different order, and had different off_t
sizes - leading to memory corruption because of ABI incompatibility.
This patch attempts to get rid of all public "off_t" uses: it removes
"off_t" from the input_stream ABI/API, and switches to GLib's 64 bit
"goffset" type.  This may hurt 32 bit embedded platforms a tiny bit,
but that's not even measurable.
2009-10-11 23:32:22 +02:00
Max Kellermann
7013f9fc31 Merged release 0.15.4 from branch 'v0.15.x'
Conflicts:
	NEWS
	configure.ac
2009-10-03 16:17:02 +02:00
Max Kellermann
65693d057b decoder/ffmpeg: use the "artist" tag if "author" is not present
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-09-30 15:41:43 +02:00
Max Kellermann
b0f9a1454a decoder/faad: skip assertion failure on large ID3 tags
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.
2009-09-30 15:22:47 +02:00
Tony
934a38f976 Make the sidplay decoder filter configurable. 2009-09-28 11:59:55 +02:00
Max Kellermann
aec18c74ec decoder/sidplay: free songlength data blob in error handler
When parsing the songlength database fails, the code forgot to free
the memory allocated by the raw file data.
2009-09-24 10:17:58 +02:00
Max Kellermann
4729d10bb2 decoder/sidplay: moved code to sidplay_load_songlength_db() 2009-09-24 10:14:05 +02:00
Max Kellermann
a8af3ce0dd decoder/sidplay: free GError objects
The caller is responsible fro freeing GError objects.  That
g_error_free() call was missing in two places.
2009-09-24 10:05:21 +02:00
Max Kellermann
d657be33ba decoder/sidplay: pass GError** to g_file_get_contents()
The error handler dereferences GError*, but did not retrieve that
object from g_file_get_contents().
2009-09-24 10:04:24 +02:00
Max Kellermann
fdc479676f Merge branch 'v0.15.x'
Conflicts:
	NEWS
	configure.ac
	doc/mpdconf.example
2009-09-10 23:18:43 +02:00
Max Kellermann
a99202a8a4 decoder/vorbis: revert "faster tag scanning with ov_test_callback()"
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
2009-09-10 23:04:01 +02:00
Mike Dawson
430b5b0490 decoder/sidplay: support seeking 2009-08-30 19:49:16 +02:00
Mike Dawson
cde9408bd8 decoder/sidplay: implemented songlength database
[mk: added autoconf test; fixed songlen_data_size type]
2009-08-30 19:49:04 +02:00
Mike Dawson
85ce9aa7de decoder/sidplay: subtunes 2009-08-30 19:48:56 +02:00
Max Kellermann
f2ff2409ad Merged release 0.15.3 from branch 'v0.15.x'
Conflicts:

	NEWS
	configure.ac
2009-08-30 09:42:12 +02:00
Max Kellermann
bff4c54ece decoder/mpg123: new decoder plugin based on libmpg123
Still missing:
- seeking
- tags
- streaming
- encodings other than MPG123_ENC_SIGNED_16
2009-08-26 20:08:13 +02:00
Gunnar Roth
1e56c7b862 decoder/vorbis: open file in "binary" mode
fopen change for win32 in tag dup of vorbis
win32 adaption for head changes
2009-08-25 00:49:48 +02:00
Rasmus Steinke
408f723701 decoder/vorbis: faster tag scanning with ov_test_callback()
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.
2009-08-24 22:14:22 +02:00
Max Kellermann
f401c1059c Merged release 0.15.2 from branch 'v0.15.x'
Conflicts:

	NEWS
	configure.ac
2009-08-15 21:18:38 +02:00
Max Kellermann
1c4f407a6d decoder/flac: don't allocate cuesheet twice (memleak)
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.
2009-08-14 11:51:42 +02:00
Anton Khirnov
bff72634ca ffmpeg_plugin: convert metadata to generic format 2009-08-03 17:40:22 +02:00
Max Kellermann
f4b39bc263 decoder/flac: fixed indentation of flac_comment_value() 2009-07-22 13:34:33 +02:00
Max Kellermann
47ed89bd4c decoder/flac: parse all replaygain tags
The FLAC replaygain parser used the "||" operator.  This made the code
stop after the first value which was found.
2009-07-22 13:31:48 +02:00
Max Kellermann
cf1fd2b0da decoder/flac: return early from flac_find_float_comment()
When one metadata check fails, return quickly.  This removes 2 levels
of indent.
2009-07-22 13:31:46 +02:00