wavaudio: do not use global variables
Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
4045a85ad1
commit
f2dcc6cec2
@ -36,15 +36,10 @@ typedef struct WAVVoiceOut {
|
|||||||
int total_samples;
|
int total_samples;
|
||||||
} WAVVoiceOut;
|
} WAVVoiceOut;
|
||||||
|
|
||||||
static struct {
|
typedef struct {
|
||||||
struct audsettings settings;
|
struct audsettings settings;
|
||||||
const char *wav_path;
|
const char *wav_path;
|
||||||
} conf = {
|
} WAVConf;
|
||||||
.settings.freq = 44100,
|
|
||||||
.settings.nchannels = 2,
|
|
||||||
.settings.fmt = AUD_FMT_S16,
|
|
||||||
.wav_path = "qemu.wav"
|
|
||||||
};
|
|
||||||
|
|
||||||
static int wav_run_out (HWVoiceOut *hw, int live)
|
static int wav_run_out (HWVoiceOut *hw, int live)
|
||||||
{
|
{
|
||||||
@ -116,7 +111,8 @@ static int wav_init_out(HWVoiceOut *hw, struct audsettings *as,
|
|||||||
0x02, 0x00, 0x44, 0xac, 0x00, 0x00, 0x10, 0xb1, 0x02, 0x00, 0x04,
|
0x02, 0x00, 0x44, 0xac, 0x00, 0x00, 0x10, 0xb1, 0x02, 0x00, 0x04,
|
||||||
0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00
|
0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00
|
||||||
};
|
};
|
||||||
struct audsettings wav_as = conf.settings;
|
WAVConf *conf = drv_opaque;
|
||||||
|
struct audsettings wav_as = conf->settings;
|
||||||
|
|
||||||
stereo = wav_as.nchannels == 2;
|
stereo = wav_as.nchannels == 2;
|
||||||
switch (wav_as.fmt) {
|
switch (wav_as.fmt) {
|
||||||
@ -154,10 +150,10 @@ static int wav_init_out(HWVoiceOut *hw, struct audsettings *as,
|
|||||||
le_store (hdr + 28, hw->info.freq << (bits16 + stereo), 4);
|
le_store (hdr + 28, hw->info.freq << (bits16 + stereo), 4);
|
||||||
le_store (hdr + 32, 1 << (bits16 + stereo), 2);
|
le_store (hdr + 32, 1 << (bits16 + stereo), 2);
|
||||||
|
|
||||||
wav->f = fopen (conf.wav_path, "wb");
|
wav->f = fopen (conf->wav_path, "wb");
|
||||||
if (!wav->f) {
|
if (!wav->f) {
|
||||||
dolog ("Failed to open wave file `%s'\nReason: %s\n",
|
dolog ("Failed to open wave file `%s'\nReason: %s\n",
|
||||||
conf.wav_path, strerror (errno));
|
conf->wav_path, strerror (errno));
|
||||||
g_free (wav->pcm_buf);
|
g_free (wav->pcm_buf);
|
||||||
wav->pcm_buf = NULL;
|
wav->pcm_buf = NULL;
|
||||||
return -1;
|
return -1;
|
||||||
@ -225,40 +221,49 @@ static int wav_ctl_out (HWVoiceOut *hw, int cmd, ...)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WAVConf glob_conf = {
|
||||||
|
.settings.freq = 44100,
|
||||||
|
.settings.nchannels = 2,
|
||||||
|
.settings.fmt = AUD_FMT_S16,
|
||||||
|
.wav_path = "qemu.wav"
|
||||||
|
};
|
||||||
|
|
||||||
static void *wav_audio_init (void)
|
static void *wav_audio_init (void)
|
||||||
{
|
{
|
||||||
return &conf;
|
WAVConf *conf = g_malloc(sizeof(WAVConf));
|
||||||
|
*conf = glob_conf;
|
||||||
|
return conf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wav_audio_fini (void *opaque)
|
static void wav_audio_fini (void *opaque)
|
||||||
{
|
{
|
||||||
(void) opaque;
|
|
||||||
ldebug ("wav_fini");
|
ldebug ("wav_fini");
|
||||||
|
g_free(opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct audio_option wav_options[] = {
|
static struct audio_option wav_options[] = {
|
||||||
{
|
{
|
||||||
.name = "FREQUENCY",
|
.name = "FREQUENCY",
|
||||||
.tag = AUD_OPT_INT,
|
.tag = AUD_OPT_INT,
|
||||||
.valp = &conf.settings.freq,
|
.valp = &glob_conf.settings.freq,
|
||||||
.descr = "Frequency"
|
.descr = "Frequency"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "FORMAT",
|
.name = "FORMAT",
|
||||||
.tag = AUD_OPT_FMT,
|
.tag = AUD_OPT_FMT,
|
||||||
.valp = &conf.settings.fmt,
|
.valp = &glob_conf.settings.fmt,
|
||||||
.descr = "Format"
|
.descr = "Format"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "DAC_FIXED_CHANNELS",
|
.name = "DAC_FIXED_CHANNELS",
|
||||||
.tag = AUD_OPT_INT,
|
.tag = AUD_OPT_INT,
|
||||||
.valp = &conf.settings.nchannels,
|
.valp = &glob_conf.settings.nchannels,
|
||||||
.descr = "Number of channels (1 - mono, 2 - stereo)"
|
.descr = "Number of channels (1 - mono, 2 - stereo)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "PATH",
|
.name = "PATH",
|
||||||
.tag = AUD_OPT_STR,
|
.tag = AUD_OPT_STR,
|
||||||
.valp = &conf.wav_path,
|
.valp = &glob_conf.wav_path,
|
||||||
.descr = "Path to wave file"
|
.descr = "Path to wave file"
|
||||||
},
|
},
|
||||||
{ /* End of list */ }
|
{ /* End of list */ }
|
||||||
|
Loading…
Reference in New Issue
Block a user