Store the time precision with the device
This commit is contained in:
parent
40dd1fb853
commit
46d46c49a8
@ -1995,6 +1995,8 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName)
|
||||
|
||||
device->SamplesPlayed = 0;
|
||||
|
||||
device->TimeRes = 1;
|
||||
|
||||
InitUIntMap(&device->BufferMap);
|
||||
InitUIntMap(&device->EffectMap);
|
||||
InitUIntMap(&device->FilterMap);
|
||||
|
@ -695,6 +695,9 @@ static ALCboolean alsa_reset_playback(ALCdevice *device)
|
||||
|
||||
psnd_pcm_sw_params_free(sp);
|
||||
|
||||
device->TimeRes = (ALuint64)periodSizeInFrames * 1000000000 / rate;
|
||||
device->Frequency = rate;
|
||||
|
||||
SetDefaultChannelOrder(device);
|
||||
|
||||
data->size = psnd_pcm_frames_to_bytes(data->pcmHandle, periodSizeInFrames);
|
||||
@ -711,7 +714,6 @@ static ALCboolean alsa_reset_playback(ALCdevice *device)
|
||||
}
|
||||
device->UpdateSize = periodSizeInFrames;
|
||||
device->NumUpdates = periods;
|
||||
device->Frequency = rate;
|
||||
data->thread = StartThread(ALSANoMMapProc, device);
|
||||
}
|
||||
else
|
||||
@ -724,7 +726,6 @@ static ALCboolean alsa_reset_playback(ALCdevice *device)
|
||||
}
|
||||
device->UpdateSize = periodSizeInFrames;
|
||||
device->NumUpdates = periods;
|
||||
device->Frequency = rate;
|
||||
data->thread = StartThread(ALSAProc, device);
|
||||
}
|
||||
if(data->thread == NULL)
|
||||
|
@ -461,6 +461,8 @@ static ALCboolean DSoundResetPlayback(ALCdevice *device)
|
||||
|
||||
if(SUCCEEDED(hr))
|
||||
{
|
||||
device->TimeRes = (ALuint64)device->UpdateSize * 1000000000 /
|
||||
device->Frequency;
|
||||
device->Format = format;
|
||||
SetDefaultWFXChannelOrder(device);
|
||||
pData->thread = StartThread(DSoundProc, device);
|
||||
|
@ -108,6 +108,9 @@ static ALCboolean null_reset_playback(ALCdevice *device)
|
||||
}
|
||||
SetDefaultWFXChannelOrder(device);
|
||||
|
||||
device->TimeRes = (ALuint64)device->UpdateSize * 1000000000 /
|
||||
device->Frequency;
|
||||
|
||||
data->thread = StartThread(NullProc, device);
|
||||
if(data->thread == NULL)
|
||||
{
|
||||
|
@ -268,6 +268,8 @@ static ALCboolean oss_reset_playback(ALCdevice *device)
|
||||
device->Frequency = ossSpeed;
|
||||
device->UpdateSize = info.fragsize / frameSize;
|
||||
device->NumUpdates = info.fragments + 1;
|
||||
device->TimeRes = (ALuint64)device->UpdateSize * 1000000000 /
|
||||
device->Frequency;
|
||||
|
||||
data->data_size = device->UpdateSize * frameSize;
|
||||
data->mix_data = calloc(1, data->data_size);
|
||||
|
@ -250,6 +250,8 @@ static ALCboolean pa_reset_playback(ALCdevice *device)
|
||||
streamInfo = pPa_GetStreamInfo(data->stream);
|
||||
device->Frequency = streamInfo->sampleRate;
|
||||
device->UpdateSize = data->update_size;
|
||||
device->TimeRes = (ALuint64)device->UpdateSize * 1000000000 /
|
||||
device->Frequency;
|
||||
|
||||
err = pPa_StartStream(data->stream);
|
||||
if(err != paNoError)
|
||||
|
@ -938,6 +938,9 @@ static ALCboolean pulse_reset_playback(ALCdevice *device) //{{{
|
||||
ppa_stream_set_moved_callback(data->stream, stream_device_callback, device);
|
||||
ppa_stream_set_write_callback(data->stream, stream_write_callback, device);
|
||||
|
||||
device->TimeRes = (ALuint64)device->UpdateSize * 1000000000 /
|
||||
device->Frequency;
|
||||
|
||||
data->thread = StartThread(PulseProc, device);
|
||||
if(!data->thread)
|
||||
{
|
||||
|
@ -193,6 +193,8 @@ static ALCboolean solaris_reset_playback(ALCdevice *device)
|
||||
|
||||
device->Frequency = info.play.sample_rate;
|
||||
device->UpdateSize = (info.play.buffer_size/device->NumUpdates) + 1;
|
||||
device->TimeRes = (ALuint64)device->UpdateSize * 1000000000 /
|
||||
device->Frequency;
|
||||
|
||||
data->data_size = device->UpdateSize * frameSize;
|
||||
data->mix_data = calloc(1, data->data_size);
|
||||
|
@ -273,6 +273,8 @@ static ALCboolean wave_reset_playback(ALCdevice *device)
|
||||
return ALC_FALSE;
|
||||
}
|
||||
|
||||
device->TimeRes = (ALuint64)device->UpdateSize * 1000000000 /
|
||||
device->Frequency;
|
||||
SetDefaultWFXChannelOrder(device);
|
||||
|
||||
data->thread = StartThread(WaveProc, device);
|
||||
|
@ -410,6 +410,9 @@ struct ALCdevice_struct
|
||||
// Number of samples rendered by this device
|
||||
ALuint64 SamplesPlayed;
|
||||
|
||||
// Precision of this device's timing
|
||||
ALuint64 TimeRes;
|
||||
|
||||
BackendFuncs *Funcs;
|
||||
void *ExtraData; // For the backend's use
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user