Hi, again, lots of fixes:
- corrected unix socket permissions - pulse segfault fixed - ffmpeg: lots of cleanups and minor bug fixes - some cleanups for valgrind's leak checker (no real memory leaks, though) - better path sanitization for update - like always, some more "const" attributes all over the place - most important patch set: the output buffer was renamed to music_pipe, and can now transport tags. I chose this design in favor of Eric's metadata_pipe solution, because it is much simpler and more straightforward. This patch and a bunch of other patches allow proper tags within stream on both sides of MPD - when playing streams, and when streaming out to icecast/shoutcast. Not 100% complete yet. - stream rewinding heavily optimized by rewinding only the local buffer; ogg stream detection fixed - some minor build fixes - error reporting fixed, but there is still room for further improvements The alpha version of 0.14 will be released this week. Max Alam Arias (3): replace tabs with space in shout audio_output example removed unneed check for protocol in shout plugin, will assume icecast2 protocol if not exist in config update mpdconf.example that shout ouput encoding and protocol settings are optional Avuton Olrich (1): configure.ac: disable libflac's oggflac support with --disable-oggflac Max Kellermann (99): pulse: fix segfault without sink name listen: set file mode 666 on the unix socket ffmpeg: initialize base.decoder ffmpeg: removed debug messages ffmpeg: make ffmpeg_helper() return bool ffmpeg: eliminated local variable "tag" ffmpeg: call tag_free() instead of free() ffmpeg: simplified mpdurl_read() ffmpeg: report seek errors to MPD ffmpeg: moved code to ffmpeg_send_frame() ffmpeg: break immediately after av_read_frame() ffmpeg: output buffer size cannot be negative ffmpeg: use return value of decoder_data() ffmpeg: pass input_stream pointer to decoder_data() oggflac: adapt to new API ogg: don't include _flac_common.h client: removed list_cache client: use GSList instead of struct strnode for command lists client: use GQueue instead of sllist.h for deferred_send removed the sllist library client: don't try again after partial write added prefix to header macros directory: directory_free() frees children path: free GLib error in fs_charset_to_utf8() removed UTF-8 library, use GLib instead client: use bool input_stream: pass const url to input_stream_open() decoder_api: pass constant path pointers decoder: introduce switch statement in decoder_task() decoder: reset state and command in decoder_task() decoder: notify player after stop decoder: don't wake up player when command==NONE decoder: eliminate gotos in decodeStart() mapper: use g_warning() for logging path: moved playlist_dir to mapper.c update: check return values mapper: check for "." and ".." path: removed sanitizePathDup() alsa, jack: no const pointers for allocated strings tag: don't return const string from fix_utf8() utils: use GUINT32_FROM_LE() instead of readLEuint32() tag: use GLib instead of utils.h permission: store passwords in GHashTable decoder: return const decoder_plugin structs decoder: manage decoder list in a static array decoder: make all decoder_plugin structs const decoder: make the suffixes and mime_types arrays really const decoder: enable decoders even if they have no init() method renamed outputBuffer.[ch] to pipe.[ch] music_pipe: renamed struct output_buffer to struct music_pipe music_pipe: renamed ob_* functions to music_pipe_* music_pipe: pass frame size to tail_chunk() decoder: replaced music_pipe.audioFormat with dc.out_audio_format music_pipe: use GLib instead of utils.h music_pipe: more wrapper functions music_pipe: renamed "ob" to "music_pipe" music_pipe: moved code to music_chunk_append() music_pipe: set bit_rate and time in music_pipe_append() music_pipe: no CamelCase music_pipe: renamed "size" to "num_chunks" music_pipe: removed "volatile" music_pipe: document struct music_chunk music_pipe: added functions chunk_init() and chunk_free() music_pipe: add tag pointer to the music_chunk struct decoder_api: pass "seekable" flag to decoder_initialized() aac, mod: don't check for SEEK command aac, mod: moved decoder command check into loop condition decoder_api: added decoder_tag() input_curl: buffered rewinding ogg, ffmpeg: try to decode, even when the stream is not seekable ffmpeg: use decoder_read() wrapper instead of direct input_stream_read() crossfade: copy tag player: send chunk tag to audio device decoder: moved code to decoder_try_decode() decoder: rewind input stream after try_decode() ffmpeg: don't rewind stream in url_close() player: added player.song player: copy stream tag to the song struct removed unused sources ffmpeg: fix boolean inversion in ffmpeg_tag() player: don't play empty chunks output: don't allow length==0 mod: always initialize libmikmod mod: removed boolean globals for lazy init alsa: initialize "device" with NULL configure.ac: separate the "aac" and "mp4" decoder tests configure.ac: AC_SUBST(MP4FF_LIBS) decoder_api: no CamelCase tag: added function tag_has_type() decoder_api: automatically send stream tag decoder_api: send song tag in decoder_data() decoder: no CamelCase decoder: removed "volatile" modifier decoder: converted DECODE_ERROR_* to enum player: no CamelCase player: removed "volatile" attributes player: converted PLAYER_ERROR_* to enum input_curl: use curl_multi_info_read() decoder: update dc.error after input stream failure Richard Brown (1): autogen.sh: don't call aclocal with the $PWD prefix autogen.sh | 2 +- configure.ac | 45 ++++++- doc/mpdconf.example | 4 +- src/Makefile.am | 17 +-- src/ack.h | 4 +- src/audio.c | 1 + src/audio.h | 4 +- src/audioOutput.h | 4 +- src/audio_format.h | 4 +- src/buffer2array.h | 4 +- src/client.c | 162 +++++++-------------- src/client.h | 6 +- src/command.c | 19 +-- src/command.h | 8 +- src/compress.h | 4 +- src/condition.h | 4 +- src/conf.h | 4 +- src/crossfade.c | 25 ++-- src/crossfade.h | 9 +- src/database.h | 4 +- src/dbUtils.h | 4 +- src/decoder/_flac_common.c | 2 +- src/decoder/_flac_common.h | 4 +- src/decoder/_ogg_common.c | 7 - src/decoder/_ogg_common.h | 4 +- src/decoder/aac_plugin.c | 47 ++---- src/decoder/audiofile_plugin.c | 16 ++- src/decoder/ffmpeg_plugin.c | 216 ++++++++++++---------------- src/decoder/flac_plugin.c | 33 +++-- src/decoder/mod_plugin.c | 78 +++++------ src/decoder/mp3_plugin.c | 56 ++------ src/decoder/mp4_plugin.c | 14 +- src/decoder/mpc_plugin.c | 12 +- src/decoder/oggflac_plugin.c | 36 +++--- src/decoder/oggvorbis_plugin.c | 39 ++--- src/decoder/wavpack_plugin.c | 16 +-- src/decoder_api.c | 198 +++++++++++++++++--------- src/decoder_api.h | 27 +++-- src/decoder_control.c | 6 +- src/decoder_control.h | 30 +++-- src/decoder_internal.h | 9 +- src/decoder_list.c | 205 +++++++++++++-------------- src/decoder_list.h | 19 +-- src/decoder_thread.c | 124 ++++++++++------ src/decoder_thread.h | 4 +- src/directory.c | 7 + src/directory.h | 4 +- src/directory_print.h | 4 +- src/directory_save.h | 4 +- src/dirvec.h | 4 +- src/dlist.h | 4 +- src/input_curl.c | 151 +++++++++++++++++++- src/input_file.h | 4 +- src/input_stream.c | 2 +- src/input_stream.h | 6 +- src/ioops.h | 4 +- src/list.h | 4 +- src/listen.c | 4 + src/listen.h | 4 +- src/locate.h | 4 +- src/log.h | 4 +- src/ls.c | 5 +- src/ls.h | 7 +- src/main.c | 6 +- src/main_notify.h | 4 +- src/mapper.c | 53 ++++++- src/mapper.h | 19 +++- src/metadata_pipe.c | 151 ------------------- src/normalize.h | 4 +- src/notify.h | 4 +- src/os_compat.h | 4 +- src/output/alsa_plugin.c | 41 +++--- src/output/jack_plugin.c | 26 +++-- src/output/pulse_plugin.c | 4 +- src/output/shout_plugin.c | 2 - src/output/shout_plugin.h | 4 +- src/outputBuffer.c | 228 ----------------------------- src/output_api.h | 4 +- src/output_control.c | 2 + src/output_control.h | 4 +- src/output_internal.h | 4 +- src/output_list.h | 4 +- src/output_thread.c | 2 + src/output_thread.h | 4 +- src/path.c | 73 +--------- src/path.h | 16 +-- src/pcm_dither.h | 4 +- src/pcm_utils.h | 4 +- src/permission.c | 37 +++--- src/permission.h | 4 +- src/pipe.c | 300 ++++++++++++++++++++++++++++++++++++++ src/{outputBuffer.h => pipe.h} | 116 +++++++++++---- src/playerData.c | 2 +- src/playerData.h | 4 +- src/player_control.c | 25 ++-- src/player_control.h | 36 +++--- src/player_thread.c | 140 +++++++++++------- src/player_thread.h | 4 +- src/playlist.c | 7 +- src/playlist.h | 5 +- src/playlist_save.c | 3 +- src/playlist_save.h | 4 +- src/replayGain.h | 4 +- src/ringbuf.c | 311 ---------------------------------------- src/ringbuf.h | 227 ----------------------------- src/sig_handlers.h | 4 +- src/signal_check.h | 4 +- src/sllist.c | 73 ---------- src/sllist.h | 52 ------- src/song.c | 15 ++- src/song.h | 4 +- src/song_print.h | 4 +- src/song_save.h | 4 +- src/songvec.h | 4 +- src/state_file.h | 4 +- src/stats.h | 4 +- src/stored_playlist.c | 41 +++--- src/strset.h | 4 +- src/tag.c | 86 +++++++---- src/tag.h | 11 ++- src/tag_internal.h | 4 +- src/tag_pool.h | 4 +- src/tag_print.h | 4 +- src/tag_save.h | 4 +- src/update.c | 8 +- src/update.h | 4 +- src/utf8.c | 158 -------------------- src/utf8.h | 34 ----- src/utils.c | 7 - src/utils.h | 6 +- src/volume.h | 4 +- src/zeroconf.h | 4 +- 132 files changed, 1772 insertions(+), 2449 deletions(-) delete mode 100644 src/metadataChunk.c delete mode 100644 src/metadataChunk.h delete mode 100644 src/metadata_pipe.c delete mode 100644 src/outputBuffer.c create mode 100644 src/pipe.c rename src/{outputBuffer.h => pipe.h} (50%) delete mode 100644 src/ringbuf.c delete mode 100644 src/ringbuf.h delete mode 100644 src/sllist.c delete mode 100644 src/sllist.h delete mode 100644 src/utf8.c delete mode 100644 src/utf8.h ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Musicpd-dev-team mailing list Musicpd-dev-team@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team