2016-10-17 7 views
0

Метод IDirectSoundBufferGetCurrentPosition имеет два аргумента:Имеет ли FMOD эквивалент аргумента pdwCurrentWriteCursor для Directirect SOUNDSoundBuffer :: GetCurrentPosition?

HRESULT GetCurrentPosition(LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor); 

Первый аргумент «pdwCurrentPlayCursor» принимает курсор воспроизведения, а второй аргумент «pdwCurrentWriteCursor» получает курсор на запись, которая указывает на положение в звуковой буфер после который безопасно записывать данные - область, начинающаяся с курсора воспроизведения и заканчивающаяся курсором записи (возможно, завернутая вокруг конца буфера), может содержать данные, которые были переданы звуковому оборудованию, но еще не воспроизведены.

Ближайший эквивалентный метод обеспечивает FMOD, как представляется, getPosition метод FMOD :: Канал:

FMOD_RESULT F_API getPosition(unsigned int *position, FMOD_TIMEUNIT postype); 

Этот метод имеет «позицию» аргумент для приема курсор воспроизведения, но не аргумент для приема написать курсор.

Предоставляет ли FMOD любую функцию с аргументом, который выполняет ту же задачу, что и аргумент pdwCurrentWriteCursor для IDirectSoundBuffer :: GetCurrentPosition? Или добавляет фиксированное смещение (документация DirectSound предполагает, что интервал между курсором воспроизведения и курсором записи составляет около 15 миллисекунд) для курсора воспроизведения - единственный способ получить безопасный курсор записи при использовании FMOD?

ответ

0

DirectSound использует модель представления «кольцевого буфера», которая является довольно старой школой. XAudio2, FMOD и другие современные звуковые API используют вместо «пакетной». В этой модели вы отправляете буферы аудио для воспроизведения, которые хранятся в очереди, а затем обрабатываются как каждый буфер до того, как он завершит воспроизведение.

В представлении на основе пакетов «игровой курсор» имеет значение, но «курсор записи» - нет.

 Смежные вопросы

  • Нет связанных вопросов^_^