Update Kha/Backends/Kinc-HL/kinc-bridge/kinc.c.h
This commit is contained in:
parent
20db9cc24d
commit
181b860360
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user