Monday, November 18, 2019

GAudio and GAudio3D big progress achieved... on Windows

Month:1, Week: 4

Huge progress has been achieved in the last couple of work days. The biggest bottleneck for my progress was resolving memory leaks (and race conditions) in GSound for over two weeks. After the issue was resolved, I managed to fix the memory leaks from GMusic, GAudio3D, GSound3D and GMusic3D in a single day!

3D Audio libraries are derived from the base class, so without working base class no progress could be done on 3D. After the base class got fixed, 3D contained a lot of issues but from my almost 3 weeks of experience of GAudio allowed me to figure out a solution fairly quickly.

The next big challenge comes from implementing the fixes on Linux and Mac as from what I saw these platforms experience similar (if not the same) issues. The problem comes from the usage of Audio libraries which are not cross-platform, so I would need to learn the nuances of those for each platform again. For example, I learned that XAudio2 (Windows) is not thread-safe, so the EndEvent would cause way too many issues as the XAudio threads were not synced to the GAudio thread(s).

I will start by implementing unit tests and possible solutions from Windows to Linux and Mac. This would allow me to see if any improvements were achieved and will try to take a next step after. After the memory leaks from GAudio and GAudio3D on Linux and Mac get resolved, I will start working on extra features of GAudio3D.

No comments:

Post a Comment