| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Remove the audio_format attribute, add "frame_size" instead. The
audio_format initialization and check is moved both to
flac_data_get_audio_format().
|
|
|
|
|
| |
Use the sample rate stored in the stream_info struct instead of the
audio_format struct.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Wrapper for FLAC__stream_decoder_process_until_end_of_metadata(),
decoder_initialized().
|
|
|
|
|
| |
Convenience wrapper for FLAC__stream_decoder_new() and
FLAC__stream_decoder_set_metadata_respond().
|
|
|
|
|
| |
Free the pointer right after its last use, i.e. after the
FLAC__stream_decoder_init_file() call.
|
|
|
|
| |
Remove the wrapper flac_init().
|
|
|
|
|
| |
Use the type and function names of the libFLAC 1.1.3 API. Map the new
API to the old one with macros.
|
|
|
|
| |
Don't even try to call it with an old libFLAC API.
|
| |
|
|
|
|
| |
Allow those plugins to open large files on 32 bit platforms.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
We need this for more exact end-of-subsong detection for CUE files.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| | |
After the decoder loop, "flac_dec" is always set.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Simple (up-rounding) integer division is good enough. We're casting
the result back to an integer anyway.
|
| | |
|
| |
| |
| |
| | |
Clean up tag and replay_gain_info there.
|
|\|
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
src/decoder/flac_plugin.c
src/update.c
|
| |
| |
| |
| |
| |
| | |
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().
|
| | |
|
|\| |
|
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
| |
External cue sheet file for "file.flac" should be named as "file.flac.cue".
|
|
|
|
| |
Move the declaration of "i" into the "for" loop.
|
|
|
|
|
|
|
| |
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).
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Parse the vorbis comments in libflac's metadata_callback and pass them
as tag struct to the decoder API.
|
|
|
|
| |
Preparing for per-plugin configuration sections in mpd.conf.
|
|
|
|
|
|
| |
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().
|
|
|
|
|
| |
Free the tag object when it turns out to be empty. This simplifies
several functions and APIs.
|
| |
|
|
|
|
| |
Use tag_is_empty() instead.
|
|
|
|
| |
Renamed types, functions, variables.
|
|
|
|
| |
Use GLib's G_GNUC_UNUSED instead of gcc.h's mpd_unused.
|
|
|
|
| |
SEEK_SET is defined by unistd.h. Explicitly include it.
|
|
|
|
| |
Refuse to play audio formats which are not supported by MPD.
|