Commit Graph

105 Commits

Author SHA1 Message Date
Max Kellermann 0275690b5c output: use the software mixer plugin
Do all the software volume stuff inside each output thread, not in the
player thread.  This allows one software mixer per output device, and
also allows the user to configure the mixer type (hardware or
software) for each audio output.

This moves the global "mixer_type" setting into the "audio_output"
section, deprecating the "mixer_enabled" flag.
2009-07-06 22:00:50 +02:00
Max Kellermann 206392ad1a command: removed the "volume" command
This command has been deprecated more than 5 years ago (0.10.0).  Its
implementation is a kludge, let's remove it now.
2009-07-06 21:51:00 +02:00
Max Kellermann d4914fc9ef idle: added "update" event
Some clients have visual feedback for "database update is running".
Using the "database" idle event is unreliable, because it is only
emitted when the database was actually modified.  This patch adds the
"update" event, which is emitted when the update is started, and again
when the update is finished, disregarding whether it has been
modified.
2009-07-05 08:46:53 +02:00
Max Kellermann 46c19b8249 song_print: send song modification time to client
Added the response line "Last-Modified", which sends the modification
time in ISO 8601.  The same was already implemented for playlists.
2009-07-05 08:40:29 +02:00
Christopher Zimmerman a641f562f3 playlist_state: save state when stopped
At the moment mpd doesn't store or restore the current track to/from
its state file when the daemon is stopped/started while in 'stopped'
state.  I believe the preferred behaviour would be to store and
restore the current track even when the daemon is in stopped state
when shutting down.

I made a small patch to adapt this behaviour. If you believe this is
not the preferred behaviour, maybe this should be realized as a
configuration option. I'm not sure how to do this, but made a small
comment, where one would have to put the option.
2009-06-26 09:26:12 +02:00
Max Kellermann eacd604518 ffmpeg: support multiple tags
Call av_metadata_get() in a loop.
2009-06-25 08:43:59 +02:00
Max Kellermann 637c6a1850 conf: log unused/unknown block parameters 2009-06-25 08:42:25 +02:00
Max Kellermann b1e95b1fa8 volume: removed support for legacy mixer configuration
The top-level "mixer_device" and "mixer_control" options have been
deprecated by MPD 0.15, and it's safe to remove them in MPD 0.16.
2009-06-25 08:37:51 +02:00
Max Kellermann ce072b89d2 command: added new "status" line with more precise "elapsed time" 2009-06-25 08:37:34 +02:00
Avuton Olrich f16d05c633 Modify version string to post-release version 0.16~git 2009-06-24 17:34:27 -07:00
Avuton Olrich 8758e97794 mpd version 0.15 2009-06-23 18:43:57 -07:00
Max Kellermann d5ddecb15a listen: bind() failure on secondary address is non-fatal
Several users had problems with binding MPD to "localhost".  The cause
was duplicate /etc/hosts entries: the resolver library returns
127.0.0.1 twice, and of course, MPD attempts to bind to "both" of
them.  This patch makes failures non-fatal, given that at least one
address was bound successfully.  This is a workaround; users should
rather fix their /etc/hosts file.
2009-06-10 08:01:07 +02:00
Daniel Kahn Gillmor 05dfdfdb39 alsa_mixer: add mixer_index option
This allows you to select controls with duplicate names.
2009-04-28 09:15:48 +02:00
Max Kellermann 11bcd7f013 curl: moved proxy settings to "input" block
The old global settings "http_proxy_host", "http_proxy_port",
"http_proxy_user" and "http_proxy_password" continue to work.
2009-04-25 13:35:04 +02:00
Max Kellermann 472b994779 player_thread: pause when all audio outputs fail to play
When all audio outputs have been closed due to failures, pause the
playback instead of stopping it.  This way, the user may resume
at the current position after the problem has been dealt with.
2009-04-25 11:55:36 +02:00
Max Kellermann 54863dff8a NEWS: flagged some new features "experimental"
The "lastfm" input plugin is far from complete, because MPD does not
support nesting playlists yet.  The "fluidsynth" decoder plugin
suffers from shortcomings in the libfluidsynth library:

 http://www.mail-archive.com/fluid-dev@nongnu.org/msg01099.html
2009-04-02 07:12:38 +02:00
Avuton Olrich 88362cbcca news: add more miscellaneous missing news 2009-04-01 06:05:57 -07:00
Avuton Olrich be044ee1a2 news: move supports a range 2009-04-01 06:05:46 -07:00
Avuton Olrich c59ca49e6a news: add pulseaudio mixer 2009-04-01 06:05:35 -07:00
Avuton Olrich 8c1465c67c news: Add consume and single commands 2009-04-01 06:05:16 -07:00
Avuton Olrich ac8def81ab news: trivial modification to make the date line the same as the others 2009-03-31 20:01:26 -07:00
Max Kellermann f5548a8654 mpcdec: support the new libmpcdec SV8 API 2009-03-27 19:51:59 +01:00
Max Kellermann bba127a392 solaris: new audio output plugin for Solaris /dev/audio 2009-03-16 09:55:10 +01:00
Max Kellermann e12140cfce pcm_resample: choose the fallback resampler at runtime
Even if libsamplerate support is enabled, compile the fallback
resampler.  When the user specifies the option
"samplerate_converter=internal", it is chosen in favor of
libsamplerate.  This may help users with a weak FPU who don't want to
compile a custom MPD from source, because the fallback resampler does
not use floating point operations.
2009-03-14 15:26:36 +01:00
Max Kellermann 538701e7c6 player_thread: fill buffer after seeking
After a seek, wait until enough new chunks are decoded before starting
playback.  If this takes too long, send silence chunks to the audio
outputs meanwhile.
2009-03-10 21:19:51 +01:00
Max Kellermann 71e88271d9 output_thread: wait 10 seconds before reopening after play failure
This is similar to the MPD 0.14 patch "wait 10 seconds before
reopening a failed device", which only covered open() failures.  This
patch adds the same feature for play().
2009-03-09 19:08:35 +01:00
Max Kellermann 554a34fb95 alsa: better period_time default value for high sample rates
The default values for buffer_time and period_time were both capped by
the hardware limits on practically all chips.  The result was a
period_time which was half as big as the buffer_time.  On some chips,
this led to lots of underruns when using a high sample rate (192 kHz),
because MPD had very little time to send new samples to ALSA.

A period time which is one fourth of the buffer time turned out to be
much better.  If no period_time is configured, see how much
buffer_time the hardware accepts, and try to configure one fourth of
it as period_time, instead of hard-coding the default period_time
value.

This is yet another attempt to provide a solution which is valid for
all sound chips.  Using the SND_PCM_NONBLOCK flag also seemed to solve
the underruns, but put a lot more CPU load to MPD.
2009-03-08 03:55:01 +01:00
Avuton Olrich e7f034dcef cmdline: Print available protocols when --version is run. 2009-03-03 21:25:19 +01:00
Max Kellermann 4220e6b0ad input_lastfm: new input plugin for last.fm radio
The lastfm input plugin enables MPD to play lastfm:// URLs.  This
plugin is not complete yet: it plays only the first song in the
last.fm playlist, and the playlist parser isn't even implemented
properly.
2009-03-02 23:11:31 +01:00
Max Kellermann 336f624277 tag_id3: parse ID3 tags in RIFF/WAV files
Added a small RIFF parser library.  Look for an "id3" chunk, and let
libid3tag parse it.
2009-03-02 18:00:46 +01:00
Max Kellermann 062f37071c audio_format: allow 32 bit samples
This is the first patch in a series to enable 32 bit audio samples in
MPD.  32 bit samples are more tricky than 24 bit samples, because the
integer may overflow when you operate on a sample.
2009-03-02 15:46:09 +01:00
Max Kellermann ba3a8474b6 flac: parse stream tags
Parse the vorbis comments in libflac's metadata_callback and pass them
as tag struct to the decoder API.
2009-03-01 14:07:23 +01:00
Max Kellermann af66f666c6 audiofile: added 24 bit support
Don't hard code the "bits" parameter to 16.  Try to use the input's
sample format, if possible.
2009-03-01 10:53:46 +01:00
Max Kellermann a5c09c91c4 output: added option to disable audio outputs by default
The option "enabled" is on by default.  If you specify "enabled no" in
an audio_output section, then this device is disabled by default.
2009-02-28 19:40:39 +01:00
Michal Nazarewicz cabbf7ab4a pipe: new audio output plugin which runs a command
[mk: adapted to new output plugin API]
2009-02-28 16:11:59 +01:00
Max Kellermann 1bb0124b77 listen: allocate sockaddr_storage struct for accept()
The generic sockaddr struct is too small for some addresses.  For
accept(), we have to allocate a sockaddr_storage struct on the stack,
which is large enough for all addresses.
2009-02-28 15:20:35 +01:00
Max Kellermann eae0287466 song_print: hide HTTP password in playlist
Added the uri_remove_auth() library function which strips username
and password from a HTTP URI, and use it in song_print_url().  This
allows you to add HTTP URIs to the playlist including secret username
and password, without disclosing it to all MPD clients.
2009-02-27 19:20:11 +01:00
Max Kellermann dfea6b7cdd mvp: fixed default device detection
The check "open()!=0" is wrong, you have to write "open()>=0", because
-1 means error, and 0 is a valid file handle.
2009-02-26 22:10:58 +01:00
Max Kellermann d3409a65b5 mvp: check for reopen errors
When the MVP device has been closed in the cancel() method, and the
play() method attempts to reopen it, check for errors.
2009-02-25 21:57:02 +01:00
Max Kellermann 99f535ad77 mvp: fall back to 16 bit audio samples
Looks like the MVP audio output only supports 16 and 24 bit audio
samples.  If MPD generates any other sample formats, force it to use
16 bit.
2009-02-25 21:52:11 +01:00
Max Kellermann 8491f61d6c mvp: fall back to stereo
When the channel count is greater than 2, fall back to stereo sound.
2009-02-25 21:51:39 +01:00
Max Kellermann 1f88cd73d4 decoder_list: added configuration option to disable decoder plugins 2009-02-15 18:40:47 +01:00
Max Kellermann 98994c5939 daemon: ignore "user" setting if already running as that user
If mpd.conf specifies a user, and MPD is invoked by exactly this user,
ignore the "user" setting.  Don't bother to look up its groups and
don't attempt to change uid, it won't work anyway.
2009-02-15 16:47:21 +01:00
Avuton Olrich fd69782a99 mpd version 0.14.2 2009-02-14 19:34:57 +01:00
Max Kellermann df9245c2aa update: free deleted subdirectories
Use delete_directory() for removing sub directories instead of
dirvec_clear().  This ensures that all memory occupied by
subdirectories of deleted directories is freed.
2009-02-12 19:12:32 +01:00
Max Kellermann 16bab6019b update: recursively purge deleted directories
When a directory is deleted, MPD deleted only the directory from the
database; it did not bother to walk the full tree to free all memory
and to remove deleted songs from the playlist.  Replace a
dirvec_delete() with delete_directory().
2009-02-12 19:12:25 +01:00
Max Kellermann a06e281421 aac: fix stream metadata
Pass the input_stream object to decoder_data().  Without it, the MPD
core does not see stream tags.
2009-02-12 18:39:19 +01:00
Max Kellermann 1492339463 wildmidi: new decoder plugin for MIDI files 2009-02-12 16:43:18 +01:00
Max Kellermann e56a90f3b3 fluidsynth: new decoder plugin for MIDI files
There are a few problems left in this plugin:

- fluidsynth decodes in real time, while MPD prefers to buffer as
  quickly as possible; as a workaround, this plugin uses a timer
  object to synchronize with real-time playback

- I don't know yet how fluidsynth tells me when the song has ended

- the "soundfont" configuration setting is not yet documented, and it
  will likely change soon (in favor of a per-decoder configuration
  block)
2009-02-12 08:43:26 +01:00
Max Kellermann 1136f6fb7a sidplay: new decoder plugin for playing C64 SID files 2009-02-11 20:31:17 +01:00