스트리밍 오디오

2권에서 새로 도입된 오디오 프로그래밍 섹션에 대한 게시판입니다.

운영자: 류광

Locked
비회원

스트리밍 오디오

전체글 글쓴이: 비회원 » 2009-03-03 09:25

스트리밍 오디오를 DirectSound IID_IDirectSoundNotify 인터페이스로 구현했습니다.
(DSBCAPS_CTRLPOSITIONNOTIFY | DSBCAPS_GLOBALFOCUS | DSBCAPS_CTRLVOLUME | DSBCAPS_GETCURRENTPOSITION2)

비스타나 2000, XP에서 잘되었는데, 그런데 일부 XP 에서~!
현재 써야할 버퍼의 위치 관리가 잘 안되어 오디오가 잘 나오다가 playPos 앞쪽으로 쓰기버퍼위치가
가버리면 오디오가 막 꼬이더군요

디버깅 결과 Notify 쓰레드에서 _pDSBuffer->GetCurrentPosition( &playPos, &writePos ) 함수를 호출하면
playPos 값이 정확한 Notify 값이 안나오고 0 값이 나왔다가 다음 Notify 에서 한꺼번에 더한
playPos 값이 나오네요.
Notify 값이 1024byte인데 playPos 값은
4564
0
9232
0
14232

이런 식으로 나와서 버퍼위치 관리가 잘 안되는 것 같은데
이런 상황에서 쓰기버퍼위치 관리를 어떻게 해야할까요?

현재 버퍼역전이 일어나면 쓰기버퍼위치를 playPos 보다 적당히 뒤의 위치로 이동해서 해봤지만
잘 안되네요. ㅜㅜ

Locked