aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-11-11decoder/oggflac: moved stream_info check to oggflac_decode()Max Kellermann1-6/+5
2009-11-11decoder/flac: calculate time stamp from current frameMax Kellermann4-17/+17
Don't update a float timestamp, this will make imprecisions add up after a while. We already have the number of the current frame, let's just calculate the float timestamp from that for every decoder_data() command. For this, we need to add the attribute "first_frame", for CUE sheet songs.
2009-11-11decoder/flac: calculate bit rate in flac_common_write()Max Kellermann4-17/+25
Removed the "bit_rate" attribute from the flac_data struct. Pass the number of bytes since the last call to flac_common_write(), and let it calculate the bit rate.
2009-11-11decoder/flac: store the whole stream info object, not durationMax Kellermann4-7/+36
We don't want to work with floating point values if possible. Get the integer number of frames from the FLAC__StreamMetadata_StreamInfo object, and convert it into a float duration on demand. This patch adds a check if the STREAMINFO packet has been received yet.
2009-11-11decoder/flac: merge code into flac_decoder_initialize()Max Kellermann1-50/+39
Wrapper for FLAC__stream_decoder_process_until_end_of_metadata(), decoder_initialized().
2009-11-11decoder/flac: merged code into flac_decoder_new()Max Kellermann1-28/+27
Convenience wrapper for FLAC__stream_decoder_new() and FLAC__stream_decoder_set_metadata_respond().
2009-11-11decoder/flac: free the "pathname" variable earlierMax Kellermann1-31/+15
Free the pointer right after its last use, i.e. after the FLAC__stream_decoder_init_file() call.
2009-11-11decoder/flac: emulate FLAC__stream_decoder_init_stream()Max Kellermann2-30/+44
Remove the wrapper flac_init().
2009-11-11decoder/flac: use the new API functionsMax Kellermann2-124/+89
Use the type and function names of the libFLAC 1.1.3 API. Map the new API to the old one with macros.
2009-11-11decoder/flac: removed the fake flac_ogg_init() fallbackMax Kellermann2-2/+4
Don't even try to call it with an old libFLAC API.
2009-11-11decoder/flac: moved code to flac_compat.hMax Kellermann3-113/+134
2009-11-11decoder/{flac,vorbis}: include config.h for LFSMax Kellermann3-0/+3
Allow those plugins to open large files on 32 bit platforms.
2009-11-11decoder/flac: merged code into flac_decoder_loop()Max Kellermann1-101/+55
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-11decoder/flac: keep track of current frame numberMax Kellermann4-0/+12
We need this for more exact end-of-subsong detection for CUE files.
2009-11-11decoder/flac: fixed CUE seeking range checkMax Kellermann1-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.
2009-11-11decoder/flac: removed redundant NULL checksMax Kellermann1-9/+3
After the decoder loop, "flac_dec" is always set.
2009-11-11oggflac: rewind stream after FLAC detectionMax Kellermann1-0/+8
The oggflac plugin has been completely broken for quite a while and nobody has noticed - maybe we should remove it?
2009-11-11decoder/flac: moved code to flac_pcm.cMax Kellermann3-81/+133
2009-11-11decoder/flac: moved code to flac_metadata.cMax Kellermann6-175/+240
2009-11-11decoder/flac: return replay_gain_info object from helper functionMax Kellermann1-28/+24
Make the function more generic by not passing "struct flac_data" to it.
2009-11-11decoder/flac: merged some code into flac_tag_apply_metadata()Max Kellermann4-25/+27
2009-11-10decoder/oggflac: initialize the "tag" variableMax Kellermann1-1/+2
2009-11-10decoder/flac: don't use float to calculate song durationMax Kellermann3-8/+10
Simple (up-rounding) integer division is good enough. We're casting the result back to an integer anyway.
2009-11-10decoder/flac: pass VorbisComment to comments_to_tag()Max Kellermann4-11/+12
2009-11-10decoder/flac: use pcm_buffer instead of fixed bufferMax Kellermann2-39/+31
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-10decoder/flac: added function flac_data_deinit()Max Kellermann4-17/+26
Clean up tag and replay_gain_info there.
2009-11-10decoder/flac: pass void pointer to flac_convert()Max Kellermann1-5/+5
That function diverts into various bit formats; it doesn't need a typed pointer.
2009-11-10decoder/flac: pass audio_format.bits to flac_convert()Max Kellermann1-11/+8
Don't use audio_format_sample_size() for identifying the sample format.
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-18decoder/vorbis: avoid unused symbol warnings from vorbisfile.hSerge Ziryukin1-0/+1
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-16decoder/flac: fixed two memory leaks in the CUE tag loaderMax Kellermann1-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().
2009-10-13tag: removed the "_ITEM_" suffix from the enum namesMax Kellermann10-55/+51
2009-10-11input_stream: use "goffset" instead of "off_t"Max Kellermann2-4/+5
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-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-09-30decoder/faad: skip assertion failure on large ID3 tagsMax Kellermann1-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.
2009-09-28Make the sidplay decoder filter configurable.Tony1-1/+5
2009-09-24decoder/sidplay: free songlength data blob in error handlerMax Kellermann1-3/+4
When parsing the songlength database fails, the code forgot to free the memory allocated by the raw file data.
2009-09-24decoder/sidplay: moved code to sidplay_load_songlength_db()Max Kellermann1-29/+36
2009-09-24decoder/sidplay: free GError objectsMax Kellermann1-0/+2
The caller is responsible fro freeing GError objects. That g_error_free() call was missing in two places.
2009-09-24decoder/sidplay: pass GError** to g_file_get_contents()Max Kellermann1-1/+2
The error handler dereferences GError*, but did not retrieve that object from g_file_get_contents().
2009-09-10decoder/vorbis: revert "faster tag scanning with ov_test_callback()"Max Kellermann1-1/+1
This patch made ov_time_total() unusable, and MPD did not know the duration of songs.
2009-08-30decoder/sidplay: support seekingMike Dawson1-3/+34
2009-08-30decoder/sidplay: implemented songlength databaseMike Dawson1-0/+87
[mk: added autoconf test; fixed songlen_data_size type]
2009-08-30decoder/sidplay: subtunesMike Dawson1-8/+125
2009-08-26decoder/mpg123: new decoder plugin based on libmpg123Max Kellermann1-0/+210
Still missing: - seeking - tags - streaming - encodings other than MPG123_ENC_SIGNED_16
2009-08-25decoder/vorbis: open file in "binary" modeGunnar Roth1-1/+1
fopen change for win32 in tag dup of vorbis win32 adaption for head changes
2009-08-24decoder/vorbis: faster tag scanning with ov_test_callback()Rasmus Steinke1-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.
2009-08-14decoder/flac: don't allocate cuesheet twice (memleak)Max Kellermann1-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.
2009-08-03ffmpeg_plugin: convert metadata to generic formatAnton Khirnov1-1/+3