aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/oggflac_plugin.c (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 Kellermann1-7/+0
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-1/+1
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-1/+9
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,vorbis}: include config.h for LFSMax Kellermann1-0/+1
Allow those plugins to open large files on 32 bit platforms.
2009-11-11decoder/flac: keep track of current frame numberMax Kellermann1-0/+1
We need this for more exact end-of-subsong detection for CUE files.
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_metadata.cMax Kellermann1-0/+1
2009-11-11decoder/flac: merged some code into flac_tag_apply_metadata()Max Kellermann1-10/+1
2009-11-10decoder/oggflac: initialize the "tag" variableMax Kellermann1-1/+2
2009-11-10decoder/flac: don't use float to calculate song durationMax Kellermann1-3/+1
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-1/+2
2009-11-10decoder/flac: added function flac_data_deinit()Max Kellermann1-9/+10
Clean up tag and replay_gain_info there.
2009-03-16flac: get CUE track titles from additional FLAC commentsMario Lenz1-1/+1
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-9/+11
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-01-15flac: always allocate tag objectMax Kellermann1-3/+11
Free the tag object when it turns out to be empty. This simplifies several functions and APIs.
2009-01-15flac: no CamelCaseMax Kellermann1-53/+53
Renamed types, functions, variables.
2009-01-02oggflac: don't use gcc.hMax Kellermann1-9/+10
Use G_GNUC_UNUSED instead of mpd_unused (which has already been removed).
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-13/+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.
2008-11-11oggflac: removed the obsolete try_decode() methodMax Kellermann1-6/+3
2008-11-11decoder: return void from decode() methodsMax Kellermann1-5/+1
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.
2008-11-11replay_gain: no CamelCaseMax Kellermann1-1/+1
Renamed functions and variables.
2008-11-04decoder: removed stream_typesMax Kellermann1-1/+0
Instead of checking the stream_types bit set, we can simply check whether the methods stream_decode() and file_decode() are implemented.
2008-11-02ogg, ffmpeg: try to decode, even when the stream is not seekableMax Kellermann1-5/+0
Ogg and ffmpeg detection was disabled when the stream was not seekable, because the detection was too expensive. Since the curl input stream can now rewind the stream cheaply, we can re-enable detection on streams.
2008-11-02decoder_api: pass "seekable" flag to decoder_initialized()Max Kellermann1-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.
2008-11-01decoder: make the suffixes and mime_types arrays really constMax Kellermann1-5/+7
The strings were constant, but the pointers weren't. C syntax is somewhat tricky..
2008-11-01decoder: make all decoder_plugin structs constMax Kellermann1-1/+1
All decoder_plugin structs are initialized at compile time, and must never change.
2008-10-31decoder_api: pass constant path pointersMax Kellermann1-1/+1
2008-10-31oggflac: adapt to new APIMax Kellermann1-6/+6
Again, I forgot to adapt oggflac to the new API (struct input_stream, bool return values).
2008-10-30decoder: use bool for return values and flagsMax Kellermann1-1/+1
Don't return 0/-1 on success/error, but true/false. Instead of int, use bool for storing flags.
2008-10-26input_stream: use "bool" instead of "int"Max Kellermann1-3/+2
For boolean values and success flags, use bool instead of integer (1/0 for true/false, 0/-1 for success/failure).
2008-10-26input_stream: no CamelCaseMax Kellermann1-6/+6
Renamed all functions and variables.
2008-10-26renamed src/inputPlugins/ to src/decoder/Max Kellermann1-0/+0
These plugins are not input plugins, they are decoder plugins. No CamelCase in the directory name.
2008-10-17Makefile.am: don't compile disabled decoder pluginsMax Kellermann1-9/+0
Don't compile the sources of disabled decoder plugins at all, and don't attempt to register these.
2008-10-10audio_format: renamed sampleRate to sample_rateMax Kellermann1-2/+2
The last bit of CamelCase in audio_format.h. Additionally, rename a bunch of local variables.
2008-10-08use the "bool" data type instead of "int"Max Kellermann1-3/+3
"bool" should be used in C99 programs for boolean values.
2008-09-29use C99 struct initializersMax Kellermann1-10/+7
The old struct initializers are error prone and don't allow moving elements around. Since we are going to overhaul some of the APIs soon, it's easier to have all implementations use C99 initializers.
2008-09-23flac: moved code from flacWrite() to _flac_common.cMax Kellermann1-45/+1
There is still a lot of duplicated code in flac_plugin.c and oggflac_plugin.c. Move code from flac_plugin.c to _flac_common.c, and use the new function flac_common_write() also in oggflac_plugin.c, porting lots of optimizations over to it.
2008-09-23audio_format: added audio_format_sample_size()Max Kellermann1-2/+2
The inline function audio_format_sample_size() calculates how many bytes each sample consumes. This function already takes into account that 24 bit samples are 4 bytes long, not 3.
2008-08-29oggflac: fix GCC warningsMax Kellermann1-9/+9
Fix lots of "unused parameter" warnings in the OggFLAC decoder plugin. Not sure if anybody uses it anymore, since newer libflac obsoletes it.
2008-08-29tag: fix the shout and oggflac pluginsMax Kellermann1-2/+4
During the tag library refactoring, the shout plugin was disabled, and I forgot about adapting it to the new API. Apply the same fixes to the oggflac decoder plugin.
2008-08-26flac: decoder command means EOFMax Kellermann1-3/+3
It was possible for the decoder thread to go into an endless loop (flac and oggflac decoders): when a "STOP" command arrived, the Read() callback would return 0, but the EOF() callback returned false. Fix: when decoder_get_command()!=NONE, return EOF==true.
2008-08-26check decoder_command!=NONE instead of decoder_command==STOPMax Kellermann1-3/+3
The code said "decoder_command==STOP" because that was a conversion from the old "dc->stop" test. As we can now check for all commands in one test, we can simply rewrite that to decoder_command!=NONE.
2008-08-26added decoder_read()Max Kellermann1-8/+1
On our way to stabilize the decoder API, we will one day remove the input stream functions. The most basic function, read() will be provided by decoder_api.h with this patch. It already contains a loop (still with manual polling), error/eof handling and decoder command checks. This kind of code used to be duplicated in all decoder plugins.
2008-08-26oggvorbis: don't detect OGG header if stream is not seekableMax Kellermann1-0/+5
If the input stream is not seekable, the try_decode() function consumes valuable data, which is not available to the decode() function anymore. This means that the decode() function does not parse the header correctly. Better skip the detection if we cannot seek. Or implement better buffering, something like unread() or buffered rewind().
2008-08-26renamed InputPlugin to struct decoder_pluginMax Kellermann1-2/+2
"decoder plugin" is a better name than "input plugin", since the plugin does not actually do the input - InputStream does. Also don't use typedef, so we can forward-declare it if required.
2008-08-26added decoder_seek_where() and decoder_seek_error()Max Kellermann1-4/+3
Provide access to seeking for the decoder plugins; they have to know where to seek, and they need a way to tell us that seeking has failed.