aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/flac_plugin.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* 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/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.
* 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.
* flac: get CUE track titles from additional FLAC commentsMario Lenz2009-03-161-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.
* all: Update copyright header.Avuton Olrich2009-03-131-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.
* Initial support for embedded cue sheets found in flac filesJochen Keil2009-03-091-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.
* flac: explicitly check for STOP commandMax Kellermann2009-03-051-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.
* flac: check command after flac_process_single() failureMax Kellermann2009-03-051-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.
* flac: parse stream tagsMax Kellermann2009-03-011-2/+15
| | | | | Parse the vorbis comments in libflac's metadata_callback and pass them as tag struct to the decoder API.
* decoder_plugin: pass struct config_param to init() methodMax Kellermann2009-02-151-1/+1
| | | | Preparing for per-plugin configuration sections in mpd.conf.
* moved fallback APE/ID3 tag loader to song.cMax Kellermann2009-01-171-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().
* flac: always allocate tag objectMax Kellermann2009-01-151-11/+21
| | | | | Free the tag object when it turns out to be empty. This simplifies several functions and APIs.
* flac: use bool instead of intMax Kellermann2009-01-151-27/+22
|
* flac: removed "vorbis_comment_found" flagMax Kellermann2009-01-151-10/+4
| | | | Use tag_is_empty() instead.
* flac: no CamelCaseMax Kellermann2009-01-151-82/+91
| | | | Renamed types, functions, variables.
* decoder plugins: don't include gcc.hMax Kellermann2009-01-011-7/+9
| | | | Use GLib's G_GNUC_UNUSED instead of gcc.h's mpd_unused.
* flac, mpc, ogg, wavpack: include unistd.h for SEEK_SETMax Kellermann2008-11-241-0/+1
| | | | SEEK_SET is defined by unistd.h. Explicitly include it.
* decoder: check audio_format_valid() in all decodersMax Kellermann2008-11-211-0/+8
| | | | Refuse to play audio formats which are not supported by MPD.
* flac, oggflac: use GLib instead of utils.h/log.hMax Kellermann2008-11-211-15/+10
|
* input_stream: size==-1 means unknown sizeMax Kellermann2008-11-161-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.
* decoder: return void from decode() methodsMax Kellermann2008-11-111-9/+9
| | | | | | | | The stream_decode() and file_decode() methods returned a boolean, indicating whether they were able to decode the song. This is redundant, since we already know that: if decoder_initialized() has been called (and dc.state==DECODE), the plugin succeeded. Change both methods to return void.
* replay_gain: no CamelCaseMax Kellermann2008-11-111-1/+1
| | | | Renamed functions and variables.
* decoder: removed plugin method try_decode()Max Kellermann2008-11-101-7/+7
| | | | | | Instead of having a seprate try_decode() method, let the stream_decode() and file_decode() methods decide whether they are able to decode the song.
* flac: call flac_process_metadata() for ogg filesMax Kellermann2008-11-101-4/+5
| | | | | | | The flac plugin wasn't initialized properly when an OGG file was being decoded. For some reason, flac_process_metadata() was explicitly not called for OGG files. Since that seems to fix the issue, make it always call flac_process_metadata().
* flac: enable the oggflac plugin with older libflac versionsMax Kellermann2008-11-101-3/+14
| | | | | | | | | Since decoder_list.c does not include the libflac headers, it cannot know whether to add the oggflac plugin to the decoder list. Solve this by always enabling the oggflac sub-plugin, even with older libflac versions. When the libflac API cannot support oggflac, disable the plugin at runtime by returning "false" from its init() method.
* flac: make the init() method check for oggflac supportMax Kellermann2008-11-091-2/+8
| | | | | Disable flac's "oggflac" sub-plugin when libflac does not support ogg-flac files.
* decoder: removed stream_typesMax Kellermann2008-11-041-2/+0
| | | | | Instead of checking the stream_types bit set, we can simply check whether the methods stream_decode() and file_decode() are implemented.
* decoder_api: pass "seekable" flag to decoder_initialized()Max Kellermann2008-11-021-1/+2
| | | | | | Don't pass the "seekable" flag with every decoder_data() invocation. Since that flag won't change within the file, it is enough to pass it to decoder_initialized() once per file.
* decoder: make the suffixes and mime_types arrays really constMax Kellermann2008-11-011-9/+11
| | | | | The strings were constant, but the pointers weren't. C syntax is somewhat tricky..
* decoder: make all decoder_plugin structs constMax Kellermann2008-11-011-2/+2
| | | | | All decoder_plugin structs are initialized at compile time, and must never change.
* decoder_api: pass constant path pointersMax Kellermann2008-10-311-3/+3
|
* decoder: use bool for return values and flagsMax Kellermann2008-10-301-14/+15
| | | | | Don't return 0/-1 on success/error, but true/false. Instead of int, use bool for storing flags.
* decoder_api: removed decoder_clear()Max Kellermann2008-10-291-1/+0
| | | | | Call ob_clear() in decoder_command_finished() instead of implementing that call in every decoder plugin.
* input_stream: use "bool" instead of "int"Max Kellermann2008-10-261-2/+1
| | | | | For boolean values and success flags, use bool instead of integer (1/0 for true/false, 0/-1 for success/failure).
* input_stream: no CamelCaseMax Kellermann2008-10-261-3/+3
| | | | Renamed all functions and variables.
* input_stream: removed the InputStream typedefMax Kellermann2008-10-261-5/+9
| | | | Everybody should use struct input_stream.
* renamed src/inputPlugins/ to src/decoder/Max Kellermann2008-10-261-0/+459
These plugins are not input plugins, they are decoder plugins. No CamelCase in the directory name.