Commit Graph

28 Commits

Author SHA1 Message Date
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 48b49e2303 replay_gain: fall back to track gain if album gain is unavailable 2010-02-17 08:13:34 +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 f4e9275f7c filter/volume: assign dest_size_r early, eliminate one 2010-02-15 19:09:09 +01:00
Avuton Olrich 9d3865cb95 Update copyright notices. 2009-12-31 20:58:43 -08:00
Max Kellermann 6a17233f78 filter: added the "autoconvert" filter plugin 2009-12-25 17:51:05 +01:00
Max Kellermann b54bde6f2b filter_plugin: allow open() to force an input format
Make the audio_format argument non-const.  Allow the open() method to
modify it, to indicate that it wants a different input audio format
than the one specified.  Check that condition in chain_filter_open(),
and fail.
2009-12-25 17:29:41 +01:00
Max Kellermann d2051c7f50 filter/volume: support 32 bit samples
The pcm_volume library supports 32 bit samples, there's no reason to
disallow it in the filter plugin.
2009-12-25 17:29:27 +01:00
Max Kellermann bd29f7e3c8 filter/route: check configured channel count in method init()
Detect misconfiguration during MPD startup, not when playback begins.
2009-12-25 16:39:47 +01:00
Max Kellermann c3bb81abec filter/route: route_filter_parse() returns bool
Indicate success and error.
2009-12-25 16:39:45 +01:00
Max Kellermann c374a7d3f4 filter/chain: return NULL if a filter() method has failed
Don't close child filters in the filter() method.
2009-12-25 16:28:17 +01:00
Max Kellermann 400600ffff filter: added normalize filter plugin
Wrap the AudioCompress library in a filter plugin.
2009-12-14 22:24:00 +01:00
Albin Eldstål-Damlin ff3393ebf1 Fixed memory leak on incorrect route configuration 2009-12-14 22:18:28 +01:00
Albin Eldstål-Damlin 0ac0bd26e7 Split filter_config into its own module 2009-12-14 22:12:58 +01:00
Albin Eldstål-Damlin 8587fcbb93 Error reporting, pcm_buffer, performance tweaks 2009-12-14 20:41:09 +01:00
Albin Eldstål-Damlin a4fbf772c1 Initial filter chain and filter configuration for outputs. 2009-12-14 17:56:31 +01:00
Albin Eldstål-Damlin e28c5a0beb Initial (statically configured) route filter plugin 2009-12-14 17:41:28 +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 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 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
Max Kellermann 9277950441 filter/volume: check the flag audio_format.reverse_endian
The volume plugin does not work for reverse_endian samples.
2009-07-22 15:56:50 +02:00
David Woodhouse 05693e2d5d Add reverse_endian field to struct audio_format and handle conversion 2009-07-19 17:15:21 +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 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 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 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