I am trying to debug a certain program that has audio problems on ARM but not on X86_64 (https://github.com/cyxx/rawgl/issues/17)
The thing is that a certain funcion on it (Mixer_impl::playSoundWav in mixer.cpp) receives a data pointer that is then loaded to an SDL_RWops structure with:
SDL_RWops *rw = SDL_RWFromConstMem(data, size);
and then loaded to an Mix_Chunk with:
Mix_Chunk *chunk = Mix_LoadWAV_RW(rw, 1);
Well: the input pointer “data” has the same information on both architectures, BUT the Mix_Chunk data pointer (chunk->abuf) differs in some bytes!
So, the problem must be on SDL_RWFromConstMem() or Mix_LoadWAV_RW(), so I need to see what’s inside the SDL_RWops rw data pointer to confirm, but the structure is confusing and according to https://wiki.libsdl.org/SDL_RWops, the “unknown” union is platform specific.
Also, did SDL_RWFromConstMem() change bewteen SDL 2.0.4 and 2.0.5, where the audio problems started appearing on ARM??
The rawgl programmer, cyxx, seems to agree that something is wrong here with the current SDL_RWFromConstMem() implementation on ARM…