Commit 8d5bf821 authored by francois@recisio.com's avatar francois@recisio.com Committed by David Reid

WebAudio: Fix a noise sound before device was started

parent ad615af1
...@@ -40099,15 +40099,10 @@ typedef struct ...@@ -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) 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_device* pDevice = (ma_device*)pUserData;
ma_uint32 frameCount;
(void)paramCount; (void)paramCount;
(void)pParams; (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 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 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 ...@@ -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 Unfortunately the audio data is not interleaved so we'll need to convert it before we give the data to miniaudio
for further processing. 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) { if (inputCount > 0) {
/* Input data needs to be interleaved before we hand it to the client. */ /* Input data needs to be interleaved before we hand it to the client. */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment