나선의 폭풍우 오디오 시스템 수정

안드로이드가 롤리팝으로 업그레이드 되면서 제일 짜증났던 것이 두 가지 있다. 그 첫번째가 OpenGL의 퍼포먼스가 전반적으로 하락됐다는 것이고, 두번째가 사운드 시스템이 엿같이 변했다는 거다.

첫번째는 뭐 그럭저럭 어떻게든 한다고 치고 넘어간다지만, 두번째가 좀 많이 심각했다. 일단 오디오 시스템의 문제는 두가지가 있는데, 첫번째는 오디오 플레이를 시작하면 최초의 시작 시에 영문 모를 노이즈가 섞인다는 것이고, 두번째는 리피트 설정을 두어 반복 재생을 시킬 경우 반복되는 시점에서 잠시 랙이 걸린다는 거다. 게임을 한참 하다가, (그것도 액션이나 슈팅 게임을!) 음악이 반복되는 시점에서 프레임이 잠시동안 랙으로 뚝 끊겨버리면, 진짜 형용 못할 짜증이 밀려온다.

이 문제는 너무도 뻔히 보이는 문제였기에, ‘조만간 구글에서 패치해 주겠지’라고 생각하고 놔두고 있었지만, 아무래도 구글에서는 이 문제를 패치할 생각이 없는 것 같다. 그간 롤리팝의 자잘한 두세번의 업데이트가 있었지만, 이 문제는 전혀 언급도 하질 않고 있으니. 개발자들이 알아서 해결하라는 거려나.

그래서, 알아서 해결했다.

모처럼의 멋진 음악이다, 이걸 제대로 들을 수 없어서는 게임의 절반을 손해 보는 거다
첫번째인 노이즈 문제는, 노이즈가 발생하는 케이스가 음악 정지 상태 → 플레이 상태로 이행하는 경우 발생한다는 점에 착안, ‘로딩한 트랙의 오프셋 재생’기능을 추가하여 해결했고, 두번째인 반복 재생시의 랙문제는 일종의 ‘더블 버퍼링 재생’기능을 추가하여 해결했다. 덕분에 의도치 않게 오디오 시스템 클래스가 좀 복잡해졌지만, 결과는 그럴 만한 가치가 있었다.

하지만, 차기 버전인 마시멜로우에서는 이런 일이 없기를 빈다.
랄까 구글님, 제발 OpenGL 퍼포먼스나 좀 올려주세요…