2016-10-17 14 views
0

IDirectSoundBufferGetCurrentPosition 방법은 두 인수 가지고FMOD에는, DirectSound의 IDirectSoundBuffer :: GetCurrentPosition의 pdwCurrentWriteCursor 인수에 상당하는 것이 있습니까?

HRESULT GetCurrentPosition(LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor); 

첫번째 인자 "pdwCurrentPlayCursor는"플레이 커서를 수신하고, 두 번째 인수 "pdwCurrentWriteCursor"는 사운드 버퍼에 위치 이후를 나타내는 기록 커서를 수신한다 데이터를 쓰는 것이 안전합니다. - 재생 커서에서 시작하여 쓰기 커서에서 끝나는 영역 (버퍼의 끝 부분을 감쌀 수도 있음)에는 사운드 하드웨어에 커밋되었지만 아직 재생되지 않은 데이터가 포함될 수 있습니다.

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

이 방법은 재생 커서를 수용하기위한 인수 "위치"를 가지고 있지만를 받기위한 인수없이 : FMOD에서 제공

가장 가까운 동등한 방법은 FMOD :: 채널의 getPosition 방법으로 나타납니다 쓰기 커서.

FMOD는 IDirectSoundBuffer :: GetCurrentPosition의 pdwCurrentWriteCursor 인수와 같은 용도로 사용되는 인수가있는 함수를 제공합니까? 또는 FMOD를 사용할 때 안전한 커서를 가져올 수있는 고정 된 오프셋 (DirectSound 문서에 따라 재생 커서와 쓰기 커서 사이의 간격이 약 15 밀리 초임을 알 수 있음)을 재생 커서에 추가 할 수 있습니까?

답변

0

DirectSound는 상당히 구식 인 'ring buffer'제출 모델을 사용합니다. XAudio2, FMOD 및 기타 현대 사운드 API는 대신 '패킷 기반'전송을 사용합니다. 이 모델에서는 큐에 보관 된 재생할 오디오 버퍼를 제출 한 다음 재생이 완료되기 전에 각 버퍼로 처리합니다.

패킷 기반 제출에서 '재생 커서'는 의미가 있지만 '쓰기 커서'는 없습니다.