Hi,

since Eric has handed over MPD development to me 2 weeks ago, there
have been no less than 200 patches for all subsystems, here is a very
brief summary:

- MPD now depends on GLib.  The decision to do this wasn't quite easy,
  but MPD was duplicating a lot of GLib features where GLib's versions
  were much more robust (e.g. character set conversion).  Some day, I
  will also use the GLib main loop for asynchronous I/O, but not
  before 0.14.

- we now have authentication over unix sockets.  Authenticated clients
  may add local files to the playlist, with the prefix "file:///"
  according to RFC 1738 3.10.

- the "idle" command has been overhauled, there is now "noidle" to
  abort idle.  This solves some race conditions of the previous
  specification.

- all plugin APIs have been overhauled: input, decoder, output.
  Superfluous methods and arguments have been removed, and all return
  "bool" instead of "int" (true/false instead of 0/-1).

- the plugins have been moved: decoders to src/decoder, outputs to
  src/output

- the custom HTTP client library has been replaced with libcurl.  This
  should solve a LOT of streaming bugs!

- most of the PCM code has been rewritten, and all code paths support
  24 bit samples.  I consider adding floating point samples, too.

- the MP3 and MPC decoders send 24 bit samples.  MP3's dithering code
  has been moved to the PCM library.  This allows all decoders to
  benefit from dithering.  This means, MPC has dithering from now on!

- of course, you can also configure a forced 24 bit audio format.  The
  jack output can also cope with 24 bit.  OSS has been restricted to
  16 bit for now (it used to crash when something other than 8 or 16
  bit arrived), the same holds true for Pulse.

- the local mp4ff library has been removed.

- many many bug reports from Mantis have been fixed.  Please continue
  reporting bugs!

Shortlog and diffstat follow.

I'm planning to do an 0.14~alpha release "real soon now" (maybe 2
weeks), followed by 0.14~beta in the first week of December.  The goal
is to have a solid 0.14 around christmas.

Max


Andrzej Rybczak (2):
      listen: fix "struct ucred" check
      configure.ac: use libmikmod-config instead of pkg-config

Enrico Weigelt (1):
      fixing several imports to work via pkg-config

Eric Wong (5):
      dirvec: add dirvec_for_each iterator
      {dir,song}vec: these structs are const
      dirvec: introduce locking for all iterators
      update: fix multiple deletes from *vec iterators
      AUTHORS: Eric Wong is a former developer

Max Kellermann (191):
      listen: use getaddrinfo() instead of gethostbyname()
      listen: pass protocol family to establishListen()
      pulse: clarify the meaning of multiple server names
      client: optimized client_input_received()
      idle: client command "noidle" aborts idle
      tag_id3: fix indentation
      use GLib
      path, tag_id3: use g_convert() instead of charConv.c
      path: allow starting MPD with non-existing music directory
      mapper: moved musicDir initialization from path.c
      locate: use g_utf8_casefold() instead of string_toupper()
      shout: check for vorbisenc library
      update: don't skip hidden files
      listen, client: enable SO_PASSCRED, get client's uid
      song: added song_in_database()
      playlist: moved code to song_by_url()
      command: print error message on "addid" failure
      playlist: added support for adding songs not in the music database
      song: check file type in song_file_update()
      playlist: also allow world-readable local files
      command: special case for "add /"
      configure.ac: removed iconv option
      configure.ac: find more libraries with pkg-config
      configure.ac: reformatted AC_ARG_ENABLE section
      configure.ac: check if "struct ucred" is available
      removed the "bs" build scripts
      Makefile.am: fix automake 1.6 errors
      listen: fixed unused variable warning without HAVE_UCRED
      command: expect "file:///" url for local files
      decoder: notify player after entering decodeStart()
      input: declare struct input_stream
      input_stream: removed nmemb argument
      Makefile.am: don't compile disabled sources
      Makefile.am: don't compile disabled decoder plugins
      configure.ac: test $with_zeroconf!=no
      client: handle partial lines correctly
      client: read() return value is ssize_t
      client: added assertions on the buffer pointers
      client: removed CLIENT_MAX_BUFFER_LENGTH
      client: fixed send buffer
      client: eliminate variable "left" in client_write()
      client: converted permissions to unsigned
      reverted package name to "mpd"
      Makefile.am: require automake 1.9
      ffmpeg: make internal functions static
      input_stream: don't declare method typedefs
      mapper: don't return database path with leading slash
      signal_check.c: don't use leading underscores
      path: replaced mpd_basename() with g_path_get_basename()
      path: replaced parent_path() with g_path_get_dirname()
      path: removed pathcpy_trunc()
      ffmpeg: detect which ffmpeg headers should be included
      ffmpeg: link with libavutil
      ffmpeg: don't pass pointer as hexadecimal string
      pcm_utils: renamed ConvState to struct pcm_convert_state
      pcm_utils: no CamelCase
      pcm_utils: added pcm_convert_init()
      command: renamed CommandEntry to struct command
      command: make command pointers constant
      command: added "commands" array instead of registering manually
      renamed storedPlaylist.c to stored_playlist.c
      stored_playlist: no CamelCase
      stored_playlist: moved functions from playlist.c
      stored_playlist: de-CamelCase moved function
      stored_playlist: spl_append_uri() returns enum playlist_result
      stored_playlist: added spl_list()
      command: added print_spl_list()
      command: added command "listplaylists"
      stored_playlist: send timestamps
      ack: converted ACK_ERROR_* macros to enum
      command: removed CommandHandlerFunction typedef
      command: no CamelCase
      command: replaced "goto" with "break"
      command: converted COMMAND_RETURN_* macros to enum
      command: use the bool datatype instead of int
      playlist: unsigned integers
      stored_playlist: unsigned index arguments
      command: added check_unsigned() / check_bool()
      command: check over/underflows in check_int()
      stored_playlist: spl_load() returns GPtrArray
      stored_playlist: renamed and moved spl_delete() to stored_playlist.c
      stored_playlist: emit idle event on delete
      stored_playlist: don't map files outside the database
      output_buffer: don't split frames
      audio: allow 24 and 8 bit output
      pcm_dither: added generic 24 to 16 bit dithering
      mp3: use sizeof(sample) instead of hard-coded "2"
      mp3: send 24 bit PCM data
      command: fix boolean value parser
      pcm_utils: moved code to pcm_resample.c
      pcm_resample: don't hard-code sample size
      pcm_resample: don't resample partial samples
      pcm_resample: eliminated "sample" local variables
      pcm_resample: moved code to pcm_resample_set()
      pcm_resample: implemented 24 bit resampling
      pcm_utils: moved channel conversion functions to pcm_channels.c
      pcm_channels: added 24 bit implementations
      pcm_utils: moved code to pcm_convert_16()
      pcm_utils: generic pcm_convert_size() implementation
      pcm_utils: added 24 bit conversion functions
      player: don't send partial frames of silence
      pcm_resample: support for libsamplerate < 0.1.3
      jack: fix indentation
      jack: added constant "frame_size"
      jack: partial writes to ring buffer
      jack: lockless data transfer to jack thread
      jack: optimize local variables
      jack: added assertions against partial frames
      jack: eliminated CamelCase
      jack: moved code to jack_write_samples_16()
      jack: support for 24 bit samples
      remove unused sources
      player: don't clear command before do_play() returns
      pulse: force 16 bit audio sample format
      removed internal copy of libmp4ff
      configure.ac: disable libtool
      configure.ac: changed version number to "0.14~git"
      renamed ChangeLog to NEWS
      Makefile.am: install documentation
      configure.ac: reverted protocol version to 0.14.0
      renamed src/inputPlugins/ to src/decoder/
      renamed src/audioOutputs/ to src/output/
      command: removed range check from check_bool()
      stored_playlist: fixed signed comparison warning
      input_stream: added input_stream_global_finish()
      http: use libcurl
      input_stream: renamed sources, no CamelCase
      input_stream: removed the InputStream typedef
      input_file: don't export internal methods
      input_file: removed global constructor
      input_stream: no CamelCase
      input_stream: added struct input_plugin
      input_stream: input_stream_close() returns void
      input_stream: use "bool" instead of "int"
      input_stream: use g_free() in input_stream_close()
      input_curl: added local variable "value"
      input_curl: set input_stream.mime from Content-Type response header
      curl: read stream name from HTTP response headers
      dirvec: fixed GCC shadow warning
      output: don't compile plugins which are disabled
      configure.ac: fix "xyes: command not found"
      input_file, input_curl: check URL type before attempting to open
      player: reset pc.command when decoder startup fails
      utils: use g_str_has_prefix() instead of prefixcmp()
      input_stream: convert offset and size to the off_t data type
      input_file: don't use buffered I/O
      mp3: remove obsolete comments
      mp3: no CamelCase
      mp3: use bool
      mp3: use GLib allocation functions
      mp3: no "goto"
      mp3: moved code to mp3_filesize_to_song_length()
      decoder_api: don't cast need_chunks() to int
      mp3: assert that the stream is seekable
      mp3: moved code to mp3_time_to_frame()
      mp3: moved code to mp3_this_frame_offset()
      mp3: moved code to mp3_update_timer_next_frame()
      mp3: moved code to mp3_send_pcm()
      mp3: moved code to mp3_synth_and_send()
      mp3: return from mp3_synth_and_send() on any command
      mp3: seek in background
      decoder_api: removed decoder_clear()
      player: request new song only if there is no pending command
      decoder_api: make the audio_format parameter mandatory
      decoder: automatically flush the output buffer after decoder exits
      player: added variable "play_audio_format"
      oss: check and override audio_format properly
      player: handle songs shorter than the initial buffer
      pulse: no CamelCase
      pulse: use GLib instead of util.h/log.h
      pulse: clear pa_simple pointer in pulse_close()
      audio: removed variable "audioOpened"
      audio: call closeAudioDevice() on error
      output: use bool for return values and flags
      output: close device on play error
      output: moved audioDeviceStates to audio_output.enabled
      log: don't use utils.h
      input_file: use GLib for logging
      input_file: check fstat() failure
      input_file: refuse to open non-regular files
      output: always call cancel() before stop()
      output: moved code to audio_output_update()
      output: delay reopen after device failure
      output: removed audio_output.result
      mp3: make mp3_read() return bool
      decoder: use bool for return values and flags
      mpc: fix boolean interpretation of input_stream_seek()
      mpc: fix broken integer sample conversion
      mpc: renamed variable "s16" to "dest"
      mpc: moved sample size into a constant
      mpc: provide 24 bit samples

Viliam Mateicka (1):
      ffmpeg: new decoder plugin

 AUTHORS                                  |    5 
 ChangeLog                                |  352 -------
 INSTALL                                  |    4 
 Makefile.am                              |    6 
 NEWS                                     |  352 +++++++
 autogen.sh                               |    2 
 bs/README                                |   69 -
 bs/config.mk.default                     |   64 -
 bs/cross-arch.sh                         |   82 -
 bs/deps-audio.mk                         |   38 
 bs/deps-conflicts.mk                     |   14 
 bs/deps-input.mk                         |   46 -
 bs/deps-misc.mk                          |   17 
 bs/mkconfig-header.sh                    |   88 -
 bs/mkconfig.h.mk                         |   55 -
 bs/mkdep.sh                              |   58 -
 bs/mkdir_p.sh                            |   37 
 bs/mkdist.sh                             |   50 -
 bs/pkginfo-header.sh                     |   16 
 bs/pkginfo.sh                            |   19 
 build.mk                                 |  103 --
 configure.ac                             |  541 +++++++-----
 doc/COMMANDS                             |   19 
 doc/mpd.conf.5                           |    2 
 m4/alsa.m4                               |  142 ---
 m4/ao.m4                                 |  112 --
 m4/audiofile.m4                          |  179 ----
 m4/libFLAC.m4                            |  104 --
 m4/libmikmod.m4                          |  207 ----
 m4/ogg.m4                                |  102 --
 m4/shout.m4                              |   90 --
 m4/ucred.m4                              |   32 
 m4/vorbis.m4                             |  122 --
 src/Makefile.am                          |  204 +++-
 src/ack.h                                |   27 
 src/audio.c                              |   98 --
 src/audio.h                              |    4 
 src/audioOutputs/audioOutput_alsa.c      |  444 ---------
 src/audioOutputs/audioOutput_ao.c        |  253 -----
 src/audioOutputs/audioOutput_fifo.c      |  290 ------
 src/audioOutputs/audioOutput_jack.c      |  454 ----------
 src/audioOutputs/audioOutput_mvp.c       |  280 ------
 src/audioOutputs/audioOutput_null.c      |   85 -
 src/audioOutputs/audioOutput_oss.c       |  571 ------------
 src/audioOutputs/audioOutput_osx.c       |  368 --------
 src/audioOutputs/audioOutput_pulse.c     |  220 ----
 src/audioOutputs/audioOutput_shout.c     |  596 -------------
 src/audioOutputs/audioOutput_shout.h     |   93 --
 src/audioOutputs/audioOutput_shout_mp3.c |  189 ----
 src/audioOutputs/audioOutput_shout_ogg.c |  306 ------
 src/charConv.c                           |  177 ---
 src/charConv.h                           |   26 
 src/client.c                             |  205 ++--
 src/client.h                             |   12 
 src/command.c                            | 1117 +++++++++++++------------
 src/command.h                            |   26 
 src/database.c                           |   15 
 src/dbUtils.c                            |   10 
 src/decoder/_flac_common.c               |  323 +++++++
 src/decoder/_flac_common.h               |  168 +++
 src/decoder/_ogg_common.c                |   49 +
 src/decoder/_ogg_common.h                |   31 
 src/decoder/aac_plugin.c                 |  600 +++++++++++++
 src/decoder/audiofile_plugin.c           |  144 +++
 src/decoder/ffmpeg_plugin.c              |  418 +++++++++
 src/decoder/flac_plugin.c                |  462 ++++++++++
 src/decoder/mod_plugin.c                 |  277 ++++++
 src/decoder/mp3_plugin.c                 | 1157 ++++++++++++++++++++++++++
 src/decoder/mp4_plugin.c                 |  423 +++++++++
 src/decoder/mpc_plugin.c                 |  306 ++++++
 src/decoder/oggflac_plugin.c             |  354 +++++++
 src/decoder/oggvorbis_plugin.c           |  385 ++++++++
 src/decoder/wavpack_plugin.c             |  574 ++++++++++++
 src/decoder_api.c                        |   60 -
 src/decoder_api.h                        |   25 
 src/decoder_control.c                    |   10 
 src/decoder_control.h                    |   10 
 src/decoder_internal.h                   |    2 
 src/decoder_list.c                       |   24 
 src/decoder_thread.c                     |   40 
 src/directory.c                          |    3 
 src/directory_save.c                     |   17 
 src/dirvec.c                             |   61 +
 src/dirvec.h                             |    3 
 src/inputPlugins/_flac_common.c          |  330 -------
 src/inputPlugins/_flac_common.h          |  172 ---
 src/inputPlugins/_ogg_common.c           |   55 -
 src/inputPlugins/_ogg_common.h           |   36 
 src/inputPlugins/aac_plugin.c            |  610 -------------
 src/inputPlugins/audiofile_plugin.c      |  156 ---
 src/inputPlugins/flac_plugin.c           |  482 ----------
 src/inputPlugins/mod_plugin.c            |  287 ------
 src/inputPlugins/mp3_plugin.c            | 1132 -------------------------
 src/inputPlugins/mp4_plugin.c            |  432 ---------
 src/inputPlugins/mpc_plugin.c            |  317 -------
 src/inputPlugins/oggflac_plugin.c        |  364 --------
 src/inputPlugins/oggvorbis_plugin.c      |  398 --------
 src/inputPlugins/wavpack_plugin.c        |  583 -------------
 src/inputStream.c                        |   82 -
 src/inputStream.h                        |   72 -
 src/inputStream_file.c                   |  114 --
 src/inputStream_file.h                   |   39 
 src/inputStream_http.c                   | 1050 -----------------------
 src/inputStream_http.h                   |   39 
 src/inputStream_http_auth.h              |  102 --
 src/input_curl.c                         |  514 +++++++++++
 src/input_curl.h                         |   28 
 src/input_file.c                         |  132 ++
 src/input_file.h                         |   26 
 src/input_stream.c                       |  107 ++
 src/input_stream.h                       |   75 +
 src/listen.c                             |  109 +-
 src/locate.c                             |   12 
 src/log.c                                |   22 
 src/ls.c                                 |   89 --
 src/ls.h                                 |    2 
 src/main.c                               |   17 
 src/mapper.c                             |   58 +
 src/mapper.h                             |    4 
 src/mp4ff/Makefile.am                    |    9 
 src/mp4ff/drms.c                         | 1043 -----------------------
 src/mp4ff/drms.h                         |   40 
 src/mp4ff/drmstables.h                   |  449 ----------
 src/mp4ff/mp4atom.c                      |  781 -----------------
 src/mp4ff/mp4ff.c                        |  430 ---------
 src/mp4ff/mp4ff.h                        |  128 --
 src/mp4ff/mp4ff_int_types.h              |   32 
 src/mp4ff/mp4ffint.h                     |  329 -------
 src/mp4ff/mp4meta.c                      |  414 ---------
 src/mp4ff/mp4sample.c                    |  152 ---
 src/mp4ff/mp4tagupdate.c                 |  645 --------------
 src/mp4ff/mp4util.c                      |  188 ----
 src/output/alsa_plugin.c                 |  436 +++++++++
 src/output/ao_plugin.c                   |  245 +++++
 src/output/fifo_plugin.c                 |  280 ++++++
 src/output/jack_plugin.c                 |  477 ++++++++++
 src/output/mvp_plugin.c                  |  273 ++++++
 src/output/null_plugin.c                 |   85 +
 src/output/oss_plugin.c                  |  570 ++++++++++++
 src/output/osx_plugin.c                  |  361 ++++++++
 src/output/pulse_plugin.c                |  209 ++++
 src/output/shout_mp3.c                   |  184 ++++
 src/output/shout_ogg.c                   |  302 ++++++
 src/output/shout_plugin.c                |  591 +++++++++++++
 src/output/shout_plugin.h                |   88 +
 src/outputBuffer.c                       |   11 
 src/outputBuffer_accessors.h             |   88 -
 src/outputBuffer_ob_send.h               |  133 --
 src/output_api.c                         |    2 
 src/output_api.h                         |    6 
 src/output_control.c                     |   26 
 src/output_control.h                     |   14 
 src/output_init.c                        |    8 
 src/output_internal.h                    |   32 
 src/output_list.c                        |   22 
 src/output_list.h                        |    4 
 src/output_thread.c                      |   49 -
 src/path.c                               |  133 --
 src/path.h                               |   29 
 src/pcm_channels.c                       |  181 ++++
 src/pcm_channels.h                       |   35 
 src/pcm_dither.c                         |   82 +
 src/pcm_dither.h                         |   41 
 src/pcm_resample.c                       |   26 
 src/pcm_resample.h                       |   71 +
 src/pcm_resample_fallback.c              |   93 ++
 src/pcm_resample_libsamplerate.c         |  228 +++++
 src/pcm_utils.c                          |  456 +++-------
 src/pcm_utils.h                          |   45 -
 src/permission.c                         |   16 
 src/permission.h                         |    4 
 src/player_thread.c                      |   45 -
 src/playlist.c                           |  376 +++-----
 src/playlist.h                           |   46 -
 src/playlist_save.c                      |    5 
 src/signal_check.c                       |   16 
 src/song.c                               |    6 
 src/song.h                               |    8 
 src/songvec.c                            |    8 
 src/storedPlaylist.c                     |  340 -------
 src/storedPlaylist.h                     |   44 
 src/stored_playlist.c                    |  395 ++++++++
 src/stored_playlist.h                    |   71 +
 src/tag_id3.c                            |   85 -
 src/tag_id3.h                            |   13 
 src/update.c                             |   29 
 src/utils.c                              |   48 -
 src/utils.h                              |    8 
 src/volume.c                             |    4 
 src/zeroconf.c                           |    4 
 190 files changed, 14533 insertions(+), 20766 deletions(-)

-------------------------------------------------------------------------
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

Reply via email to