Что означает IDirectSound8 :: CreateSoundBuffer, возвращающий DSERR_BUFFERLOST?
Согласно документации DSERR_BUFFERLOST не является допустимым кодом возврата от CreateSoundBuffer.
У двух наших пользователей есть сообщения об ошибках, когда CreateSoundBuffer возвращает DSERR_BUFFERLOST (из сотен). Мы отправили продукты с этим кодом тысячам пользователей без каких-либо проблем. Оба пользователя сообщают о наличии последних звуковых драйверов. Один сообщает, что у него ноутбук Alienware 17 R4, а другой - ноутбук MSI.
Один пользователь Windows-10 сообщил, что в режиме совместимости с Windows-8 эта проблема решена.
Другие интернет-ссылки включают эту ссылку . Один пользователь попытался перезапустить службу Windows Audio, но это не дало никаких результатов Эта ссылка , похоже, описывает аналогичную проблему в другой игре.
Вот остальные настройки для этого вызова:
WAVEFORMATEX w = {};
w.wFormatTag = WAVE_FORMAT_PCM;
w.nSamplesPerSec = pSoundData->sampleRate;
w.wBitsPerSample = (WORD)pSoundData->bitsPerSample;
w.nChannels = (WORD)pSoundData->numChannels;
w.nBlockAlign = w.nChannels * w.wBitsPerSample / 8;
w.nAvgBytesPerSec = w.nSamplesPerSec * w.nBlockAlign;
w.cbSize = 0;
int bufferSize = pSoundData->decodedSize;
int bufferFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLPAN | DSBCAPS_GLOBALFOCUS;
DSBUFFERDESC bufferDesc = { sizeof(DSBUFFERDESC), (DWORD)bufferFlags, (DWORD)bufferSize, 0, &w, DS3DALG_DEFAULT };
LPDIRECTSOUNDBUFFER pBuffer;
HRESULT hr = pSoundInterface->mDevice->CreateSoundBuffer(&bufferDesc, &pBuffer, NULL);