2010-01-16 5 views
2

약 1 초간의 오디오가 연속적으로 몇 번 재생되어 일종의 말더듬 소리가 나게하는 매우 일반적인 소프트웨어 버그가 있습니다. 비디오 게임을 할 때 가장 자주 느낍니다. 이 아키텍처에만 국한되지는 않습니다. 콘솔에서 일어난 일입니다. 예전 PC에서는 5 분 전에 일어났습니다.오디오 출력이 끊기는 원인은 무엇입니까?

이 불일치의 근본 원인은 무엇입니까? 이러한 유형의 불일치가 다른 컴퓨팅 부분에 영향을 줍니까? 예를 들어 모뎀에 장애가 발생하면 전송이 손상됩니다.

답변

9

일반적으로 사운드는 하드웨어 및 드라이버에서 처리되는 circular buffer을 사용하여 출력됩니다. 그렇게하면 매 0.02 밀리 초마다 단일 샘플을 출력 할 필요가 없지만 한 번에 더 많은 작업을 수행 할 수 있습니다. 이는 또한 게임이 새로운 샘플을 해독하기 위해 끊임없이 방해받지 않고 게임 로직을 실행하는 데 더 많은 시간을 소비 할 수 있음을 의미합니다. 게임이 게임 논리에서 반복 실행을 끝내고 게임 상태가 업데이트되고 그래픽이 다시 그려지면 게임은 더 많은 샘플을 디코딩 할 수 있습니다.

갑자기 많은 작업이 필요하거나 다른 프로세스가 CPU 시간을 너무 많이 사용하기 때문에 문제가 발생할 수 있습니다. 버퍼가 채워지지 않으면 사운드 카드는 버퍼에서 계속 읽습니다. 그리고 버퍼 된 모든 샘플을 읽었을 때 다음 샘플은 이미 연주 한 샘플입니다. 이렇게하면 작은 루프가 나타납니다.

+0

+1 그게 내가 기대했던 훨씬 더 깊은 탐구 야. :-) –

2

짐작할 수 있듯이 오디오 버퍼가 충분히 빠르게 업데이트되지 않아서 버퍼에있는 부실 데이터를 단순히 재생하기 때문에 그럴 것이라고 생각됩니다.

그렇다면 여기있는 누군가가 그보다 훨씬 더 깊이 파고들 수 있다고 생각하고 싶습니다. :-)

+0

정확히 다음과 같습니다. 버퍼 언더런. OS에는 내부 사운드 버퍼를 업데이트하는 것보다 더 중요한 작업이있을 가능성이 큽니다. –

관련 문제