MCPcopy Create free account
hub / github.com/EasyRPG/Player / switch_audio_thread

Function switch_audio_thread

src/platform/switch/audio.cpp:39–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37}
38
39void switch_audio_thread(void*) {
40 uint8_t *buffer1 = (uint8_t*)memalign(0x1000, ALIGN_TO(buf_size, 0x1000));
41 uint8_t *buffer2 = (uint8_t*)memalign(0x1000, ALIGN_TO(buf_size, 0x1000));
42 uint32_t released_count;
43
44 AudioOutBuffer source_buffers[2], *released_buffer;
45
46 // Init audio buffers
47 source_buffers[0].buffer = buffer1;
48 source_buffers[1].buffer = buffer2;
49
50 for (int i = 0; i < 2; i++){
51 source_buffers[i].next = NULL;
52 source_buffers[i].buffer_size = buf_size;
53 source_buffers[i].data_size = buf_size;
54 source_buffers[i].data_offset = 0;
55 instance->LockMutex();
56 instance->Decode((uint8_t*)source_buffers[i].buffer, buf_size);
57 instance->UnlockMutex();
58 audoutAppendAudioOutBuffer(&source_buffers[i]);
59 }
60
61 for(;;) {
62 // A pretty bad way to close thread
63 if (instance->termStream) {
64 instance->termStream = false;
65 free(buffer1);
66 free(buffer2);
67 return;
68 }
69
70 audoutWaitPlayFinish(&released_buffer, &released_count, UINT64_MAX);
71 instance->LockMutex();
72 instance->Decode((uint8_t*)released_buffer->buffer, buf_size);
73 instance->UnlockMutex();
74 audoutAppendAudioOutBuffer(released_buffer);
75
76 }
77}
78
79NxAudio::NxAudio(const Game_ConfigAudio& cfg) :
80 GenericAudio(cfg)

Callers

nothing calls this directly

Calls 3

LockMutexMethod · 0.45
DecodeMethod · 0.45
UnlockMutexMethod · 0.45

Tested by

no test coverage detected