MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / xs_audioout_start

Function xs_audioout_start

modules/pins/i2s/audioout.c:658–694  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

656}
657
658void xs_audioout_start(xsMachine *the)
659{
660 modAudioOut out = xsmcGetHostDataValidate(xsThis, (void *)&xsAudioOutHooks);
661
662#if MODDEF_AUDIOOUT_I2S_PDM
663 out->prevSample = 0;
664 out->error = 0;
665#endif
666
667#if defined(__APPLE__)
668 for (int i = 0; i < kAudioQueueBufferCount; i++)
669 audioQueueCallback(out, out->audioQueue, out->buffer[i]);
670
671 AudioQueueStart(out->audioQueue, NULL);
672#elif defined(_WIN32)
673 out->state = kStatePlaying;
674 doRenderSamples(out);
675 IDirectSoundBuffer_Play(out->dSBuffer, 0, 0, DSBPLAY_LOOPING);
676#elif ESP32
677 out->state = kStatePlaying;
678 xTaskNotify(out->task, kStatePlaying, eSetValueWithOverwrite);
679#elif defined(__ets__)
680 #if MODDEF_AUDIOOUT_I2S_PDM
681// i2s_begin(doRenderSamples, out, out->sampleRate * (MODDEF_AUDIOOUT_I2S_PDM >> 5));
682 #error
683 #else
684// i2s_begin(doRenderSamples, out, out->sampleRate);
685 #error
686 #endif
687 out->i2sActive = true;
688#elif PICO_BUILD
689 out->state = kStatePlaying;
690 if (!out->timer) {
691 out->timer = modTimerAdd(1, 20, picoAudioCallback, &out, 4);
692 }
693#endif
694}
695
696#if __linux
697 static void queueCallback(modAudioOut out, xsIntegerValue id, xsIntegerValue stream) {

Callers

nothing calls this directly

Calls 3

audioQueueCallbackFunction · 0.85
doRenderSamplesFunction · 0.85
modTimerAddFunction · 0.50

Tested by

no test coverage detected