output_plugin: replaced output_plugin.get_mixer() with mixer_plugin
The mixer core library is now responsible for creating and managing the mixer object. This removes duplicated code from the output plugins.
This commit is contained in:
@@ -19,7 +19,6 @@
|
||||
|
||||
#include "../output_api.h"
|
||||
#include "mixer_list.h"
|
||||
#include "mixer_control.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <alsa/asoundlib.h>
|
||||
@@ -70,9 +69,6 @@ struct alsa_data {
|
||||
|
||||
/** the size of one audio frame */
|
||||
size_t frame_size;
|
||||
|
||||
/** the mixer object associated with this output */
|
||||
struct mixer *mixer;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -105,7 +101,6 @@ static void
|
||||
alsa_data_free(struct alsa_data *ad)
|
||||
{
|
||||
g_free(ad->device);
|
||||
mixer_free(ad->mixer);
|
||||
g_free(ad);
|
||||
}
|
||||
|
||||
@@ -151,7 +146,6 @@ alsa_init(G_GNUC_UNUSED const struct audio_format *audio_format,
|
||||
}
|
||||
|
||||
alsa_configure(ad, param);
|
||||
ad->mixer = mixer_new(&alsa_mixer, param);
|
||||
|
||||
return ad;
|
||||
}
|
||||
@@ -164,14 +158,6 @@ alsa_finish(void *data)
|
||||
alsa_data_free(ad);
|
||||
}
|
||||
|
||||
static struct mixer *
|
||||
alsa_get_mixer(void *data)
|
||||
{
|
||||
struct alsa_data *ad = data;
|
||||
|
||||
return ad->mixer;
|
||||
}
|
||||
|
||||
static bool
|
||||
alsa_test_default_device(void)
|
||||
{
|
||||
@@ -400,8 +386,6 @@ alsa_open(void *data, struct audio_format *audio_format, GError **error)
|
||||
int err;
|
||||
bool success;
|
||||
|
||||
mixer_open(ad->mixer);
|
||||
|
||||
bitformat = get_bitformat(audio_format);
|
||||
if (bitformat == SND_PCM_FORMAT_UNKNOWN) {
|
||||
/* sample format is not supported by this plugin -
|
||||
@@ -484,8 +468,6 @@ alsa_close(void *data)
|
||||
snd_pcm_drain(ad->pcm);
|
||||
|
||||
snd_pcm_close(ad->pcm);
|
||||
|
||||
mixer_close(ad->mixer);
|
||||
}
|
||||
|
||||
static size_t
|
||||
@@ -514,9 +496,9 @@ const struct audio_output_plugin alsaPlugin = {
|
||||
.test_default_device = alsa_test_default_device,
|
||||
.init = alsa_init,
|
||||
.finish = alsa_finish,
|
||||
.get_mixer = alsa_get_mixer,
|
||||
.open = alsa_open,
|
||||
.play = alsa_play,
|
||||
.cancel = alsa_cancel,
|
||||
.close = alsa_close,
|
||||
.mixer_plugin = &alsa_mixer,
|
||||
};
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
#include "../output_api.h"
|
||||
#include "mixer_list.h"
|
||||
#include "mixer_control.h"
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
@@ -54,9 +53,6 @@ struct oss_data {
|
||||
unsigned num_supported[3];
|
||||
int *unsupported[3];
|
||||
unsigned num_unsupported[3];
|
||||
|
||||
/** the mixer object associated with this output */
|
||||
struct mixer *mixer;
|
||||
};
|
||||
|
||||
enum oss_support {
|
||||
@@ -302,8 +298,6 @@ oss_data_free(struct oss_data *od)
|
||||
g_free(od->unsupported[OSS_CHANNELS]);
|
||||
g_free(od->unsupported[OSS_BITS]);
|
||||
|
||||
mixer_free(od->mixer);
|
||||
|
||||
g_free(od);
|
||||
}
|
||||
|
||||
@@ -372,7 +366,6 @@ oss_open_default(GError **error)
|
||||
if (ret[i] == OSS_STAT_NO_ERROR) {
|
||||
struct oss_data *od = oss_data_new();
|
||||
od->device = default_devices[i];
|
||||
od->mixer = mixer_new(&oss_mixer, NULL);
|
||||
return od;
|
||||
}
|
||||
}
|
||||
@@ -412,7 +405,6 @@ oss_output_init(G_GNUC_UNUSED const struct audio_format *audio_format,
|
||||
if (device != NULL) {
|
||||
struct oss_data *od = oss_data_new();
|
||||
od->device = device;
|
||||
od->mixer = mixer_new(&oss_mixer, param);
|
||||
return od;
|
||||
}
|
||||
|
||||
@@ -427,14 +419,6 @@ oss_output_finish(void *data)
|
||||
oss_data_free(od);
|
||||
}
|
||||
|
||||
static struct mixer *
|
||||
oss_get_mixer(void *data)
|
||||
{
|
||||
struct oss_data *od = data;
|
||||
|
||||
return od->mixer;
|
||||
}
|
||||
|
||||
static int
|
||||
oss_set_param(struct oss_data *od, unsigned param, int *value)
|
||||
{
|
||||
@@ -562,8 +546,6 @@ oss_output_open(void *data, struct audio_format *audio_format, GError **error)
|
||||
|
||||
*audio_format = od->audio_format;
|
||||
|
||||
mixer_open(od->mixer);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -573,7 +555,6 @@ oss_output_close(void *data)
|
||||
struct oss_data *od = data;
|
||||
|
||||
oss_close(od);
|
||||
mixer_close(od->mixer);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -616,9 +597,9 @@ const struct audio_output_plugin oss_output_plugin = {
|
||||
.test_default_device = oss_output_test_default_device,
|
||||
.init = oss_output_init,
|
||||
.finish = oss_output_finish,
|
||||
.get_mixer = oss_get_mixer,
|
||||
.open = oss_output_open,
|
||||
.close = oss_output_close,
|
||||
.play = oss_output_play,
|
||||
.cancel = oss_output_cancel,
|
||||
.mixer_plugin = &oss_mixer,
|
||||
};
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
#include "../output_api.h"
|
||||
#include "mixer_list.h"
|
||||
#include "mixer_control.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <pulse/simple.h>
|
||||
@@ -29,7 +28,6 @@
|
||||
|
||||
struct pulse_data {
|
||||
const char *name;
|
||||
struct mixer *mixer;
|
||||
|
||||
pa_simple *s;
|
||||
char *server;
|
||||
@@ -62,7 +60,6 @@ static void pulse_free_data(struct pulse_data *pd)
|
||||
g_free(pd->server);
|
||||
g_free(pd->sink);
|
||||
g_free(pd);
|
||||
mixer_free(pd->mixer);
|
||||
}
|
||||
|
||||
static void *
|
||||
@@ -78,8 +75,6 @@ pulse_init(G_GNUC_UNUSED const struct audio_format *audio_format,
|
||||
pd->sink = param != NULL
|
||||
? config_dup_block_string(param, "sink", NULL) : NULL;
|
||||
|
||||
pd->mixer=mixer_new(&pulse_mixer, param);
|
||||
|
||||
return pd;
|
||||
}
|
||||
|
||||
@@ -90,15 +85,6 @@ static void pulse_finish(void *data)
|
||||
pulse_free_data(pd);
|
||||
}
|
||||
|
||||
static struct mixer *
|
||||
pulse_get_mixer(void *data)
|
||||
{
|
||||
struct pulse_data *pd = data;
|
||||
|
||||
return pd->mixer;
|
||||
}
|
||||
|
||||
|
||||
static bool pulse_test_default_device(void)
|
||||
{
|
||||
pa_simple *s;
|
||||
@@ -147,7 +133,6 @@ pulse_open(void *data, struct audio_format *audio_format, GError **error_r)
|
||||
pa_strerror(error));
|
||||
return false;
|
||||
}
|
||||
mixer_open(pd->mixer);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -190,9 +175,9 @@ const struct audio_output_plugin pulse_plugin = {
|
||||
.test_default_device = pulse_test_default_device,
|
||||
.init = pulse_init,
|
||||
.finish = pulse_finish,
|
||||
.get_mixer = pulse_get_mixer,
|
||||
.open = pulse_open,
|
||||
.play = pulse_play,
|
||||
.cancel = pulse_cancel,
|
||||
.close = pulse_close,
|
||||
.mixer_plugin = &pulse_mixer,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user