Réduire le temps de chargement des fichiers sons
Salut,
Je cherche un moyen pour réduire le temps de chargement des niveaux de mon jeu. Le chargement se fait actuellement en plusieurs secondes et le temps se passe principalement dans le chargement des sons (7 secondes), notamment pour la musique du niveau (3,5 secondes).
Mon jeu est destiné aux téléphones Android et le son est géré par SDL Mixer 2. La musique est un Ogg Vorbis stéréo 44 kHz, que je charge comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Mix_Chunk* charge_le_son( std::istream& file )
{
SDL_RWops* rw;
file.seekg( 0, std::ios::end );
std::streamoff file_size = file.tellg();
file.seekg( 0, std::ios::beg );
char* buffer = new char[file_size];
file.read( buffer, file_size );
Mix_Chunk* result(NULL);
rw = SDL_RWFromMem(buffer, file_size);
if (rw)
result = Mix_LoadWAV_RW( rw, 1 );
delete[] buffer;
return result;
} |
Le temps est principalement consommé dans Mix_LoadWAV_RW(). Je peux atteindre un temps de chargement bien plus court en utilisant une musique au format WAV, la musique est alors chargée en 46 ms. Cependant la taille de l'archive de mon application augmente considérablement.
Je cherche donc des solutions intermédiaires : plus rapide en gardant le même fichier .ogg, et si ce n'est pas possible, plus rapide sans trop augmenter la taille de l'archive. Des idées ?