[Solved] Storing OGG data in a serialized object to speed up load time


I currently have an implementation of Slick2D’s OpenAL code in my project to load sound, along with a few small classes to simplify the process of playing a sound. When the application loads, there is a loading screen where all textures are pre-loaded. I was trying to make it so this screen would also load OGG files so that when the main menu appeared, the game resources would all be 100% loaded. Before, the main menu would appear but the sole sound file was still being decoded. I timed the sound loading process, and it took a grand total of 250ms just to decode it and 500ms in the overall process using Slick2D’s AudioLoader class.

Slick2D sound implementation
I took the Slick2D OpenAL code out and trimmed it down to just support OGG files.

Possible Solution
I decided that I could speed up the process by decoding the ogg files beforehand into a bytebuffer (with Slick2D decoding) and then put the data in a byte array which would be serialized in a small class that would for sure not change in the future. However, the resource still takes too long to load into OpenAL.

I was hoping someone could help me speed up the time Slick2D takes to load sound files or point out my mistakes or bad ideas so that I can get the sound loading trimmed down from 250-500ms to (ideally) 40-50ms.


Well I found my error… I was being stupid and restarting the loading cycle each frame. When I tested my current solution I got OGG file loading from 250ms to 6-7ms :slight_smile: