Skip to content

Commit

Permalink
wavaudio: do not use global variables
Browse files Browse the repository at this point in the history
Signed-off-by: Kővágó, Zoltán <[email protected]>
Signed-off-by: Gerd Hoffmann <[email protected]>
  • Loading branch information
DirtYiCE authored and kraxel committed Jun 15, 2015
1 parent 4045a85 commit f2dcc6c
Showing 1 changed file with 21 additions and 16 deletions.
37 changes: 21 additions & 16 deletions audio/wavaudio.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,10 @@ typedef struct WAVVoiceOut {
int total_samples;
} WAVVoiceOut;

static struct {
typedef struct {
struct audsettings settings;
const char *wav_path;
} conf = {
.settings.freq = 44100,
.settings.nchannels = 2,
.settings.fmt = AUD_FMT_S16,
.wav_path = "qemu.wav"
};
} WAVConf;

static int wav_run_out (HWVoiceOut *hw, int live)
{
Expand Down Expand Up @@ -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,
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;
switch (wav_as.fmt) {
Expand Down Expand Up @@ -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 + 32, 1 << (bits16 + stereo), 2);

wav->f = fopen (conf.wav_path, "wb");
wav->f = fopen (conf->wav_path, "wb");
if (!wav->f) {
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);
wav->pcm_buf = NULL;
return -1;
Expand Down Expand Up @@ -225,40 +221,49 @@ static int wav_ctl_out (HWVoiceOut *hw, int cmd, ...)
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)
{
return &conf;
WAVConf *conf = g_malloc(sizeof(WAVConf));
*conf = glob_conf;
return conf;
}

static void wav_audio_fini (void *opaque)
{
(void) opaque;
ldebug ("wav_fini");
g_free(opaque);
}

static struct audio_option wav_options[] = {
{
.name = "FREQUENCY",
.tag = AUD_OPT_INT,
.valp = &conf.settings.freq,
.valp = &glob_conf.settings.freq,
.descr = "Frequency"
},
{
.name = "FORMAT",
.tag = AUD_OPT_FMT,
.valp = &conf.settings.fmt,
.valp = &glob_conf.settings.fmt,
.descr = "Format"
},
{
.name = "DAC_FIXED_CHANNELS",
.tag = AUD_OPT_INT,
.valp = &conf.settings.nchannels,
.valp = &glob_conf.settings.nchannels,
.descr = "Number of channels (1 - mono, 2 - stereo)"
},
{
.name = "PATH",
.tag = AUD_OPT_STR,
.valp = &conf.wav_path,
.valp = &glob_conf.wav_path,
.descr = "Path to wave file"
},
{ /* End of list */ }
Expand Down

0 comments on commit f2dcc6c

Please sign in to comment.