Commit Graph

99 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
5d74b1efef mixer/software: new mixer which controls filter/volume
This mixer plugin may be used instead of the traditional global
software mixer.  It integrates with the "volume" filter plugin, and
can control the software volume of an audio output which has no
hardware mixer.
2009-07-06 21:52:15 +02:00
Max Kellermann
e47bdfe8e6 output: attach a filter chain to each audio_output
This patch adds initial filter support for audio outputs.  Each audio
output gets a "filter" attribute, which is used by ao_play_chunk().

The PCM conversion is now performed by convert_filter_plugin.
audio_output.convert_state has been removed.
2009-07-06 10:01:47 +02:00
Max Kellermann
cd9c0a6b3e filter/convert: new filter which calls pcm_convert() on demand 2009-07-06 10:01:02 +02:00
Max Kellermann
c372c3756b filter/chain: new library for creating a chain of filters 2009-07-06 10:01:02 +02:00
Max Kellermann
89d4f438c0 mixer_type: moved volume_mixer_type from volume.c 2009-07-06 07:37:37 +02:00
Max Kellermann
86e279f886 filter/volume: don't use volume_level_get()
Added public methods to get and set the current volume.
2009-07-05 16:31:47 +02:00
Max Kellermann
12e82b9e33 test: added program "run_filter"
This program runs filter plugins in an isolated environment.
2009-07-05 06:54:48 +02:00
Max Kellermann
e3c436f411 filter: added "volume" plugin
The "volume" filter plugin will replace the current software volume
code.  One "volume" filter may be attached to each output device.
This will allow the user to use hardware mixers for some devices, and
software mixers for other devices at the same time.

Currently, neither the filter API nor the "volume" plugin is
integrated into MPD.
2009-07-03 01:06:17 +02:00
Max Kellermann
48f3e13bec filter: added new plugin API for filters
The filter API allows us to implement software volume as a pluggable
filter, and we will be able to integrate libraries like SoX.
2009-07-03 01:02:53 +02:00
Max Kellermann
5b78b46a30 Makefile.am: require automake 1.10
Refuse to build with automake 1.9.  1.9 is quite old already, and I'm
too lazy to test with ancient versions.
2009-06-25 11:52:55 +02:00
Max Kellermann
3483c891dc doc: added Developer's Manual
Just a start...
2009-06-02 21:09:45 +02:00
Max Kellermann
1d0be2a031 doc: fixed DocBook markup in doc/sticker.xml
The old sticker.xml used elements which are not valid in DocBook.  Now
that the file is valid, let's add it to $(DOCBOOK_FILES).
2009-05-15 18:54:50 +02:00
Max Kellermann
46e0b49e71 Makefile.am: added doc/doxygen.conf to $(EXTRA_DIST) 2009-05-15 18:43:22 +02:00
Max Kellermann
e6ea7ffdcb Makefile.am: run sparse once with all sources
Don't loop over source files, do all checks in one run.
2009-05-04 09:43:05 +02:00
Max Kellermann
2c7508f72c Makefile.am: ship DocBook sources even when documentation is disabled 2009-04-30 11:43:19 +02:00
Avuton Olrich
6dde36d683 scripts: Remove mpd.spec, it was always half-baked.
Remove mpd.spec and makerpm.sh. It was never used or maintained
and the distributors take care of this kinda thing now anyhow.
2009-04-29 02:43:04 -07:00
Max Kellermann
70d322b296 Makefile.am: moved doxygen invocation out of HAVE_XMLTO
The doxygen invocation was misplaced: it was only defined when xmlto
is available.
2009-04-26 20:02:53 +02:00
Max Kellermann
eea2866190 Makefile.am: moved source files to $(TAG_SRC)
$(TAG_SRC) contains the names of all tag reader source files.  Some of
these are required for test/run_decoder.
2009-04-25 13:21:28 +02:00
Max Kellermann
63710ff5a6 test: added program "read_mixer"
This little program is used to test mixer plugins in an isolated
environment.  This is ALSA-only currently, because we don't have a
real "plugin list" yet, and I'm too lazy to implement a switch.
2009-04-21 22:46:41 +02:00
Max Kellermann
e1f0c5347c configure.ac: detect libiso9660 with pkg-config
Fail if the iso9660 plugin is enabled but not found.
2009-04-13 20:47:28 +02:00
Max Kellermann
e216e01ab3 configure.ac: detect libzzip with pkg-config
Fail if the zzip plugin is enabled but not found.
2009-04-13 20:46:31 +02:00
Hagen Schink
92ba754fc6 Implemented basic icy support for the httpd output
[mk: folded with patch "Put icy related functions in extra source
files"; moved icy_server.c from HAVE_CURL to ENABLE_HTTPD_OUTPUT;
removed an unused variable]
2009-04-13 19:35:02 +02:00
Max Kellermann
99a88988d5 test: added run_input test program 2009-04-13 19:18:10 +02:00
Max Kellermann
e18d67338b removed TODO file
Most of that was already implemented, and for other feature requests,
we have the bug tracker.
2009-04-10 09:14:25 +02:00
Max Kellermann
e823e78d0f test: added configuration file reader 2009-04-10 09:14:12 +02:00
Avuton Olrich
27491c77b9 make: gitignore is not necessary for distribution. 2009-04-02 09:44:59 +02:00
Max Kellermann
a7685780ed configure.ac: renamed --enable-mod to --enable-mikmod 2009-04-01 22:48:06 +02:00
Max Kellermann
5242305a90 configure.ac: renamed --enable-oggvorbis to --enable-vorbis 2009-04-01 22:45:17 +02:00
Max Kellermann
b914d3f6eb Makefile.am: use TREMOR_CFLAGS and TREMOR_LIBS
Don't append those two CFLAGS/LIBS in configure.ac.
2009-04-01 22:45:00 +02:00
Max Kellermann
b9a5e78780 Makefile.am: use LAME_CFLAGS and LAME_LIBS
Don't append LAME_CFLAGS/LAME_LIBS to MPD_CFLAGS/MPD_LIBS in
configure.ac.  Export them via AC_SUBST() instead.
2009-04-01 22:05:53 +02:00
Max Kellermann
cb35d6e687 sticker_print: new library for sending stickers to a client 2009-04-01 17:30:56 +02:00
Jochen Keil
192e29107d Configure/Make dependencies for cue/cue_tag.h/.c
Autoconf/automake support for libcue which
is needed for cue/cue_tag.h/.c.
Libcue will have/has pkg-config support
so this is fairly straightforward.
2009-03-31 22:17:56 +02:00
Max Kellermann
33aeac4fcb Makefile.am: use PULSE_CFLAGS and PULSE_LIBS
Don't add those to MPD_CFLAGS and MPD_LIBS.
2009-03-28 21:39:26 +01:00
Max Kellermann
5164cc1ff8 Makefile.am: use JACK_CFLAGS and JACK_LIBS
Don't add those to MPD_CFLAGS and MPD_LIBS.
2009-03-28 21:38:53 +01:00
Max Kellermann
50c53e4b24 Makefile.am: use SAMPLERATE_CFLAGS and SAMPLERATE_LIBS
Don't add those to MPD_CFLAGS and MPD_LIBS.
2009-03-28 21:38:44 +01:00
Viliam Mateicka
71cd24954a move printAllOutputPluginTypes to output_list.c 2009-03-21 09:45:42 +01:00
Max Kellermann
bba127a392 solaris: new audio output plugin for Solaris /dev/audio 2009-03-16 09:55:10 +01:00
Max Kellermann
ae1a7fc84a vorbis_encoder: added support for all MPD tag types
Copy all tags know to MPD to the vorbis_comment.
2009-03-15 18:36:29 +01:00
Max Kellermann
e1189712f9 Makefile.am: added documentation upload target
This "upload" target uploads generated documentation to
http://www.musicpd.org/doc/, and works only for my user account.
2009-03-15 17:32:28 +01:00
Max Kellermann
e62580db0b httpd: new output plugin to replace "shout"
Let's get rid of the "shout" plugin, and the awfully complicated
icecast daemon setup!  MPD can do better if it's doing the HTTP server
stuff on its own.  This new plugin has several advantages:

- easier to set up - only one daemon, no password settings, no mount
  settings
- MPD controls the encoder and thus already knows the packet
  boundaries - icecast has to parse them
- MPD doesn't bother to encode data while nobody is listening

This implementation is very experimental (no header parsing, ignores
request URI, no icy-metadata, ...).  It should be able to suport
several encoders in parallel in the future (with different bit rates,
different codec, ...), to make MPD the perfect streaming server.  Once
MPD gets multi-player support, we can even mount several different
radio stations on one server.
2009-03-15 03:32:34 +01:00
Max Kellermann
565afefc66 page: new library for reference counted buffers 2009-03-15 02:29:12 +01:00
Max Kellermann
c76d35969b fifo_buffer: added buffering library
It is a library which I have written years ago for other projects.
This library is licensed under BSD 2-clause, because it is very
generic.
2009-03-14 17:30:00 +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
456201fa22 pcm_resample: renamed implementation functions
Added diversion functions to pcm_resample.c.  These check which
resampler is enabled at compile time (libsamplerate or fallback).
This prepares the following patch.
2009-03-14 15:26:28 +01:00
Max Kellermann
bd833f64e2 Makefile.am: don't let sparse scan C++ sources
sparse cannot deal with C++.
2009-03-14 14:30:02 +01:00
Max Kellermann
0a1db6cbc9 Makefile.am: added limit definitions to SPARSE_CPPFLAGS
sparse complains that a lot of limit.h macros are missing.  Define
them to keep sparse quiet.
2009-03-14 14:30:01 +01:00
Max Kellermann
b488355df8 mixer_api: moved mixer_plugin imports to mixer_list.h
This patch allows the output plugins to import only mixer_list.h,
instead of the full mixer_api.h (which would expose internal
structures).
2009-03-14 11:36:59 +01:00
Max Kellermann
a5017a2d7c mixer_api: moved functions to mixer_control.c
mixer_control.h should provide the functions needed to manipulate a
mixer, without exposing the internal mixer API (which is provided by
mixer_api.h).
2009-03-14 11:36:50 +01:00
Max Kellermann
88af35c0ab volume: moved code to mixer_all.c 2009-03-14 11:35:40 +01:00