aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/flac_plugin.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-11-11decoder/flac: check "seekable" in libFLAC callbacksMax Kellermann1-0/+6
Return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED if this input stream does not support seeking.
2009-11-11decoder/flac: moved code to flac_data_get_audio_format()Max Kellermann1-12/+4
Remove the audio_format attribute, add "frame_size" instead. The audio_format initialization and check is moved both to flac_data_get_audio_format().
2009-11-11decoder/flac: use stream_info instead of audio_formatMax Kellermann1-2/+2
Use the sample rate stored in the stream_info struct instead of the audio_format struct.
2009-11-11decoder/flac: calculate time stamp from current frameMax Kellermann1-7/+2
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 Kellermann1-11/+12
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 Kellermann1-4/+10
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 Kellermann1-30/+12
Remove the wrapper flac_init().
2009-11-11decoder/flac: use the new API functionsMax Kellermann1-45/+52
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 Kellermann1-0/+4
Don't even try to call it with an old libFLAC API.
2009-11-11decoder/flac: moved code to flac_compat.hMax Kellermann1-0/+5
2009-11-11decoder/{flac,vorbis}: include config.h for LFSMax Kellermann1-0/+1
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 Kellermann1-0/+3
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-11decoder/flac: moved code to flac_metadata.cMax Kellermann1-0/+1
2009-11-11decoder/flac: merged some code into flac_tag_apply_metadata()Max Kellermann1-12/+4
2009-11-10decoder/flac: don't use float to calculate song durationMax Kellermann1-5/+2
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 Kellermann1-2/+4
2009-11-10decoder/flac: added function flac_data_deinit()Max Kellermann1-8/+3
Clean up tag and replay_gain_info there.
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 Kellermann1-5/+2
2009-07-09flac: load external cue sheet when no internal oneSerge Ziryukin1-0/+14
External cue sheet file for "file.flac" should be named as "file.flac.cue".
2009-07-06decoder/flac: fix assertion failure in tag_free() callMax Kellermann1-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.
2009-04-01flac: fixed "unused variable" warning without libcueMax Kellermann1-2/+2
Move the declaration of "i" into the "for" loop.
2009-03-31Tag subtracks according to "cuesheet" vorbis comment valueJochen Keil1-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).
2009-03-31track length is computed correctly nowJochen Keil1-2/+1
2009-03-31free previously allocated flac metadata objectJochen Keil1-0/+1
2009-03-31remove old commented codeJochen Keil1-8/+0
2009-03-28Bugfix for time/offset in flac pluginJochen Keil1-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.
2009-03-16flac: get CUE track titles from additional FLAC commentsMario Lenz1-6/+6
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.
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-09Initial support for embedded cue sheets found in flac filesJochen Keil1-3/+401
So far only seekpoints are supported, so no proper tagging yet except for track number and track length. Tagging should be done by parsing the cue sheet which is often embedded as vorbis comment in flac files. Furthermore the pathname should be configurable like "%A - %t - %T", where %A means Artist, %t track number and %T Title or so.
2009-03-05flac: explicitly check for STOP commandMax Kellermann1-1/+2
After the decoder command was obtained, don't wait until libflac detects EOF (as a side effect), quit the decoder immediately. This check was missing completely.
2009-03-05flac: check command after flac_process_single() failureMax Kellermann1-3/+6
When the MPD core sends the decoder a command while flac_process_single() is executed, this function fails. Abort the decoder only if not seeking. This fixes a seeking bug.
2009-03-01flac: parse stream tagsMax Kellermann1-2/+15
Parse the vorbis comments in libflac's metadata_callback and pass them as tag struct to the decoder API.
2009-02-15decoder_plugin: pass struct config_param to init() methodMax Kellermann1-1/+1
Preparing for per-plugin configuration sections in mpd.conf.
2009-01-17moved fallback APE/ID3 tag loader to song.cMax Kellermann1-17/+1
Some plugins used the APE or ID3 tag loader as a fallback when their own methods of loading tags did not work. Move this code out of all decoder plugins, into song_file_update().
2009-01-15flac: always allocate tag objectMax Kellermann1-11/+21
Free the tag object when it turns out to be empty. This simplifies several functions and APIs.
2009-01-15flac: use bool instead of intMax Kellermann1-27/+22
2009-01-15flac: removed "vorbis_comment_found" flagMax Kellermann1-10/+4
Use tag_is_empty() instead.
2009-01-15flac: no CamelCaseMax Kellermann1-82/+91
Renamed types, functions, variables.
2009-01-01decoder plugins: don't include gcc.hMax Kellermann1-7/+9
Use GLib's G_GNUC_UNUSED instead of gcc.h's mpd_unused.
2008-11-24flac, mpc, ogg, wavpack: include unistd.h for SEEK_SETMax Kellermann1-0/+1
SEEK_SET is defined by unistd.h. Explicitly include it.
2008-11-21decoder: check audio_format_valid() in all decodersMax Kellermann1-0/+8
Refuse to play audio formats which are not supported by MPD.
2008-11-21flac, oggflac: use GLib instead of utils.h/log.hMax Kellermann1-15/+10
2008-11-16input_stream: size==-1 means unknown sizeMax Kellermann1-0/+3
Define the special value "-1" as "unknown size". Previously, there was no indicator for streams with unknown size, which might confuse some decoders.