aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/wave.c
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/backends/wave.c')
-rw-r--r--Alc/backends/wave.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/Alc/backends/wave.c b/Alc/backends/wave.c
index ad187896..d9f1fdc7 100644
--- a/Alc/backends/wave.c
+++ b/Alc/backends/wave.c
@@ -258,10 +258,18 @@ static ALCboolean wave_reset_playback(ALCdevice *device)
ERR("Error writing header: %s\n", strerror(errno));
return ALC_FALSE;
}
-
data->DataStart = ftell(data->f);
- data->size = device->UpdateSize * channels * bits / 8;
+ SetDefaultWFXChannelOrder(device);
+
+ return ALC_TRUE;
+}
+
+static ALCboolean wave_start_playback(ALCdevice *device)
+{
+ wave_data *data = (wave_data*)device->ExtraData;
+
+ data->size = device->UpdateSize * FrameSizeFromDevFmt(device->FmtChans, device->FmtType);
data->buffer = malloc(data->size);
if(!data->buffer)
{
@@ -269,8 +277,6 @@ static ALCboolean wave_reset_playback(ALCdevice *device)
return ALC_FALSE;
}
- SetDefaultWFXChannelOrder(device);
-
data->thread = StartThread(WaveProc, device);
if(data->thread == NULL)
{
@@ -316,6 +322,7 @@ static const BackendFuncs wave_funcs = {
wave_open_playback,
wave_close_playback,
wave_reset_playback,
+ wave_start_playback,
wave_stop_playback,
NULL,
NULL,