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.
This commit is contained in:
Max Kellermann
2009-07-06 10:01:47 +02:00
parent cd9c0a6b3e
commit e47bdfe8e6
6 changed files with 131 additions and 17 deletions

View File

@@ -23,9 +23,14 @@
#include "output_list.h"
#include "audio_parser.h"
#include "mixer_control.h"
#include "filter_plugin.h"
#include "filter_registry.h"
#include "filter/chain_filter_plugin.h"
#include <glib.h>
#include <assert.h>
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "output"
@@ -124,7 +129,15 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
ao->open = false;
ao->fail_timer = NULL;
pcm_convert_init(&ao->convert_state);
/* set up the filter chain */
ao->filter = filter_chain_new();
assert(ao->filter != NULL);
ao->convert_filter = filter_new(&convert_filter_plugin, NULL, NULL);
assert(ao->convert_filter != NULL);
filter_chain_append(ao->filter, ao->convert_filter);
ao->config_audio_format = format != NULL;
if (ao->config_audio_format) {