Skip to content

Commit

Permalink
dsoundaudio: remove primary buffer
Browse files Browse the repository at this point in the history
Enabling this option just creates a playback buffer with the specified settings,
and then ignores it. It's probably some outdated hack to set audio formats on
windows. (The first created stream dictates all other streams settings, at least
on some Windows versions). Setting DAC_FIXED_SETTINGS should have the same
effect as setting (the now removed) primary buffer.

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 2762955 commit 6dd35fd
Showing 1 changed file with 0 additions and 104 deletions.
104 changes: 0 additions & 104 deletions audio/dsoundaudio.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,14 @@
/* #define DEBUG_DSOUND */

typedef struct {
int set_primary;
int bufsize_in;
int bufsize_out;
struct audsettings settings;
int latency_millis;
} DSoundConf;

typedef struct {
LPDIRECTSOUND dsound;
LPDIRECTSOUNDCAPTURE dsound_capture;
LPDIRECTSOUNDBUFFER dsound_primary_buffer;
struct audsettings settings;
DSoundConf conf;
} dsound;
Expand Down Expand Up @@ -387,27 +384,10 @@ static void dsound_clear_sample (HWVoiceOut *hw, LPDIRECTSOUNDBUFFER dsb,
dsound_unlock_out (dsb, p1, p2, blen1, blen2);
}

static void dsound_close (dsound *s)
{
HRESULT hr;

if (s->dsound_primary_buffer) {
hr = IDirectSoundBuffer_Release (s->dsound_primary_buffer);
if (FAILED (hr)) {
dsound_logerr (hr, "Could not release primary buffer\n");
}
s->dsound_primary_buffer = NULL;
}
}

static int dsound_open (dsound *s)
{
int err;
HRESULT hr;
WAVEFORMATEX wfx;
DSBUFFERDESC dsbd;
HWND hwnd;
DSoundConf *conf = &s->conf;

hwnd = GetForegroundWindow ();
hr = IDirectSound_SetCooperativeLevel (
Expand All @@ -422,63 +402,7 @@ static int dsound_open (dsound *s)
return -1;
}

if (!conf->set_primary) {
return 0;
}

err = waveformat_from_audio_settings (&wfx, &conf->settings);
if (err) {
return -1;
}

memset (&dsbd, 0, sizeof (dsbd));
dsbd.dwSize = sizeof (dsbd);
dsbd.dwFlags = DSBCAPS_PRIMARYBUFFER;
dsbd.dwBufferBytes = 0;
dsbd.lpwfxFormat = NULL;

hr = IDirectSound_CreateSoundBuffer (
s->dsound,
&dsbd,
&s->dsound_primary_buffer,
NULL
);
if (FAILED (hr)) {
dsound_logerr (hr, "Could not create primary playback buffer\n");
return -1;
}

hr = IDirectSoundBuffer_SetFormat (s->dsound_primary_buffer, &wfx);
if (FAILED (hr)) {
dsound_logerr (hr, "Could not set primary playback buffer format\n");
}

hr = IDirectSoundBuffer_GetFormat (
s->dsound_primary_buffer,
&wfx,
sizeof (wfx),
NULL
);
if (FAILED (hr)) {
dsound_logerr (hr, "Could not get primary playback buffer format\n");
goto fail0;
}

#ifdef DEBUG_DSOUND
dolog ("Primary\n");
print_wave_format (&wfx);
#endif

err = waveformat_to_audio_settings (&wfx, &s->settings);
if (err) {
goto fail0;
}

return 0;

fail0:
dsound_close (s);
return -1;
}

static int dsound_ctl_out (HWVoiceOut *hw, int cmd, ...)
Expand Down Expand Up @@ -823,12 +747,8 @@ static int dsound_run_in (HWVoiceIn *hw)
}

static DSoundConf glob_conf = {
.set_primary = 0,
.bufsize_in = 16384,
.bufsize_out = 16384,
.settings.freq = 44100,
.settings.nchannels = 2,
.settings.fmt = AUD_FMT_S16,
.latency_millis = 10
};

Expand Down Expand Up @@ -934,36 +854,12 @@ static void *dsound_audio_init (void)
}

static struct audio_option dsound_options[] = {
{
.name = "SET_PRIMARY",
.tag = AUD_OPT_BOOL,
.valp = &glob_conf.set_primary,
.descr = "Set the parameters of primary buffer"
},
{
.name = "LATENCY_MILLIS",
.tag = AUD_OPT_INT,
.valp = &glob_conf.latency_millis,
.descr = "(undocumented)"
},
{
.name = "PRIMARY_FREQ",
.tag = AUD_OPT_INT,
.valp = &glob_conf.settings.freq,
.descr = "Primary buffer frequency"
},
{
.name = "PRIMARY_CHANNELS",
.tag = AUD_OPT_INT,
.valp = &glob_conf.settings.nchannels,
.descr = "Primary buffer number of channels (1 - mono, 2 - stereo)"
},
{
.name = "PRIMARY_FMT",
.tag = AUD_OPT_FMT,
.valp = &glob_conf.settings.fmt,
.descr = "Primary buffer format"
},
{
.name = "BUFSIZE_OUT",
.tag = AUD_OPT_INT,
Expand Down

0 comments on commit 6dd35fd

Please sign in to comment.