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