aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder (follow)
Commit message (Collapse)AuthorAgeFilesLines
* decoder/wavpack: allow more than 2 channelsMax Kellermann2009-11-111-3/+3
| | | | | Remove the OPEN_2CH_MAX option. MPD's support for surround sound is still clunky, but we're working on it.
* decoder/wavpack: activate 32 bit supportMax Kellermann2009-11-111-13/+7
| | | | | | | | | | MPD has been supporting 32 bit samples since version 0.15. This patch changes one check, and removes the 32->24 conversion code. Note that WavPack floating point samples have 32 bits, and MPD doesn't have a special check for floating point - therefore, this WavPack plugin still returns 24 bit integer samples as before (until we have float support in the MPD core).
* decoder/vorbis: initialize before entering the loopMax Kellermann2009-11-111-21/+37
| | | | | | | Call decoder_initialize() before entering the loop. We don't need to call ov_read() before ov_info(). When the stream number changes, check if the audio format is still the same.
* decoder/vorbis: moved error strings to vorbis_strerror()Max Kellermann2009-11-111-24/+26
|
* decoder/vorbis: removed the OggCallbackData typedefMax Kellermann2009-11-111-6/+7
| | | | Use the struct name instead.
* decoder/vorbis: fix typo in commentMax Kellermann2009-11-111-1/+1
|
* decoder/vorbis: removed redundant "bits" initializationMax Kellermann2009-11-111-1/+0
| | | | This is done by audio_format_init().
* decoder/flac: check "seekable" in libFLAC callbacksMax Kellermann2009-11-111-0/+6
| | | | | Return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED if this input stream does not support seeking.
* decoder/flac: moved code to flac_data_get_audio_format()Max Kellermann2009-11-114-32/+51
| | | | | | Remove the audio_format attribute, add "frame_size" instead. The audio_format initialization and check is moved both to flac_data_get_audio_format().
* decoder/flac: use stream_info instead of audio_formatMax Kellermann2009-11-112-4/+4
| | | | | Use the sample rate stored in the stream_info struct instead of the audio_format struct.
* decoder/flac: use frame header instead of audio_formatMax Kellermann2009-11-111-3/+3
| | | | | | When calculating the properties of the frame, use sample_rate and other information from the frame header instead of the stored audio_format object.
* decoder/oggflac: moved stream_info check to oggflac_decode()Max Kellermann2009-11-111-6/+5
|
* decoder/flac: calculate time stamp from current frameMax Kellermann2009-11-114-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.
* decoder/flac: calculate bit rate in flac_common_write()Max Kellermann2009-11-114-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.
* decoder/flac: store the whole stream info object, not durationMax Kellermann2009-11-114-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.
* decoder/flac: merge code into flac_decoder_initialize()Max Kellermann2009-11-111-50/+39
| | | | | Wrapper for FLAC__stream_decoder_process_until_end_of_metadata(), decoder_initialized().
* decoder/flac: merged code into flac_decoder_new()Max Kellermann2009-11-111-28/+27
| | | | | Convenience wrapper for FLAC__stream_decoder_new() and FLAC__stream_decoder_set_metadata_respond().
* decoder/flac: free the "pathname" variable earlierMax Kellermann2009-11-111-31/+15
| | | | | Free the pointer right after its last use, i.e. after the FLAC__stream_decoder_init_file() call.
* decoder/flac: emulate FLAC__stream_decoder_init_stream()Max Kellermann2009-11-112-30/+44
| | | | Remove the wrapper flac_init().
* decoder/flac: use the new API functionsMax Kellermann2009-11-112-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.
* decoder/flac: removed the fake flac_ogg_init() fallbackMax Kellermann2009-11-112-2/+4
| | | | Don't even try to call it with an old libFLAC API.
* decoder/flac: moved code to flac_compat.hMax Kellermann2009-11-113-113/+134
|
* decoder/{flac,vorbis}: include config.h for LFSMax Kellermann2009-11-113-0/+3
| | | | Allow those plugins to open large files on 32 bit platforms.
* decoder/flac: merged code into flac_decoder_loop()Max Kellermann2009-11-111-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.
* decoder/flac: keep track of current frame numberMax Kellermann2009-11-114-0/+12
| | | | We need this for more exact end-of-subsong detection for CUE files.
* Merge remote branch 'origin/v0.15.x'Max Kellermann2009-11-112-14/+16
|\
| * 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: removed redundant NULL checksMax Kellermann2009-11-111-9/+3
| | | | | | | | After the decoder loop, "flac_dec" is always set.
* | decoder/flac: moved code to flac_pcm.cMax Kellermann2009-11-113-81/+133
| |
* | decoder/flac: moved code to flac_metadata.cMax Kellermann2009-11-116-175/+240
| |
* | decoder/flac: return replay_gain_info object from helper functionMax Kellermann2009-11-111-28/+24
| | | | | | | | | | Make the function more generic by not passing "struct flac_data" to it.
* | decoder/flac: merged some code into flac_tag_apply_metadata()Max Kellermann2009-11-114-25/+27
| |
* | decoder/oggflac: initialize the "tag" variableMax Kellermann2009-11-101-1/+2
| |
* | decoder/flac: don't use float to calculate song durationMax Kellermann2009-11-103-8/+10
| | | | | | | | | | Simple (up-rounding) integer division is good enough. We're casting the result back to an integer anyway.
* | decoder/flac: pass VorbisComment to comments_to_tag()Max Kellermann2009-11-104-11/+12
| |
* | decoder/flac: use pcm_buffer instead of fixed bufferMax Kellermann2009-11-102-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.
* | decoder/flac: added function flac_data_deinit()Max Kellermann2009-11-104-17/+26
| | | | | | | | Clean up tag and replay_gain_info there.
* | decoder/flac: pass void pointer to flac_convert()Max Kellermann2009-11-101-5/+5
| | | | | | | | | | That function diverts into various bit formats; it doesn't need a typed pointer.
* | decoder/flac: pass audio_format.bits to flac_convert()Max Kellermann2009-11-101-11/+8
| | | | | | | | | | Don't use audio_format_sample_size() for identifying the sample format.
* | decoder/ffmpeg: removed the "author" vs "artist" workaroundMax Kellermann2009-10-281-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".
* | Merged release 0.15.5 from branch 'v0.15.x'Max Kellermann2009-10-181-2/+3
|\| | | | | | | | | | | | | | | Conflicts: NEWS configure.ac src/decoder/flac_plugin.c src/update.c
| * 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/vorbis: avoid unused symbol warnings from vorbisfile.hSerge Ziryukin2009-10-181-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.
* | tag: removed the "_ITEM_" suffix from the enum namesMax Kellermann2009-10-1310-55/+51
| |
* | input_stream: use "goffset" instead of "off_t"Max Kellermann2009-10-112-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.
* | Merged release 0.15.4 from branch 'v0.15.x'Max Kellermann2009-10-032-4/+11
|\| | | | | | | | | | | Conflicts: NEWS configure.ac
| * 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.