ma_resultresult;/* Result from asynchronous loading. When loading set to MA_BUSY. When fully loaded set to MA_SUCCESS. When deleting set to MA_UNAVAILABLE. */
ma_uint64frameCursor;
ma_bool32seekToCursorOnNextRead:1;/* On the next read we need to seek to the frame cursor. */
/*ma_uint32 holdCount;*//* For preventing the backend from being uninitialized from under the data source while it's in the middle of performing an operation. */
ma_sound*pFirstSoundInGroup;/* Marked as volatile because we need to be very explicit with when we make copies of this and we can't have the compiler optimize it out. */
ma_sound*pFirstSoundInGroup;/* Marked as volatile because we need to be very explicit with when we make copies of this and we can't have the compiler optimize it out. */
ma_mixermixer;
ma_mutexlock;/* Only used by ma_engine_create_sound_*() and ma_engine_delete_sound(). Not used in the mixing thread. */
ma_bool32isPlaying;/* True by default. Sound groups can be stopped with ma_engine_sound_stop() and resumed with ma_engine_sound_start(). Also affects children. */
ma_mutexlock;/* Only used by ma_engine_sound_init_*() and ma_engine_sound_uninit(). Not used in the mixing thread. */
ma_bool32isPlaying;/* True by default. Sound groups can be stopped with ma_engine_sound_stop() and resumed with ma_engine_sound_start(). Also affects children. */