Final Platform Layer 1.0.0
Loading...
Searching...
No Matches
Manual Audio Initialization

Table of Contents

Overview

If you want to initialize and release the audio system yourself, you can call fplAudioInit() and fplAudioRelease() respectively.

In addition you can set fplAudioSettings::manualLoad to true, so that fplPlatformInit() won't do any audio backend initialization.

fplAudioSettings audioSettings;
fplDefaultAudioSettings(&audioSettings);
fplDefaultSettings(&settings);
settings.audio.manualLoad = true;
const char *newMediaFilePath = fpl_null;
// Initialize
// Main loop
bool isAppRunning = true;
while (isAppRunning) {
// Use case: Loading media file from a request
MediaFormat mediaFormat = fplZeroInit;
if (newMediaFilePath != fpl_null && MyMediaLoad(newMediaFilePath, &mediaFormat)) {
fplAudioSettings newAudioSettings;
fplDefaultAudioSettings(&newAudioSettings);
newAudioSettings.channels = mediaFormat.channels;
newAudioSettings.format = mediaFormat.type;
newAudioSettings.sampleRate = mediaFormat.sampleRate;
// Manual initialize the audio system
fplAudioResultType resultType = fplAudioInit(&newAudioSettings);
if (resultType != newAudioSettings_Success) {
// Handle error
// No need to stop or release the audio system, this is done automatically
} else {
// Success, you can start the playback now
}
}
}
// Manually release the audio system
// Release the platform
}
#define fpl_null
Defines a NULL pointer value that works in C/C++.
fpl_common_api fplAudioResultType fplPlayAudio(void)
Start playing asynchronous audio.
fpl_common_api fplAudioResultType fplAudioInit(fplAudioSettings *audioSettings)
Re/Initializes the audio system with the specified audio settings.
fpl_common_api bool fplAudioRelease(void)
Unloads/Releases the audio system.
fplAudioResultType
An enumeration of audio results.
#define fplZeroInit
Initializes a struct to zero.
fpl_common_api bool fplPlatformInit(const fplInitFlags initFlags, const fplSettings *initSettings)
Initializes the platform layer.
fpl_common_api void fplPlatformRelease(void)
Releases the resources allocated by the platform layer.
@ fplInitFlags_Audio
Use asynchronous audio playback.
Stores audio settings, such as format, device info, callbacks, backend, etc.
fpl_b32 manualLoad
Manual loading the audio system by fplAudioInit() and unload using fplAudioRelease().
Stores settings, such as window, video, etc.
fplAudioSettings audio
Audio settings.
Warning
Do not remove the fplInitFlags_Audio from fplPlatformInit(), otherwise the audio system initialization in fplAudioInit() will always fail!