mirror of
https://github.com/switchbrew/switch-examples.git
synced 2025-06-21 21:32:40 +02:00
Isolating playback loop in auxiliary function
This commit is contained in:
parent
1eba837090
commit
d7c8fd6c84
@ -19,6 +19,29 @@ void fill_audio_buffer(void* audio_buffer, size_t offset, size_t size, int frequ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void audout_play(Handle event, AudioOutBuffer source_buffer, AudioOutBuffer released_buffer) {
|
||||||
|
u64 time_now = svcGetSystemTick();
|
||||||
|
while ((svcGetSystemTick() - time_now) < 1250000)
|
||||||
|
{
|
||||||
|
s32 index;
|
||||||
|
Result do_wait = svcWaitSynchronization(&index, &event, 1, 10000000);
|
||||||
|
|
||||||
|
if (R_SUCCEEDED(do_wait))
|
||||||
|
{
|
||||||
|
svcResetSignal(event);
|
||||||
|
|
||||||
|
u32 released_count = 0;
|
||||||
|
Result do_release = audoutGetReleasedAudioOutBuffer(&released_buffer, &released_count);
|
||||||
|
|
||||||
|
while (R_SUCCEEDED(do_release) && (released_count > 0))
|
||||||
|
{
|
||||||
|
do_release = audoutGetReleasedAudioOutBuffer(&released_buffer, &released_count);
|
||||||
|
audoutAppendAudioOutBuffer(&source_buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
Result rc = 0;
|
Result rc = 0;
|
||||||
@ -152,27 +175,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
if (play_tone)
|
if (play_tone)
|
||||||
{
|
{
|
||||||
u64 time_now = svcGetSystemTick();
|
audout_play(event, source_buffer, released_buffer);
|
||||||
while ((svcGetSystemTick() - time_now) < 1250000)
|
|
||||||
{
|
|
||||||
s32 index;
|
|
||||||
Result do_wait = svcWaitSynchronization(&index, &event, 1, 10000000);
|
|
||||||
|
|
||||||
if (R_SUCCEEDED(do_wait))
|
|
||||||
{
|
|
||||||
svcResetSignal(event);
|
|
||||||
|
|
||||||
u32 released_count = 0;
|
|
||||||
Result do_release = audoutGetReleasedAudioOutBuffer(&released_buffer, &released_count);
|
|
||||||
|
|
||||||
while (R_SUCCEEDED(do_release) && (released_count > 0))
|
|
||||||
{
|
|
||||||
do_release = audoutGetReleasedAudioOutBuffer(&released_buffer, &released_count);
|
|
||||||
audoutAppendAudioOutBuffer(&source_buffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
play_tone = false;
|
play_tone = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,8 +188,6 @@ int main(int argc, char **argv)
|
|||||||
printf("audoutStopAudioOut() returned 0x%x\n", rc);
|
printf("audoutStopAudioOut() returned 0x%x\n", rc);
|
||||||
|
|
||||||
audoutExit();
|
audoutExit();
|
||||||
|
|
||||||
gfxExit();
|
gfxExit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user