mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-22 00:06:59 +02:00
WebAudio: Fix a noise sound before device was started
This commit is contained in:
committed by
David Reid
parent
ad615af1a8
commit
8d5bf8210c
+9
-6
@@ -40099,15 +40099,10 @@ typedef struct
|
||||
static EM_BOOL ma_audio_worklet_process_callback__webaudio(int inputCount, const AudioSampleFrame* pInputs, int outputCount, AudioSampleFrame* pOutputs, int paramCount, const AudioParamFrame* pParams, void* pUserData)
|
||||
{
|
||||
ma_device* pDevice = (ma_device*)pUserData;
|
||||
ma_uint32 frameCount;
|
||||
|
||||
(void)paramCount;
|
||||
(void)pParams;
|
||||
|
||||
if (ma_device_get_state(pDevice) != ma_device_state_started) {
|
||||
return EM_TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
The Emscripten documentation says that it'll always be 128 frames being passed in. Hard coding it like that feels
|
||||
like a very bad idea to me. Even if it's hard coded in the backend, the API and documentation should always refer
|
||||
@@ -40116,7 +40111,15 @@ static EM_BOOL ma_audio_worklet_process_callback__webaudio(int inputCount, const
|
||||
Unfortunately the audio data is not interleaved so we'll need to convert it before we give the data to miniaudio
|
||||
for further processing.
|
||||
*/
|
||||
frameCount = 128;
|
||||
ma_uint32 frameCount = 128;
|
||||
|
||||
if (ma_device_get_state(pDevice) != ma_device_state_started) {
|
||||
/* Fill the output buffer with zero to avoid a noise sound */
|
||||
if (outputCount > 0) {
|
||||
MA_ZERO_MEMORY(pOutputs[0].data, frameCount * pDevice->playback.internalChannels * sizeof(float));
|
||||
}
|
||||
return EM_TRUE;
|
||||
}
|
||||
|
||||
if (inputCount > 0) {
|
||||
/* Input data needs to be interleaved before we hand it to the client. */
|
||||
|
||||
Reference in New Issue
Block a user