aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/oggvorbis_plugin.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* oggvorbis: disable seeking on remote songsMax Kellermann2009-01-171-5/+27
| | | | | | | | | | | | When libvorbis knows that a song is seekable, it seeks around like crazy in the file before starting to decode it. This is very expensive on remote HTTP resources, and delays MPD for 10 or 20 seconds. This patch disables seeking on remote songs, because the advantages of quickly playing a song seem to weigh more than the theoretical ability of seeking for most MPD users. If users feel this feature is needed, we will make a configuration option for that.
* oggvorbis: map "Album Artist" to "AlbumArtist"Rasmus Steinke2009-01-151-1/+3
| | | | | This patch allows mpd to recognise the albumartist tag in the way foobar2000 and others write it to files.
* oggvorbis: use g_ascii_strncasecmp() instead of strncasecmp()Max Kellermann2009-01-141-3/+3
| | | | | Don't depend on the daemon's locale settings. Comment names are ASCII.
* oggvorbis: moved tag look into vorbis_parse_comment()Max Kellermann2009-01-141-23/+13
| | | | | | vorbis_parse_comment() should be a function which converts one comment to a tag item. It should do everything required to do the conversion, including looping over all possible tag types.
* oggvorbis: moved code to vorbis_copy_comment()Max Kellermann2009-01-141-9/+21
|
* oggvorbis: use vorbis_comment_value() in vorbis_parse_comment()Max Kellermann2009-01-141-5/+4
| | | | Eliminate some duplicate code.
* oggvorbis: always allocate a tag objectMax Kellermann2009-01-141-8/+14
| | | | | | Always allocate a new tag object before parsing the vorbis comments; free it when it turns out to be empty. This simplifies the code a bit.
* oggvorbis: no CamelCaseMax Kellermann2009-01-141-59/+63
| | | | Renamed functions and variables.
* oggvorbis: use boolMax Kellermann2009-01-141-5/+5
| | | | Make ogg_parseCommentAddToTag() return bool instead of unsigned int.
* added missing explicit config.h includesMax Kellermann2009-01-081-0/+1
|
* fix G_BYTE_ORDER checkMax Kellermann2009-01-051-1/+1
| | | | "#ifdef G_BYTE_ORDER == G_BIG_ENDIAN" cannot work, of course.
* use GLib byte order macrosMax Kellermann2009-01-051-1/+1
|
* decoder plugins: don't include gcc.hMax Kellermann2009-01-011-1/+1
| | | | 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/+9
| | | | Refuse to play audio formats which are not supported by MPD.
* ogg: moved the "errorStr" variable into the error handlerMax Kellermann2008-11-201-1/+2
|
* ogg: check the ov_read() return value before the vorbis_info evaluationMax Kellermann2008-11-201-7/+6
| | | | | | The ov_info() return value may be corrupt when ov_read() did not return a positive value. First check for success, then check ov_info().
* ogg: revert "use ogg_fopen() instead of ogg_open()"Max Kellermann2008-11-121-6/+9
| | | | | Unfortunately, ov_fopen() is not supported by libvorbis versions older than 1.2.
* ogg: removed stray "}"Max Kellermann2008-11-111-1/+0
| | | | | Due to an unnoticed merge error, there was a superfluous "}". Remove it.
* ogg: use ogg_fopen() instead of ogg_open()Max Kellermann2008-11-111-8/+6
| | | | Move the reponsibility for freeing the file handle to libvorbis.
* ogg: use GLib instead of utils.h/log.hMax Kellermann2008-11-111-6/+8
|
* ogg: get decoder command from decoder_data()Max Kellermann2008-11-111-9/+8
| | | | Eliminate two decoder_get_command() invocations from the main loop.
* ogg: flush buffer after every ov_read() callMax Kellermann2008-11-111-25/+10
| | | | | Don't let the buffer grow until it is full, flush it whenever there is data available.
* decoder: return void from decode() methodsMax Kellermann2008-11-111-5/+4
| | | | | | | | 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: converted struct replay_gain_info elements to an arrayMax Kellermann2008-11-111-4/+4
| | | | | Having an array instead of individual variables allows the use of the replay_gain_mode enum as an array index.
* ogg: ogg_getReplayGainInfo() returns replay_gain_info pointerMax Kellermann2008-11-111-13/+20
| | | | Some code simplification. Avoid pointers to pointers.
* replay_gain: no CamelCaseMax Kellermann2008-11-111-10/+12
| | | | 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.
* decoder: removed stream_typesMax Kellermann2008-11-041-1/+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: automatically send stream tagMax Kellermann2008-11-031-10/+0
| | | | | | | | | | If an input stream provides tags (e.g. from an icecast server), send them in the decoder_data() and decoder_tag() methods. Removed the according code from the mp3 and oggvorbis plugins - decoders shouldn't have to care about stream tags. This patch also adds the missing decoder_tag() invocation to the mp3 plugin.
* ogg, ffmpeg: try to decode, even when the stream is not seekableMax Kellermann2008-11-021-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.
* decoder_api: added decoder_tag()Max Kellermann2008-11-021-2/+6
| | | | Provide an API for submitting additional tags from the stream.
* decoder_api: pass "seekable" flag to decoder_initialized()Max Kellermann2008-11-021-2/+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-5/+7
| | | | | The strings were constant, but the pointers weren't. C syntax is somewhat tricky..
* decoder: make all decoder_plugin structs constMax Kellermann2008-11-011-1/+1
| | | | | All decoder_plugin structs are initialized at compile time, and must never change.
* decoder_api: pass constant path pointersMax Kellermann2008-10-311-1/+1
|
* decoder: use bool for return values and flagsMax Kellermann2008-10-301-12/+12
| | | | | Don't return 0/-1 on success/error, but true/false. Instead of int, use bool for storing flags.
* decoder: automatically flush the output buffer after decoder exitsMax Kellermann2008-10-291-3/+0
| | | | | | | A decoder_flush() invocation was missing in the FLAC plugin, resulting in casual assertion failures due to a wrong assumption about the last chunk's audio format. It's much easier to remove that decoder_flush() function and make the decoder thread call ob_flush().
* 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-1/+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-2/+2
| | | | Renamed all functions and variables.
* input_stream: removed the InputStream typedefMax Kellermann2008-10-261-4/+6
| | | | Everybody should use struct input_stream.
* renamed src/inputPlugins/ to src/decoder/Max Kellermann2008-10-261-0/+387
These plugins are not input plugins, they are decoder plugins. No CamelCase in the directory name.