Update Kha/Backends/Kinc-HL/kinc-bridge/kinc.c.h

This commit is contained in:
Onek8 2025-02-01 13:53:43 +00:00
parent 20db9cc24d
commit 181b860360

View File

@ -42,8 +42,8 @@ static void update(void *data) {
static bool mixThreadregistered = false; static bool mixThreadregistered = false;
static void mix(kinc_a2_buffer_t *buffer, int samples) { static void mix(kinc_a2_buffer_t *buffer, uint32_t samples, void *userdata) {
#ifdef KORE_MULTITHREADED_AUDIO #ifdef KINC_MULTITHREADED_AUDIO
if (!mixThreadregistered) { if (!mixThreadregistered) {
vdynamic *ret; vdynamic *ret;
hl_register_thread(&ret); hl_register_thread(&ret);
@ -54,16 +54,18 @@ static void mix(kinc_a2_buffer_t *buffer, int samples) {
audioCallCallback(samples); audioCallCallback(samples);
for (int i = 0; i < samples; ++i) { for (uint32_t i = 0; i < samples; i += 2) {
float value = audioReadSample(); float left_value = audioReadSample();
*(float *)&buffer->data[buffer->write_location] = value; float right_value = audioReadSample();
buffer->write_location += 4; *(float *)&buffer->channels[0][buffer->write_location] = left_value;
*(float *)&buffer->channels[1][buffer->write_location] = right_value;
buffer->write_location += 1;
if (buffer->write_location >= buffer->data_size) { if (buffer->write_location >= buffer->data_size) {
buffer->write_location = 0; buffer->write_location = 0;
} }
} }
#ifdef KORE_MULTITHREADED_AUDIO #ifdef KINC_MULTITHREADED_AUDIO
hl_blocking(false); hl_blocking(false);
#endif #endif
} }
@ -92,9 +94,9 @@ void hl_init_kore(vbyte *title, int width, int height, int samplesPerPixel, bool
void hl_kinc_init_audio(vclosure *callCallback, vclosure *readSample, int *outSamplesPerSecond) { void hl_kinc_init_audio(vclosure *callCallback, vclosure *readSample, int *outSamplesPerSecond) {
audioCallCallback = *((FN_AUDIO_CALL_CALLBACK *)(&callCallback->fun)); audioCallCallback = *((FN_AUDIO_CALL_CALLBACK *)(&callCallback->fun));
audioReadSample = *((FN_AUDIO_READ_SAMPLE *)(&readSample->fun)); audioReadSample = *((FN_AUDIO_READ_SAMPLE *)(&readSample->fun));
kinc_a2_set_callback(mix); kinc_a2_set_callback(mix, NULL);
kinc_a2_init(); kinc_a2_init();
*outSamplesPerSecond = kinc_a2_samples_per_second; *outSamplesPerSecond = kinc_a2_samples_per_second();
} }
void hl_run_kore(void) { void hl_run_kore(void) {