82
85
static ALuint WaveProc(ALvoid *ptr)
84
ALCdevice *pDevice = (ALCdevice*)ptr;
85
wave_data *data = (wave_data*)pDevice->ExtraData;
87
ALCdevice *Device = (ALCdevice*)ptr;
88
wave_data *data = (wave_data*)Device->ExtraData;
88
91
ALuint64 avail, done;
90
const ALuint restTime = (ALuint64)pDevice->UpdateSize * 1000 /
91
pDevice->Frequency / 2;
93
const ALuint restTime = (ALuint64)Device->UpdateSize * 1000 /
94
Device->Frequency / 2;
93
frameSize = FrameSizeFromDevFmt(pDevice->FmtChans, pDevice->FmtType);
96
frameSize = FrameSizeFromDevFmt(Device->FmtChans, Device->FmtType);
96
99
start = timeGetTime();
97
while(!data->killNow && pDevice->Connected)
100
while(!data->killNow && Device->Connected)
99
102
now = timeGetTime();
101
avail = (ALuint64)(now-start) * pDevice->Frequency / 1000;
104
avail = (ALuint64)(now-start) * Device->Frequency / 1000;
104
107
/* Timer wrapped (50 days???). Add the remainder of the cycle to
105
108
* the available count and reset the number of samples done */
106
avail += ((ALuint64)1<<32)*pDevice->Frequency/1000 - done;
109
avail += ((ALuint64)1<<32)*Device->Frequency/1000 - done;
109
if(avail-done < pDevice->UpdateSize)
112
if(avail-done < Device->UpdateSize)
115
while(avail-done >= pDevice->UpdateSize)
118
while(avail-done >= Device->UpdateSize)
117
aluMixData(pDevice, data->buffer, pDevice->UpdateSize);
118
done += pDevice->UpdateSize;
120
aluMixData(Device, data->buffer, Device->UpdateSize);
121
done += Device->UpdateSize;
120
123
if(!IS_LITTLE_ENDIAN)
122
ALuint bytesize = BytesFromDevFmt(pDevice->FmtType);
125
ALuint bytesize = BytesFromDevFmt(Device->FmtType);
123
126
ALubyte *bytes = data->buffer;
143
fs = fwrite(data->buffer, frameSize, pDevice->UpdateSize,
147
fs = fwrite(data->buffer, frameSize, Device->UpdateSize,
145
151
if(ferror(data->f))
147
153
ERR("Error writing to file\n");
148
aluHandleDisconnect(pDevice);
154
ALCdevice_Lock(Device);
155
aluHandleDisconnect(Device);
156
ALCdevice_Unlock(Device);
249
257
fwrite32le(channel_masks[channels], data->f);
250
258
// 16 byte GUID, sub-type format
251
259
val = fwrite(((bits==32) ? SUBTYPE_FLOAT : SUBTYPE_PCM), 1, 16, data->f);
253
262
fprintf(data->f, "data");
254
263
fwrite32le(0xFFFFFFFF, data->f); // 'data' header len; filled in at close