Commit Graph

359 Commits

Author SHA1 Message Date
Max Kellermann 3894450b10 filter: convert to C++ 2013-02-01 17:47:09 +01:00
Max Kellermann a7a10d03c9 test/test_pcm: add unit test for pcm_mix() 2013-02-01 15:52:03 +01:00
Max Kellermann e0c645a270 test/test_pcm: add unit tests for the PcmFormat library 2013-02-01 00:32:05 +01:00
Max Kellermann e42734c3f3 test/test_pcm: merge source buffer generator 2013-01-31 22:58:27 +01:00
Max Kellermann f2491c88c8 PcmDither: convert struct to a class 2013-01-31 22:54:10 +01:00
Max Kellermann 1b175025fe pcm_*: convert to C++ 2013-01-31 21:11:06 +01:00
Max Kellermann 0307801d51 test/test_pcm: convert to C++ 2013-01-31 21:11:06 +01:00
Max Kellermann 361404fd59 pcm_convert: convert to C++ 2013-01-31 00:26:55 +01:00
Max Kellermann 5ed9f02c4d TagPool, ...: include cleanup 2013-01-30 22:53:12 +01:00
Max Kellermann 6e47e79790 ConfigData: move functions into the class 2013-01-30 22:25:17 +01:00
Max Kellermann d9ea3082fb ConfigData: add constructors/destructors 2013-01-30 22:20:14 +01:00
Max Kellermann aa8ab2fc89 test/test_vorbis_encoder: convert to C++ 2013-01-30 22:19:24 +01:00
Max Kellermann d664baff26 audio_{parser,config}: convert to C++ 2013-01-30 21:47:12 +01:00
Max Kellermann cd0d003197 filter/chain, encoder: GLib include cleanup 2013-01-30 21:42:50 +01:00
Max Kellermann cfeeb7af2e test/run_encoder, ...: convert to C++ 2013-01-30 21:39:43 +01:00
Max Kellermann 595b6a4f6c ConfigFile: add enum ConfigOption
Look up top-level config options by enum (= integer), not by name
string.
2013-01-30 21:36:04 +01:00
Max Kellermann 01dd540d7e decoder_list: convert to C++ 2013-01-30 17:18:48 +01:00
Max Kellermann 16afdfd874 ArchivePlugin: move instance methods to class ArchiveFile 2013-01-30 15:30:19 +01:00
Max Kellermann f5c0b0d316 ArchiveFile: convert to a class 2013-01-29 23:26:51 +01:00
Max Kellermann fa34dd7bd3 test/visit_archive: new debug program 2013-01-29 22:54:56 +01:00
Max Kellermann feb8d5b82f ConfigFile, CommandLine: use the Path class 2013-01-29 18:09:39 +01:00
Max Kellermann eb8922f346 test/{read_conf,run_filter}: convert to C++ 2013-01-29 17:23:58 +01:00
Max Kellermann 76417d4446 InputStream: use std::string 2013-01-28 23:41:45 +01:00
Max Kellermann 6f3d70b5e2 DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCond 2013-01-27 18:39:32 +01:00
Max Kellermann 257a0dee75 playlist/*: convert to C++ 2013-01-27 17:38:09 +01:00
Max Kellermann 0273cd44b0 input_stream: forward-declare the struct
Hide the definition from C code, to prepare the transition to C++.
2013-01-26 01:24:01 +01:00
Max Kellermann 86b0adc82c playlist/*: convert to C++ 2013-01-26 01:17:43 +01:00
Max Kellermann 94fffb332b archive/*: convert to C++ 2013-01-24 19:18:58 +01:00
Max Kellermann c1daa857a5 test/run_tcp_connect: delete obsolete source file 2013-01-21 10:47:38 +01:00
Max Kellermann e22ef6c481 output/roar: convert to C++ 2013-01-16 23:29:56 +01:00
Max Kellermann 7071126770 InotifySource: use the SocketMonitor class 2013-01-15 18:18:34 +01:00
Max Kellermann 2101daef5a mixer/Alsa: use MultiSocketMonitor 2013-01-15 18:18:00 +01:00
Max Kellermann f9fc3a42cc fifo_buffer: move to util/ 2013-01-15 01:02:13 +01:00
Max Kellermann 8e3982dd42 InotifySource: convert to a class 2013-01-14 10:08:26 +01:00
Max Kellermann e83f805b8f Main, IOThread: move GMainLoop setup code to class EventLoop 2013-01-14 09:15:49 +01:00
Max Kellermann e0a97a030f io_thread: convert to C++ 2013-01-10 10:33:20 +01:00
Max Kellermann d5516dee00 input_stream: convert to C++ (internally) 2013-01-10 10:15:09 +01:00
Max Kellermann 26ebfc04b0 EventPipe: rename to GlobalEvents 2013-01-09 23:31:43 +01:00
Max Kellermann 5faf443038 event_pipe.h: convert to C++ 2013-01-09 22:37:47 +01:00
Max Kellermann e86e77ad67 idle: convert to C++ 2013-01-09 13:01:38 +01:00
Max Kellermann 3c4bb9ff4e test/FakeReplayGainConfig: move fake symbols from a few debug programs 2013-01-09 12:26:07 +01:00
Max Kellermann a890dadfd2 test/run_decoder,read_tags: remove obsolete dummy functions 2013-01-09 12:25:39 +01:00
Max Kellermann 620ae7790b test: rename debug programs back to old names 2013-01-08 15:33:58 +01:00
Max Kellermann 975370c084 decoder_api.h, ...: add "extern C" 2013-01-07 10:07:40 +01:00
Max Kellermann 108242042e queue: convert all functions to methods 2013-01-06 21:33:58 +01:00
Max Kellermann 70652abf97 Queue: add constructor and destructor 2013-01-06 18:59:39 +01:00
Max Kellermann 1a8ef3cdab filter/ReplayGain: add method _set_mode()
Push the new mode to the filter instead of accessing global variables
through replay_gain_get_real_mode().
2013-01-05 02:40:33 +01:00
Max Kellermann 46ed91b53d DecoderAPI: _replay_gain() returns void
Let the function decoder_replay_gain() update
decoder_control::replay_gain_db instead of letting each decoder plugin
take care for that.
2013-01-05 02:40:29 +01:00
Max Kellermann 73f6fc428a test: revert debug program renames 2013-01-05 02:39:32 +01:00
Max Kellermann 2a9d933a81 PlayerControl: add constructor and destructor 2013-01-04 22:45:14 +01:00
Max Kellermann 81f3d893d9 player_control.h: convert header to C++ 2013-01-04 22:31:53 +01:00
Max Kellermann 05c91082e3 playlist: convert to C++ 2013-01-04 22:12:33 +01:00
Max Kellermann de0ab43bc1 output_*: convert to C++ 2013-01-04 09:46:41 +01:00
Max Kellermann 83488848e1 Directory: initialise in default constructor 2013-01-03 02:12:34 +01:00
Max Kellermann f5a92d6cc3 Directory: add constructor and destructor 2013-01-03 01:36:28 +01:00
Max Kellermann 3e8047e583 Directory: rename struct directory to Directory 2013-01-03 01:10:47 +01:00
Max Kellermann 0c245bc271 Directory: make the header C++ only 2013-01-02 22:52:08 +01:00
Max Kellermann 8331de424a PlaylistInfo: rename class, use std::string 2013-01-02 22:16:05 +01:00
Max Kellermann 22f0ef6d6b don't include stdbool.h in C++ sources
The "bool" type is built-in.
2013-01-02 20:56:04 +01:00
Max Kellermann 0023dffd0b playlist_vector: convert to C++ 2013-01-02 20:25:20 +01:00
Max Kellermann b715e522cf db_save, state_file: convert to C++ 2013-01-02 20:22:59 +01:00
Max Kellermann a654f146d1 update: convert to C++ 2013-01-02 19:22:15 +01:00
Max Kellermann dd577fb857 test/read_tags: wait until input_stream becomes ready
Improved support for scanning http:// resources.
2012-10-04 09:28:13 +02:00
Max Kellermann ade0483641 Merge branch 'v0.17.x' 2012-10-02 17:34:03 +02:00
Max Kellermann 9994521b8c test/dump_playlist: add missing newline to error message 2012-10-02 17:27:47 +02:00
Max Kellermann d95e538020 Merge branch 'v0.17.x' 2012-10-02 00:36:05 +02:00
Max Kellermann 43d8252050 output/recorder, test/*: invoke encoder_read() after _open()
Make sure the file header gets written at the beginning, before
_write() gets called.
2012-10-02 00:18:18 +02:00
Max Kellermann 1ddd9dd52a test/run_encoder: fix encoder_open() call 2012-10-02 00:17:08 +02:00
Max Kellermann def21cc87e Merge branch 'v0.17.x'
Conflicts:
	src/queue_save.c
2012-08-25 10:28:33 +02:00
Max Kellermann 488c1eb87b test/test_queue_priority: fix SIGABRT 2012-08-25 10:24:34 +02:00
Max Kellermann 5ad21d7e98 queue_save: save song priorities 2012-08-21 19:17:14 +02:00
Max Kellermann 2bd344549b queue: duplicate all song objects
Make sure the queue "owns" all song objects, so nobody else can free
them.
2012-08-15 23:10:00 +02:00
Max Kellermann c1f90a99f4 tag_pool: use GStaticMutex
Eliminates explicit global initialisation.
2012-08-08 21:01:25 +02:00
Max Kellermann ff58207034 db_selection: rename to DatabaseSelection 2012-08-07 23:12:26 +02:00
Max Kellermann 1a75abffa5 Database{Plugin,Visitor}: pass references 2012-08-07 21:32:08 +02:00
Max Kellermann c6a0f5d3f9 test/DumpDatabase: new debug program 2012-08-07 20:21:10 +02:00
Max Kellermann edf811fa02 DatabaseVisitor, ...: use GError forward declaration 2012-08-02 19:12:06 +02:00
Max Kellermann 6dd70926fa test/test_pcm: add pcm_volume tests 2012-07-10 01:30:02 +02:00
Max Kellermann 5dfc0918c3 require GLib 2.16
GLib 2.16 was released more than 4 years ago.  Let's remove some cruft
from the glib_compat.h header, and avoid new cruft to it.
2012-07-10 01:28:52 +02:00
Max Kellermann 457d98c860 output/raop: delete the RAOP plugin
This plugin is horrible code, I mean it.  Last year, I tried hard to
fix it, but I figured would take less time to do a full rewrite.
Given that I don't even have any device that supports RAOP, I can't do
that properly.  After 16 months, nobody volunteered for fixing it.
Hereby, I delete it, because having no RAOP plugin is better than
having this mess.  Sorry.
2012-05-29 23:15:41 +02:00
Max Kellermann 6b52d040b1 test/read_rva2: new debug program for the RVA2 library 2012-04-23 23:00:41 +02:00
Max Kellermann c22cbbf828 Merge branch 'v0.16.x'
Conflicts:
	src/output/osx_plugin.c
	src/text_input_stream.c
2012-04-05 00:45:39 +02:00
Max Kellermann 5acee73fc8 encoder/vorbis: generate end-of-stream packet when playback ends
Add the encoder_plugin method end().  This is important for the
recorder plugin.
2012-04-05 00:21:53 +02:00
Max Kellermann 47c58c01d1 test/test_vorbis_encoder: program to debug the vorbis encoder 2012-04-04 23:58:00 +02:00
Max Kellermann 9ec9a8705e pcm_export: use the byte_reverse library directly
Delete the now-unused pcm_byteswap library, and optimize the
pcm_export_state object.
2012-03-21 21:18:11 +01:00
Max Kellermann 8c5ebdff36 audio_format: remove the reverse_endian attribute
Eliminate support for reverse endian samples from the MPD core.  This
moves a lot of complexity to the plugins that really need it (only
ALSA and CDIO currently).
2012-03-21 19:31:04 +01:00
Max Kellermann 62218fe59d test: add unit test for util/byte_reverse.c 2012-03-21 19:08:32 +01:00
Max Kellermann 777e1cabc5 test/run_convert: allow the out format to be a mask 2012-03-21 10:33:43 +01:00
Max Kellermann 79eb7623ef event_pipe, test: explicitly ignore write() return value
Some compilers are very picky, but we really aren't interested in the
return value.
2012-03-19 23:26:47 +01:00
Max Kellermann 8dcefaf2e3 test/dump_text_file: debug program for text_input_stream.c 2012-03-19 20:37:25 +01:00
Max Kellermann 48e3432a63 test/run_input: use input_stream_*lock() 2012-03-19 20:37:25 +01:00
Max Kellermann 36827e1134 event_pipe, test: explicitly ignore write() return value
Some compilers are very picky, but we really aren't interested in the
return value.
2012-03-19 20:37:25 +01:00
Max Kellermann 5016839b90 use g_strerror() instead of strerror()
Make sure we get a UTF-8 encoded string.
2012-03-06 22:06:08 +01:00
Max Kellermann 3e7e0bcb18 test/run_decoder: initialize GThread 2012-02-13 19:00:23 +01:00
Max Kellermann 7d3d8f20ab test/read_tags: call g_thread_init() 2012-02-13 18:37:09 +01:00
Max Kellermann 1735284a2a playlist/embcue: new plugin for reading embedded cue sheets
Parses CUE data from the "CUESHEET" tag.  Needs further integration in
the update thread.
2012-02-12 16:10:20 +01:00
Max Kellermann ffea273a28 tag_handler: handle arbitrary name/value pairs
The new method pair() receives an arbitrary name/value pair.  Support
for this is being added to a few decoder plugins.
2012-02-12 13:41:48 +01:00
Max Kellermann 5d73215a8d decoder_plugin: scan tags with callback table
Pass a callback table to scan_file() and scan_stream(), instead of
returning a tag object.
2012-02-11 17:04:29 +01:00
Max Kellermann c46239af22 Merge branch 'v0.16.x'
Conflicts:
	src/decoder/ffmpeg_decoder_plugin.c
	test/read_tags.c
	test/run_decoder.c
2012-02-04 17:23:53 +01:00
Max Kellermann 48eb3ff8d9 test/run_decoder: initialize the tag_pool library 2012-02-04 17:18:37 +01:00
Max Kellermann 5646dcc791 test/read_tags: initialize the tag_pool library 2012-02-04 14:32:17 +01:00
Max Kellermann f208217412 test/run_output: enable and disable the output 2011-12-24 18:15:20 +01:00
Max Kellermann 6a01153ce4 pcm_buffer, output_plugin, ...: include config.h 2011-12-13 19:48:37 +01:00
Max Kellermann b7d5652bf6 pcm_volume: "length" is a "size_t", not "int" 2011-10-20 02:24:25 +02:00
Max Kellermann f1da118a6c test: add GLib testing compatibility header
Didn't compile on GLib < 2.16.
2011-10-19 21:14:14 +02:00
Max Kellermann 20c6159c04 pcm_dither: pass an "end" pointer instead of a sample count
This is easier and more efficient to loop on, because only two
variables get modified (src and dest).
2011-10-10 10:24:06 +02:00
Max Kellermann a47e9d1a4b pcm_pack: pass an "end" pointer instead of a sample count 2011-10-10 10:24:05 +02:00
Max Kellermann 0847ca4ec2 pcm_{mix,volume}: pass only sample_format to pcm_mix()
The other audio_format attributes are not used.
2011-10-10 10:24:05 +02:00
Max Kellermann 572d8d0cc4 test: add unit test for the PCM library 2011-10-10 10:24:05 +02:00
Max Kellermann 9652efd107 don't define WINVER in *.c files
In a C file, that is too late, because _mingw.h defaults to 0x0502,
and ours would be illegal redefintion.
2011-10-09 17:52:56 +02:00
Max Kellermann bbdb4a67e1 test/run_decoder: initialize GThread
Needed for the I/O thread.
2011-10-03 19:28:54 +02:00
Max Kellermann 533a6b0240 tcp_connect: generic library for establishing TCP connections 2011-09-20 21:27:17 +02:00
Max Kellermann 7d9d459ac2 resolver: add function resolve_host_port() 2011-09-20 21:15:05 +02:00
Max Kellermann 74617389c8 output_plugin: the plugin allocates the audio_output object
Pass audio_output objects around instead of void pointers.  This will
give some more control to the plugin, and prepares for non-blocking
audio outputs.
2011-09-19 09:41:21 +02:00
Max Kellermann 3934d2d30c output/pulse: don't expose internal struct in public header
Provide _lock() and _unlock() to wrap all accesses from the mixer
plugin.
2011-09-17 19:50:36 +02:00
Max Kellermann 947848ebf6 output/roar: export volume methods
Use these instead of exposing the internal roar_t struct.
2011-09-17 19:33:51 +02:00
Max Kellermann 754f26a97c input_stream: non-blocking I/O
Add GMutex, GCond attributes which will be used by callers to
conditionally wait on the stream.

Remove the (now-useless) plugin method buffer(), wait on GCond
instead.  Lock the input_stream before each method call.  Do the same
with the playlist plugins.
2011-09-16 21:22:13 +02:00
Max Kellermann 29241c4f83 input_plugin: add method check()
To check for errors without reading.  The decoder thread wants to do
that, before it passes the input stream to the plugin.
2011-09-16 21:22:02 +02:00
Max Kellermann 7e27d660e2 test/test_queue_priority: work around "set but not used" warning 2011-09-16 09:10:39 +02:00
Max Kellermann 62557f4d6b test/read_tags: initialize the tag_pool library 2011-09-13 22:46:47 +02:00
Max Kellermann 9c46cc4ea0 test/read_tags: call g_thread_init()
Needed for the I/O thread.
2011-09-13 22:42:21 +02:00
Max Kellermann bc0fec0afe conf: move duplicate check to _read_name_value()
config_add_block_param() cannot fail, which makes it easier to use.
2011-09-09 21:36:41 +02:00
Max Kellermann 293836494d output_control: move code to audio_output_destruct()
.. and destruct the output object properly in test/run_output.
2011-08-30 22:28:15 +02:00
Max Kellermann ae8bda190e test/run_output: clean up after open failure 2011-08-30 22:20:32 +02:00
Max Kellermann 74a39c715b ntp_server: move code to udp_server.c 2011-08-30 07:39:05 +02:00
Max Kellermann 9ccaa90439 ntp_server: use the I/O thread 2011-08-29 11:23:51 +02:00
Max Kellermann a97ddc8cb9 test/run_ntp_server: quit on SIGINT or SIGTERM
Clean up the process before exiting.
2011-08-29 10:18:54 +02:00
Max Kellermann 6e3b643bdf ntp_server: add debug program "run_ntp_server" 2011-08-29 09:39:03 +02:00
Max Kellermann 3b9ffea36f input/soup: new input plugin based on libsoup
To demonstrate the new I/O thread.  libsoup is well-integrated into
the GLib main loop, which made this plugin pretty easy to write.

As a side effect, we have to initialize the I/O thread in all debug
programs that use the input API.
2011-08-24 03:33:49 +02:00
Max Kellermann 350aa33022 output/raop: consistently use GError 2011-08-24 01:47:26 +02:00
Max Kellermann b159bc0c5f queue: implement song "priorities"
Sorts remaining songs by priority.  This can be used for the
much-demanded "queue feature".
2011-07-19 00:34:33 +02:00
Max Kellermann eb2f413cf0 Merge branch 'v0.16.x'
Conflicts:
	NEWS
	configure.ac
2011-07-19 00:24:20 +02:00
Max Kellermann cca2c2f4ca test/run_filter: remove unused variable "frame_size" 2011-07-03 15:21:40 +02:00
Max Kellermann 52e2fa91c4 test/read_conf: make variables more local 2011-07-03 15:20:39 +02:00
Max Kellermann dca405a746 test/read_conf: fix -Wunused-but-set-variable 2011-07-03 15:20:28 +02:00
Max Kellermann 03f7803f26 test/read_mixer: add workaround for missing RAOP symbols 2011-01-29 10:43:54 +01:00
Max Kellermann c6cbcc2c25 copyright year 2011 2011-01-29 10:13:54 +01:00
Max Kellermann b6995ca011 player_control: removed the global variable "pc"
Allocate a player_control object where needed, and pass it around.
Each "client" object is associated with a "player_control" instance.

This prepares multi-player support.
2011-01-10 19:46:23 +01:00
Max Kellermann 6135419ac3 test/run_decoder: dump replay gain 2010-07-20 22:58:42 +02:00
Max Kellermann eb6188f8c0 test/dump_playlist: print open-ended range 2010-06-25 20:02:55 +02:00
Max Kellermann d60bcd2869 test: added debug program "run_inotify" 2010-05-30 23:30:43 +02:00
Max Kellermann 9aeed06964 test: enable binary mode on stdin/stdout
Declaring the global variable _CRT_fmode is a documented hack.  What
an ugly platform!
2010-05-20 09:20:30 +02:00
Tim Phipps 0ac5b6e613 mixramp: Adjust MixRamp threshold to account for ReplayGain. 2010-05-08 00:19:44 -07:00
Daniel Seuthe 92e66e5ab2 replay_gain: added mode "auto" 2010-04-25 13:51:58 +02:00
Tim Phipps e7a515c8b1 Add support for MixRamp tags
Adds mixrampdb and mixrampdelay commands.  Reads MIXRAP_START and
MIXRAMP_END tags from FLAC files and overlaps instead of crossfading.
2010-03-21 18:21:47 +01:00
Max Kellermann 96493e0333 replay_gain: optionally use hardware mixer to apply replay gain
Add an option for each audio output which enables the use of the
hardware mixer, instead of the software volume code.

This is hardware specific, and assumes linear volume control.  This is
not the case for hardware mixers which were tested, making this patch
somewhat useless, but we will use it to experiment with the settings,
to find a good solution.
2010-02-17 08:14:07 +01:00
Max Kellermann 752dfb3d95 replay_gain: reimplement as a filter plugin
Apply the replay gain in the output thread.  This means a new setting
will be active instantly, without going through the whole music pipe.
And we might have different replay gain settings for each audio output
device.
2010-02-17 07:23:13 +01:00
Max Kellermann ca1fc13116 decoder_api: removed function decoder_get_uri()
Use input_stream.uri.
2010-01-18 10:21:57 +01:00
Max Kellermann 87c861cae3 test/run_convert: implement a GLib log callback
Log to stderr instead of the default stdout.  We need a pristine
stdout for the conversion result.
2010-01-16 23:44:40 +01:00
Max Kellermann 8f326a33ee test/run_convert: use fifo_buffer to adapt to odd sample sizes
Ensure that the pcm_convert() length argument is aligned to the sample
size.
2010-01-16 23:25:58 +01:00
Max Kellermann cd8f92c928 decoder_api: added function decoder_replay_gain()
This function replaces the replay_gain_info parameter for
decoder_data().  This allows the decoder to announce replay gain
changes, instead of having to pass the same object over and over.
2010-01-04 20:42:49 +01:00
Max Kellermann d3b763a48c input_stream: return allocated input_stream objects
Major API redesign: don't let the caller allocate the input_stream
object.  Let each input plugin allocate its own (derived/extended)
input_stream pointer.  The "data" attribute can now be removed, and
all input plugins simply cast the input_stream pointer to their own
structure (with an "struct input_stream base" as the first attribute).
2010-01-01 17:25:07 +01:00
Avuton Olrich 9d3865cb95 Update copyright notices. 2009-12-31 20:58:43 -08:00
Max Kellermann 6b96f5d566 decoder_plugin: added method stream_tag()
This is like tag_dup(), but works with an input_stream object instead
of a file path.
2009-12-31 18:27:48 +01:00
Max Kellermann a0384aaead Makefile.am: added unit tests for the archive plugins 2009-12-31 15:50:59 +01:00
Max Kellermann a038bca745 song: added support for selecting a time range
Added attributes start_ms, end_ms.  This allows us to address a
portion of a song file (important for CUE support).  There is no
support yet for storing these attributes in the state file.
2009-12-27 14:46:04 +01:00
Max Kellermann bad350bc18 decoder_api: added function decoder_timestamp()
Remove the data_time parameter from decoder_data().  This patch
eliminates the timestamp counting in most decoder plugins, because the
MPD core will do it automatically by default.
2009-12-26 03:01:43 +01:00
Max Kellermann 870436a592 output_init: use the normalize filter plugin
Use the plugin instead of the glue code in normalize.c.  This is used
wrapped inside a "autoconv" filter, to enable normalization for all
input file formats.
2009-12-25 17:51:08 +01:00
Max Kellermann 228b03edf8 input_stream: return errors with GError 2009-12-15 23:12:11 +01:00
Max Kellermann 530e480748 Merge branch 'v0.15.x'
Conflicts:
	src/archive/bz2_plugin.c
	src/archive_api.h
	src/input/file_input_plugin.c
	test/run_input.c
2009-12-15 20:26:38 +01:00
Max Kellermann 81aa58efa8 test/run_input: deinitialize everything after open() error
This enables valgrind debugging after an error occurred.
2009-12-15 19:40:47 +01:00
Max Kellermann 83aac2a057 test/run_input: initialize archive plugins
Enable archive plugin debugging.
2009-12-15 19:40:14 +01:00
Max Kellermann 786c1f035f input_plugin: method init() returns errors with GError
Not used by any plugin currently, but this eliminates the g_error()
call in input_plugin_config(), so it's worth it.
2009-12-14 23:16:18 +01:00
Max Kellermann f70d2f58a1 input_stream: moved input_stream_global_init() to input_init.c 2009-12-14 22:53:13 +01:00
Max Kellermann bf6258f582 test/run_{decoder,filter}: implemented GLib log callback
Log to stderr, not to stdout (which broke PCM output).
2009-12-14 21:26:57 +01:00
Max Kellermann c412d6251e audio_format: changed "bits" to "enum sample_format"
This patch prepares support for floating point samples (and probably
other formats).  It changes the meaning of the "bits" attribute from a
bit count to a symbolic value.
2009-12-02 22:29:50 +01:00
Max Kellermann 68c2cfbb40 test: added normalize test program 2009-12-02 21:56:02 +01:00
Max Kellermann 5a480137d2 test: added program to test pcm_convert.c 2009-11-19 21:00:46 +01:00
Max Kellermann 943bafbbc8 test/software_volume: check for errors 2009-11-19 21:00:39 +01:00
Max Kellermann b772f26213 test/software_volume: fixed audio_format parser
Assign default value only if none was given on the command line.
2009-11-19 20:36:04 +01:00
Max Kellermann cef5dcc0a1 audio_format: added function audio_format_to_string()
Unified function for converting an audio_format object to a string,
for log messages and for the "status" command.
2009-11-14 01:15:26 +01:00
Max Kellermann 5b82ffc291 include config.h in all sources
After we've been hit by Large File Support problems several times in
the past week (which only occur on 32 bit platforms, which I don't
have), this is yet another attempt to fix the issue.
2009-11-12 09:17:03 +01:00
Max Kellermann 6a5f4651a1 test: fixed the read_mixer program on !HAVE_PULSE 2009-11-10 21:38:20 +01:00
Max Kellermann 8bfe3497b0 replay_gain: trigger OPTIONS idle event on mode change 2009-11-01 15:44:56 +01:00
Max Kellermann bde3d14339 output: consistently lock audio output objects
Always keep the audio_output object locked within the output thread,
unless a plugin method is called.  This fixes several race conditions.
2009-10-29 17:06:40 +01:00
Max Kellermann c426a0bc5c output/pulse: call mixer on state changes
Don't let the mixer plugin "override" the libpulse callbacks.
Instead, add a "mixer" attribute to the pulse_output struct, and call
the mixer on all interesting events.
2009-10-23 10:33:26 +02:00
Max Kellermann 9526fdbe73 audio_format: wildcards allowed in audio_format configuration
An asterisk means that this attribute should not be enforced, and
stays whatever it used to be.  This way, some configuration values
work like masks.
2009-10-21 23:01:04 +02:00
Max Kellermann b479a264b6 pulse: code rewrite using the asynchronous libpulse API
This is a complete rewrite of the PulseAudio output plugin.  It uses
the asynchronous API, which gives us more control over everything.
Additionally, it connects to the PulseAudio server on startup, and
keeps this connection up while MPD runs.  During pause, instead of
closing the stream, it enables "cork".
2009-10-21 10:30:42 +02:00
Max Kellermann ac32f36e4e mixer_plugin: pass audio_output pointer to mixer_plugin.init()
This allows the mixer object to access its associated audio output
object.
2009-10-21 09:48:41 +02:00
Max Kellermann 4e2fb3fb89 mixer_plugin: use GError for error handling 2009-10-20 22:10:56 +02:00
Max Kellermann 097e200a97 mixer/{oss,alsa}: renamed the mixer source files 2009-10-20 21:23:05 +02:00
Max Kellermann f7ce4f6239 song: renamed attribute "url" to "uri" 2009-10-13 18:01:06 +02:00
Max Kellermann 898d885ae2 test/dump_playlist: try playlist_list_open_uri() first 2009-10-13 16:25:37 +02:00
Max Kellermann eea4edd92c test/dump_playlist: parse a configuration file 2009-10-13 16:20:21 +02:00
Max Kellermann 2bf740fc71 playlist_plugin: new plugin API for playlist parsers
Based on this API, we will add parsers for EXTM3U, PLS, ASX, last.fm
radio and others.

There is no integration into the MPD core yet.  Right now, we have a
command line test program.  This is work in progress.
2009-10-12 22:34:04 +02:00
Max Kellermann 06d5d4b03e conf: handle fatal errors with GError
Don't call g_error(), which will abort the process and dump core.

This patch does not affect all the config_get_X() functions.  These
need some more refactoring.
2009-09-24 21:40:07 +02:00
Max Kellermann c3e02bec3b test: initialize locale in read_tags.c 2009-08-04 00:41:06 +02:00
Max Kellermann 54889c72e3 pcm_convert: use GError for error handling
Don't abort the whole MPD process when the conversion fails.  This has
been a denial-of-service attack vector for years.
2009-07-23 12:01:03 +02:00
David Woodhouse 37754559b8 Add audio_format_init() function
It makes no difference right now, but we're about to add an endianness
flag and will want to make sure it's correctly initialised every time.
2009-07-19 16:54:11 +01: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 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 ddc2694419 conf: eliminated CamelCase
Renamed all remaining CamelCase functions.
2009-06-03 06:55:04 +02:00
Max Kellermann feae8b8f68 test/run_encoder: flush the encoder before exiting 2009-05-05 22:51:22 +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 99a88988d5 test: added run_input test program 2009-04-13 19:18:10 +02:00
Max Kellermann e823e78d0f test: added configuration file reader 2009-04-10 09:14:12 +02:00
Avuton Olrich 0aee49bdf8 all: Update copyright header.
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
2009-03-13 11:51:55 -07:00
Max Kellermann 79ef9166df test: added program "run_output"
The "run_output" program can be used to test an audio output plugin in
an isolated environment.
2009-03-10 15:46:55 +01:00