mirror of https://github.com/LIJI32/SameBoy.git
Fixed GB_audio_get_queue_length to actually be the length rather than size, fixed XAudio2.7 audio overflow crash, changed the maximum lag limit to 1/8s rather than 1/4s. Closes #473
This commit is contained in:
parent
d31f34cab4
commit
a856566b54
|
@ -52,7 +52,7 @@ static unsigned _audio_get_frequency(void)
|
||||||
|
|
||||||
static size_t _audio_get_queue_length(void)
|
static size_t _audio_get_queue_length(void)
|
||||||
{
|
{
|
||||||
return SDL_GetQueuedAudioSize(device_id);
|
return SDL_GetQueuedAudioSize(device_id) / sizeof(GB_sample_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _audio_queue_sample(GB_sample_t *sample)
|
static void _audio_queue_sample(GB_sample_t *sample)
|
||||||
|
|
|
@ -23,23 +23,23 @@ static WAVEFORMATEX wave_format = {
|
||||||
.cbSize = 0
|
.cbSize = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline HRESULT XAudio2Create(IXAudio2 **ppXAudio2,
|
static inline HRESULT XAudio2Create(IXAudio2 **out,
|
||||||
UINT32 Flags,
|
UINT32 Flags,
|
||||||
XAUDIO2_PROCESSOR XAudio2Processor)
|
XAUDIO2_PROCESSOR XAudio2Processor)
|
||||||
{
|
{
|
||||||
IXAudio2 *pXAudio2;
|
IXAudio2 *xaudio2;
|
||||||
LoadLibraryEx("xaudio2_7.dll", NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
|
LoadLibraryEx("xaudio2_7.dll", NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
|
||||||
|
|
||||||
HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2);
|
HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void **)&xaudio2);
|
||||||
if (SUCCEEDED(hr)) {
|
if (SUCCEEDED(hr)) {
|
||||||
hr = pXAudio2->lpVtbl->Initialize(pXAudio2, Flags, XAudio2Processor);
|
hr = xaudio2->lpVtbl->Initialize(xaudio2, Flags, XAudio2Processor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SUCCEEDED(hr)) {
|
if (SUCCEEDED(hr)) {
|
||||||
*ppXAudio2 = pXAudio2;
|
*out = xaudio2;
|
||||||
}
|
}
|
||||||
else if (pXAudio2) {
|
else if (xaudio2) {
|
||||||
pXAudio2->lpVtbl->Release(pXAudio2);
|
xaudio2->lpVtbl->Release(xaudio2);
|
||||||
}
|
}
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -523,7 +523,7 @@ static void gb_audio_callback(GB_gameboy_t *gb, GB_sample_t *sample)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GB_audio_get_queue_length() / sizeof(*sample) > GB_audio_get_frequency() / 4) {
|
if (GB_audio_get_queue_length() > GB_audio_get_frequency() / 8) { // Maximum lag of 0.125s
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue